mirror of https://github.com/python/cpython
bpo-41137: Reorganize What's New in Python 3.11 (GH-28518)
* Merge the two Removed sections. * Move "Build Changes" at the end, before "C API Changes". * Move the pdb change in Porting to Python 3.11. * Move C API new features in their section.
This commit is contained in:
parent
8c21941dda
commit
ec7ffa4b5b
|
@ -250,6 +250,68 @@ unicodedata
|
||||||
* The Unicode database has been updated to version 14.0.0. (:issue:`45190`).
|
* The Unicode database has been updated to version 14.0.0. (:issue:`45190`).
|
||||||
|
|
||||||
|
|
||||||
|
Optimizations
|
||||||
|
=============
|
||||||
|
|
||||||
|
* Compiler now optimizes simple C-style formatting with literal format
|
||||||
|
containing only format codes ``%s``, ``%r`` and ``%a`` and makes it as
|
||||||
|
fast as corresponding f-string expression.
|
||||||
|
(Contributed by Serhiy Storchaka in :issue:`28307`.)
|
||||||
|
|
||||||
|
* "Zero-cost" exceptions are implemented. The cost of ``try`` statements is
|
||||||
|
almost eliminated when no exception is raised.
|
||||||
|
(Contributed by Mark Shannon in :issue:`40222`.)
|
||||||
|
|
||||||
|
* Method calls with keywords are now faster due to bytecode
|
||||||
|
changes which avoid creating bound method instances. Previously, this
|
||||||
|
optimization was applied only to method calls with purely positional
|
||||||
|
arguments.
|
||||||
|
(Contributed by Ken Jin and Mark Shannon in :issue:`26110`, based on ideas
|
||||||
|
implemented in PyPy.)
|
||||||
|
|
||||||
|
* Pure ASCII strings are now normalized in constant time by :func:`unicodedata.normalize`.
|
||||||
|
(Contributed by Dong-hee Na in :issue:`44987`.)
|
||||||
|
|
||||||
|
|
||||||
|
CPython bytecode changes
|
||||||
|
========================
|
||||||
|
|
||||||
|
* Added a new :opcode:`CALL_METHOD_KW` opcode. Calls a method in a similar
|
||||||
|
fashion as :opcode:`CALL_METHOD`, but also supports keyword arguments. Works
|
||||||
|
in tandem with :opcode:`LOAD_METHOD`.
|
||||||
|
|
||||||
|
|
||||||
|
Deprecated
|
||||||
|
==========
|
||||||
|
|
||||||
|
* The :mod:`lib2to3` package is now deprecated and may not be able to parse
|
||||||
|
Python 3.10 or newer. See the :pep:`617` (New PEG parser for CPython).
|
||||||
|
(Contributed by Victor Stinner in :issue:`40360`.)
|
||||||
|
|
||||||
|
* :class:`webbrowser.MacOSX` is deprecated and will be removed in Python 3.13.
|
||||||
|
It is untested and undocumented and also not used by webbrowser itself.
|
||||||
|
(Contributed by Dong-hee Na in :issue:`42255`.)
|
||||||
|
|
||||||
|
* The behavior of returning a value from a :class:`~unittest.TestCase` and
|
||||||
|
:class:`~unittest.IsolatedAsyncioTestCase` test methods (other than the
|
||||||
|
default ``None`` value), is now deprecated.
|
||||||
|
|
||||||
|
* Deprecated the following :mod:`unittest` functions, scheduled for removal in
|
||||||
|
Python 3.13:
|
||||||
|
|
||||||
|
* :func:`unittest.findTestCases`
|
||||||
|
* :func:`unittest.makeSuite`
|
||||||
|
* :func:`unittest.getTestCaseNames`
|
||||||
|
|
||||||
|
Use :class:`~unittest.TestLoader` method instead:
|
||||||
|
|
||||||
|
* :meth:`unittest.TestLoader.loadTestsFromModule`
|
||||||
|
* :meth:`unittest.TestLoader.loadTestsFromTestCase`
|
||||||
|
* :meth:`unittest.TestLoader.getTestCaseNames`
|
||||||
|
|
||||||
|
(Contributed by Erlend E. Aasland in :issue:`5846`.)
|
||||||
|
|
||||||
|
|
||||||
Removed
|
Removed
|
||||||
=======
|
=======
|
||||||
|
|
||||||
|
@ -323,81 +385,6 @@ Removed
|
||||||
deprecated since Python 3.2.
|
deprecated since Python 3.2.
|
||||||
(Contributed by Hugo van Kemenade in :issue:`45173`.)
|
(Contributed by Hugo van Kemenade in :issue:`45173`.)
|
||||||
|
|
||||||
|
|
||||||
Optimizations
|
|
||||||
=============
|
|
||||||
|
|
||||||
* Compiler now optimizes simple C-style formatting with literal format
|
|
||||||
containing only format codes ``%s``, ``%r`` and ``%a`` and makes it as
|
|
||||||
fast as corresponding f-string expression.
|
|
||||||
(Contributed by Serhiy Storchaka in :issue:`28307`.)
|
|
||||||
|
|
||||||
* "Zero-cost" exceptions are implemented. The cost of ``try`` statements is
|
|
||||||
almost eliminated when no exception is raised.
|
|
||||||
(Contributed by Mark Shannon in :issue:`40222`.)
|
|
||||||
|
|
||||||
* Method calls with keywords are now faster due to bytecode
|
|
||||||
changes which avoid creating bound method instances. Previously, this
|
|
||||||
optimization was applied only to method calls with purely positional
|
|
||||||
arguments.
|
|
||||||
(Contributed by Ken Jin and Mark Shannon in :issue:`26110`, based on ideas
|
|
||||||
implemented in PyPy.)
|
|
||||||
|
|
||||||
* :file:`.pdbrc` is now read with ``'utf-8'`` encoding.
|
|
||||||
|
|
||||||
* Pure ASCII strings are now normalized in constant time by :func:`unicodedata.normalize`.
|
|
||||||
(Contributed by Dong-hee Na in :issue:`44987`.)
|
|
||||||
|
|
||||||
|
|
||||||
CPython bytecode changes
|
|
||||||
========================
|
|
||||||
|
|
||||||
* Added a new :opcode:`CALL_METHOD_KW` opcode. Calls a method in a similar
|
|
||||||
fashion as :opcode:`CALL_METHOD`, but also supports keyword arguments. Works
|
|
||||||
in tandem with :opcode:`LOAD_METHOD`.
|
|
||||||
|
|
||||||
|
|
||||||
Build Changes
|
|
||||||
=============
|
|
||||||
|
|
||||||
* CPython can now be built with the ThinLTO option via ``--with-lto=thin``.
|
|
||||||
(Contributed by Dong-hee Na and Brett Holman in :issue:`44340`.)
|
|
||||||
|
|
||||||
|
|
||||||
Deprecated
|
|
||||||
==========
|
|
||||||
|
|
||||||
* The :mod:`lib2to3` package is now deprecated and may not be able to parse
|
|
||||||
Python 3.10 or newer. See the :pep:`617` (New PEG parser for CPython).
|
|
||||||
(Contributed by Victor Stinner in :issue:`40360`.)
|
|
||||||
|
|
||||||
* :class:`webbrowser.MacOSX` is deprecated and will be removed in Python 3.13.
|
|
||||||
It is untested and undocumented and also not used by webbrowser itself.
|
|
||||||
(Contributed by Dong-hee Na in :issue:`42255`.)
|
|
||||||
|
|
||||||
* The behavior of returning a value from a :class:`~unittest.TestCase` and
|
|
||||||
:class:`~unittest.IsolatedAsyncioTestCase` test methods (other than the
|
|
||||||
default ``None`` value), is now deprecated.
|
|
||||||
|
|
||||||
* Deprecated the following :mod:`unittest` functions, scheduled for removal in
|
|
||||||
Python 3.13:
|
|
||||||
|
|
||||||
* :func:`unittest.findTestCases`
|
|
||||||
* :func:`unittest.makeSuite`
|
|
||||||
* :func:`unittest.getTestCaseNames`
|
|
||||||
|
|
||||||
Use :class:`~unittest.TestLoader` method instead:
|
|
||||||
|
|
||||||
* :meth:`unittest.TestLoader.loadTestsFromModule`
|
|
||||||
* :meth:`unittest.TestLoader.loadTestsFromTestCase`
|
|
||||||
* :meth:`unittest.TestLoader.getTestCaseNames`
|
|
||||||
|
|
||||||
(Contributed by Erlend E. Aasland in :issue:`5846`.)
|
|
||||||
|
|
||||||
|
|
||||||
Removed
|
|
||||||
=======
|
|
||||||
|
|
||||||
* The :func:`@asyncio.coroutine <asyncio.coroutine>` :term:`decorator` enabling
|
* The :func:`@asyncio.coroutine <asyncio.coroutine>` :term:`decorator` enabling
|
||||||
legacy generator-based coroutines to be compatible with async/await code.
|
legacy generator-based coroutines to be compatible with async/await code.
|
||||||
The function has been deprecated since Python 3.8 and the removal was
|
The function has been deprecated since Python 3.8 and the removal was
|
||||||
|
@ -435,18 +422,30 @@ Changes in the Python API
|
||||||
how universal newlines works.
|
how universal newlines works.
|
||||||
(Contributed by Victor Stinner in :issue:`37330`.)
|
(Contributed by Victor Stinner in :issue:`37330`.)
|
||||||
|
|
||||||
|
* The :mod:`pdb` module now reads the :file:`.pdbrc` configuration file with
|
||||||
|
the ``'utf-8'`` encoding.
|
||||||
|
(Contributed by Srinivas Reddy Thatiparthy (శ్రీనివాస్ రెడ్డి తాటిపర్తి) in :issue:`41137`.)
|
||||||
|
|
||||||
|
|
||||||
|
Build Changes
|
||||||
|
=============
|
||||||
|
|
||||||
|
* CPython can now be built with the ThinLTO option via ``--with-lto=thin``.
|
||||||
|
(Contributed by Dong-hee Na and Brett Holman in :issue:`44340`.)
|
||||||
|
|
||||||
|
|
||||||
C API Changes
|
C API Changes
|
||||||
=============
|
=============
|
||||||
|
|
||||||
|
New Features
|
||||||
|
------------
|
||||||
|
|
||||||
* Add a new :c:func:`PyType_GetName` function to get type's short name.
|
* Add a new :c:func:`PyType_GetName` function to get type's short name.
|
||||||
(Contributed by Hai Shi in :issue:`42035`.)
|
(Contributed by Hai Shi in :issue:`42035`.)
|
||||||
|
|
||||||
* Add a new :c:func:`PyType_GetQualName` function to get type's qualified name.
|
* Add a new :c:func:`PyType_GetQualName` function to get type's qualified name.
|
||||||
(Contributed by Hai Shi in :issue:`42035`.)
|
(Contributed by Hai Shi in :issue:`42035`.)
|
||||||
|
|
||||||
New Features
|
|
||||||
------------
|
|
||||||
|
|
||||||
Porting to Python 3.11
|
Porting to Python 3.11
|
||||||
----------------------
|
----------------------
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue