diff --git a/Doc/library/constants.rst b/Doc/library/constants.rst
index c36b2fa..634656a 100644
--- a/Doc/library/constants.rst
+++ b/Doc/library/constants.rst
@@ -5,6 +5,11 @@
 A small number of constants live in the built-in namespace.  They are:
 
 
+.. note::
+
+   :data:`None`, :data:`False`, :data:`True` and :data:`__debug__` cannot be
+   reassigned, so they can be considered "true" constants.
+
 .. XXX False, True, None are keywords too
 
 .. data:: False
@@ -37,3 +42,10 @@
    slicing syntax for user-defined container data types, as in ::
 
       val = container[1:5, 7:10, ...]
+
+
+.. data:: __debug__
+
+   A boolean value that is :data:`True` if Python was not started with the
+   ``-O`` command line option.  Its value is used indirectly by the
+   :keyword:`assert` statement, but it can also be used directly in code.
diff --git a/Doc/library/fileinput.rst b/Doc/library/fileinput.rst
index ba7e980..fd84139 100644
--- a/Doc/library/fileinput.rst
+++ b/Doc/library/fileinput.rst
@@ -19,10 +19,10 @@
 This iterates over the lines of all files listed in ``sys.argv[1:]``, defaulting
 to ``sys.stdin`` if the list is empty.  If a filename is ``'-'``, it is also
 replaced by ``sys.stdin``.  To specify an alternative list of filenames, pass it
-as the first argument to :func:`input`.  A single file name is also allowed.
+as the first argument to :func:`.input`.  A single file name is also allowed.
 
 All files are opened in text mode by default, but you can override this by
-specifying the *mode* parameter in the call to :func:`input` or
+specifying the *mode* parameter in the call to :func:`.input` or
 :class:`FileInput()`.  If an I/O error occurs during opening or reading a file,
 :exc:`IOError` is raised.
 
diff --git a/Doc/library/new.rst b/Doc/library/new.rst
index 438329f..6153ff1 100644
--- a/Doc/library/new.rst
+++ b/Doc/library/new.rst
@@ -50,4 +50,4 @@
 
    This function returns a new class object, with name *name*, derived from
    *baseclasses* (which should be a tuple of classes) and with namespace *dict*.
-
+   Alias for the built-in :class:`type`.
diff --git a/Doc/library/readline.rst b/Doc/library/readline.rst
index ed2027d..7727c3b 100644
--- a/Doc/library/readline.rst
+++ b/Doc/library/readline.rst
@@ -12,8 +12,8 @@
 completion and reading/writing of history files from the Python interpreter.
 This module can be used directly or via the :mod:`rlcompleter` module.  Settings
 made using  this module affect the behaviour of both the interpreter's
-interactive prompt  and the prompts offered by the :func:`raw_input` and
-:func:`input` built-in functions.
+interactive prompt  and the prompts offered by the built-in :func:`input`
+function.
 
 The :mod:`readline` module defines the following functions:
 
diff --git a/Doc/reference/executionmodel.rst b/Doc/reference/executionmodel.rst
index 27802c8..1478cc7 100644
--- a/Doc/reference/executionmodel.rst
+++ b/Doc/reference/executionmodel.rst
@@ -26,17 +26,16 @@
 Each occurrence of a name in the program text refers to the :dfn:`binding` of
 that name established in the innermost function block containing the use.
 
-.. index:: single: block
+.. index:: block
 
 A :dfn:`block` is a piece of Python program text that is executed as a unit.
 The following are blocks: a module, a function body, and a class definition.
 Each command typed interactively is a block.  A script file (a file given as
 standard input to the interpreter or specified on the interpreter command line
 the first argument) is a code block.  A script command (a command specified on
-the interpreter command line with the '**-c**' option) is a code block.  The string
-argument passed to the built-in functions :func:`eval` and :func:`exec` is a
-code block. The expression read and evaluated by the built-in function
-:func:`input` is a code block.
+the interpreter command line with the '**-c**' option) is a code block.  The
+string argument passed to the built-in functions :func:`eval` and :func:`exec`
+is a code block.
 
 .. index:: pair: execution; frame
 
@@ -44,7 +43,7 @@
 administrative information (used for debugging) and determines where and how
 execution continues after the code block's execution has completed.
 
-.. index:: single: scope
+.. index:: scope
 
 A :dfn:`scope` defines the visibility of a name within a block.  If a local
 variable is defined in a block, its scope includes that block.  If the
@@ -61,10 +60,11 @@
 
 .. index:: pair: free; variable
 
-If a name is bound in a block, it is a local variable of that block. If a name
-is bound at the module level, it is a global variable.  (The variables of the
-module code block are local and global.)  If a variable is used in a code block
-but not defined there, it is a :dfn:`free variable`.
+If a name is bound in a block, it is a local variable of that block, unless
+declared as :keyword:`nonlocal`.  If a name is bound at the module level, it is
+a global variable.  (The variables of the module code block are local and
+global.)  If a variable is used in a code block but not defined there, it is a
+:dfn:`free variable`.
 
 .. index::
    single: NameError (built-in exception)
@@ -96,18 +96,20 @@
 
 If a name binding operation occurs anywhere within a code block, all uses of the
 name within the block are treated as references to the current block.  This can
-lead to errors when a name is used within a block before it is bound. This rule
+lead to errors when a name is used within a block before it is bound.  This rule
 is subtle.  Python lacks declarations and allows name binding operations to
 occur anywhere within a code block.  The local variables of a code block can be
 determined by scanning the entire text of the block for name binding operations.
 
-If the global statement occurs within a block, all uses of the name specified in
-the statement refer to the binding of that name in the top-level namespace.
-Names are resolved in the top-level namespace by searching the global namespace,
-i.e. the namespace of the module containing the code block, and the builtin
-namespace, the namespace of the module :mod:`__builtin__`.  The global namespace
-is searched first.  If the name is not found there, the builtin namespace is
-searched.  The global statement must precede all uses of the name.
+If the :keyword:`global` statement occurs within a block, all uses of the name
+specified in the statement refer to the binding of that name in the top-level
+namespace.  Names are resolved in the top-level namespace by searching the
+global namespace, i.e. the namespace of the module containing the code block,
+and the builtin namespace, the namespace of the module :mod:`__builtin__`.  The
+global namespace is searched first.  If the name is not found there, the builtin
+namespace is searched.  The global statement must precede all uses of the name.
+
+.. XXX document "nonlocal" semantics here
 
 .. index:: pair: restricted; execution
 
@@ -137,7 +139,7 @@
 statement, the free variable is treated as a global.
 
 A class definition is an executable statement that may use and define names.
-These references follow the normal rules for name resolution. The namespace of
+These references follow the normal rules for name resolution.  The namespace of
 the class definition becomes the attribute dictionary of the class.  Names
 defined at the class scope are not visible in methods.
 
@@ -157,13 +159,14 @@
 the function contains or is a nested block with free variables, the compiler
 will raise a :exc:`SyntaxError`.
 
-The :func:`eval` and :func:`exec` functions do
-not have access to the full environment for resolving names.  Names may be
-resolved in the local and global namespaces of the caller.  Free variables are
-not resolved in the nearest enclosing namespace, but in the global namespace.
-[#]_ The :func:`exec` and :func:`eval` functions have optional
-arguments to override the global and local namespace.  If only one namespace is
-specified, it is used for both.
+.. XXX from * also invalid with relative imports (at least currently)
+
+The :func:`eval` and :func:`exec` functions do not have access to the full
+environment for resolving names.  Names may be resolved in the local and global
+namespaces of the caller.  Free variables are not resolved in the nearest
+enclosing namespace, but in the global namespace.  [#]_ The :func:`exec` and
+:func:`eval` functions have optional arguments to override the global and local
+namespace.  If only one namespace is specified, it is used for both.
 
 
 .. _exceptions:
@@ -205,21 +208,17 @@
 
 When an exception is not handled at all, the interpreter terminates execution of
 the program, or returns to its interactive main loop.  In either case, it prints
-a stack backtrace, except when the exception is  :exc:`SystemExit`.
+a stack backtrace, except when the exception is :exc:`SystemExit`.
 
 Exceptions are identified by class instances.  The :keyword:`except` clause is
 selected depending on the class of the instance: it must reference the class of
 the instance or a base class thereof.  The instance can be received by the
 handler and can carry additional information about the exceptional condition.
 
-Exceptions can also be identified by strings, in which case the
-:keyword:`except` clause is selected by object identity.  An arbitrary value can
-be raised along with the identifying string which can be passed to the handler.
-
 .. warning::
 
-   Messages to exceptions are not part of the Python API.  Their contents may
-   change from one version of Python to the next without warning and should not be
+   Exception messages are not part of the Python API.  Their contents may change
+   from one version of Python to the next without warning and should not be
    relied on by code which will run under multiple versions of the interpreter.
 
 See also the description of the :keyword:`try` statement in section :ref:`try`
@@ -227,6 +226,6 @@
 
 .. rubric:: Footnotes
 
-.. [#] This limitation occurs because the code that is executed by these operations is
-   not available at the time the module is compiled.
+.. [#] This limitation occurs because the code that is executed by these operations
+       is not available at the time the module is compiled.
 
diff --git a/Doc/reference/expressions.rst b/Doc/reference/expressions.rst
index a5bfd43..33fbeec 100644
--- a/Doc/reference/expressions.rst
+++ b/Doc/reference/expressions.rst
@@ -27,25 +27,19 @@
 
 .. index:: pair: arithmetic; conversion
 
-.. XXX no coercion rules are documented anymore
-
 When a description of an arithmetic operator below uses the phrase "the numeric
-arguments are converted to a common type," the arguments are coerced using the
-coercion rules.  If both arguments are standard
-numeric types, the following coercions are applied:
+arguments are converted to a common type," this means that the operator
+implementation for built-in types works that way:
 
 * If either argument is a complex number, the other is converted to complex;
 
 * otherwise, if either argument is a floating point number, the other is
   converted to floating point;
 
-* otherwise, if either argument is a long integer, the other is converted to
-  long integer;
-
-* otherwise, both must be plain integers and no conversion is necessary.
+* otherwise, both must be integers and no conversion is necessary.
 
 Some additional rules apply for certain operators (e.g., a string left argument
-to the '%' operator). Extensions can define their own coercions.
+to the '%' operator).  Extensions must define their own conversion behavior.
 
 
 .. _atoms:
@@ -53,18 +47,16 @@
 Atoms
 =====
 
-.. index:: single: atom
+.. index:: atom
 
 Atoms are the most basic elements of expressions.  The simplest atoms are
-identifiers or literals.  Forms enclosed in reverse quotes or in parentheses,
-brackets or braces are also categorized syntactically as atoms.  The syntax for
-atoms is:
+identifiers or literals.  Forms enclosed in parentheses, brackets or braces are
+also categorized syntactically as atoms.  The syntax for atoms is:
 
 .. productionlist::
    atom: `identifier` | `literal` | `enclosure`
-   enclosure: `parenth_form` | `list_display`
-            : | `generator_expression` | `dict_display`
-            : | `string_conversion` | `yield_atom`
+   enclosure: `parenth_form` | `list_display` | `dict_display` | `set_display`
+            : | `generator_expression` | `yield_atom`
 
 
 .. _atom-identifiers:
@@ -72,9 +64,7 @@
 Identifiers (Names)
 -------------------
 
-.. index::
-   single: name
-   single: identifier
+.. index:: name, identifier
 
 An identifier occurring as an atom is a name.  See section :ref:`identifiers`
 for lexical definition and section :ref:`naming` for documentation of naming and
@@ -103,9 +93,6 @@
 defined truncation may happen.  If the class name consists only of underscores,
 no transformation is done.
 
-.. % 
-.. % 
-
 
 .. _atom-literals:
 
@@ -114,26 +101,26 @@
 
 .. index:: single: literal
 
-Python supports string literals and various numeric literals:
+Python supports string and bytes literals and various numeric literals:
 
 .. productionlist::
-   literal: `stringliteral` | `integer` | `longinteger`
-          : | `floatnumber` | `imagnumber`
+   literal: `stringliteral` | `bytesliteral`
+          : | `integer` | `floatnumber` | `imagnumber`
 
-Evaluation of a literal yields an object of the given type (string, integer,
-long integer, floating point number, complex number) with the given value.  The
-value may be approximated in the case of floating point and imaginary (complex)
+Evaluation of a literal yields an object of the given type (string, bytes,
+integer, floating point number, complex number) with the given value.  The value
+may be approximated in the case of floating point and imaginary (complex)
 literals.  See section :ref:`literals` for details.
 
 .. index::
    triple: immutable; data; type
    pair: immutable; object
 
-All literals correspond to immutable data types, and hence the object's identity
-is less important than its value.  Multiple evaluations of literals with the
-same value (either the same occurrence in the program text or a different
-occurrence) may obtain the same object or a different object with the same
-value.
+With the exception of bytes literals, these all correspond to immutable data
+types, and hence the object's identity is less important than its value.
+Multiple evaluations of literals with the same value (either the same occurrence
+in the program text or a different occurrence) may obtain the same object or a
+different object with the same value.
 
 
 .. _parenthesized:
@@ -168,6 +155,35 @@
 ambiguities and allow common typos to pass uncaught.
 
 
+.. _comprehensions:
+
+Displays for lists, sets and dictionaries
+-----------------------------------------
+
+For constructing a list, a set or a dictionary Python provides special syntax
+called "displays", each of them in two flavors:
+
+* either the container contents are listed explicitly, or
+
+* they are computed via a set of looping and filtering instructions, called a
+  :dfn:`comprehension`.
+
+Common syntax elements for comprehensions are:
+
+.. productionlist::
+   comprehension: `expression` `comp_for`
+   comp_for: "for" `target_list` "in" `or_test` [`comp_iter`]
+   comp_iter: `comp_for` | `comp_if`
+   comp_if: "if" `expression_nocond` [`comp_iter`]
+
+The comprehension consists of a single expression followed by at least one
+:keyword:`for` clause and zero or more :keyword:`for` or :keyword:`if` clauses.
+In this case, the elements of the new container are those that would be produced
+by considering each of the :keyword:`for` or :keyword:`if` clauses a block,
+nesting from left to right, and evaluating the expression to produce an element
+each time the innermost block is reached.
+
+
 .. _lists:
 
 List displays
@@ -176,71 +192,41 @@
 .. index::
    pair: list; display
    pair: list; comprehensions
+   pair: empty; list
+   object: list
 
 A list display is a possibly empty series of expressions enclosed in square
 brackets:
 
 .. productionlist::
-   list_display: "[" [`expression_list` | `list_comprehension`] "]"
-   list_comprehension: `expression` `list_for`
-   list_for: "for" `target_list` "in" `old_expression_list` [`list_iter`]
-   old_expression_list: `old_expression` [("," `old_expression`)+ [","]]
-   list_iter: `list_for` | `list_if`
-   list_if: "if" `old_expression` [`list_iter`]
+   list_display: "[" [`expression_list` | `comprehension`] "]"
 
-.. index::
-   pair: list; comprehensions
-   object: list
-   pair: empty; list
-
-A list display yields a new list object.  Its contents are specified by
-providing either a list of expressions or a list comprehension.  When a
-comma-separated list of expressions is supplied, its elements are evaluated from
-left to right and placed into the list object in that order.  When a list
-comprehension is supplied, it consists of a single expression followed by at
-least one :keyword:`for` clause and zero or more :keyword:`for` or :keyword:`if`
-clauses.  In this case, the elements of the new list are those that would be
-produced by considering each of the :keyword:`for` or :keyword:`if` clauses a
-block, nesting from left to right, and evaluating the expression to produce a
-list element each time the innermost block is reached [#]_.
+A list display yields a new list object, the contents being specified by either
+a list of expressions or a comprehension.  When a comma-separated list of
+expressions is supplied, its elements are evaluated from left to right and
+placed into the list object in that order.  When a comprehension is supplied,
+the list is constructed from the elements resulting from the comprehension.
 
 
-.. _genexpr:
+.. _set:
 
-Generator expressions
----------------------
+Set displays
+------------
 
-.. index:: pair: generator; expression
+.. index:: pair: set; display
+           object: set
 
-A generator expression is a compact generator notation in parentheses:
+A set display is denoted by curly braces and distinguishable from dictionary
+displays by the lack of colons separating keys and values:
 
 .. productionlist::
-   generator_expression: "(" `expression` `genexpr_for` ")"
-   genexpr_for: "for" `target_list` "in" `or_test` [`genexpr_iter`]
-   genexpr_iter: `genexpr_for` | `genexpr_if`
-   genexpr_if: "if" `old_expression` [`genexpr_iter`]
+   set_display: "{" [`expression_list` | `comprehension`] "}"
 
-.. index:: object: generator
-
-A generator expression yields a new generator object.  It consists of a single
-expression followed by at least one :keyword:`for` clause and zero or more
-:keyword:`for` or :keyword:`if` clauses.  The iterating values of the new
-generator are those that would be produced by considering each of the
-:keyword:`for` or :keyword:`if` clauses a block, nesting from left to right, and
-evaluating the expression to yield a value that is reached the innermost block
-for each iteration.
-
-Variables used in the generator expression are evaluated lazily when the
-:meth:`__next__` method is called for generator object (in the same fashion as
-normal generators). However, the leftmost :keyword:`for` clause is immediately
-evaluated so that error produced by it can be seen before any other possible
-error in the code that handles the generator expression. Subsequent
-:keyword:`for` clauses cannot be evaluated immediately since they may depend on
-the previous :keyword:`for` loop. For example: ``(x*y for x in range(10) for y
-in bar(x))``.
-
-The parentheses can be omitted on calls with only one argument. See section
-:ref:`calls` for the detail.
+A set display yields a new mutable set object, the contents being specified by
+either a sequence of expressions or a comprehension.  When a comma-separated
+list of expressions is supplied, its elements are evaluated from left to right
+and added to the set object.  When a comprehension is supplied, the set is
+constructed from the elements resulting from the comprehension.
 
 
 .. _dict:
@@ -249,29 +235,33 @@
 -------------------
 
 .. index:: pair: dictionary; display
-
-.. index::
-   single: key
-   single: datum
-   single: key/datum pair
+           key, datum, key/datum pair
+           object: dictionary
 
 A dictionary display is a possibly empty series of key/datum pairs enclosed in
 curly braces:
 
 .. productionlist::
-   dict_display: "{" [`key_datum_list`] "}"
+   dict_display: "{" [`key_datum_list` | `dict_comprehension`] "}"
    key_datum_list: `key_datum` ("," `key_datum`)* [","]
    key_datum: `expression` ":" `expression`
-
-.. index:: object: dictionary
+   dict_comprehension: `expression` ":" `expression` `comp_for`
 
 A dictionary display yields a new dictionary object.
 
-The key/datum pairs are evaluated from left to right to define the entries of
-the dictionary: each key object is used as a key into the dictionary to store
-the corresponding datum.
+If a comma-separated sequence of key/datum pairs is given, they are evaluated
+from left to right to define the entries of the dictionary: each key object is
+used as a key into the dictionary to store the corresponding datum.  This means
+that you can specify the same key multiple times in the key/datum list, and the
+final dictionary's value for that key will be the last one given.
+
+A dict comprehension, in contrast to list and set comprehensions, needs two
+expressions separated with a colon followed by the usual "for" and "if" clauses.
+When the comprehension is run, the resulting key and value elements are inserted
+in the new dictionary in the order they are produced.
 
 .. index:: pair: immutable; object
+           hashable
 
 Restrictions on the types of the key values are listed earlier in section
 :ref:`types`.  (To summarize, the key type should be hashable, which excludes
@@ -280,6 +270,36 @@
 prevails.
 
 
+.. _genexpr:
+
+Generator expressions
+---------------------
+
+.. index:: pair: generator; expression
+           object: generator
+
+A generator expression is a compact generator notation in parentheses:
+
+.. productionlist::
+   generator_expression: "(" `expression` `comp_for` ")"
+
+A generator expression yields a new generator object.  Its syntax is the same as
+for comprehensions, except that it is enclosed in parentheses instead of
+brackets or curly braces.
+
+Variables used in the generator expression are evaluated lazily when the
+:meth:`__next__` method is called for generator object (in the same fashion as
+normal generators).  However, the leftmost :keyword:`for` clause is immediately
+evaluated, so that an error produced by it can be seen before any other possible
+error in the code that handles the generator expression.  Subsequent
+:keyword:`for` clauses cannot be evaluated immediately since they may depend on
+the previous :keyword:`for` loop. For example: ``(x*y for x in range(10) for y
+in bar(x))``.
+
+The parentheses can be omitted on calls with only one argument.  See section
+:ref:`calls` for the detail.
+
+
 .. _yieldexpr:
 
 Yield expressions
@@ -295,7 +315,7 @@
    yield_expression: "yield" [`expression_list`]
 
 The :keyword:`yield` expression is only used when defining a generator function,
-and can only be used in the body of a function definition. Using a
+and can only be used in the body of a function definition.  Using a
 :keyword:`yield` expression in a function definition is sufficient to cause that
 definition to create a generator function instead of a normal function.
 
@@ -308,7 +328,7 @@
 including the current bindings of local variables, the instruction pointer, and
 the internal evaluation stack.  When the execution is resumed by calling one of
 the generator's methods, the function can proceed exactly as if the
-:keyword:`yield` expression was just another external call. The value of the
+:keyword:`yield` expression was just another external call.  The value of the
 :keyword:`yield` expression after resuming depends on the method which resumed
 the execution.
 
@@ -328,16 +348,19 @@
 .. index:: exception: StopIteration
 
 
-.. method:: generator.next()
+.. method:: generator.__next__()
 
-   Starts the execution of a generator function or resumes it at the last executed
-   :keyword:`yield` expression.  When a generator function is resumed with a
-   :meth:`next` method, the current :keyword:`yield` expression always evaluates to
-   :const:`None`.  The execution then continues to the next :keyword:`yield`
-   expression, where the generator is suspended again, and the value of the
-   :token:`expression_list` is returned to :meth:`next`'s caller. If the generator
-   exits without yielding another value, a :exc:`StopIteration` exception is
-   raised.
+   Starts the execution of a generator function or resumes it at the last
+   executed :keyword:`yield` expression.  When a generator function is resumed
+   with a :meth:`next` method, the current :keyword:`yield` expression always
+   evaluates to :const:`None`.  The execution then continues to the next
+   :keyword:`yield` expression, where the generator is suspended again, and the
+   value of the :token:`expression_list` is returned to :meth:`next`'s caller.
+   If the generator exits without yielding another value, a :exc:`StopIteration`
+   exception is raised.
+
+   This method is normally called implicitly, e.g. by a :keyword:`for` loop, or
+   by the built-in :func:`next` function.
 
 
 .. method:: generator.send(value)
@@ -346,8 +369,8 @@
    ``value`` argument becomes the result of the current :keyword:`yield`
    expression.  The :meth:`send` method returns the next value yielded by the
    generator, or raises :exc:`StopIteration` if the generator exits without
-   yielding another value. When :meth:`send` is called to start the generator, it
-   must be called with :const:`None` as the argument, because there is no
+   yielding another value.  When :meth:`send` is called to start the generator,
+   it must be called with :const:`None` as the argument, because there is no
    :keyword:`yield` expression that could receieve the value.
 
 
@@ -365,12 +388,12 @@
 .. method:: generator.close()
 
    Raises a :exc:`GeneratorExit` at the point where the generator function was
-   paused.  If the generator function then raises :exc:`StopIteration` (by exiting
-   normally, or due to already being closed) or :exc:`GeneratorExit` (by not
-   catching the exception), close returns to its caller.  If the generator yields a
-   value, a :exc:`RuntimeError` is raised.  If the generator raises any other
-   exception, it is propagated to the caller.  :meth:`close` does nothing if the
-   generator has already exited due to an exception or normal exit.
+   paused.  If the generator function then raises :exc:`StopIteration` (by
+   exiting normally, or due to already being closed) or :exc:`GeneratorExit` (by
+   not catching the exception), close returns to its caller.  If the generator
+   yields a value, a :exc:`RuntimeError` is raised.  If the generator raises any
+   other exception, it is propagated to the caller.  :meth:`close` does nothing
+   if the generator has already exited due to an exception or normal exit.
 
 Here is a simple example that demonstrates the behavior of generators and
 generator functions::
@@ -390,10 +413,10 @@
    ...         print("Don't forget to clean up when 'close()' is called.")
    ...
    >>> generator = echo(1)
-   >>> print(generator.next())
+   >>> print(next(generator))
    Execution starts when 'next()' is called for the first time.
    1
-   >>> print(generator.next())
+   >>> print(next(generator))
    None
    >>> print(generator.send(2))
    2
@@ -406,8 +429,8 @@
 .. seealso::
 
    :pep:`0342` - Coroutines via Enhanced Generators
-      The proposal to enhance the API and syntax of generators, making them usable as
-      simple coroutines.
+      The proposal to enhance the API and syntax of generators, making them
+      usable as simple coroutines.
 
 
 .. _primaries:
@@ -442,11 +465,12 @@
    object: list
 
 The primary must evaluate to an object of a type that supports attribute
-references, e.g., a module, list, or an instance.  This object is then asked to
-produce the attribute whose name is the identifier.  If this attribute is not
-available, the exception :exc:`AttributeError` is raised. Otherwise, the type
-and value of the object produced is determined by the object.  Multiple
-evaluations of the same attribute reference may yield different objects.
+references, which most objects do.  This object is then asked to produce the
+attribute whose name is the identifier (which can be customized by overriding
+the :meth:`__getattr__` method).  If this attribute is not available, the
+exception :exc:`AttributeError` is raised.  Otherwise, the type and value of the
+object produced is determined by the object.  Multiple evaluations of the same
+attribute reference may yield different objects.
 
 
 .. _subscriptions:
@@ -471,19 +495,22 @@
 .. productionlist::
    subscription: `primary` "[" `expression_list` "]"
 
-The primary must evaluate to an object of a sequence or mapping type.
+The primary must evaluate to an object that supports subscription, e.g. a list
+or dictionary.  User-defined objects can support subscription by defining a
+:meth:`__getitem__` method.
+
+For built-in objects, there are two types of objects that support subscription:
 
 If the primary is a mapping, the expression list must evaluate to an object
 whose value is one of the keys of the mapping, and the subscription selects the
 value in the mapping that corresponds to that key.  (The expression list is a
 tuple except if it has exactly one item.)
 
-If the primary is a sequence, the expression (list) must evaluate to a plain
-integer.  If this value is negative, the length of the sequence is added to it
-(so that, e.g., ``x[-1]`` selects the last item of ``x``.)  The resulting value
-must be a nonnegative integer less than the number of items in the sequence, and
-the subscription selects the item whose index is that value (counting from
-zero).
+If the primary is a sequence, the expression (list) must evaluate to an integer.
+If this value is negative, the length of the sequence is added to it (so that,
+e.g., ``x[-1]`` selects the last item of ``x``.)  The resulting value must be a
+nonnegative integer less than the number of items in the sequence, and the
+subscription selects the item whose index is that value (counting from zero).
 
 .. index::
    single: character
@@ -534,15 +561,16 @@
    single: step (slice object attribute)
 
 The semantics for a slicing are as follows.  The primary must evaluate to a
-mapping object, and it is indexed with a key that is constructed from the
-slice list, as follows.  If the slice list contains at least one comma, the
-key is a tuple containing the conversion of the slice items; otherwise, the
-conversion of the lone slice item is the key.  The conversion of a slice
-item that is an expression is that expression.  The conversion of a proper
-slice is a slice object (see section :ref:`types`) whose :attr:`start`,
-:attr:`stop` and :attr:`step` attributes are the values of the expressions
-given as lower bound, upper bound and stride, respectively, substituting
-``None`` for missing expressions.
+mapping object, and it is indexed (using the same :meth:`__getitem__` method as
+normal subscription) with a key that is constructed from the slice list, as
+follows.  If the slice list contains at least one comma, the key is a tuple
+containing the conversion of the slice items; otherwise, the conversion of the
+lone slice item is the key.  The conversion of a slice item that is an
+expression is that expression.  The conversion of a proper slice is a slice
+object (see section :ref:`types`) whose :attr:`start`, :attr:`stop` and
+:attr:`step` attributes are the values of the expressions given as lower bound,
+upper bound and stride, respectively, substituting ``None`` for missing
+expressions.
 
 
 .. _calls:
@@ -576,10 +604,11 @@
 
 The primary must evaluate to a callable object (user-defined functions, built-in
 functions, methods of built-in objects, class objects, methods of class
-instances, and certain class instances themselves are callable; extensions may
-define additional callable object types).  All argument expressions are
-evaluated before the call is attempted.  Please refer to section :ref:`function`
-for the syntax of formal parameter lists.
+instances, and all objects having a :meth:`__call__` method are callable).  All
+argument expressions are evaluated before the call is attempted.  Please refer
+to section :ref:`function` for the syntax of formal parameter lists.
+
+.. XXX update with kwonly args PEP
 
 If keyword arguments are present, they are first converted to positional
 arguments, as follows.  First, a list of unfilled slots is created for the
@@ -722,16 +751,12 @@
 The power operator has the same semantics as the built-in :func:`pow` function,
 when called with two arguments: it yields its left argument raised to the power
 of its right argument.  The numeric arguments are first converted to a common
-type.  The result type is that of the arguments after coercion.
+type, and the result is of that type.
 
-With mixed operand types, the coercion rules for binary arithmetic operators
-apply. For int and long int operands, the result has the same type as the
-operands (after coercion) unless the second argument is negative; in that case,
-all arguments are converted to float and a float result is delivered. For
-example, ``10**2`` returns ``100``, but ``10**-2`` returns ``0.01``. (This last
-feature was added in Python 2.2. In Python 2.1 and before, if both arguments
-were of integer types and the second argument was negative, an exception was
-raised).
+For int operands, the result has the same type as the operands unless the second
+argument is negative; in that case, all arguments are converted to float and a
+float result is delivered. For example, ``10**2`` returns ``100``, but
+``10**-2`` returns ``0.01``.
 
 Raising ``0.0`` to a negative power results in a :exc:`ZeroDivisionError`.
 Raising a negative number to a fractional power results in a :exc:`ValueError`.
@@ -763,9 +788,9 @@
 
 .. index:: single: inversion
 
-The unary ``~`` (invert) operator yields the bit-wise inversion of its plain or
-long integer argument.  The bit-wise inversion of ``x`` is defined as
-``-(x+1)``.  It only applies to integral numbers.
+The unary ``~`` (invert) operator yields the bit-wise inversion of its integer
+argument.  The bit-wise inversion of ``x`` is defined as ``-(x+1)``.  It only
+applies to integral numbers.
 
 .. index:: exception: TypeError
 
@@ -793,11 +818,10 @@
 .. index:: single: multiplication
 
 The ``*`` (multiplication) operator yields the product of its arguments.  The
-arguments must either both be numbers, or one argument must be an integer (plain
-or long) and the other must be a sequence. In the former case, the numbers are
-converted to a common type and then multiplied together.  In the latter case,
-sequence repetition is performed; a negative repetition factor yields an empty
-sequence.
+arguments must either both be numbers, or one argument must be an integer and
+the other must be a sequence. In the former case, the numbers are converted to a
+common type and then multiplied together.  In the latter case, sequence
+repetition is performed; a negative repetition factor yields an empty sequence.
 
 .. index::
    exception: ZeroDivisionError
@@ -805,9 +829,10 @@
 
 The ``/`` (division) and ``//`` (floor division) operators yield the quotient of
 their arguments.  The numeric arguments are first converted to a common type.
-Plain or long integer division yields an integer of the same type; the result is
-that of mathematical division with the 'floor' function applied to the result.
-Division by zero raises the :exc:`ZeroDivisionError` exception.
+Integer division yields a float, while floor division of integers results in an
+integer; the result is that of mathematical division with the 'floor' function
+applied to the result.  Division by zero raises the :exc:`ZeroDivisionError`
+exception.
 
 .. index:: single: modulo
 
@@ -820,25 +845,23 @@
 the result is strictly smaller than the absolute value of the second operand
 [#]_.
 
-The integer division and modulo operators are connected by the following
-identity: ``x == (x/y)*y + (x%y)``.  Integer division and modulo are also
-connected with the built-in function :func:`divmod`: ``divmod(x, y) == (x/y,
-x%y)``.  These identities don't hold for floating point numbers; there similar
-identities hold approximately where ``x/y`` is replaced by ``floor(x/y)`` or
-``floor(x/y) - 1`` [#]_.
+The floor division and modulo operators are connected by the following
+identity: ``x == (x//y)*y + (x%y)``.  Floor division and modulo are also
+connected with the built-in function :func:`divmod`: ``divmod(x, y) == (x//y,
+x%y)``. [#]_.
 
 In addition to performing the modulo operation on numbers, the ``%`` operator is
-also overloaded by string objects to perform string formatting (also
-known as interpolation). The syntax for string formatting is described in the
+also overloaded by string objects to perform old-style string formatting (also
+known as interpolation).  The syntax for string formatting is described in the
 Python Library Reference, section :ref:`old-string-formatting`.
 
 The floor division operator, the modulo operator, and the :func:`divmod`
-function are not defined for complex numbers.  Instead, convert to a
-floating point number using the :func:`abs` function if appropriate.
+function are not defined for complex numbers.  Instead, convert to a floating
+point number using the :func:`abs` function if appropriate.
 
 .. index:: single: addition
 
-The ``+`` (addition) operator yields the sum of its arguments. The arguments
+The ``+`` (addition) operator yields the sum of its arguments.  The arguments
 must either both be numbers or both sequences of the same type.  In the former
 case, the numbers are converted to a common type and then added together.  In
 the latter case, the sequences are concatenated.
@@ -861,17 +884,13 @@
 .. productionlist::
    shift_expr: `a_expr` | `shift_expr` ( "<<" | ">>" ) `a_expr`
 
-These operators accept plain or long integers as arguments.  The arguments are
-converted to a common type.  They shift the first argument to the left or right
-by the number of bits given by the second argument.
+These operators accept integers as arguments.  They shift the first argument to
+the left or right by the number of bits given by the second argument.
 
 .. index:: exception: ValueError
 
 A right shift by *n* bits is defined as division by ``pow(2,n)``.  A left shift
-by *n* bits is defined as multiplication with ``pow(2,n)``; for plain integers
-there is no overflow check so in that case the operation drops bits and flips
-the sign if the result is not less than ``pow(2,31)`` in absolute value.
-Negative shift counts raise a :exc:`ValueError` exception.
+by *n* bits is defined as multiplication with ``pow(2,n)``.
 
 
 .. _bitwise:
@@ -890,22 +909,22 @@
 
 .. index:: pair: bit-wise; and
 
-The ``&`` operator yields the bitwise AND of its arguments, which must be plain
-or long integers.  The arguments are converted to a common type.
+The ``&`` operator yields the bitwise AND of its arguments, which must be
+integers.
 
 .. index::
    pair: bit-wise; xor
    pair: exclusive; or
 
 The ``^`` operator yields the bitwise XOR (exclusive OR) of its arguments, which
-must be plain or long integers.  The arguments are converted to a common type.
+must be integers.
 
 .. index::
    pair: bit-wise; or
    pair: inclusive; or
 
 The ``|`` operator yields the bitwise (inclusive) OR of its arguments, which
-must be plain or long integers.  The arguments are converted to a common type.
+must be integers.
 
 
 .. _comparisons:
@@ -949,8 +968,8 @@
 numbers, they are converted to a common type.  Otherwise, objects of different
 types *always* compare unequal, and are ordered consistently but arbitrarily.
 You can control comparison behavior of objects of non-builtin types by defining
-a ``__cmp__`` method or rich comparison methods like ``__gt__``, described in
-section :ref:`specialnames`.
+a :meth:`__cmp__` method or rich comparison methods like :meth:`__gt__`,
+described in section :ref:`specialnames`.
 
 (This unusual definition of comparison was used to simplify the definition of
 operations like sorting and the :keyword:`in` and :keyword:`not in` operators.
@@ -961,12 +980,12 @@
 
 * Numbers are compared arithmetically.
 
-* Bytes objects are compared lexicographically using the numeric values of
-  their elements.
+* Bytes objects are compared lexicographically using the numeric values of their
+  elements.
 
 * Strings are compared lexicographically using the numeric equivalents (the
-  result of the built-in function :func:`ord`) of their characters. [#]_
-  String and bytes object can't be compared!
+  result of the built-in function :func:`ord`) of their characters. [#]_ String
+  and bytes object can't be compared!
 
 * Tuples and lists are compared lexicographically using comparison of
   corresponding elements.  This means that to compare equal, each element must
@@ -975,11 +994,11 @@
 
   If not equal, the sequences are ordered the same as their first differing
   elements.  For example, ``cmp([1,2,x], [1,2,y])`` returns the same as
-  ``cmp(x,y)``.  If the corresponding element does not exist, the shorter sequence
-  is ordered first (for example, ``[1,2] < [1,2,3]``).
+  ``cmp(x,y)``.  If the corresponding element does not exist, the shorter
+  sequence is ordered first (for example, ``[1,2] < [1,2,3]``).
 
-* Mappings (dictionaries) compare equal if and only if their sorted (key, value)
-  lists compare equal. [#]_ Outcomes other than equality are resolved
+* Mappings (dictionaries) compare equal if and only if their sorted ``(key,
+  value)`` lists compare equal. [#]_ Outcomes other than equality are resolved
   consistently, but are not otherwise defined. [#]_
 
 * Most other objects of builtin types compare unequal unless they are the same
@@ -987,14 +1006,11 @@
   another one is made arbitrarily but consistently within one execution of a
   program.
 
-The operators :keyword:`in` and :keyword:`not in` test for set membership.  ``x
-in s`` evaluates to true if *x* is a member of the set *s*, and false otherwise.
-``x not in s`` returns the negation of ``x in s``. The set membership test has
-traditionally been bound to sequences; an object is a member of a set if the set
-is a sequence and contains an element equal to that object.  However, it is
-possible for an object to support membership tests without being a sequence.  In
-particular, dictionaries support membership testing as a nicer way of spelling
-``key in dict``; other mapping types may follow suit.
+The operators :keyword:`in` and :keyword:`not in` test for membership.  ``x in
+s`` evaluates to true if *x* is a member of *s*, and false otherwise.  ``x not
+in s`` returns the negation of ``x in s``.  All built-in sequences and set types
+support this as well as dictionary, for which :keyword:`in` tests whether a the
+dictionary has a given key.
 
 For the list and tuple types, ``x in y`` is true if and only if there exists an
 index *i* such that ``x == y[i]`` is true.
@@ -1010,7 +1026,7 @@
 For user-defined classes which do not define :meth:`__contains__` and do define
 :meth:`__getitem__`, ``x in y`` is true if and only if there is a non-negative
 integer index *i* such that ``x == y[i]``, and all lower integer indices do not
-raise :exc:`IndexError` exception. (If any other exception is raised, it is as
+raise :exc:`IndexError` exception.  (If any other exception is raised, it is as
 if :keyword:`in` raised that exception).
 
 .. index::
@@ -1045,7 +1061,7 @@
 
 .. productionlist::
    expression: `conditional_expression` | `lambda_form`
-   old_expression: `or_test` | `old_lambda_form`
+   expression_nocond: `or_test` | `lambda_form_nocond`
    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`
@@ -1055,7 +1071,8 @@
 control flow statements, the following values are interpreted as false:
 ``False``, ``None``, numeric zero of all types, and empty strings and containers
 (including strings, tuples, lists, dictionaries, sets and frozensets).  All
-other values are interpreted as true.
+other values are interpreted as true.  User-defined objects can customize their
+truth value by providing a :meth:`__bool__` method.
 
 .. index:: operator: not
 
@@ -1078,7 +1095,7 @@
 
 (Note that neither :keyword:`and` nor :keyword:`or` restrict the value and type
 they return to ``False`` and ``True``, but rather return the last evaluated
-argument. This is sometimes useful, e.g., if ``s`` is a string that should be
+argument.  This is sometimes useful, e.g., if ``s`` is a string that should be
 replaced by a default value if it is empty, the expression ``s or 'foo'`` yields
 the desired value.  Because :keyword:`not` has to invent a value anyway, it does
 not bother to return a value of the same type as its argument, so e.g., ``not
@@ -1097,14 +1114,14 @@
 
 .. productionlist::
    lambda_form: "lambda" [`parameter_list`]: `expression`
-   old_lambda_form: "lambda" [`parameter_list`]: `old_expression`
+   lambda_form_nocond: "lambda" [`parameter_list`]: `expression_nocond`
 
 Lambda forms (lambda expressions) have the same syntactic position as
 expressions.  They are a shorthand to create anonymous functions; the expression
 ``lambda arguments: expression`` yields a function object.  The unnamed object
 behaves like a function object defined with ::
 
-   def name(arguments):
+   def <lambda>(arguments):
        return expression
 
 See section :ref:`function` for the syntax of parameter lists.  Note that
@@ -1145,8 +1162,8 @@
 
 .. index:: pair: evaluation; order
 
-Python evaluates expressions from left to right. Notice that while evaluating an
-assignment, the right-hand side is evaluated before the left-hand side.
+Python evaluates expressions from left to right.  Notice that while evaluating
+an assignment, the right-hand side is evaluated before the left-hand side.
 
 In the following lines, expressions will be evaluated in the arithmetic order of
 their suffixes::
@@ -1167,7 +1184,7 @@
 .. index:: pair: operator; precedence
 
 The following table summarizes the operator precedences in Python, from lowest
-precedence (least binding) to highest precedence (most binding). Operators in
+precedence (least binding) to highest precedence (most binding).  Operators in
 the same box have the same precedence.  Unless the syntax is explicitly given,
 operators are binary.  Operators in the same box group left to right (except for
 comparisons, including tests, which all have the same precedence and chain from
@@ -1201,7 +1218,7 @@
 +----------------------------------------------+-------------------------------------+
 | ``+``, ``-``                                 | Addition and subtraction            |
 +----------------------------------------------+-------------------------------------+
-| ``*``, ``/``, ``%``                          | Multiplication, division, remainder |
+| ``*``, ``/``, ``//``, ``%``                  | Multiplication, division, remainder |
 +----------------------------------------------+-------------------------------------+
 | ``+x``, ``-x``                               | Positive, negative                  |
 +----------------------------------------------+-------------------------------------+
@@ -1217,20 +1234,16 @@
 +----------------------------------------------+-------------------------------------+
 | ``f(arguments...)``                          | Function call                       |
 +----------------------------------------------+-------------------------------------+
-| ``(expressions...)``                         | Binding or tuple display            |
+| ``(expressions...)``                         | Binding, tuple display, generator   |
+|                                              | expressions                         |
 +----------------------------------------------+-------------------------------------+
 | ``[expressions...]``                         | List display                        |
 +----------------------------------------------+-------------------------------------+
-| ``{key:datum...}``                           | Dictionary display                  |
+| ``{expressions...}``                         | Dictionary or set display           |
 +----------------------------------------------+-------------------------------------+
 
 .. rubric:: Footnotes
 
-.. [#] In Python 2.3, a list comprehension "leaks" the control variables of each
-   ``for`` it contains into the containing scope.  However, this behavior is
-   deprecated, and relying on it will not work once this bug is fixed in a future
-   release
-
 .. [#] While ``abs(x%y) < abs(y)`` is true mathematically, for floats it may not be
    true numerically due to roundoff.  For example, and assuming a platform on which
    a Python float is an IEEE 754 double-precision number, in order that ``-1e-100 %
@@ -1241,22 +1254,21 @@
    is more appropriate depends on the application.
 
 .. [#] If x is very close to an exact integer multiple of y, it's possible for
-   ``floor(x/y)`` to be one larger than ``(x-x%y)/y`` due to rounding.  In such
+   ``x//y`` to be one larger than ``(x-x%y)//y`` due to rounding.  In such
    cases, Python returns the latter result, in order to preserve that
    ``divmod(x,y)[0] * y + x % y`` be very close to ``x``.
 
-.. [#] While comparisons between strings make sense at the byte
-   level, they may be counter-intuitive to users. For example, the
-   strings ``"\u00C7"`` and ``"\u0327\u0043"`` compare differently,
-   even though they both represent the same unicode character (LATIN
-   CAPTITAL LETTER C WITH CEDILLA).
+.. [#] While comparisons between strings make sense at the byte level, they may
+   be counter-intuitive to users.  For example, the strings ``"\u00C7"`` and
+   ``"\u0327\u0043"`` compare differently, even though they both represent the
+   same unicode character (LATIN CAPTITAL LETTER C WITH CEDILLA).
 
-.. [#] The implementation computes this efficiently, without constructing lists or
-   sorting.
+.. [#] The implementation computes this efficiently, without constructing lists
+   or sorting.
 
 .. [#] Earlier versions of Python used lexicographic comparison of the sorted (key,
-   value) lists, but this was very expensive for the common case of comparing for
-   equality.  An even earlier version of Python compared dictionaries by identity
-   only, but this caused surprises because people expected to be able to test a
-   dictionary for emptiness by comparing it to ``{}``.
+   value) lists, but this was very expensive for the common case of comparing
+   for equality.  An even earlier version of Python compared dictionaries by
+   identity only, but this caused surprises because people expected to be able
+   to test a dictionary for emptiness by comparing it to ``{}``.
 
diff --git a/Doc/reference/toplevel_components.rst b/Doc/reference/toplevel_components.rst
index 2149311..276005b 100644
--- a/Doc/reference/toplevel_components.rst
+++ b/Doc/reference/toplevel_components.rst
@@ -106,13 +106,6 @@
 .. productionlist::
    eval_input: `expression_list` NEWLINE*
 
-.. index:: builtin: input
-
-The input line read by :func:`input` must have the following form:
-
-.. productionlist::
-   input_input: `expression_list` NEWLINE
-
 .. index::
    object: file
    single: input; raw
