diff --git a/Doc/bugs.rst b/Doc/bugs.rst
index dc7d388..4db2433 100644
--- a/Doc/bugs.rst
+++ b/Doc/bugs.rst
@@ -23,10 +23,9 @@
 http://docs.python.org/dev to see if the bug has been fixed.
 
 If the problem you're reporting is not already in the bug tracker, go back to
-the Python Bug Tracker.  If you don't already have a tracker account, select the
-"Register" link in the sidebar and undergo the registration procedure.
-Otherwise, if you're not logged in, enter your credentials and select "Login".
-It is not possible to submit a bug report anonymously.
+the Python Bug Tracker and log in.  If you don't already have a tracker account,
+select the "Register" link or, if you use OpenID, one of the OpenID provider
+logos in the sidebar.  It is not possible to submit a bug report anonymously.
 
 Being now logged in, you can submit a bug.  Select the "Create New" link in the
 sidebar to open the bug reporting form.
@@ -43,7 +42,8 @@
 
 Each bug report will be assigned to a developer who will determine what needs to
 be done to correct the problem.  You will receive an update each time action is
-taken on the bug.
+taken on the bug.  See http://www.python.org/dev/workflow/ for a detailed
+description of the issue workflow.
 
 
 .. seealso::
diff --git a/Doc/c-api/exceptions.rst b/Doc/c-api/exceptions.rst
index 4482cd0..141f357 100644
--- a/Doc/c-api/exceptions.rst
+++ b/Doc/c-api/exceptions.rst
@@ -429,6 +429,36 @@
    the warning message.
 
 
+Recursion Control
+=================
+
+These two functions provide a way to perform safe recursive calls at the C
+level, both in the core and in extension modules.  They are needed if the
+recursive code does not necessarily invoke Python code (which tracks its
+recursion depth automatically).
+
+.. cfunction:: int Py_EnterRecursiveCall(char *where)
+
+   Marks a point where a recursive C-level call is about to be performed.
+
+   If :const:`USE_STACKCHECK` is defined, this function checks if the the OS
+   stack overflowed using :cfunc:`PyOS_CheckStack`.  In this is the case, it
+   sets a :exc:`MemoryError` and returns a nonzero value.
+
+   The function then checks if the recursion limit is reached.  If this is the
+   case, a :exc:`RuntimeError` is set and a nonzero value is returned.
+   Otherwise, zero is returned.
+
+   *where* should be a string such as ``" in instance check"`` to be
+   concatenated to the :exc:`RuntimeError` message caused by the recursion depth
+   limit.
+
+.. cfunction:: void Py_LeaveRecursiveCall()
+
+   Ends a :cfunc:`Py_EnterRecursiveCall`.  Must be called once for each
+   *successful* invocation of :cfunc:`Py_EnterRecursiveCall`.
+
+
 .. _standardexceptions:
 
 Standard Exceptions
diff --git a/Doc/c-api/gcsupport.rst b/Doc/c-api/gcsupport.rst
index 7fe33b3..4517929 100644
--- a/Doc/c-api/gcsupport.rst
+++ b/Doc/c-api/gcsupport.rst
@@ -31,7 +31,7 @@
 Constructors for container types must conform to two rules:
 
 #. The memory for the object must be allocated using :cfunc:`PyObject_GC_New`
-   or :cfunc:`PyObject_GC_VarNew`.
+   or :cfunc:`PyObject_GC_NewVar`.
 
 #. Once all the fields which may contain references to other containers are
    initialized, it must call :cfunc:`PyObject_GC_Track`.
diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst
index 0566375..8489c35 100644
--- a/Doc/c-api/typeobj.rst
+++ b/Doc/c-api/typeobj.rst
@@ -189,7 +189,7 @@
    instance; this is normally :cfunc:`PyObject_Del` if the instance was allocated
    using :cfunc:`PyObject_New` or :cfunc:`PyObject_VarNew`, or
    :cfunc:`PyObject_GC_Del` if the instance was allocated using
-   :cfunc:`PyObject_GC_New` or :cfunc:`PyObject_GC_VarNew`.
+   :cfunc:`PyObject_GC_New` or :cfunc:`PyObject_GC_NewVar`.
 
    This field is inherited by subtypes.
 
diff --git a/Doc/data/refcounts.dat b/Doc/data/refcounts.dat
index 4d889bd..f48b754 100644
--- a/Doc/data/refcounts.dat
+++ b/Doc/data/refcounts.dat
@@ -1595,7 +1595,7 @@
 PyUnicode_Join:PyObject*:separator:0:
 PyUnicode_Join:PyObject*:seq:0:
 
-PyUnicode_Tailmatch:PyObject*::+1:
+PyUnicode_Tailmatch:int:::
 PyUnicode_Tailmatch:PyObject*:str:0:
 PyUnicode_Tailmatch:PyObject*:substr:0:
 PyUnicode_Tailmatch:int:start::
diff --git a/Doc/library/ftplib.rst b/Doc/library/ftplib.rst
index 63c653b..009fe38 100644
--- a/Doc/library/ftplib.rst
+++ b/Doc/library/ftplib.rst
@@ -33,8 +33,8 @@
    '226 Transfer complete.'
    >>> ftp.quit()
 
-The module defines the following items:
 
+The module defines the following items:
 
 .. class:: FTP([host[, user[, passwd[, acct[, timeout]]]]])
 
@@ -50,42 +50,42 @@
       *timeout* was added.
 
 
-   .. attribute:: all_errors
+.. exception:: error_reply
 
-      The set of all exceptions (as a tuple) that methods of :class:`FTP`
-      instances may raise as a result of problems with the FTP connection (as
-      opposed to programming errors made by the caller).  This set includes the
-      four exceptions listed below as well as :exc:`socket.error` and
-      :exc:`IOError`.
+   Exception raised when an unexpected reply is received from the server.
 
 
-   .. exception:: error_reply
+.. exception:: error_temp
 
-      Exception raised when an unexpected reply is received from the server.
+   Exception raised when an error code in the range 400--499 is received.
 
 
-   .. exception:: error_temp
+.. exception:: error_perm
 
-      Exception raised when an error code in the range 400--499 is received.
+   Exception raised when an error code in the range 500--599 is received.
 
 
-   .. exception:: error_perm
+.. exception:: error_proto
 
-      Exception raised when an error code in the range 500--599 is received.
+   Exception raised when a reply is received from the server that does not
+   begin with a digit in the range 1--5.
 
 
-   .. exception:: error_proto
+.. data:: all_errors
 
-      Exception raised when a reply is received from the server that does not
-      begin with a digit in the range 1--5.
+   The set of all exceptions (as a tuple) that methods of :class:`FTP`
+   instances may raise as a result of problems with the FTP connection (as
+   opposed to programming errors made by the caller).  This set includes the
+   four exceptions listed below as well as :exc:`socket.error` and
+   :exc:`IOError`.
 
 
 .. seealso::
 
    Module :mod:`netrc`
-      Parser for the :file:`.netrc` file format.  The file :file:`.netrc` is typically
-      used by FTP clients to load user authentication information before prompting the
-      user.
+      Parser for the :file:`.netrc` file format.  The file :file:`.netrc` is
+      typically used by FTP clients to load user authentication information
+      before prompting the user.
 
    .. index:: single: ftpmirror.py
 
diff --git a/Doc/library/markup.rst b/Doc/library/markup.rst
index dd0dd8f..8508a1f 100644
--- a/Doc/library/markup.rst
+++ b/Doc/library/markup.rst
@@ -35,10 +35,3 @@
    xml.sax.utils.rst
    xml.sax.reader.rst
    xml.etree.elementtree.rst
-
-.. seealso::
-
-   `Python/XML Libraries <http://pyxml.sourceforge.net/>`_
-      Home page for the PyXML package, containing an extension of :mod:`xml` package
-      bundled with Python.
-
diff --git a/Doc/library/mutex.rst b/Doc/library/mutex.rst
index 53656c3..2d41350 100644
--- a/Doc/library/mutex.rst
+++ b/Doc/library/mutex.rst
@@ -6,7 +6,7 @@
    :synopsis: Lock and queue for mutual exclusion.
    :deprecated:
 
-.. deprecated::
+.. deprecated:: 2.6
    The :mod:`mutex` module has been removed in Python 3.0.
 
 .. sectionauthor:: Moshe Zadka <moshez@zadka.site.co.il>
diff --git a/Doc/library/profile.rst b/Doc/library/profile.rst
index 8370f4d..a69a0da 100644
--- a/Doc/library/profile.rst
+++ b/Doc/library/profile.rst
@@ -124,7 +124,7 @@
 
    cProfile.py [-o output_file] [-s sort_order]
 
-:option:`-s` only applies to standard output (:option:`-o` is not supplied).
+``-s`` only applies to standard output (``-o`` is not supplied).
 Look in the :class:`Stats` documentation for valid sort values.
 
 When you wish to review the profile, you should use the methods in the
diff --git a/Doc/library/xmlrpclib.rst b/Doc/library/xmlrpclib.rst
index f2b4736..cc2e8b6 100644
--- a/Doc/library/xmlrpclib.rst
+++ b/Doc/library/xmlrpclib.rst
@@ -414,12 +414,12 @@
    error.
 
 In the following example we're going to intentionally cause a :exc:`ProtocolError`
-by providing an invalid URI::
+by providing an URI that doesn't point to an XMLRPC server::
 
    import xmlrpclib
 
-   # create a ServerProxy with an invalid URI
-   proxy = xmlrpclib.ServerProxy("http://invalidaddress/")
+   # create a ServerProxy with an URI that doesn't respond to XMLRPC requests
+   proxy = xmlrpclib.ServerProxy("http://www.google.com/")
 
    try:
        proxy.some_method()
diff --git a/Doc/reference/executionmodel.rst b/Doc/reference/executionmodel.rst
index 9f6170d..4e38536 100644
--- a/Doc/reference/executionmodel.rst
+++ b/Doc/reference/executionmodel.rst
@@ -119,7 +119,7 @@
 
 .. index:: pair: restricted; execution
 
-The built-in namespace associated with the execution of a code block is actually
+The builtins namespace associated with the execution of a code block is actually
 found by looking up the name ``__builtins__`` in its global namespace; this
 should be a dictionary or a module (in the latter case the module's dictionary
 is used).  By default, when in the :mod:`__main__` module, ``__builtins__`` is
@@ -131,7 +131,7 @@
 .. impl-detail::
 
    Users should not touch ``__builtins__``; it is strictly an implementation
-   detail.  Users wanting to override values in the built-in namespace should
+   detail.  Users wanting to override values in the builtins namespace should
    :keyword:`import` the :mod:`__builtin__` (no 's') module and modify its
    attributes appropriately.
 
diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst
index e060670..c03113c 100644
--- a/Doc/reference/expressions.rst
+++ b/Doc/reference/expressions.rst
@@ -185,6 +185,7 @@
    list_comprehension: `expression` `list_for`
    list_for: "for" `target_list` "in" `old_expression_list` [`list_iter`]
    old_expression_list: `old_expression` [("," `old_expression`)+ [","]]
+   old_expression: `or_test` | `old_lambda_form`
    list_iter: `list_for` | `list_if`
    list_if: "if" `old_expression` [`list_iter`]
 
@@ -1136,12 +1137,7 @@
    pair: Conditional; expression
    pair: Boolean; operation
 
-Boolean operations have the lowest priority of all Python operations:
-
 .. productionlist::
-   expression: `conditional_expression` | `lambda_form`
-   old_expression: `or_test` | `old_lambda_form`
-   conditional_expression: `or_test` ["if" `or_test` "else" `expression`]
    or_test: `and_test` | `or_test` "or" `and_test`
    and_test: `not_test` | `and_test` "and" `not_test`
    not_test: `comparison` | "not" `not_test`
@@ -1158,12 +1154,6 @@
 The operator :keyword:`not` yields ``True`` if its argument is false, ``False``
 otherwise.
 
-The expression ``x if C else y`` first evaluates *C* (*not* *x*); if *C* is
-true, *x* is evaluated and its value is returned; otherwise, *y* is evaluated
-and its value is returned.
-
-.. versionadded:: 2.5
-
 .. index:: operator: and
 
 The expression ``x and y`` first evaluates *x*; if *x* is false, its value is
@@ -1183,6 +1173,29 @@
 'foo'`` yields ``False``, not ``''``.)
 
 
+Conditional Expressions
+=======================
+
+.. versionadded:: 2.5
+
+.. index::
+   pair: conditional; expression
+   pair: ternary; operator
+
+.. productionlist::
+   conditional_expression: `or_test` ["if" `or_test` "else" `expression`]
+   expression: `conditional_expression` | `lambda_form`
+
+Conditional expressions (sometimes called a "ternary operator") have the lowest
+priority of all Python operations.
+
+The expression ``x if C else y`` first evaluates the condition, *C* (*not* *x*);
+if *C* is true, *x* is evaluated and its value is returned; otherwise, *y* is
+evaluated and its value is returned.
+
+See :pep:`308` for more details about conditional expressions.
+
+
 .. _lambdas:
 .. _lambda:
 
@@ -1276,6 +1289,8 @@
 +===============================================+=====================================+
 | :keyword:`lambda`                             | Lambda expression                   |
 +-----------------------------------------------+-------------------------------------+
+| :keyword:`if` -- :keyword:`else`              | Conditional expression              |
++-----------------------------------------------+-------------------------------------+
 | :keyword:`or`                                 | Boolean OR                          |
 +-----------------------------------------------+-------------------------------------+
 | :keyword:`and`                                | Boolean AND                         |
diff --git a/Doc/whatsnew/2.6.rst b/Doc/whatsnew/2.6.rst
index 1c517c0..a322bdb 100644
--- a/Doc/whatsnew/2.6.rst
+++ b/Doc/whatsnew/2.6.rst
@@ -109,9 +109,9 @@
   :func:`reduce` function.
 
 Python 3.0 adds several new built-in functions and changes the
-semantics of some existing built-ins.  Functions that are new in 3.0
+semantics of some existing builtins.  Functions that are new in 3.0
 such as :func:`bin` have simply been added to Python 2.6, but existing
-built-ins haven't been changed; instead, the :mod:`future_builtins`
+builtins haven't been changed; instead, the :mod:`future_builtins`
 module has versions with the new 3.0 semantics.  Code written to be
 compatible with 3.0 can do ``from future_builtins import hex, map`` as
 necessary.
@@ -833,7 +833,7 @@
        else:
            return str(self)
 
-There's also a :func:`format` built-in that will format a single
+There's also a :func:`format` builtin that will format a single
 value.  It calls the type's :meth:`__format__` method with the
 provided specifier::
 
@@ -1164,7 +1164,7 @@
 feature for Python. The ABC support consists of an :mod:`abc` module
 containing a metaclass called :class:`ABCMeta`, special handling of
 this metaclass by the :func:`isinstance` and :func:`issubclass`
-built-ins, and a collection of basic ABCs that the Python developers
+builtins, and a collection of basic ABCs that the Python developers
 think will be widely useful.  Future versions of Python will probably
 add more ABCs.
 
@@ -1318,9 +1318,9 @@
     >>> 0b101111
     47
 
-The :func:`oct` built-in still returns numbers
+The :func:`oct` builtin still returns numbers
 prefixed with a leading zero, and a new :func:`bin`
-built-in returns the binary representation for a number::
+builtin returns the binary representation for a number::
 
     >>> oct(42)
     '052'
@@ -1329,7 +1329,7 @@
     >>> bin(173)
     '0b10101101'
 
-The :func:`int` and :func:`long` built-ins will now accept the "0o"
+The :func:`int` and :func:`long` builtins will now accept the "0o"
 and "0b" prefixes when base-8 or base-2 are requested, or when the
 *base* argument is zero (signalling that the base used should be
 determined from the string)::
@@ -1415,7 +1415,7 @@
 combined using bitwise operations such as ``&`` and ``|``,
 and can be used as array indexes and slice boundaries.
 
-In Python 3.0, the PEP slightly redefines the existing built-ins
+In Python 3.0, the PEP slightly redefines the existing builtins
 :func:`round`, :func:`math.floor`, :func:`math.ceil`, and adds a new
 one, :func:`math.trunc`, that's been backported to Python 2.6.
 :func:`math.trunc` rounds toward zero, returning the closest
@@ -1523,7 +1523,7 @@
   Previously this would have been a syntax error.
   (Contributed by Amaury Forgeot d'Arc; :issue:`3473`.)
 
-* A new built-in, ``next(iterator, [default])`` returns the next item
+* A new builtin, ``next(iterator, [default])`` returns the next item
   from the specified iterator.  If the *default* argument is supplied,
   it will be returned if *iterator* has been exhausted; otherwise,
   the :exc:`StopIteration` exception will be raised.  (Backported
@@ -1952,9 +1952,9 @@
   (Contributed by Phil Schwartz; :issue:`1221598`.)
 
 * The :func:`reduce` built-in function is also available in the
-  :mod:`functools` module.  In Python 3.0, the built-in has been
+  :mod:`functools` module.  In Python 3.0, the builtin has been
   dropped and :func:`reduce` is only available from :mod:`functools`;
-  currently there are no plans to drop the built-in in the 2.x series.
+  currently there are no plans to drop the builtin in the 2.x series.
   (Patched by Christian Heimes; :issue:`1739906`.)
 
 * When possible, the :mod:`getpass` module will now use
@@ -2756,7 +2756,7 @@
 
 * ``filter(predicate, iterable)``,
   ``map(func, iterable1, ...)``: the 3.0 versions
-  return iterators, unlike the 2.x built-ins which return lists.
+  return iterators, unlike the 2.x builtins which return lists.
 
 * ``hex(value)``, ``oct(value)``: instead of calling the
   :meth:`__hex__` or :meth:`__oct__` methods, these versions will
diff --git a/Lib/plat-irix6/cdplayer.py b/Lib/plat-irix6/cdplayer.py
index 0f7983b..9664b2c 100644
--- a/Lib/plat-irix6/cdplayer.py
+++ b/Lib/plat-irix6/cdplayer.py
@@ -85,7 +85,7 @@
         new.write(self.id + '.title:\t' + self.title + '\n')
         new.write(self.id + '.artist:\t' + self.artist + '\n')
         for i in range(1, len(self.track)):
-            new.write('%s.track.%r:\t%s\n' % (i, track))
+            new.write('%s.track.%r:\t%s\n' % (self.id, i, self.track[i]))
         old.close()
         new.close()
         posix.rename(filename + '.new', filename)
diff --git a/Lib/test/test_strftime.py b/Lib/test/test_strftime.py
index cc36ed7..9328db0 100755
--- a/Lib/test/test_strftime.py
+++ b/Lib/test/test_strftime.py
@@ -119,16 +119,15 @@
             try:
                 result = time.strftime(e[0], now)
             except ValueError, error:
-                print "Standard '%s' format gaver error:" % (e[0], error)
-                continue
+                self.fail("strftime '%s' format gave error: %s" % (e[0], error))
             if re.match(escapestr(e[1], self.ampm), result):
                 continue
             if not result or result[0] == '%':
-                print "Does not support standard '%s' format (%s)" % \
-                       (e[0], e[2])
+                self.fail("strftime does not support standard '%s' format (%s)"
+                          % (e[0], e[2]))
             else:
-                print "Conflict for %s (%s):" % (e[0], e[2])
-                print "  Expected %s, but got %s" % (e[1], result)
+                self.fail("Conflict for %s (%s): expected %s, but got %s"
+                          % (e[0], e[2], e[1], result))
 
     def strftest2(self, now):
         nowsecs = str(long(now))[:-1]
diff --git a/Misc/BeOS-setup.py b/Misc/BeOS-setup.py
index 0043a34..c5e02cc 100644
--- a/Misc/BeOS-setup.py
+++ b/Misc/BeOS-setup.py
@@ -195,7 +195,7 @@
                                libraries=math_libs) )
         # operator.add() and similar goodies
         exts.append( Extension('operator', ['operator.c']) )
-        # access to the builtin codecs and codec registry
+        # access to the built-in codecs and codec registry
         exts.append( Extension('_codecs', ['_codecsmodule.c']) )
         # Python C API test module
         exts.append( Extension('_testcapi', ['_testcapimodule.c']) )
diff --git a/Misc/HISTORY b/Misc/HISTORY
index 127b782..ab1b1ec 100644
--- a/Misc/HISTORY
+++ b/Misc/HISTORY
@@ -1154,7 +1154,7 @@
 - Bug #1244610, #1392915, fix build problem on OpenBSD 3.7 and 3.8.
   configure would break checking curses.h.
 
-- Bug #959576: The pwd module is now builtin. This allows Python to be
+- Bug #959576: The pwd module is now built in. This allows Python to be
   built on UNIX platforms without $HOME set.
 
 - Bug #1072182, fix some potential problems if characters are signed.
@@ -1187,7 +1187,7 @@
   it will now use a default error message in this case.
 
 - Replaced most Unicode charmap codecs with new ones using the
-  new Unicode translate string feature in the builtin charmap
+  new Unicode translate string feature in the built-in charmap
   codec; the codecs were created from the mapping tables available
   at ftp.unicode.org and contain a few updates (e.g. the Mac OS
   encodings now include a mapping for the Apple logo)
@@ -1642,7 +1642,7 @@
   current file number.
 
 - Patch #1349274: gettext.install() now optionally installs additional
-  translation functions other than _() in the builtin namespace.
+  translation functions other than _() in the builtins namespace.
 
 - Patch #1337756: fileinput now accepts Unicode filenames.
 
@@ -2013,7 +2013,7 @@
 - Patch #881820: look for openpty and forkpty also in libbsd.
 
 - The sources of zlib are now part of the Python distribution (zlib 1.2.3).
-  The zlib module is now builtin on Windows.
+  The zlib module is now built in on Windows.
 
 - Use -xcode=pic32 for CCSHARED on Solaris with SunPro.
 
@@ -2848,7 +2848,7 @@
 - Patch #846659.  Fix an error in tarfile.py when using
   GNU longname/longlink creation.
 
-- The obsolete FCNTL.py has been deleted.  The builtin fcntl module
+- The obsolete FCNTL.py has been deleted.  The built-in fcntl module
   has been available (on platforms that support fcntl) since Python
   1.5a3, and all FCNTL.py did is export fcntl's names, after generating
   a deprecation warning telling you to use fcntl directly.
@@ -3102,7 +3102,7 @@
   segfault in a debug build, but provided less predictable behavior in
   a release build.
 
-- input() builtin function now respects compiler flags such as
+- input() built-in function now respects compiler flags such as
   __future__ statements.  SF patch 876178.
 
 - Removed PendingDeprecationWarning from apply().  apply() remains
@@ -3163,12 +3163,12 @@
 
 - Compiler flags set in PYTHONSTARTUP are now active in __main__.
 
-- Added two builtin types, set() and frozenset().
+- Added two built-in types, set() and frozenset().
 
-- Added a reversed() builtin function that returns a reverse iterator
+- Added a reversed() built-in function that returns a reverse iterator
   over a sequence.
 
-- Added a sorted() builtin function that returns a new sorted list
+- Added a sorted() built-in function that returns a new sorted list
   from any iterable.
 
 - CObjects are now mutable (on the C level) through PyCObject_SetVoidPtr.
@@ -3207,7 +3207,7 @@
   When comparing containers with cyclic references to themselves it
   will now just hit the recursion limit.  See SF patch 825639.
 
-- str and unicode builtin types now have an rsplit() method that is
+- str and unicode built-in types now have an rsplit() method that is
   same as split() except that it scans the string from the end
   working towards the beginning.  See SF feature request 801847.
 
@@ -3758,7 +3758,7 @@
 - A warning about assignments to module attributes that shadow
   builtins, present in earlier releases of 2.3, has been removed.
 
-- It is not possible to create subclasses of builtin types like str
+- It is not possible to create subclasses of built-in types like str
   and tuple that define an itemsize.  Earlier releases of Python 2.3
   allowed this by mistake, leading to crashes and other problems.
 
@@ -4233,13 +4233,13 @@
 - New format codes B, H, I, k and K have been implemented for
   PyArg_ParseTuple and PyBuild_Value.
 
-- New builtin function sum(seq, start=0) returns the sum of all the
+- New built-in function sum(seq, start=0) returns the sum of all the
   items in iterable object seq, plus start (items are normally numbers,
   and cannot be strings).
 
 - bool() called without arguments now returns False rather than
   raising an exception.  This is consistent with calling the
-  constructors for the other builtin types -- called without argument
+  constructors for the other built-in types -- called without argument
   they all return the false value of that type.  (SF patch #724135)
 
 - In support of PEP 269 (making the pgen parser generator accessible
@@ -4764,7 +4764,7 @@
   internals, and supplies some helpers for working with pickles, such as
   a symbolic pickle disassembler.
 
-- Xmlrpclib.py now supports the builtin boolean type.
+- xmlrpclib.py now supports the built-in boolean type.
 
 - py_compile has a new 'doraise' flag and a new PyCompileError
   exception.
@@ -5015,8 +5015,8 @@
   trace function to change which line will execute next.  A command to
   exploit this from pdb has been added.  [SF patch #643835]
 
-- The _codecs support module for codecs.py was turned into a builtin
-  module to assure that at least the builtin codecs are available
+- The _codecs support module for codecs.py was turned into a built-in
+  module to assure that at least the built-in codecs are available
   to the Python parser for source code decoding according to PEP 263.
 
 - issubclass now supports a tuple as the second argument, just like
@@ -5174,13 +5174,13 @@
 - Unicode objects in sys.path are no longer ignored but treated
   as directory names.
 
-- Fixed string.startswith and string.endswith builtin methods
+- Fixed string.startswith and string.endswith built-in methods
   so they accept negative indices.  [SF bug 493951]
 
 - Fixed a bug with a continue inside a try block and a yield in the
   finally clause.  [SF bug 567538]
 
-- Most builtin sequences now support "extended slices", i.e. slices
+- Most built-in sequences now support "extended slices", i.e. slices
   with a third "stride" parameter.  For example, "hello world"[::-1]
   gives "dlrow olleh".
 
@@ -5195,7 +5195,7 @@
   method no longer exist.  xrange repetition and slicing have been
   removed.
 
-- New builtin function enumerate(x), from PEP 279.  Example:
+- New built-in function enumerate(x), from PEP 279.  Example:
   enumerate("abc") is an iterator returning (0,"a"), (1,"b"), (2,"c").
   The argument can be an arbitrary iterable object.
 
@@ -5744,7 +5744,7 @@
   Presumably 2.3a1 breaks such systems.  If anyone uses such a system, help!
 
 - The configure option --without-doc-strings can be used to remove the
-  doc strings from the builtin functions and modules; this reduces the
+  doc strings from the built-in functions and modules; this reduces the
   size of the executable.
 
 - The universal newlines option (PEP 278) is on by default.  On Unix
@@ -5980,7 +5980,7 @@
   available for convenience.
 
 - New Carbon modules File (implementing the APIs in Files.h and Aliases.h)
-  and Folder (APIs from Folders.h). The old macfs builtin module is
+  and Folder (APIs from Folders.h). The old macfs built-in module is
   gone, and replaced by a Python wrapper around the new modules.
 
 - Pathname handling should now be fully consistent: MacPython-OSX always uses
@@ -6202,7 +6202,7 @@
 C API
 -----
 
-- New function PyDict_MergeFromSeq2() exposes the builtin dict
+- New function PyDict_MergeFromSeq2() exposes the built-in dict
   constructor's logic for updating a dictionary from an iterable object
   producing key-value pairs.
 
@@ -6253,7 +6253,7 @@
   using new-style MRO rules if any base class is a new-style class.
   This needs to be documented.
 
-- The new builtin dictionary() constructor, and dictionary type, have
+- The new built-in dictionary() constructor, and dictionary type, have
   been renamed to dict.  This reflects a decade of common usage.
 
 - dict() now accepts an iterable object producing 2-sequences.  For
@@ -6708,9 +6708,9 @@
   The new class must have the same C-level object layout as the old
   class.
 
-- The builtin file type can be subclassed now.  In the usual pattern,
-  "file" is the name of the builtin type, and file() is a new builtin
-  constructor, with the same signature as the builtin open() function.
+- The built-in file type can be subclassed now.  In the usual pattern,
+  "file" is the name of the built-in type, and file() is a new built-in
+  constructor, with the same signature as the built-in open() function.
   file() is now the preferred way to open a file.
 
 - Previously, __new__ would only see sequential arguments passed to
@@ -6724,7 +6724,7 @@
 - Previously, an operation on an instance of a subclass of an
   immutable type (int, long, float, complex, tuple, str, unicode),
   where the subtype didn't override the operation (and so the
-  operation was handled by the builtin type), could return that
+  operation was handled by the built-in type), could return that
   instance instead a value of the base type.  For example, if s was of
   a str subclass type, s[:] returned s as-is.  Now it returns a str
   with the same value as s.
@@ -6772,7 +6772,7 @@
   called for each iteration until it returns an empty string).
 
 - The codecs module has grown four new helper APIs to access
-  builtin codecs: getencoder(), getdecoder(), getreader(),
+  built-in codecs: getencoder(), getdecoder(), getreader(),
   getwriter().
 
 - SimpleXMLRPCServer: a new module (based upon SimpleHTMLServer)
@@ -7902,7 +7902,7 @@
 
   In all previous version of Python, names were resolved in exactly
   three namespaces -- the local namespace, the global namespace, and
-  the builtin namespace.  According to this old definition, if a
+  the builtins namespace.  According to this old definition, if a
   function A is defined within a function B, the names bound in B are
   not visible in A.  The new rules make names bound in B visible in A,
   unless A contains a name binding that hides the binding in B.
@@ -7923,7 +7923,7 @@
         return str.strip()
 
   Under the old rules, the name str in helper() is bound to the
-  builtin function str().  Under the new rules, it will be bound to
+  built-in function str().  Under the new rules, it will be bound to
   the argument named str and an error will occur when helper() is
   called.
 
@@ -8421,7 +8421,7 @@
   assignment, e.g. +=, was fixed.
 
 - Raise ZeroDivisionError when raising zero to a negative number,
-  e.g. 0.0 ** -2.0.  Note that math.pow is unrelated to the builtin
+  e.g. 0.0 ** -2.0.  Note that math.pow is unrelated to the built-in
   power operator and the result of math.pow(0.0, -2.0) will vary by
   platform.  On Linux, it raises a ValueError.
 
@@ -12671,7 +12671,7 @@
 overriding modules with the same name.
 
 - Fixed some strange exceptions in __del__ methods in library modules
-(e.g. urllib).  This happens because the builtin names are already
+(e.g. urllib).  This happens because the built-in names are already
 deleted by the time __del__ is called.  The solution (a hack, but it
 works) is to set some instance variables to 0 instead of None.
 
@@ -13374,8 +13374,8 @@
 f(a=1,a=2) is now a syntax error.
 
 
-Changes to builtin features
----------------------------
+Changes to built-in features
+----------------------------
 
 - There's a new exception FloatingPointError (used only by Lee Busby's
 patches to catch floating point exceptions, at the moment).
@@ -14675,7 +14675,7 @@
 
 - New modules: errno, operator (XXX).
 
-- Changes for use with Numerical Python: builtin function slice() and
+- Changes for use with Numerical Python: built-in function slice() and
 Ellipses object, and corresponding syntax:
 
 	x[lo:hi:stride]		==	x[slice(lo, hi, stride)]
@@ -15163,7 +15163,7 @@
 
 - The functions posix.popen() and posix.fdopen() now have an optional
 third argument to specify the buffer size, and default their second
-(mode) argument to 'r' -- in analogy to the builtin open() function.
+(mode) argument to 'r' -- in analogy to the built-in open() function.
 The same applies to posixfile.open() and the socket method makefile().
 
 - The thread.exit_thread() function now raises SystemExit so that
diff --git a/Misc/NEWS b/Misc/NEWS
index d390a2d..10dd9e2 100644
--- a/Misc/NEWS
+++ b/Misc/NEWS
@@ -21,6 +21,9 @@
 Library
 -------
 
+- Issue #6544: fix a reference leak in the kqueue implementation's error
+  handling.
+
 - Issue #7774: Set sys.executable to an empty string if argv[0] has been
   set to an non existent program name and Python is unable to retrieve the real
   program name
@@ -505,8 +508,8 @@
 - Issue #4618: When unicode arguments are passed to print(), the default
   separator and end should be unicode also.
 
-- Issue #6119: Fixed a incorrect Py3k warning about order comparisons of
-  builtin functions and methods.
+- Issue #6119: Fixed an incorrect Py3k warning about order comparisons of
+  built-in functions and methods.
 
 - Issue #5330: C functions called with keyword arguments were not reported by
   the various profiling modules (profile, cProfile). Patch by Hagen Fürstenau.
@@ -535,7 +538,7 @@
 - Issue #5829: complex('1e-500') no longer raises an exception
 
 - Issue #5787: object.__getattribute__(some_type, "__bases__") segfaulted on
-  some builtin types.
+  some built-in types.
 
 - Issue #5283: Setting __class__ in __del__ caused a segfault.
 
@@ -2799,7 +2802,7 @@
 - Fixed a minor memory leak in dictobject.c. The content of the free
   list was not freed on interpreter shutdown.
 
-- Limit free list of method and builtin function objects to 256
+- Limit free list of method and built-in function objects to 256
   entries each.
 
 - Patch #1953: Added ``sys._compact_freelists()`` and the C API
@@ -2933,7 +2936,7 @@
 
 - Fix warnings found by the new version of the Coverity checker.
 
-- The enumerate() builtin function is no longer bounded to sequences
+- The enumerate() built-in function is no longer bounded to sequences
   smaller than LONG_MAX.  Formerly, it raised an OverflowError.  Now,
   automatically shifts from ints to longs.
 
@@ -2994,7 +2997,7 @@
 - Deprecate BaseException.message as per PEP 352.
 
 - Issue #1303614: don't expose object's __dict__ when the dict is
-  inherited from a builtin base.
+  inherited from a built-in base.
 
 - When __slots__ are set to a unicode string, make it work the same as
   setting a plain string, ie don't expand to single letter identifiers.
@@ -3903,7 +3906,7 @@
   GNU modes.
 
 - Bug #1586448: the compiler module now emits the same bytecode for
-  list comprehensions as the builtin compiler, using the LIST_APPEND
+  list comprehensions as the built-in compiler, using the LIST_APPEND
   opcode.
 
 - Fix codecs.EncodedFile which did not use file_encoding in 2.5.0, and
@@ -4135,7 +4138,7 @@
 - Bug #1653736: Complain about keyword arguments to time.isoformat.
 
 - Bug #1486663: don't reject keyword arguments for subclasses of
-  builtin types.
+  built-in types.
 
 - Patch #1610575: The struct module now supports the 't' code, for C99
   _Bool.
@@ -4318,7 +4321,7 @@
 - Bug #1629566: clarify the docs on the return values of parsedate()
   and parsedate_tz() in email.utils and rfc822.
 
-- Patch #1671450: add a section about subclassing builtin types to the
+- Patch #1671450: add a section about subclassing built-in types to the
   "extending and embedding" tutorial.
 
 - Bug #1629125: fix wrong data type (int -> Py_ssize_t) in PyDict_Next
diff --git a/Misc/SpecialBuilds.txt b/Misc/SpecialBuilds.txt
index fa87d92..25bb6d1 100644
--- a/Misc/SpecialBuilds.txt
+++ b/Misc/SpecialBuilds.txt
@@ -37,7 +37,7 @@
 
 Turn on heavy reference debugging.  This is major surgery.  Every PyObject
 grows two more pointers, to maintain a doubly-linked list of all live
-heap-allocated objects.  Most builtin type objects are not in this list,
+heap-allocated objects.  Most built-in type objects are not in this list,
 as they're statically allocated.  Starting in Python 2.3, if COUNT_ALLOCS
 (see below) is also defined, a static type object T does appear in this
 list if at least one object of type T has been created.
diff --git a/Modules/selectmodule.c b/Modules/selectmodule.c
index 2a3eefd..dd1166c 100644
--- a/Modules/selectmodule.c
+++ b/Modules/selectmodule.c
@@ -1212,6 +1212,7 @@
 #undef KQ_OFF
 
 static PyObject *
+
 kqueue_event_repr(kqueue_event_Object *s)
 {
 	char buf[1024];
@@ -1491,19 +1492,6 @@
 		return NULL;
 	}
 
-	if (ch != NULL && ch != Py_None) {
-		it = PyObject_GetIter(ch);
-		if (it == NULL) {
-			PyErr_SetString(PyExc_TypeError,
-					"changelist is not iterable");
-			return NULL;
-		}
-		nchanges = PyObject_Size(ch);
-		if (nchanges < 0) {
-			return NULL;
-		}
-	}
-
 	if (otimeout == Py_None || otimeout == NULL) {
 		ptimeoutspec = NULL;
 	}
@@ -1539,11 +1527,22 @@
 		return NULL;
 	}
 
-	if (nchanges) {
+	if (ch != NULL && ch != Py_None) {
+		it = PyObject_GetIter(ch);
+		if (it == NULL) {
+			PyErr_SetString(PyExc_TypeError,
+					"changelist is not iterable");
+			return NULL;
+		}
+		nchanges = PyObject_Size(ch);
+		if (nchanges < 0) {
+			goto error;
+		}
+
 		chl = PyMem_New(struct kevent, nchanges);
 		if (chl == NULL) {
 			PyErr_NoMemory();
-			return NULL;
+			goto error;
 		}
 		i = 0;
 		while ((ei = PyIter_Next(it)) != NULL) {
@@ -1566,7 +1565,7 @@
 		evl = PyMem_New(struct kevent, nevents);
 		if (evl == NULL) {
 			PyErr_NoMemory();
-			return NULL;
+			goto error;
 		}
 	}
 
