diff --git a/Doc/lib/libpickle.tex b/Doc/lib/libpickle.tex
index 4de445a..067f468 100644
--- a/Doc/lib/libpickle.tex
+++ b/Doc/lib/libpickle.tex
@@ -144,14 +144,10 @@
 or \constant{HIGHEST_PROTOCOL},
 the highest protocol version available will be used.
 
-\versionchanged[The \var{bin} parameter is deprecated and only provided
-for backwards compatibility.  You should use the \var{protocol}
-parameter instead]{2.3}
+\versionchanged[Introduced the \var{protocol} parameter]{2.3}
 
 A binary format, which is slightly more efficient, can be chosen by
-specifying a true value for the \var{bin} argument to the
-\class{Pickler} constructor or the \function{dump()} and \function{dumps()}
-functions.  A \var{protocol} version >= 1 implies use of a binary format.
+specifying a \var{protocol} version >= 1.
 
 \subsection{Usage}
 
@@ -170,24 +166,17 @@
 The \module{pickle} module provides the
 following functions to make this process more convenient:
 
-\begin{funcdesc}{dump}{obj, file\optional{, protocol\optional{, bin}}}
+\begin{funcdesc}{dump}{obj, file\optional{, protocol}}
 Write a pickled representation of \var{obj} to the open file object
 \var{file}.  This is equivalent to
-\code{Pickler(\var{file}, \var{protocol}, \var{bin}).dump(\var{obj})}.
+\code{Pickler(\var{file}, \var{protocol}).dump(\var{obj})}.
 
 If the \var{protocol} parameter is omitted, protocol 0 is used.
 If \var{protocol} is specified as a negative value
 or \constant{HIGHEST_PROTOCOL},
 the highest protocol version will be used.
 
-\versionchanged[The \var{protocol} parameter was added.
-The \var{bin} parameter is deprecated and only provided
-for backwards compatibility.  You should use the \var{protocol}
-parameter instead]{2.3}
-
-If the optional \var{bin} argument is true, the binary pickle format
-is used; otherwise the (less efficient) text pickle format is used
-(for backwards compatibility, this is the default).
+\versionchanged[Introduced the \var{protocol} parameter]{2.3}
 
 \var{file} must have a \method{write()} method that accepts a single
 string argument.  It can thus be a file object opened for writing, a
@@ -211,7 +200,7 @@
 written in binary mode or not.
 \end{funcdesc}
 
-\begin{funcdesc}{dumps}{obj\optional{, protocol\optional{, bin}}}
+\begin{funcdesc}{dumps}{obj\optional{, protocol}}
 Return the pickled representation of the object as a string, instead
 of writing it to a file.
 
@@ -220,14 +209,8 @@
 or \constant{HIGHEST_PROTOCOL},
 the highest protocol version will be used.
 
-\versionchanged[The \var{protocol} parameter was added.
-The \var{bin} parameter is deprecated and only provided
-for backwards compatibility.  You should use the \var{protocol}
-parameter instead]{2.3}
+\versionchanged[The \var{protocol} parameter was added]{2.3}
 
-If the optional \var{bin} argument is
-true, the binary pickle format is used; otherwise the (less efficient)
-text pickle format is used (this is the default).
 \end{funcdesc}
 
 \begin{funcdesc}{loads}{string}
@@ -262,7 +245,7 @@
 objects can actually be unpickled.  See section~\ref{pickle-sub} for
 more details.}, \class{Pickler} and \class{Unpickler}:
 
-\begin{classdesc}{Pickler}{file\optional{, protocol\optional{, bin}}}
+\begin{classdesc}{Pickler}{file\optional{, protocol}}
 This takes a file-like object to which it will write a pickle data
 stream.  
 
@@ -270,13 +253,7 @@
 If \var{protocol} is specified as a negative value,
 the highest protocol version will be used.
 
-\versionchanged[The \var{bin} parameter is deprecated and only provided
-for backwards compatibility.  You should use the \var{protocol}
-parameter instead]{2.3}
-
-Optional \var{bin} if true, tells the pickler to use the more
-efficient binary pickle format, otherwise the \ASCII{} format is used
-(this is the default).
+\versionchanged[Introduced the \var{protocol} parameter]{2.3}
 
 \var{file} must have a \method{write()} method that accepts a single
 string argument.  It can thus be an open file object, a
@@ -289,7 +266,7 @@
 \begin{methoddesc}[Pickler]{dump}{obj}
 Write a pickled representation of \var{obj} to the open file object
 given in the constructor.  Either the binary or \ASCII{} format will
-be used, depending on the value of the \var{bin} flag passed to the
+be used, depending on the value of the \var{protocol} argument passed to the
 constructor.
 \end{methoddesc}
 
@@ -451,7 +428,7 @@
 \method{__init__()} method be called on unpickling, an old-style class
 can define a method \method{__getinitargs__()}, which should return a
 \emph{tuple} containing the arguments to be passed to the class
-constructor (i.e. \method{__init__()}).  The
+constructor (\method{__init__()} for example).  The
 \method{__getinitargs__()} method is called at
 pickle time; the tuple it returns is incorporated in the pickle for
 the instance.
diff --git a/Lib/pickle.py b/Lib/pickle.py
index 7d6825f..4c91888 100644
--- a/Lib/pickle.py
+++ b/Lib/pickle.py
@@ -171,7 +171,7 @@
 
 class Pickler:
 
-    def __init__(self, file, protocol=None, bin=None):
+    def __init__(self, file, protocol=None):
         """This takes a file-like object for writing a pickle data stream.
 
         The optional protocol argument tells the pickler to use the
@@ -195,12 +195,6 @@
         object, or any other custom object that meets this interface.
 
         """
-        if protocol is not None and bin is not None:
-            raise ValueError, "can't specify both 'protocol' and 'bin'"
-        if bin is not None:
-            warnings.warn("The 'bin' argument to Pickler() is deprecated",
-                          DeprecationWarning)
-            protocol = bin
         if protocol is None:
             protocol = 0
         if protocol < 0:
@@ -1378,12 +1372,12 @@
 except ImportError:
     from StringIO import StringIO
 
-def dump(obj, file, protocol=None, bin=None):
-    Pickler(file, protocol, bin).dump(obj)
+def dump(obj, file, protocol=None):
+    Pickler(file, protocol).dump(obj)
 
-def dumps(obj, protocol=None, bin=None):
+def dumps(obj, protocol=None):
     file = StringIO()
-    Pickler(file, protocol, bin).dump(obj)
+    Pickler(file, protocol).dump(obj)
     return file.getvalue()
 
 def load(file):
diff --git a/Misc/NEWS b/Misc/NEWS
index 4733bfb..235c257 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -21,6 +21,8 @@
 Library
 -------
 
+- the pickle module no longer uses the deprecated bin parameter.
+
 - the depecated statcache module was removed.
 
 - the shelve module no longer uses the deprecated binary parameter.
