diff --git a/Doc/documenting/markup.rst b/Doc/documenting/markup.rst
index 1bb2185..f85158b 100644
--- a/Doc/documenting/markup.rst
+++ b/Doc/documenting/markup.rst
@@ -707,7 +707,7 @@
 For example::
 
    .. index::
-      single: execution!context
+      single: execution; context
       module: __main__
       module: sys
       triple: module; search; path
@@ -720,8 +720,8 @@
 
 single
    Creates a single index entry.  Can be made a subentry by separating the
-   subentry text with a semicolon (this is also used below to describe what
-   entries are created).
+   subentry text with a semicolon (this notation is also used below to describe
+   what entries are created).
 pair
    ``pair: loop; statement`` is a shortcut that creates two index entries,
    namely ``loop; statement`` and ``statement; loop``.
@@ -733,6 +733,13 @@
    These all create two index entries.  For example, ``module: hashlib`` creates
    the entries ``module; hashlib`` and ``hashlib; module``.
 
+For index directives containing only "single" entries, there is a shorthand
+notation::
+
+   .. index:: BNF, grammar, syntax, notation
+
+This creates four index entries.
+
 
 Grammar production displays
 ---------------------------
diff --git a/Doc/library/codecs.rst b/Doc/library/codecs.rst
index f35ef76..238c80e 100644
--- a/Doc/library/codecs.rst
+++ b/Doc/library/codecs.rst
@@ -186,12 +186,12 @@
    Implements the ``ignore`` error handling.
 
 
-.. function:: xmlcharrefreplace_errors_errors(exception)
+.. function:: xmlcharrefreplace_errors(exception)
 
    Implements the ``xmlcharrefreplace`` error handling.
 
 
-.. function:: backslashreplace_errors_errors(exception)
+.. function:: backslashreplace_errors(exception)
 
    Implements the ``backslashreplace`` error handling.
 
@@ -833,7 +833,7 @@
 encoding was used for encoding a Unicode string. Each charmap encoding can
 decode any random byte sequence. However that's not possible with UTF-8, as
 UTF-8 byte sequences have a structure that doesn't allow arbitrary byte
-sequence. To increase the reliability with which a UTF-8 encoding can be
+sequences. To increase the reliability with which a UTF-8 encoding can be
 detected, Microsoft invented a variant of UTF-8 (that Python 2.5 calls
 ``"utf-8-sig"``) for its Notepad program: Before any of the Unicode characters
 is written to the file, a UTF-8 encoded BOM (which looks like this as a byte
diff --git a/Doc/library/copy.rst b/Doc/library/copy.rst
index ea59613..0abee4d 100644
--- a/Doc/library/copy.rst
+++ b/Doc/library/copy.rst
@@ -54,6 +54,10 @@
 classes (shallow and deeply), by returning the original object unchanged; this
 is compatible with the way these are treated by the :mod:`pickle` module.
 
+Shallow copies of dictionaries can be made using :meth:`dict.copy`, and
+of lists by assigning a slice of the entire list, for example,
+``copied_list = original_list[:]``.
+
 .. index:: module: pickle
 
 Classes can use the same interfaces to control copying that they use to control
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index e9acedf..4b1934d 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -247,6 +247,8 @@
    +----------------------+--------------------------------+----------------------------+
    | :class:`c_double`    | ``double``                     | float                      |
    +----------------------+--------------------------------+----------------------------+
+   | :class:`c_longdouble`| ``long double``                | float                      |
+   +----------------------+--------------------------------+----------------------------+
    | :class:`c_char_p`    | ``char *`` (NUL terminated)    | string or ``None``         |
    +----------------------+--------------------------------+----------------------------+
    | :class:`c_wchar_p`   | ``wchar_t *`` (NUL terminated) | unicode or ``None``        |
@@ -2065,9 +2067,16 @@
    initializer.
 
 
+.. class:: c_longdouble
+
+   Represents the C long double datatype. The constructor accepts an
+   optional float initializer.  On platforms where ``sizeof(long
+   double) == sizeof(double)`` it is an alias to :class:`c_double`.
+
+
 .. class:: c_float
 
-   Represents the C double datatype. The constructor accepts an optional float
+   Represents the C float datatype. The constructor accepts an optional float
    initializer.
 
 
diff --git a/Doc/library/mutex.rst b/Doc/library/mutex.rst
index 523692f..151f0c1 100644
--- a/Doc/library/mutex.rst
+++ b/Doc/library/mutex.rst
@@ -8,8 +8,9 @@
 
 
 The :mod:`mutex` module defines a class that allows mutual-exclusion via
-acquiring and releasing locks. It does not require (or imply) threading or
-multi-tasking, though it could be useful for those purposes.
+acquiring and releasing locks. It does not require (or imply)
+:mod:`threading` or multi-tasking, though it could be useful for those
+purposes.
 
 The :mod:`mutex` module defines the following class:
 
diff --git a/Doc/library/queue.rst b/Doc/library/queue.rst
index c183860..e9da905 100644
--- a/Doc/library/queue.rst
+++ b/Doc/library/queue.rst
@@ -7,10 +7,11 @@
 
 
 The :mod:`Queue` module implements a multi-producer, multi-consumer FIFO queue.
-It is especially useful in threads programming when information must be
+It is especially useful in threaded programming when information must be
 exchanged safely between multiple threads.  The :class:`Queue` class in this
 module implements all the required locking semantics.  It depends on the
-availability of thread support in Python.
+availability of thread support in Python; see the :mod:`threading`
+module.
 
 The :mod:`Queue` module defines the following class and exception:
 
diff --git a/Doc/library/re.rst b/Doc/library/re.rst
index fef6d2d..a3d3dea 100644
--- a/Doc/library/re.rst
+++ b/Doc/library/re.rst
@@ -546,6 +546,13 @@
       >>> re.split('\W+', 'Words, words, words.', 1)
       ['Words', 'words, words.']
 
+   Note that *split* will never split a string on an empty pattern match.
+   For example ::
+
+      >>> re.split('x*', 'foo')
+      ['foo']
+      >>> re.split("(?m)^$", "foo\n\nbar\n")
+      ['foo\n\nbar\n']
 
 .. function:: findall(pattern, string[, flags])
 
diff --git a/Doc/library/readline.rst b/Doc/library/readline.rst
index 7727c3b..7e6eccf 100644
--- a/Doc/library/readline.rst
+++ b/Doc/library/readline.rst
@@ -128,6 +128,12 @@
    Get the completer function, or ``None`` if no completer function has been set.
 
 
+.. function:: get_completion_type()
+
+   Get the type of completion being attempted.
+
+   .. versionadded:: 2.6
+
 .. function:: get_begidx()
 
    Get the beginning index of the readline tab-completion scope.
@@ -147,6 +153,16 @@
 
    Get the readline word delimiters for tab-completion.
 
+.. function:: set_completion_display_matches_hook([function])
+
+   Set or remove the completion display function.  If *function* is
+   specified, it will be used as the new completion display function;
+   if omitted or ``None``, any completion display function already
+   installed is removed.  The completion display function is called as
+   ``function(substitution, [matches], longest_match_length)`` once
+   each time matches need to be displayed.
+
+   .. versionadded:: 2.6
 
 .. function:: add_history(line)
 
diff --git a/Doc/library/smtplib.rst b/Doc/library/smtplib.rst
index 3173f35..286a725 100644
--- a/Doc/library/smtplib.rst
+++ b/Doc/library/smtplib.rst
@@ -47,7 +47,7 @@
 .. class:: LMTP([host[, port[, local_hostname]]])
 
    The LMTP protocol, which is very similar to ESMTP, is heavily based on the
-   standard SMTP client. It's common to use Unix sockets for LMTP, so our connect()
+   standard SMTP client. It's common to use Unix sockets for LMTP, so our :meth:`connect`
    method must support that as well as a regular host:port server. To specify a
    Unix socket, you must use an absolute path for *host*, starting with a '/'.
 
diff --git a/Doc/library/socket.rst b/Doc/library/socket.rst
index a445b54..758cfb1 100644
--- a/Doc/library/socket.rst
+++ b/Doc/library/socket.rst
@@ -165,7 +165,7 @@
 .. function:: create_connection(address[, timeout])
 
    Connects to the *address* received (as usual, a ``(host, port)`` pair), with an
-   optional timeout for the connection.  Specially useful for higher-level
+   optional timeout for the connection.  Especially useful for higher-level
    protocols, it is not normally used directly from application-level code.
    Passing the optional *timeout* parameter will set the timeout on the socket
    instance (if it is not given or ``None``, the global default timeout setting is
diff --git a/Doc/library/ssl.rst b/Doc/library/ssl.rst
index 5072caf..852a905 100644
--- a/Doc/library/ssl.rst
+++ b/Doc/library/ssl.rst
@@ -170,6 +170,8 @@
 Some "standard" root certificates are available at
 http://www.thawte.com/roots/  (for Thawte roots) and
 http://www.verisign.com/support/roots.html  (for Verisign roots).
+See also :rfc:`4158` for more discussion of the way in which 
+certification chains can be built.
 
 
 sslsocket Objects
@@ -239,23 +241,23 @@
    the certificate), ``notBefore`` (the time before which the certificate should not be trusted),
    and ``notAfter`` (the time after which the certificate should not be trusted) filled in.
 
-   The "subject" and "issuer" fields are themselves dictionaries containing the fields given
-   in the certificate's data structure for each principal::
+   The "subject" and "issuer" fields are tuples containing the name-value fields
+   given in the certificate's data structure for each principal::
 
-      {'issuer': {'commonName': u'somemachine.python.org',
-                  'countryName': u'US',
-                  'localityName': u'Wilmington',
-                  'organizationName': u'Python Software Foundation',
-                  'organizationalUnitName': u'SSL',
-                  'stateOrProvinceName': u'Delaware'},
-       'subject': {'commonName': u'somemachine.python.org',
-                   'countryName': u'US',
-                   'localityName': u'Wilmington',
-                   'organizationName': u'Python Software Foundation',
-                   'organizationalUnitName': u'SSL',
-                   'stateOrProvinceName': u'Delaware'},
-       'notAfter': 'Sep  4 21:54:26 2007 GMT',
-       'notBefore': 'Aug 25 21:54:26 2007 GMT',
+      {'issuer': (('countryName', u'US'),
+                  ('stateOrProvinceName', u'Delaware'),
+                  ('localityName', u'Wilmington'),
+                  ('organizationName', u'Python Software Foundation'),
+                  ('organizationalUnitName', u'SSL'),
+                  ('commonName', u'somemachine.python.org')),
+       'notAfter': 'Feb 16 16:54:50 2013 GMT',
+       'notBefore': 'Aug 27 16:54:50 2007 GMT',
+       'subject': (('countryName', u'US'),
+                   ('stateOrProvinceName', u'Delaware'),
+                   ('localityName', u'Wilmington'),
+                   ('organizationName', u'Python Software Foundation'),
+                   ('organizationalUnitName', u'SSL'),
+                   ('commonName', u'somemachine.python.org')),
        'version': 2}
 
    This certificate is said to be *self-signed*, because the subject
@@ -311,27 +313,32 @@
    # note that closing the sslsocket will also close the underlying socket
    ssl_sock.close()
 
-As of August 25, 2007, the certificate printed by this program
+As of September 4, 2007, the certificate printed by this program
 looked like this::
 
-   {'issuer': {'commonName': u'VeriSign Class 3 Extended Validation SSL SGC CA',
-               'countryName': u'US',
-               'organizationName': u'VeriSign, Inc.',
-               'organizationalUnitName': u'Terms of use at https://www.verisign.com/rpa (c)06'},
-    'subject': {'1.3.6.1.4.1.311.60.2.1.2': u'Delaware',
-                '1.3.6.1.4.1.311.60.2.1.3': u'US',
-                'commonName': u'www.verisign.com',
-                'countryName': u'US',
-                'localityName': u'Mountain View',
-                'organizationName': u'VeriSign, Inc.',
-                'organizationalUnitName': u'Terms of use at www.verisign.com/rpa (c)06',
-                'postalCode': u'94043',
-                'serialNumber': u'2497886',
-                'stateOrProvinceName': u'California',
-                'streetAddress': u'487 East Middlefield Road'},
-    'notAfter': 'May  8 23:59:59 2009 GMT',
-    'notBefore': 'May  9 00:00:00 2007 GMT',
-    'version': 2}
+  {'issuer': (('countryName', u'US'),
+              ('organizationName', u'VeriSign, Inc.'),
+              ('organizationalUnitName', u'VeriSign Trust Network'),
+              ('organizationalUnitName',
+               u'Terms of use at https://www.verisign.com/rpa (c)06'),
+              ('commonName',
+               u'VeriSign Class 3 Extended Validation SSL SGC CA')),
+   'notAfter': 'May  8 23:59:59 2009 GMT',
+   'notBefore': 'May  9 00:00:00 2007 GMT',
+   'subject': (('serialNumber', u'2497886'),
+               ('1.3.6.1.4.1.311.60.2.1.3', u'US'),
+               ('1.3.6.1.4.1.311.60.2.1.2', u'Delaware'),
+               ('countryName', u'US'),
+               ('postalCode', u'94043'),
+               ('stateOrProvinceName', u'California'),
+               ('localityName', u'Mountain View'),
+               ('streetAddress', u'487 East Middlefield Road'),
+               ('organizationName', u'VeriSign, Inc.'),
+               ('organizationalUnitName', u'Production Security Services'),
+               ('organizationalUnitName',
+                u'Terms of use at www.verisign.com/rpa (c)06'),
+               ('commonName', u'www.verisign.com')),
+   'version': 2}
 
 Server-side operation
 ^^^^^^^^^^^^^^^^^^^^^
@@ -383,3 +390,5 @@
 `Introducing SSL and Certificates using OpenSSL <http://old.pseudonym.org/ssl/wwwj-index.html>`_, by Frederick J. Hirsch
 
 `Privacy Enhancement for Internet Electronic Mail: Part II: Certificate-Based Key Management`, :rfc:`1422`, by Steve Kent
+
+`Internet X.509 Public Key Infrastructure Certificate and CRL Profile`, :rfc:`3280`, Housley et. al.
diff --git a/Doc/library/thread.rst b/Doc/library/thread.rst
index 32437dc..6c59954 100644
--- a/Doc/library/thread.rst
+++ b/Doc/library/thread.rst
@@ -13,9 +13,11 @@
    single: semaphores, binary
 
 This module provides low-level primitives for working with multiple threads
-(a.k.a. :dfn:`light-weight processes` or :dfn:`tasks`) --- multiple threads of
+(also called :dfn:`light-weight processes` or :dfn:`tasks`) --- multiple threads of
 control sharing their global data space.  For synchronization, simple locks
-(a.k.a. :dfn:`mutexes` or :dfn:`binary semaphores`) are provided.
+(also called :dfn:`mutexes` or :dfn:`binary semaphores`) are provided.
+The :mod:`threading` module provides an easier to use and higher-level
+threading API built on top of this module.
 
 .. index::
    single: pthreads
diff --git a/Doc/library/threading.rst b/Doc/library/threading.rst
index 828d42b..1b82e4b 100644
--- a/Doc/library/threading.rst
+++ b/Doc/library/threading.rst
@@ -8,6 +8,7 @@
 
 This module constructs higher-level threading interfaces on top of the  lower
 level :mod:`thread` module.
+See also the :mod:`mutex` and :mod:`Queue` modules.
 
 The :mod:`dummy_threading` module is provided for situations where
 :mod:`threading` cannot be used because :mod:`thread` is missing.
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index b0e731a..dd537d3 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -73,6 +73,20 @@
 
 Here are all of the changes that Python 2.6 makes to the core Python language.
 
+* The :func:`complex` constructor now accepts strings containing 
+  parenthesized complex numbers, letting ``complex(repr(cmplx))``
+  will now round-trip values.  For example, ``complex('(3+4j)')``
+  now returns the value (3+4j).
+
+  .. % Patch 1491866
+
+* The string :meth:`translate` method now accepts ``None`` as the 
+  translation table parameter, which is treated as the identity 
+  transformation.   This makes it easier to carry out operations
+  that only delete characters.  (Contributed by Bengt Richter.)
+
+  .. % Patch 1193128
+
 * An obscure change: when you use the the :func:`locals` function inside a
   :keyword:`class` statement, the resulting dictionary no longer returns free
   variables.  (Free variables, in this case, are variables referred to in the
@@ -124,6 +138,11 @@
 
   (Contributed by Fabian Kreutz.)
 
+* An optional ``timeout`` parameter was added to the
+  :class:`ftplib.FTP` class constructor as well as the :meth:`connect`
+  method, specifying a timeout measured in seconds.  (Added by Facundo
+  Batista.)
+
 * The :func:`glob.glob` function can now return Unicode filenames if 
   a Unicode path was used and Unicode filenames are matched within the directory.
 
@@ -157,6 +176,21 @@
 
   .. % Patch #1490190
 
+* In the :mod:`os.path` module, the :func:`splitext` function
+  has been changed to not split on leading period characters.
+  This produces better results when operating on Unix's dot-files.
+  For example, ``os.path.splitext('.ipython')``
+  now returns ``('.ipython', '')`` instead of ``('', '.ipython')``.
+
+  .. % Bug #115886
+
+  A new function, :func:`relpath(path, start)` returns a relative path
+  from the ``start`` path, if it's supplied, or from the current
+  working directory to the destination ``path``.  (Contributed by
+  Richard Barran.)
+
+  .. % Patch 1339796
+
 * New functions in the :mod:`posix` module: :func:`chflags` and :func:`lchflags`
   are wrappers for the corresponding system calls (where they're available).
   Constants for the flag values are defined in the :mod:`stat` module; some
@@ -166,14 +200,41 @@
 
 * The :mod:`rgbimg` module has been removed.
 
-* The :mod:`smtplib` module now supports SMTP over  SSL thanks to the addition
-  of the :class:`SMTP_SSL` class. This class supports an interface identical to
-  the existing :class:`SMTP`  class. (Contributed by Monty Taylor.)
+* The :mod:`smtplib` module now supports SMTP over SSL thanks to the
+  addition of the :class:`SMTP_SSL` class. This class supports an
+  interface identical to the existing :class:`SMTP` class.   Both 
+  class constructors also have an optional ``timeout`` parameter
+  that specifies a timeout for the initial connection attempt, measured in
+  seconds.
+
+  An implementation of the LMTP protocol (:rfc:`2033`) was also added to
+  the module.  LMTP is used in place of SMTP when transferring e-mail
+  between agents that don't manage a mail queue.
+
+  (SMTP over SSL contributed by Monty Taylor; timeout parameter
+  added by Facundo Batista; LMTP implemented by Leif
+  Hedstrom.)
+
+  .. % Patch #957003
+
+* An optional ``timeout`` parameter was added to the
+  :class:`telnetlib.Telnet` class constructor, specifying a timeout
+  measured in seconds.  (Added by Facundo Batista.)
 
 * The :mod:`test.test_support` module now contains a :func:`EnvironmentVarGuard`
   context manager that  supports temporarily changing environment variables and
   automatically restores them to their old values. (Contributed by Brett Cannon.)
 
+* The :mod:`timeit` module now accepts callables as well as strings 
+  for the statement being timed and for the setup code.
+  Two convenience functions were added for creating 
+  :class:`Timer` instances: 
+  ``repeat(stmt, setup, time, repeat, number)`` and 
+  ``timeit(stmt, setup, time, number)`` create an instance and call
+  the corresponding method. (Contributed by Erik Demaine.)
+
+  .. % Patch #1533909
+
 .. % ======================================================================
 .. % whole new modules get described in \subsections here
 
