Fix up grammar, markup, etc in 3.6 What’s New
This commit is contained in:
parent
8a6333dabf
commit
a2f7ee8b26
|
@ -425,16 +425,16 @@ which represents a file system path. Code can use :func:`os.fspath`,
|
||||||
object.
|
object.
|
||||||
|
|
||||||
The built-in :func:`open` function has been updated to accept
|
The built-in :func:`open` function has been updated to accept
|
||||||
:class:`os.PathLike` objects as have all relevant functions in the
|
:class:`os.PathLike` objects, as have all relevant functions in the
|
||||||
:mod:`os` and :mod:`os.path` modules, as well as most functions and
|
:mod:`os` and :mod:`os.path` modules, and most other functions and
|
||||||
classes in the standard library. The :class:`os.DirEntry` class
|
classes in the standard library. The :class:`os.DirEntry` class
|
||||||
and relevant classes in :mod:`pathlib` have also been updated to
|
and relevant classes in :mod:`pathlib` have also been updated to
|
||||||
implement :class:`os.PathLike`.
|
implement :class:`os.PathLike`.
|
||||||
|
|
||||||
The hope in is that updating the fundamental functions for operating
|
The hope is that updating the fundamental functions for operating
|
||||||
on file system paths will lead to third-party code to implicitly
|
on file system paths will lead to third-party code to implicitly
|
||||||
support all :term:`path-like objects <path-like object>` without any
|
support all :term:`path-like objects <path-like object>` without any
|
||||||
code changes or at least very minimal ones (e.g. calling
|
code changes, or at least very minimal ones (e.g. calling
|
||||||
:func:`os.fspath` at the beginning of code before operating on a
|
:func:`os.fspath` at the beginning of code before operating on a
|
||||||
path-like object).
|
path-like object).
|
||||||
|
|
||||||
|
@ -635,18 +635,18 @@ PYTHONMALLOC environment variable
|
||||||
---------------------------------
|
---------------------------------
|
||||||
|
|
||||||
The new :envvar:`PYTHONMALLOC` environment variable allows setting the Python
|
The new :envvar:`PYTHONMALLOC` environment variable allows setting the Python
|
||||||
memory allocators and/or install debug hooks.
|
memory allocators and installing debug hooks.
|
||||||
|
|
||||||
It is now possible to install debug hooks on Python memory allocators on Python
|
It is now possible to install debug hooks on Python memory allocators on Python
|
||||||
compiled in release mode using ``PYTHONMALLOC=debug``. Effects of debug hooks:
|
compiled in release mode using ``PYTHONMALLOC=debug``. Effects of debug hooks:
|
||||||
|
|
||||||
* Newly allocated memory is filled with the byte ``0xCB``
|
* Newly allocated memory is filled with the byte ``0xCB``
|
||||||
* Freed memory is filled with the byte ``0xDB``
|
* Freed memory is filled with the byte ``0xDB``
|
||||||
* Detect violations of Python memory allocator API. For example,
|
* Detect violations of the Python memory allocator API. For example,
|
||||||
:c:func:`PyObject_Free` called on a memory block allocated by
|
:c:func:`PyObject_Free` called on a memory block allocated by
|
||||||
:c:func:`PyMem_Malloc`.
|
:c:func:`PyMem_Malloc`.
|
||||||
* Detect write before the start of the buffer (buffer underflow)
|
* Detect writes before the start of a buffer (buffer underflows)
|
||||||
* Detect write after the end of the buffer (buffer overflow)
|
* Detect writes after the end of a buffer (buffer overflows)
|
||||||
* Check that the :term:`GIL <global interpreter lock>` is held when allocator
|
* Check that the :term:`GIL <global interpreter lock>` is held when allocator
|
||||||
functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) and
|
functions of :c:data:`PYMEM_DOMAIN_OBJ` (ex: :c:func:`PyObject_Malloc`) and
|
||||||
:c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are called.
|
:c:data:`PYMEM_DOMAIN_MEM` (ex: :c:func:`PyMem_Malloc`) domains are called.
|
||||||
|
@ -658,8 +658,8 @@ memory allocators.
|
||||||
|
|
||||||
It is now also possible to force the usage of the :c:func:`malloc` allocator of
|
It is now also possible to force the usage of the :c:func:`malloc` allocator of
|
||||||
the C library for all Python memory allocations using ``PYTHONMALLOC=malloc``.
|
the C library for all Python memory allocations using ``PYTHONMALLOC=malloc``.
|
||||||
It helps to use external memory debuggers like Valgrind on a Python compiled in
|
This is helpful when using external memory debuggers like Valgrind on
|
||||||
release mode.
|
a Python compiled in release mode.
|
||||||
|
|
||||||
On error, the debug hooks on Python memory allocators now use the
|
On error, the debug hooks on Python memory allocators now use the
|
||||||
:mod:`tracemalloc` module to get the traceback where a memory block was
|
:mod:`tracemalloc` module to get the traceback where a memory block was
|
||||||
|
@ -754,7 +754,7 @@ Some smaller changes made to the core Python language are:
|
||||||
|
|
||||||
* Import now raises the new exception :exc:`ModuleNotFoundError`
|
* Import now raises the new exception :exc:`ModuleNotFoundError`
|
||||||
(subclass of :exc:`ImportError`) when it cannot find a module. Code
|
(subclass of :exc:`ImportError`) when it cannot find a module. Code
|
||||||
that current checks for ImportError (in try-except) will still work.
|
that currently checks for ImportError (in try-except) will still work.
|
||||||
(Contributed by Eric Snow in :issue:`15767`.)
|
(Contributed by Eric Snow in :issue:`15767`.)
|
||||||
|
|
||||||
* Class methods relying on zero-argument ``super()`` will now work correctly
|
* Class methods relying on zero-argument ``super()`` will now work correctly
|
||||||
|
@ -810,7 +810,7 @@ Contributed by Victor Stinner in :issue:`26146`.
|
||||||
asyncio
|
asyncio
|
||||||
-------
|
-------
|
||||||
|
|
||||||
Starting with Python 3.6 the ``asyncio`` is no longer provisional and its
|
Starting with Python 3.6 the ``asyncio`` module is no longer provisional and its
|
||||||
API is considered stable.
|
API is considered stable.
|
||||||
|
|
||||||
Notable changes in the :mod:`asyncio` module since Python 3.5.0
|
Notable changes in the :mod:`asyncio` module since Python 3.5.0
|
||||||
|
@ -871,7 +871,7 @@ Notable changes in the :mod:`asyncio` module since Python 3.5.0
|
||||||
|
|
||||||
* :meth:`Future.set_exception <asyncio.futures.Future.set_exception>`
|
* :meth:`Future.set_exception <asyncio.futures.Future.set_exception>`
|
||||||
will now raise :exc:`TypeError` when passed an instance of
|
will now raise :exc:`TypeError` when passed an instance of
|
||||||
:exc:`StopIteration` exception.
|
the :exc:`StopIteration` exception.
|
||||||
(Contributed by Chris Angelico in :issue:`26221`.)
|
(Contributed by Chris Angelico in :issue:`26221`.)
|
||||||
|
|
||||||
* New :meth:`Loop.connect_accepted_socket() <asyncio.BaseEventLoop.connect_accepted_socket>`
|
* New :meth:`Loop.connect_accepted_socket() <asyncio.BaseEventLoop.connect_accepted_socket>`
|
||||||
|
@ -909,7 +909,7 @@ added to represent sized iterable container classes.
|
||||||
(Contributed by Ivan Levkivskyi, docs by Neil Girdhar in :issue:`27598`.)
|
(Contributed by Ivan Levkivskyi, docs by Neil Girdhar in :issue:`27598`.)
|
||||||
|
|
||||||
The new :class:`~collections.abc.Reversible` abstract base class represents
|
The new :class:`~collections.abc.Reversible` abstract base class represents
|
||||||
iterable classes that also provide the :meth:`__reversed__`.
|
iterable classes that also provide the :meth:`__reversed__` method.
|
||||||
(Contributed by Ivan Levkivskyi in :issue:`25987`.)
|
(Contributed by Ivan Levkivskyi in :issue:`25987`.)
|
||||||
|
|
||||||
The new :class:`~collections.abc.AsyncGenerator` abstract base class represents
|
The new :class:`~collections.abc.AsyncGenerator` abstract base class represents
|
||||||
|
@ -932,7 +932,7 @@ Recursive :class:`collections.deque` instances can now be pickled.
|
||||||
concurrent.futures
|
concurrent.futures
|
||||||
------------------
|
------------------
|
||||||
|
|
||||||
The :class:`ThreadPoolExecutor <concurrent.futures.thread.ThreadPoolExecutor`
|
The :class:`ThreadPoolExecutor <concurrent.futures.ThreadPoolExecutor>`
|
||||||
class constructor now accepts an optional *thread_name_prefix* argument
|
class constructor now accepts an optional *thread_name_prefix* argument
|
||||||
to make it possible to customize the names of the threads created by the
|
to make it possible to customize the names of the threads created by the
|
||||||
pool.
|
pool.
|
||||||
|
@ -998,7 +998,7 @@ distutils
|
||||||
The ``default_format`` attribute has been removed from
|
The ``default_format`` attribute has been removed from
|
||||||
:class:`distutils.command.sdist.sdist` and the ``formats``
|
:class:`distutils.command.sdist.sdist` and the ``formats``
|
||||||
attribute defaults to ``['gztar']``. Although not anticipated,
|
attribute defaults to ``['gztar']``. Although not anticipated,
|
||||||
Any code relying on the presence of ``default_format`` may
|
any code relying on the presence of ``default_format`` may
|
||||||
need to be adapted. See :issue:`27819` for more details.
|
need to be adapted. See :issue:`27819` for more details.
|
||||||
|
|
||||||
|
|
||||||
|
@ -1027,7 +1027,7 @@ for the new policies it is :class:`~email.message.EmailMessage`.
|
||||||
encodings
|
encodings
|
||||||
---------
|
---------
|
||||||
|
|
||||||
On Windows, added the ``'oem'`` encoding to use ``CP_OEMCP`` and the ``'ansi'``
|
On Windows, added the ``'oem'`` encoding to use ``CP_OEMCP``, and the ``'ansi'``
|
||||||
alias for the existing ``'mbcs'`` encoding, which uses the ``CP_ACP`` code page.
|
alias for the existing ``'mbcs'`` encoding, which uses the ``CP_ACP`` code page.
|
||||||
(Contributed by Steve Dower in :issue:`27959`.)
|
(Contributed by Steve Dower in :issue:`27959`.)
|
||||||
|
|
||||||
|
@ -1192,7 +1192,7 @@ multiprocessing
|
||||||
os
|
os
|
||||||
--
|
--
|
||||||
|
|
||||||
See the summary for :ref:`PEP 519 <whatsnew36-pep519>` for details on how the
|
See the summary of :ref:`PEP 519 <whatsnew36-pep519>` for details on how the
|
||||||
:mod:`os` and :mod:`os.path` modules now support
|
:mod:`os` and :mod:`os.path` modules now support
|
||||||
:term:`path-like objects <path-like object>`.
|
:term:`path-like objects <path-like object>`.
|
||||||
|
|
||||||
|
@ -1219,7 +1219,7 @@ pathlib
|
||||||
:mod:`pathlib` now supports :term:`path-like objects <path-like object>`.
|
:mod:`pathlib` now supports :term:`path-like objects <path-like object>`.
|
||||||
(Contributed by Brett Cannon in :issue:`27186`.)
|
(Contributed by Brett Cannon in :issue:`27186`.)
|
||||||
|
|
||||||
See the summary for :ref:`PEP 519 <whatsnew36-pep519>` for details.
|
See the summary of :ref:`PEP 519 <whatsnew36-pep519>` for details.
|
||||||
|
|
||||||
|
|
||||||
pdb
|
pdb
|
||||||
|
@ -1232,7 +1232,7 @@ to control whether ``.pdbrc`` files should be read.
|
||||||
pickle
|
pickle
|
||||||
------
|
------
|
||||||
|
|
||||||
Objects that need calling ``__new__`` with keyword arguments can now be pickled
|
Objects that need ``__new__`` called with keyword arguments can now be pickled
|
||||||
using :ref:`pickle protocols <pickle-protocols>` older than protocol version 4.
|
using :ref:`pickle protocols <pickle-protocols>` older than protocol version 4.
|
||||||
Protocol version 4 already supports this case. (Contributed by Serhiy
|
Protocol version 4 already supports this case. (Contributed by Serhiy
|
||||||
Storchaka in :issue:`24164`.)
|
Storchaka in :issue:`24164`.)
|
||||||
|
@ -1241,7 +1241,7 @@ Storchaka in :issue:`24164`.)
|
||||||
pickletools
|
pickletools
|
||||||
-----------
|
-----------
|
||||||
|
|
||||||
:func:`pickletools.dis()` now outputs implicit memo index for the
|
:func:`pickletools.dis()` now outputs the implicit memo index for the
|
||||||
``MEMOIZE`` opcode.
|
``MEMOIZE`` opcode.
|
||||||
(Contributed by Serhiy Storchaka in :issue:`25382`.)
|
(Contributed by Serhiy Storchaka in :issue:`25382`.)
|
||||||
|
|
||||||
|
@ -1278,7 +1278,7 @@ Match object groups can be accessed by ``__getitem__``, which is
|
||||||
equivalent to ``group()``. So ``mo['name']`` is now equivalent to
|
equivalent to ``group()``. So ``mo['name']`` is now equivalent to
|
||||||
``mo.group('name')``. (Contributed by Eric Smith in :issue:`24454`.)
|
``mo.group('name')``. (Contributed by Eric Smith in :issue:`24454`.)
|
||||||
|
|
||||||
:class:`~re.Match` objects in the now support
|
:class:`~re.Match` objects now support
|
||||||
:meth:`index-like objects <object.__index__>` as group
|
:meth:`index-like objects <object.__index__>` as group
|
||||||
indices.
|
indices.
|
||||||
(Contributed by Jeroen Demeyer and Xiang Zhang in :issue:`27177`.)
|
(Contributed by Jeroen Demeyer and Xiang Zhang in :issue:`27177`.)
|
||||||
|
@ -1338,7 +1338,7 @@ The :meth:`~socket.socket.getsockopt` constants ``SO_DOMAIN``,
|
||||||
|
|
||||||
The :meth:`~socket.socket.setsockopt` now supports the
|
The :meth:`~socket.socket.setsockopt` now supports the
|
||||||
``setsockopt(level, optname, None, optlen: int)`` form.
|
``setsockopt(level, optname, None, optlen: int)`` form.
|
||||||
(Contributed by Christian Heimes in issue:`27744`.)
|
(Contributed by Christian Heimes in :issue:`27744`.)
|
||||||
|
|
||||||
The socket module now supports the address family
|
The socket module now supports the address family
|
||||||
:data:`~socket.AF_ALG` to interface with Linux Kernel crypto API. ``ALG_*``,
|
:data:`~socket.AF_ALG` to interface with Linux Kernel crypto API. ``ALG_*``,
|
||||||
|
@ -1415,9 +1415,9 @@ subprocess
|
||||||
|
|
||||||
:class:`subprocess.Popen` destructor now emits a :exc:`ResourceWarning` warning
|
:class:`subprocess.Popen` destructor now emits a :exc:`ResourceWarning` warning
|
||||||
if the child process is still running. Use the context manager protocol (``with
|
if the child process is still running. Use the context manager protocol (``with
|
||||||
proc: ...``) or call explicitly the :meth:`~subprocess.Popen.wait` method to
|
proc: ...``) or explicitly call the :meth:`~subprocess.Popen.wait` method to
|
||||||
read the exit status of the child process (Contributed by Victor Stinner in
|
read the exit status of the child process. (Contributed by Victor Stinner in
|
||||||
:issue:`26741`).
|
:issue:`26741`.)
|
||||||
|
|
||||||
The :class:`subprocess.Popen` constructor and all functions that pass arguments
|
The :class:`subprocess.Popen` constructor and all functions that pass arguments
|
||||||
through to it now accept *encoding* and *errors* arguments. Specifying either
|
through to it now accept *encoding* and *errors* arguments. Specifying either
|
||||||
|
@ -1625,8 +1625,8 @@ A new optional *source* parameter has been added to the
|
||||||
:class:`warnings.WarningMessage` (contributed by Victor Stinner in
|
:class:`warnings.WarningMessage` (contributed by Victor Stinner in
|
||||||
:issue:`26568` and :issue:`26567`).
|
:issue:`26568` and :issue:`26567`).
|
||||||
|
|
||||||
When a :exc:`ResourceWarning` warning is logged, the :mod:`tracemalloc` is now
|
When a :exc:`ResourceWarning` warning is logged, the :mod:`tracemalloc` module is now
|
||||||
used to try to retrieve the traceback where the detroyed object was allocated.
|
used to try to retrieve the traceback where the destroyed object was allocated.
|
||||||
|
|
||||||
Example with the script ``example.py``::
|
Example with the script ``example.py``::
|
||||||
|
|
||||||
|
@ -1648,9 +1648,9 @@ Output of the command ``python3.6 -Wd -X tracemalloc=5 example.py``::
|
||||||
File "example.py", lineno 6
|
File "example.py", lineno 6
|
||||||
f = func()
|
f = func()
|
||||||
|
|
||||||
The "Object allocated at" traceback is new and only displayed if
|
The "Object allocated at" traceback is new and is only displayed if
|
||||||
:mod:`tracemalloc` is tracing Python memory allocations and if the
|
:mod:`tracemalloc` is tracing Python memory allocations and if the
|
||||||
:mod:`warnings` was already imported.
|
:mod:`warnings` module was already imported.
|
||||||
|
|
||||||
|
|
||||||
winreg
|
winreg
|
||||||
|
@ -1672,7 +1672,7 @@ xmlrpc.client
|
||||||
-------------
|
-------------
|
||||||
|
|
||||||
The :mod:`xmlrpc.client` module now supports unmarshalling
|
The :mod:`xmlrpc.client` module now supports unmarshalling
|
||||||
additional data types used by Apache XML-RPC implementation
|
additional data types used by the Apache XML-RPC implementation
|
||||||
for numerics and ``None``.
|
for numerics and ``None``.
|
||||||
(Contributed by Serhiy Storchaka in :issue:`26885`.)
|
(Contributed by Serhiy Storchaka in :issue:`26885`.)
|
||||||
|
|
||||||
|
@ -1703,16 +1703,16 @@ Xiang Zhang in :issue:`16764` respectively.)
|
||||||
Optimizations
|
Optimizations
|
||||||
=============
|
=============
|
||||||
|
|
||||||
* Python interpreter now uses 16-bit wordcode instead of bytecode which
|
* The Python interpreter now uses a 16-bit wordcode instead of bytecode which
|
||||||
made a number of opcode optimizations possible.
|
made a number of opcode optimizations possible.
|
||||||
(Contributed by Demur Rumed with input and reviews from
|
(Contributed by Demur Rumed with input and reviews from
|
||||||
Serhiy Storchaka and Victor Stinner in :issue:`26647` and :issue:`28050`.)
|
Serhiy Storchaka and Victor Stinner in :issue:`26647` and :issue:`28050`.)
|
||||||
|
|
||||||
* The :class:`Future <asyncio.futures.Future>` now has an optimized
|
* The :class:`Future <asyncio.futures.Future>` class now has an optimized
|
||||||
C implementation.
|
C implementation.
|
||||||
(Contributed by Yury Selivanov and INADA Naoki in :issue:`26801`.)
|
(Contributed by Yury Selivanov and INADA Naoki in :issue:`26801`.)
|
||||||
|
|
||||||
* The :class:`Task <asyncio.tasks.Task>` now has an optimized
|
* The :class:`Task <asyncio.tasks.Task>` class now has an optimized
|
||||||
C implementation. (Contributed by Yury Selivanov in :issue:`28544`.)
|
C implementation. (Contributed by Yury Selivanov in :issue:`28544`.)
|
||||||
|
|
||||||
* Various implementation improvements in the :mod:`typing` module
|
* Various implementation improvements in the :mod:`typing` module
|
||||||
|
@ -1758,7 +1758,7 @@ Optimizations
|
||||||
deserializing many small objects (Contributed by Victor Stinner in
|
deserializing many small objects (Contributed by Victor Stinner in
|
||||||
:issue:`27056`).
|
:issue:`27056`).
|
||||||
|
|
||||||
- Passing :term:`keyword arguments <keyword argument>` to a function has an
|
* Passing :term:`keyword arguments <keyword argument>` to a function has an
|
||||||
overhead in comparison with passing :term:`positional arguments
|
overhead in comparison with passing :term:`positional arguments
|
||||||
<positional argument>`. Now in extension functions implemented with using
|
<positional argument>`. Now in extension functions implemented with using
|
||||||
Argument Clinic this overhead is significantly decreased.
|
Argument Clinic this overhead is significantly decreased.
|
||||||
|
@ -1791,7 +1791,7 @@ Build and C API Changes
|
||||||
For more information, see :pep:`7` and :issue:`17884`.
|
For more information, see :pep:`7` and :issue:`17884`.
|
||||||
|
|
||||||
* Cross-compiling CPython with the Android NDK and the Android API level set to
|
* Cross-compiling CPython with the Android NDK and the Android API level set to
|
||||||
21 (Android 5.0 Lollilop) or greater, runs successfully. While Android is not
|
21 (Android 5.0 Lollilop) or greater runs successfully. While Android is not
|
||||||
yet a supported platform, the Python test suite runs on the Android emulator
|
yet a supported platform, the Python test suite runs on the Android emulator
|
||||||
with only about 16 tests failures. See the Android meta-issue :issue:`26865`.
|
with only about 16 tests failures. See the Android meta-issue :issue:`26865`.
|
||||||
|
|
||||||
|
@ -1821,7 +1821,7 @@ Build and C API Changes
|
||||||
(Contributed by Eric Snow in :issue:`15767`.)
|
(Contributed by Eric Snow in :issue:`15767`.)
|
||||||
|
|
||||||
* The new :c:func:`PyErr_ResourceWarning` function can be used to generate
|
* The new :c:func:`PyErr_ResourceWarning` function can be used to generate
|
||||||
the :exc:`ResourceWarning` providing the source of the resource allocation.
|
a :exc:`ResourceWarning` providing the source of the resource allocation.
|
||||||
(Contributed by Victor Stinner in :issue:`26567`.)
|
(Contributed by Victor Stinner in :issue:`26567`.)
|
||||||
|
|
||||||
* The new :c:func:`PyOS_FSPath` function returns the file system
|
* The new :c:func:`PyOS_FSPath` function returns the file system
|
||||||
|
@ -1977,7 +1977,7 @@ Deprecated functions and types of the C API
|
||||||
Undocumented functions :c:func:`PyUnicode_AsEncodedObject`,
|
Undocumented functions :c:func:`PyUnicode_AsEncodedObject`,
|
||||||
:c:func:`PyUnicode_AsDecodedObject`, :c:func:`PyUnicode_AsEncodedUnicode`
|
:c:func:`PyUnicode_AsDecodedObject`, :c:func:`PyUnicode_AsEncodedUnicode`
|
||||||
and :c:func:`PyUnicode_AsDecodedUnicode` are deprecated now.
|
and :c:func:`PyUnicode_AsDecodedUnicode` are deprecated now.
|
||||||
Use :ref:`generic codec based API <codec-registry>` instead.
|
Use the :ref:`generic codec based API <codec-registry>` instead.
|
||||||
|
|
||||||
|
|
||||||
Deprecated Build Options
|
Deprecated Build Options
|
||||||
|
@ -2054,7 +2054,7 @@ Changes in the Python API
|
||||||
with ``'+'``.
|
with ``'+'``.
|
||||||
(Contributed by Jeff Balogh and John O'Connor in :issue:`2091`.)
|
(Contributed by Jeff Balogh and John O'Connor in :issue:`2091`.)
|
||||||
|
|
||||||
* :mod:`sqlite3` no longer implicitly commit an open transaction before DDL
|
* :mod:`sqlite3` no longer implicitly commits an open transaction before DDL
|
||||||
statements.
|
statements.
|
||||||
|
|
||||||
* On Linux, :func:`os.urandom` now blocks until the system urandom entropy pool
|
* On Linux, :func:`os.urandom` now blocks until the system urandom entropy pool
|
||||||
|
@ -2067,12 +2067,12 @@ Changes in the Python API
|
||||||
argument is not set. Previously only ``NULL`` was returned.
|
argument is not set. Previously only ``NULL`` was returned.
|
||||||
|
|
||||||
* The format of the ``co_lnotab`` attribute of code objects changed to support
|
* The format of the ``co_lnotab`` attribute of code objects changed to support
|
||||||
negative line number delta. By default, Python does not emit bytecode with
|
a negative line number delta. By default, Python does not emit bytecode with
|
||||||
negative line number delta. Functions using ``frame.f_lineno``,
|
a negative line number delta. Functions using ``frame.f_lineno``,
|
||||||
``PyFrame_GetLineNumber()`` or ``PyCode_Addr2Line()`` are not affected.
|
``PyFrame_GetLineNumber()`` or ``PyCode_Addr2Line()`` are not affected.
|
||||||
Functions decoding directly ``co_lnotab`` should be updated to use a signed
|
Functions directly decoding ``co_lnotab`` should be updated to use a signed
|
||||||
8-bit integer type for the line number delta, but it's only required to
|
8-bit integer type for the line number delta, but this is only required to
|
||||||
support applications using negative line number delta. See
|
support applications using a negative line number delta. See
|
||||||
``Objects/lnotab_notes.txt`` for the ``co_lnotab`` format and how to decode
|
``Objects/lnotab_notes.txt`` for the ``co_lnotab`` format and how to decode
|
||||||
it, and see the :pep:`511` for the rationale.
|
it, and see the :pep:`511` for the rationale.
|
||||||
|
|
||||||
|
@ -2124,7 +2124,7 @@ Changes in the Python API
|
||||||
an error (e.g. ``EBADF``) was reported by the underlying system call.
|
an error (e.g. ``EBADF``) was reported by the underlying system call.
|
||||||
(Contributed by Martin Panter in :issue:`26685`.)
|
(Contributed by Martin Panter in :issue:`26685`.)
|
||||||
|
|
||||||
* The *decode_data* argument for :class:`smtpd.SMTPChannel` and
|
* The *decode_data* argument for the :class:`smtpd.SMTPChannel` and
|
||||||
:class:`smtpd.SMTPServer` constructors is now ``False`` by default.
|
:class:`smtpd.SMTPServer` constructors is now ``False`` by default.
|
||||||
This means that the argument passed to
|
This means that the argument passed to
|
||||||
:meth:`~smtpd.SMTPServer.process_message` is now a bytes object by
|
:meth:`~smtpd.SMTPServer.process_message` is now a bytes object by
|
||||||
|
@ -2204,15 +2204,15 @@ Changes in the Python API
|
||||||
(Contributed by Ramchandra Apte in :issue:`17211`.)
|
(Contributed by Ramchandra Apte in :issue:`17211`.)
|
||||||
|
|
||||||
* :func:`re.sub` now raises an error for invalid numerical group
|
* :func:`re.sub` now raises an error for invalid numerical group
|
||||||
reference in replacement template even if the pattern is not
|
references in replacement templates even if the pattern is not
|
||||||
found in the string. Error message for invalid group reference
|
found in the string. The error message for invalid group references
|
||||||
now includes the group index and the position of the reference.
|
now includes the group index and the position of the reference.
|
||||||
(Contributed by SilentGhost, Serhiy Storchaka in :issue:`25953`.)
|
(Contributed by SilentGhost, Serhiy Storchaka in :issue:`25953`.)
|
||||||
|
|
||||||
* :class:`zipfile.ZipFile` will now raise :exc:`NotImplementedError` for
|
* :class:`zipfile.ZipFile` will now raise :exc:`NotImplementedError` for
|
||||||
unrecognized compression values. Previously a plain :exc:`RuntimeError`
|
unrecognized compression values. Previously a plain :exc:`RuntimeError`
|
||||||
was raised. Additionally, calling :class:`~zipfile.ZipFile` methods or
|
was raised. Additionally, calling :class:`~zipfile.ZipFile` methods
|
||||||
on a closed ZipFile or calling :meth:`~zipfile.ZipFile.write` methods
|
on a closed ZipFile or calling the :meth:`~zipfile.ZipFile.write` method
|
||||||
on a ZipFile created with mode ``'r'`` will raise a :exc:`ValueError`.
|
on a ZipFile created with mode ``'r'`` will raise a :exc:`ValueError`.
|
||||||
Previously, a :exc:`RuntimeError` was raised in those scenarios.
|
Previously, a :exc:`RuntimeError` was raised in those scenarios.
|
||||||
|
|
||||||
|
@ -2220,8 +2220,8 @@ Changes in the Python API
|
||||||
Changes in the C API
|
Changes in the C API
|
||||||
--------------------
|
--------------------
|
||||||
|
|
||||||
* :c:func:`PyMem_Malloc` allocator family now uses the :ref:`pymalloc allocator
|
* The :c:func:`PyMem_Malloc` allocator family now uses the :ref:`pymalloc allocator
|
||||||
<pymalloc>` rather than system :c:func:`malloc`. Applications calling
|
<pymalloc>` rather than the system :c:func:`malloc`. Applications calling
|
||||||
:c:func:`PyMem_Malloc` without holding the GIL can now crash. Set the
|
:c:func:`PyMem_Malloc` without holding the GIL can now crash. Set the
|
||||||
:envvar:`PYTHONMALLOC` environment variable to ``debug`` to validate the
|
:envvar:`PYTHONMALLOC` environment variable to ``debug`` to validate the
|
||||||
usage of memory allocators in your application. See :issue:`26249`.
|
usage of memory allocators in your application. See :issue:`26249`.
|
||||||
|
|
Loading…
Reference in New Issue