[Python-checkins] bpo-40334: Add What's New sections for PEP 617 and PEP 585 (GH-19704)

Guido van Rossum webhook-mailer at python.org
Fri Apr 24 20:20:04 EDT 2020


https://github.com/python/cpython/commit/0e80b561d442769631d66f1cc8813ac30f97378e
commit: 0e80b561d442769631d66f1cc8813ac30f97378e
branch: master
author: Guido van Rossum <guido at python.org>
committer: GitHub <noreply at github.com>
date: 2020-04-24T17:19:56-07:00
summary:

bpo-40334: Add What's New sections for PEP 617 and PEP 585 (GH-19704)

files:
M Doc/whatsnew/3.9.rst

diff --git a/Doc/whatsnew/3.9.rst b/Doc/whatsnew/3.9.rst
index 325121df13981..728e6001daabf 100644
--- a/Doc/whatsnew/3.9.rst
+++ b/Doc/whatsnew/3.9.rst
@@ -115,6 +115,49 @@ to easily remove an unneeded prefix or a suffix from a string. Corresponding
 added. See :pep:`616` for a full description. (Contributed by Dennis Sweeney in
 :issue:`18939`.)
 
+PEP 585: Builtin Generic Types
+------------------------------
+
+In type annotations you can now use built-in collection types such as
+``list`` and ``dict`` as generic types instead of importing the
+corresponding capitalized types (e.g. ``List`` or ``Dict``) from
+``typing``.  Some other types in the standard library are also now generic,
+for example ``queue.Queue``.
+
+Example:
+
+.. code-block:: python
+
+   def greet_all(names: list[str]) -> None:
+       for name in names:
+           print("Hello", name)
+
+See :pep:`585` for more details.  (Contributed by Guido van Rossum,
+Ethan Smith, and Batuhan Taşkaya in :issue:`39481`.)
+
+PEP 617: New Parser
+-------------------
+
+Python 3.9 uses a new parser, based on `PEG
+<https://en.wikipedia.org/wiki/Parsing_expression_grammar>`_ instead
+of `LL(1) <https://en.wikipedia.org/wiki/LL_parser>`_.  The new
+parser's performance is roughly comparable to that of the old parser,
+but the PEG formalism is more flexible than LL(1) when it comes to
+designing new language features.  We'll start using this flexibility
+in Python 3.10 and later.
+
+The :mod:`ast` module uses the new parser and produces the same AST as
+the old parser.
+
+In Python 3.10, the old parser will be deleted and so will all
+functionality that depends on it (primarily the :mod:`parser` module,
+which has long been deprecated).  In Python 3.9 *only*, you can switch
+back to the LL(1) parser using a command line switch (``-X
+oldparser``) or an environment variable (``PYTHONOLDPARSER=1``).
+
+See :pep:`617` for more details.  (Contributed by Guido van Rossum,
+Pablo Galindo and Lysandros Nikolau in :issue:`40334`.)
+
 
 Other Language Changes
 ======================



More information about the Python-checkins mailing list