Fix up grammar, markup, etc in 3.6 What’s New

This commit is contained in:
Martin Panter 2016-11-21 13:38:59 +00:00
parent 8a6333dabf
commit a2f7ee8b26
1 changed files with 51 additions and 51 deletions

View File

@ -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`.