diff --git a/Doc/c-api/typeobj.rst b/Doc/c-api/typeobj.rst
index 2e2f9c4..eba8d69 100644
--- a/Doc/c-api/typeobj.rst
+++ b/Doc/c-api/typeobj.rst
@@ -1052,6 +1052,7 @@
             binaryfunc nb_inplace_add;
             binaryfunc nb_inplace_subtract;
             binaryfunc nb_inplace_multiply;
+            binaryfunc nb_inplace_divide;
             binaryfunc nb_inplace_remainder;
             ternaryfunc nb_inplace_power;
             binaryfunc nb_inplace_lshift;
diff --git a/Doc/howto/regex.rst b/Doc/howto/regex.rst
index c74fd39..3ed5368 100644
--- a/Doc/howto/regex.rst
+++ b/Doc/howto/regex.rst
@@ -4,7 +4,7 @@
   Regular Expression HOWTO
 ****************************
 
-:Author: A.M. Kuchling
+:Author: A.M. Kuchling <amk@amk.ca>
 :Release: 0.05
 
 .. TODO:
diff --git a/Doc/library/contextlib.rst b/Doc/library/contextlib.rst
index 74a68cf..e2ca6a1 100644
--- a/Doc/library/contextlib.rst
+++ b/Doc/library/contextlib.rst
@@ -61,14 +61,15 @@
 
       from contextlib import nested
 
-      with nested(A, B, C) as (X, Y, Z):
+      with nested(A(), B(), C()) as (X, Y, Z):
           do_something()
 
    is equivalent to this::
 
-      with A as X:
-          with B as Y:
-              with C as Z:
+      m1, m2, m3 = A(), B(), C()
+      with m1 as X:
+          with m2 as Y:
+              with m3 as Z:
                   do_something()
 
    Note that if the :meth:`__exit__` method of one of the nested context managers
diff --git a/Doc/library/functions.rst b/Doc/library/functions.rst
index e807e79..4d8a845 100644
--- a/Doc/library/functions.rst
+++ b/Doc/library/functions.rst
@@ -561,6 +561,14 @@
    its :meth:`__next__` method; if the value returned is equal to *sentinel*,
    :exc:`StopIteration` will be raised, otherwise the value will be returned.
 
+   One useful application of the second form of :func:`iter` is to read lines of
+   a file until a certain line is reached.  The following example reads a file
+   until ``"STOP"`` is reached: ::
+
+      with open("mydata.txt") as fp:
+          for line in iter(fp.readline, "STOP"):
+              process_line(line)
+
 
 .. function:: len(s)
 
diff --git a/Doc/library/idle.rst b/Doc/library/idle.rst
index 413750f..1b78fb9 100644
--- a/Doc/library/idle.rst
+++ b/Doc/library/idle.rst
@@ -253,6 +253,24 @@
       black
 
 
+Startup
+-------
+
+Upon startup with the ``-s`` option, IDLE will execute the file referenced by
+the environment variables :envvar:`IDLESTARTUP` or :envvar:`PYTHONSTARTUP`.
+Idle first checks for ``IDLESTARTUP``; if ``IDLESTARTUP`` is present the file
+referenced is run.  If ``IDLESTARTUP`` is not present, Idle checks for
+``PYTHONSTARTUP``.  Files referenced by these environment variables are
+convenient places to store functions that are used frequently from the Idle
+shell, or for executing import statements to import common modules.
+
+In addition, ``Tk`` also loads a startup file if it is present.  Note that the
+Tk file is loaded unconditionally.  This additional file is ``.Idle.py`` and is
+looked for in the user's home directory.  Statements in this file will be
+executed in the Tk namespace, so this file is not useful for importing functions
+to be used from Idle's Python shell.
+
+
 Command line usage
 ^^^^^^^^^^^^^^^^^^
 
diff --git a/Doc/library/re.rst b/Doc/library/re.rst
index 6e499a0..0dbd0e2 100644
--- a/Doc/library/re.rst
+++ b/Doc/library/re.rst
@@ -1127,7 +1127,7 @@
    string)`` or ``re.search(pattern, string)``.
 
 :func:`match` has an optional second parameter that gives an index in the string
-where the search is to start:
+where the search is to start::
 
    >>> pattern = re.compile("o")
    >>> pattern.match("dog")      # No match as "o" is not at the start of "dog."
diff --git a/Doc/library/string.rst b/Doc/library/string.rst
index 98c7051..2e444ad 100644
--- a/Doc/library/string.rst
+++ b/Doc/library/string.rst
@@ -196,7 +196,7 @@
 
    .. productionlist:: sf
       replacement_field: "{" `field_name` ["!" `conversion`] [":" `format_spec`] "}"
-      field_name: (`identifier` | `integer`) ("." `attribute_name` | "[" element_index "]")*
+      field_name: (`identifier` | `integer`) ("." `attribute_name` | "[" `element_index` "]")*
       attribute_name: `identifier`
       element_index: `integer`
       conversion: "r" | "s" | "a"
diff --git a/Doc/library/xml.dom.rst b/Doc/library/xml.dom.rst
index 2a0c788..bf1b151 100644
--- a/Doc/library/xml.dom.rst
+++ b/Doc/library/xml.dom.rst
@@ -600,7 +600,7 @@
    Same as equivalent method in the :class:`Document` class.
 
 
-.. method:: Element.getElementsByTagNameNS(tagName)
+.. method:: Element.getElementsByTagNameNS(namespaceURI, localName)
 
    Same as equivalent method in the :class:`Document` class.
 
diff --git a/Doc/reference/datamodel.rst b/Doc/reference/datamodel.rst
index 2e4a776..49f2be6 100644
--- a/Doc/reference/datamodel.rst
+++ b/Doc/reference/datamodel.rst
@@ -1251,11 +1251,12 @@
 
    .. index:: single: __len__() (mapping object method)
 
-   Called to implement truth value testing, and the built-in operation ``bool()``;
-   should return ``False`` or ``True``. When this method is not defined,
-   :meth:`__len__` is called, if it is defined (see below) and ``True`` is returned
-   when the length is not zero.  If a class defines neither :meth:`__len__` nor
-   :meth:`__bool__`, all its instances are considered true.
+   Called to implement truth value testing and the built-in operation
+   ``bool()``; should return ``False`` or ``True``, or their integer equivalents
+   ``0`` or ``1``.  When this method is not defined, :meth:`__len__` is called,
+   if it is defined, and the object is considered true if its result is nonzero.
+   If a class defines neither :meth:`__len__` nor :meth:`__bool__`, all its
+   instances are considered true.
 
 
 .. _attribute-access:
diff --git a/Lib/distutils/tests/test_msvc9compiler.py b/Lib/distutils/tests/test_msvc9compiler.py
index e7d1620..aefadd6 100644
--- a/Lib/distutils/tests/test_msvc9compiler.py
+++ b/Lib/distutils/tests/test_msvc9compiler.py
@@ -34,6 +34,10 @@
         if sys.platform != 'win32':
             # this test is only for win32
             return
+        from distutils.msvccompiler import get_build_version
+        if get_build_version() < 8.0:
+            # this test is only for MSVC8.0 or above
+            return
 
         from distutils.msvc9compiler import Reg
         self.assertRaises(KeyError, Reg.get_value, 'xxx', 'xxx')
diff --git a/Lib/filecmp.py b/Lib/filecmp.py
index 6dcebaa..4cbb0d6 100644
--- a/Lib/filecmp.py
+++ b/Lib/filecmp.py
@@ -11,6 +11,7 @@
 
 import os
 import stat
+import contextlib
 from itertools import filterfalse
 
 __all__ = ["cmp","dircmp","cmpfiles"]
@@ -62,15 +63,14 @@
 
 def _do_cmp(f1, f2):
     bufsize = BUFSIZE
-    fp1 = open(f1, 'rb')
-    fp2 = open(f2, 'rb')
-    while True:
-        b1 = fp1.read(bufsize)
-        b2 = fp2.read(bufsize)
-        if b1 != b2:
-            return False
-        if not b1:
-            return True
+    with contextlib.nested(open(f1, 'rb'), open(f2, 'rb')) as (fp1, fp2):
+        while True:
+            b1 = fp1.read(bufsize)
+            b2 = fp2.read(bufsize)
+            if b1 != b2:
+                return False
+            if not b1:
+                return True
 
 # Directory comparison class.
 #
diff --git a/Modules/_codecsmodule.c b/Modules/_codecsmodule.c
index e7dbf89..cbcf84d 100644
--- a/Modules/_codecsmodule.c
+++ b/Modules/_codecsmodule.c
@@ -61,7 +61,7 @@
 "lookup(encoding) -> CodecInfo\n\
 \n\
 Looks up a codec tuple in the Python codec registry and returns\n\
-a tuple of function (or a CodecInfo object).");
+a CodecInfo object.");
 
 static
 PyObject *codec_lookup(PyObject *self, PyObject *args)
diff --git a/Objects/tupleobject.c b/Objects/tupleobject.c
index f7b316b..8828a2d 100644
--- a/Objects/tupleobject.c
+++ b/Objects/tupleobject.c
@@ -458,7 +458,7 @@
 		else if (cmp < 0)
 			return NULL;
 	}
-	PyErr_SetString(PyExc_ValueError, "tuple.index(x): x not in list");
+	PyErr_SetString(PyExc_ValueError, "tuple.index(x): x not in tuple");
 	return NULL;
 }
 
diff --git a/Objects/typeobject.c b/Objects/typeobject.c
index a362b84..47bc0bb 100644
--- a/Objects/typeobject.c
+++ b/Objects/typeobject.c
@@ -4785,7 +4785,7 @@
 	PyObject *func, *args;
 	static PyObject *bool_str, *len_str;
 	int result = -1;
-	int from_len = 0;
+	int using_len = 0;
 
 	func = lookup_maybe(self, "__bool__", &bool_str);
 	if (func == NULL) {
@@ -4794,14 +4794,14 @@
 		func = lookup_maybe(self, "__len__", &len_str);
 		if (func == NULL)
 			return PyErr_Occurred() ? -1 : 1;
-		from_len = 1;
- 	}
+		using_len = 1;
+	}
 	args = PyTuple_New(0);
 	if (args != NULL) {
 		PyObject *temp = PyObject_Call(func, args, NULL);
 		Py_DECREF(args);
 		if (temp != NULL) {
-			if (from_len) {
+			if (using_len) {
 				/* enforced by slot_nb_len */
 				result = PyObject_IsTrue(temp);
 			}
@@ -4810,9 +4810,11 @@
 			}
 			else {
 				PyErr_Format(PyExc_TypeError,
-					 "__bool__ should return "
-					 "bool, returned %s",
-					 Py_TYPE(temp)->tp_name);
+					     "%s should return "
+					     "bool or int, returned %s",
+					     (using_len ? "__len__"
+					                : "__bool__"),
+					     Py_TYPE(temp)->tp_name);
 				result = -1;
 			}
 			Py_DECREF(temp);
