32585 lines
1.2 MiB
32585 lines
1.2 MiB
+++++++++++
|
||
Python News
|
||
+++++++++++
|
||
|
||
What's New in Python 3.10.11 final?
|
||
===================================
|
||
|
||
*Release date: 2023-04-04*
|
||
|
||
Security
|
||
--------
|
||
|
||
- gh-issue-101727: Updated the OpenSSL version used in Windows and macOS
|
||
binary release builds to 1.1.1t to address CVE-2023-0286, CVE-2022-4303,
|
||
and CVE-2022-4303 per `the OpenSSL 2023-02-07 security advisory
|
||
<https://www.openssl.org/news/secadv/20230207.txt>`_.
|
||
|
||
- gh-issue-101283: :class:`subprocess.Popen` now uses a safer approach to
|
||
find ``cmd.exe`` when launching with ``shell=True``. Patch by Eryk Sun,
|
||
based on a patch by Oleg Iarygin.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- gh-issue-102416: Do not memoize incorrectly automatically generated loop
|
||
rules in the parser. Patch by Pablo Galindo.
|
||
|
||
- gh-issue-102356: Fix a bug that caused a crash when deallocating deeply
|
||
nested filter objects. Patch by Marta Gómez Macías.
|
||
|
||
- gh-issue-102397: Fix segfault from race condition in signal handling
|
||
during garbage collection. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-102126: Fix deadlock at shutdown when clearing thread states if
|
||
any finalizer tries to acquire the runtime head lock. Patch by Kumar
|
||
Aditya.
|
||
|
||
- gh-issue-102027: Fix SSE2 and SSE3 detection in ``_blake2`` internal
|
||
module. Patch by Max Bachmann.
|
||
|
||
- gh-issue-101967: Fix possible segfault in
|
||
``positional_only_passed_as_keyword`` function, when new list created.
|
||
|
||
- gh-issue-101765: Fix SystemError / segmentation fault in iter
|
||
``__reduce__`` when internal access of ``builtins.__dict__`` keys mutates
|
||
the iter object.
|
||
|
||
Library
|
||
-------
|
||
|
||
- gh-issue-102947: Improve traceback when :func:`dataclasses.fields` is
|
||
called on a non-dataclass. Patch by Alex Waygood
|
||
|
||
- gh-issue-101979: Fix a bug where parentheses in the ``metavar`` argument
|
||
to :meth:`argparse.ArgumentParser.add_argument` were dropped. Patch by
|
||
Yeojin Kim.
|
||
|
||
- gh-issue-102179: Fix :func:`os.dup2` error message for negative fds.
|
||
|
||
- gh-issue-101961: For the binary mode, :func:`fileinput.hookcompressed`
|
||
doesn't set the ``encoding`` value even if the value is ``None``. Patch by
|
||
Gihwan Kim.
|
||
|
||
- gh-issue-101936: The default value of ``fp`` becomes :class:`io.BytesIO`
|
||
if :exc:`~urllib.error.HTTPError` is initialized without a designated
|
||
``fp`` parameter. Patch by Long Vo.
|
||
|
||
- gh-issue-101566: In zipfile, apply fix for extractall on the underlying
|
||
zipfile after being wrapped in ``Path``.
|
||
|
||
- gh-issue-101997: Upgrade pip wheel bundled with ensurepip (pip 23.0.1)
|
||
|
||
- gh-issue-101892: Callable iterators no longer raise :class:`SystemError`
|
||
when the callable object exhausts the iterator but forgets to either
|
||
return a sentinel value or raise :class:`StopIteration`.
|
||
|
||
- gh-issue-97786: Fix potential undefined behaviour in corner cases of
|
||
floating-point-to-time conversions.
|
||
|
||
- gh-issue-101517: Fixed bug where :mod:`bdb` looks up the source line with
|
||
:mod:`linecache` with a ``lineno=None``, which causes it to fail with an
|
||
unhandled exception.
|
||
|
||
- gh-issue-101673: Fix a :mod:`pdb` bug where ``ll`` clears the changes to
|
||
local variables.
|
||
|
||
- gh-issue-96931: Fix incorrect results from
|
||
:meth:`ssl.SSLSocket.shared_ciphers`
|
||
|
||
- gh-issue-88233: Correctly preserve "extra" fields in ``zipfile``
|
||
regardless of their ordering relative to a zip64 "extra."
|
||
|
||
- gh-issue-95495: When built against OpenSSL 3.0, the :mod:`ssl` module had
|
||
a bug where it reported unauthenticated EOFs (i.e. without close_notify)
|
||
as a clean TLS-level EOF. It now raises :exc:`~ssl.SSLEOFError`, matching
|
||
the behavior in previous versions of OpenSSL. The
|
||
:attr:`~ssl.SSLContext.options` attribute on :class:`~ssl.SSLContext` also
|
||
no longer includes :data:`~ssl.OP_IGNORE_UNEXPECTED_EOF` by default. This
|
||
option may be set to specify the previous OpenSSL 3.0 behavior.
|
||
|
||
- gh-issue-94440: Fix a :mod:`concurrent.futures.process` bug where
|
||
``ProcessPoolExecutor`` shutdown could hang after a future has been
|
||
quickly submitted and canceled.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- gh-issue-103112: Add docstring to :meth:`http.client.HTTPResponse.read` to
|
||
fix ``pydoc`` output.
|
||
|
||
- gh-issue-85417: Update :mod:`cmath` documentation to clarify behaviour on
|
||
branch cuts.
|
||
|
||
- gh-issue-97725: Fix :meth:`asyncio.Task.print_stack` description for
|
||
``file=None``. Patch by Oleg Iarygin.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- gh-issue-102980: Improve test coverage on :mod:`pdb`.
|
||
|
||
- gh-issue-102537: Adjust the error handling strategy in
|
||
``test_zoneinfo.TzPathTest.python_tzpath_context``. Patch by Paul Ganssle.
|
||
|
||
- gh-issue-101377: Improved test_locale_calendar_formatweekday of calendar.
|
||
|
||
Build
|
||
-----
|
||
|
||
- gh-issue-102711: Fix ``-Wstrict-prototypes`` compiler warnings.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- gh-issue-101759: Update Windows installer to SQLite 3.40.1.
|
||
|
||
- gh-issue-101614: Correctly handle extensions built against debug binaries
|
||
that reference ``python3_d.dll``.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- gh-issue-103207: Add instructions to the macOS installer welcome display
|
||
on how to workaround the macOS 13 Ventura “The installer encountered an
|
||
error” failure.
|
||
|
||
- gh-issue-101759: Update macOS installer to SQLite 3.40.1.
|
||
|
||
- gh-issue-87235: On macOS ``python3 /dev/fd/9 9</path/to/script.py`` failed
|
||
for any script longer than a couple of bytes.
|
||
|
||
|
||
What's New in Python 3.10.10 final?
|
||
===================================
|
||
|
||
*Release date: 2023-02-07*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- gh-issue-101400: Fix wrong lineno in exception message on
|
||
:keyword:`continue` or :keyword:`break` which are not in a loop. Patch by
|
||
Dong-hee Na.
|
||
|
||
- gh-issue-101372: Fix :func:`~unicodedata.is_normalized` to properly handle
|
||
the UCD 3.2.0 cases. Patch by Dong-hee Na.
|
||
|
||
- gh-issue-101046: Fix a possible memory leak in the parser when raising
|
||
:exc:`MemoryError`. Patch by Pablo Galindo
|
||
|
||
- gh-issue-100942: Fixed segfault in property.getter/setter/deleter that
|
||
occurred when a property subclass overrode the ``__new__`` method to
|
||
return a non-property instance.
|
||
|
||
- gh-issue-100892: Fix race while iterating over thread states in clearing
|
||
:class:`threading.local`. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-100776: Fix misleading default value in :func:`input`'s
|
||
``__text_signature__``.
|
||
|
||
- gh-issue-100374: Fix incorrect result and delay in :func:`socket.getfqdn`.
|
||
Patch by Dominic Socular.
|
||
|
||
- gh-issue-100050: Honor existing errors obtained when searching for
|
||
mismatching parentheses in the tokenizer. Patch by Pablo Galindo
|
||
|
||
- bpo-32782: ``ctypes`` arrays of length 0 now report a correct itemsize
|
||
when a ``memoryview`` is constructed from them, rather than always giving
|
||
a value of 0.
|
||
|
||
Library
|
||
-------
|
||
|
||
- gh-issue-100795: Avoid potential unexpected ``freeaddrinfo`` call (double
|
||
free) in :mod:`socket` when when a libc ``getaddrinfo()`` implementation
|
||
leaves garbage in an output pointer when returning an error. Original
|
||
patch by Sergey G. Brester.
|
||
|
||
- gh-issue-101143: Remove unused references to :class:`~asyncio.TimerHandle`
|
||
in ``asyncio.base_events.BaseEventLoop._add_callback``.
|
||
|
||
- gh-issue-101144: Make :func:`zipfile.Path.open` and
|
||
:func:`zipfile.Path.read_text` also accept ``encoding`` as a positional
|
||
argument. This was the behavior in Python 3.9 and earlier. Earlier 3.10
|
||
versions had a regression where supplying it as a positional argument
|
||
would lead to a :exc:`TypeError`.
|
||
|
||
- gh-issue-100573: Fix a Windows :mod:`asyncio` bug with named pipes where a
|
||
client doing ``os.stat()`` on the pipe would cause an error in the server
|
||
that disabled serving future requests.
|
||
|
||
- gh-issue-90104: Avoid RecursionError on ``repr`` if a dataclass field
|
||
definition has a cyclic reference.
|
||
|
||
- gh-issue-100689: Fix crash in :mod:`pyexpat` by statically allocating
|
||
``PyExpat_CAPI`` capsule.
|
||
|
||
- gh-issue-100740: Fix ``unittest.mock.Mock`` not respecting the spec for
|
||
attribute names prefixed with ``assert``.
|
||
|
||
- gh-issue-86508: Fix :func:`asyncio.open_connection` to skip binding to
|
||
local addresses of different family. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-100287: Fix the interaction of :func:`unittest.mock.seal` with
|
||
:class:`unittest.mock.AsyncMock`.
|
||
|
||
- gh-issue-100474: :mod:`http.server` now checks that an index page is
|
||
actually a regular file before trying to serve it. This avoids issues
|
||
with directories named ``index.html``.
|
||
|
||
- gh-issue-100160: Remove any deprecation warnings in
|
||
:func:`asyncio.get_event_loop`. They are deferred to Python 3.12.
|
||
|
||
- gh-issue-99952: Fix a reference undercounting issue in
|
||
:class:`ctypes.Structure` with ``from_param()`` results larger than a C
|
||
pointer.
|
||
|
||
- gh-issue-98778: Update :exc:`~urllib.error.HTTPError` to be initialized
|
||
properly, even if the ``fp`` is ``None``. Patch by Dong-hee Na.
|
||
|
||
- gh-issue-83035: Fix :func:`inspect.getsource` handling of decorator calls
|
||
with nested parentheses.
|
||
|
||
- gh-issue-99240: Fix double-free bug in Argument Clinic ``str_converter``
|
||
by extracting memory clean up to a new ``post_parsing`` section.
|
||
|
||
- gh-issue-85267: Several improvements to :func:`inspect.signature`'s
|
||
handling of ``__text_signature``. - Fixes a case where
|
||
:func:`inspect.signature` dropped parameters - Fixes a case where
|
||
:func:`inspect.signature` raised :exc:`tokenize.TokenError` - Allows
|
||
:func:`inspect.signature` to understand defaults involving binary
|
||
operations of constants - :func:`inspect.signature` is documented as only
|
||
raising :exc:`TypeError` or :exc:`ValueError`, but sometimes raised
|
||
:exc:`RuntimeError`. These cases now raise :exc:`ValueError` - Removed a
|
||
dead code path
|
||
|
||
- gh-issue-96192: Fix handling of ``bytes`` :term:`path-like objects
|
||
<path-like object>` in :func:`os.ismount()`.
|
||
|
||
- bpo-44817: Ignore WinError 53 (ERROR_BAD_NETPATH), 65
|
||
(ERROR_NETWORK_ACCESS_DENIED) and 161 (ERROR_BAD_PATHNAME) when using
|
||
ntpath.realpath().
|
||
|
||
- bpo-40447: Accept :class:`os.PathLike` (such as :class:`pathlib.Path`) in
|
||
the ``stripdir`` arguments of :meth:`compileall.compile_file` and
|
||
:meth:`compileall.compile_dir`.
|
||
|
||
- bpo-36880: Fix a reference counting issue when a :mod:`ctypes` callback
|
||
with return type :class:`~ctypes.py_object` returns ``None``, which could
|
||
cause crashes.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- gh-issue-100616: Document existing ``attr`` parameter to
|
||
:func:`curses.window.vline` function in :mod:`curses`.
|
||
|
||
- gh-issue-100472: Remove claim in documentation that the ``stripdir``,
|
||
``prependdir`` and ``limit_sl_dest`` parameters of
|
||
:func:`compileall.compile_dir` and :func:`compileall.compile_file` could
|
||
be :class:`bytes`.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- gh-issue-101334: ``test_tarfile`` has been updated to pass when run as a
|
||
high UID.
|
||
|
||
- gh-issue-96002: Add functional test for Argument Clinic.
|
||
|
||
Build
|
||
-----
|
||
|
||
- gh-issue-101522: Allow overriding Windows dependencies versions and paths
|
||
using MSBuild properties.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- gh-issue-82052: Fixed an issue where writing more than 32K of Unicode
|
||
output to the console screen in one go can result in mojibake.
|
||
|
||
- gh-issue-100180: Update Windows installer to OpenSSL 1.1.1s
|
||
|
||
- bpo-43984: :meth:`winreg.SetValueEx` now leaves the target value untouched
|
||
in the case of conversion errors. Previously, ``-1`` would be written in
|
||
case of such errors.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- gh-issue-100180: Update macOS installer to OpenSSL 1.1.1s
|
||
|
||
C API
|
||
-----
|
||
|
||
- gh-issue-99240: In argument parsing, after deallocating newly allocated
|
||
memory, reset its pointer to NULL.
|
||
|
||
|
||
What's New in Python 3.10.9 final?
|
||
==================================
|
||
|
||
*Release date: 2022-12-06*
|
||
|
||
Security
|
||
--------
|
||
|
||
- gh-issue-100001: ``python -m http.server`` no longer allows terminal
|
||
control characters sent within a garbage request to be printed to the
|
||
stderr server log.
|
||
|
||
This is done by changing the :mod:`http.server`
|
||
:class:`BaseHTTPRequestHandler` ``.log_message`` method to replace control
|
||
characters with a ``\xHH`` hex escape before printing.
|
||
|
||
- gh-issue-87604: Avoid publishing list of active per-interpreter audit
|
||
hooks via the :mod:`gc` module
|
||
|
||
- gh-issue-98433: The IDNA codec decoder used on DNS hostnames by
|
||
:mod:`socket` or :mod:`asyncio` related name resolution functions no
|
||
longer involves a quadratic algorithm. This prevents a potential CPU
|
||
denial of service if an out-of-spec excessive length hostname involving
|
||
bidirectional characters were decoded. Some protocols such as
|
||
:mod:`urllib` http ``3xx`` redirects potentially allow for an attacker to
|
||
supply such a name.
|
||
|
||
- gh-issue-98739: Update bundled libexpat to 2.5.0
|
||
|
||
- gh-issue-98517: Port XKCP's fix for the buffer overflows in SHA-3
|
||
(CVE-2022-37454).
|
||
|
||
- gh-issue-97514: On Linux the :mod:`multiprocessing` module returns to
|
||
using filesystem backed unix domain sockets for communication with the
|
||
*forkserver* process instead of the Linux abstract socket namespace. Only
|
||
code that chooses to use the :ref:`"forkserver" start method
|
||
<multiprocessing-start-methods>` is affected.
|
||
|
||
Abstract sockets have no permissions and could allow any user on the
|
||
system in the same `network namespace
|
||
<https://man7.org/linux/man-pages/man7/network_namespaces.7.html>`_ (often
|
||
the whole system) to inject code into the multiprocessing *forkserver*
|
||
process. This was a potential privilege escalation. Filesystem based
|
||
socket permissions restrict this to the *forkserver* process user as was
|
||
the default in Python 3.8 and earlier.
|
||
|
||
This prevents Linux `CVE-2022-42919
|
||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2022-42919>`_.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- gh-issue-99578: Fix a reference bug in :func:`_imp.create_builtin()` after
|
||
the creation of the first sub-interpreter for modules ``builtins`` and
|
||
``sys``. Patch by Victor Stinner.
|
||
|
||
- gh-issue-99581: Fixed a bug that was causing a buffer overflow if the
|
||
tokenizer copies a line missing the newline caracter from a file that is
|
||
as long as the available tokenizer buffer. Patch by Pablo galindo
|
||
|
||
- gh-issue-96055: Update :mod:`faulthandler` to emit an error message with
|
||
the proper unexpected signal number. Patch by Dong-hee Na.
|
||
|
||
- gh-issue-98852: Fix subscription of :class:`types.GenericAlias` instances
|
||
containing bare generic types: for example ``tuple[A, T][int]``, where
|
||
``A`` is a generic type, and ``T`` is a type variable.
|
||
|
||
- gh-issue-98415: Fix detection of MAC addresses for :mod:`uuid` on certain
|
||
OSs. Patch by Chaim Sanders
|
||
|
||
- gh-issue-92119: Print exception class name instead of its string
|
||
representation when raising errors from :mod:`ctypes` calls.
|
||
|
||
- gh-issue-93696: Allow :mod:`pdb` to locate source for frozen modules in
|
||
the standard library.
|
||
|
||
- bpo-31718: Raise :exc:`ValueError` instead of :exc:`SystemError` when
|
||
methods of uninitialized :class:`io.IncrementalNewlineDecoder` objects are
|
||
called. Patch by Oren Milman.
|
||
|
||
- bpo-38031: Fix a possible assertion failure in :class:`io.FileIO` when the
|
||
opener returns an invalid file descriptor.
|
||
|
||
Library
|
||
-------
|
||
|
||
- gh-issue-100001: Also \ escape \s in the http.server
|
||
BaseHTTPRequestHandler.log_message so that it is technically possible to
|
||
parse the line and reconstruct what the original data was. Without this a
|
||
\xHH is ambiguious as to if it is a hex replacement we put in or the
|
||
characters r"\x" came through in the original request line.
|
||
|
||
- gh-issue-93453: :func:`asyncio.get_event_loop` now only emits a
|
||
deprecation warning when a new event loop was created implicitly. It no
|
||
longer emits a deprecation warning if the current event loop was set.
|
||
|
||
- gh-issue-51524: Fix bug when calling trace.CoverageResults with valid
|
||
infile.
|
||
|
||
- gh-issue-99645: Fix a bug in handling class cleanups in
|
||
:class:`unittest.TestCase`. Now ``addClassCleanup()`` uses separate lists
|
||
for different ``TestCase`` subclasses, and ``doClassCleanups()`` only
|
||
cleans up the particular class.
|
||
|
||
- gh-issue-97001: Release the GIL when calling termios APIs to avoid
|
||
blocking threads.
|
||
|
||
- gh-issue-99341: Fix :func:`ast.increment_lineno` to also cover
|
||
:class:`ast.TypeIgnore` when changing line numbers.
|
||
|
||
- gh-issue-74044: Fixed bug where :func:`inspect.signature` reported
|
||
incorrect arguments for decorated methods.
|
||
|
||
- gh-issue-99275: Fix ``SystemError`` in :mod:`ctypes` when exception was
|
||
not set during ``__initsubclass__``.
|
||
|
||
- gh-issue-99155: Fix :class:`statistics.NormalDist` pickle with ``0`` and
|
||
``1`` protocols.
|
||
|
||
- gh-issue-99134: Update the bundled copy of pip to version 22.3.1.
|
||
|
||
- gh-issue-99130: Apply bugfixes from `importlib_metadata 4.11.4
|
||
<https://importlib-metadata.readthedocs.io/en/latest/history.html#v4-11-4>`_,
|
||
namely: In ``PathDistribution._name_from_stem``, avoid including parts of
|
||
the extension in the result. In ``PathDistribution._normalized_name``,
|
||
ensure names loaded from the stem of the filename are also normalized,
|
||
ensuring duplicate entry points by packages varying only by non-normalized
|
||
name are hidden.
|
||
|
||
- gh-issue-83004: Clean up refleak on failed module initialisation in
|
||
:mod:`_zoneinfo`
|
||
|
||
- gh-issue-83004: Clean up refleaks on failed module initialisation in in
|
||
:mod:`_pickle`
|
||
|
||
- gh-issue-83004: Clean up refleak on failed module initialisation in
|
||
:mod:`_io`.
|
||
|
||
- gh-issue-98897: Fix memory leak in :func:`math.dist` when both points
|
||
don't have the same dimension. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-98793: Fix argument typechecks in :func:`!_overlapped.WSAConnect`
|
||
and :func:`!_overlapped.Overlapped.WSASendTo` functions.
|
||
|
||
- gh-issue-98740: Fix internal error in the :mod:`re` module which in very
|
||
rare circumstances prevented compilation of a regular expression
|
||
containing a :ref:`conditional expression <re-conditional-expression>`
|
||
without the "else" branch.
|
||
|
||
- gh-issue-98703: Fix :meth:`asyncio.StreamWriter.drain` to call
|
||
``protocol.connection_lost`` callback only once on Windows.
|
||
|
||
- gh-issue-98624: Add a mutex to unittest.mock.NonCallableMock to protect
|
||
concurrent access to mock attributes.
|
||
|
||
- gh-issue-89237: Fix hang on Windows in ``subprocess.wait_closed()`` in
|
||
:mod:`asyncio` with :class:`~asyncio.ProactorEventLoop`. Patch by Kumar
|
||
Aditya.
|
||
|
||
- gh-issue-98458: Fix infinite loop in unittest when a self-referencing
|
||
chained exception is raised
|
||
|
||
- gh-issue-97928: :meth:`tkinter.Text.count` raises now an exception for
|
||
options starting with "-" instead of silently ignoring them.
|
||
|
||
- gh-issue-97966: On ``uname_result``, restored expectation that ``_fields``
|
||
and ``_asdict`` would include all six properties including ``processor``.
|
||
|
||
- gh-issue-98331: Update the bundled copies of pip and setuptools to
|
||
versions 22.3 and 65.5.0 respectively.
|
||
|
||
- gh-issue-96035: Fix bug in :func:`urllib.parse.urlparse` that causes
|
||
certain port numbers containing whitespace, underscores, plus and minus
|
||
signs, or non-ASCII digits to be incorrectly accepted.
|
||
|
||
- gh-issue-98251: Allow :mod:`venv` to pass along :envvar:`PYTHON*`
|
||
variables to ``ensurepip`` and ``pip`` when they do not impact path
|
||
resolution
|
||
|
||
- gh-issue-98178: On macOS, fix a crash in :func:`syslog.syslog` in
|
||
multi-threaded applications. On macOS, the libc ``syslog()`` function is
|
||
not thread-safe, so :func:`syslog.syslog` no longer releases the GIL to
|
||
call it. Patch by Victor Stinner.
|
||
|
||
- gh-issue-96151: Allow ``BUILTINS`` to be a valid field name for frozen
|
||
dataclasses.
|
||
|
||
- gh-issue-98086: Make sure ``patch.dict()`` can be applied on async
|
||
functions.
|
||
|
||
- gh-issue-88863: To avoid apparent memory leaks when
|
||
:func:`asyncio.open_connection` raises, break reference cycles generated
|
||
by local exception and future instances (which has exception instance as
|
||
its member var). Patch by Dong Uk, Kang.
|
||
|
||
- gh-issue-93858: Prevent error when activating venv in nested fish
|
||
instances.
|
||
|
||
- bpo-46364: Restrict use of sockets instead of pipes for stdin of
|
||
subprocesses created by :mod:`asyncio` to AIX platform only.
|
||
|
||
- bpo-38523: :func:`shutil.copytree` now applies the
|
||
*ignore_dangling_symlinks* argument recursively.
|
||
|
||
- bpo-36267: Fix IndexError in :class:`argparse.ArgumentParser` when a
|
||
``store_true`` action is given an explicit argument.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- gh-issue-92892: Document that calling variadic functions with ctypes
|
||
requires special care on macOS/arm64 (and possibly other platforms).
|
||
|
||
Tests
|
||
-----
|
||
|
||
- gh-issue-99892: Skip test_normalization() of test_unicodedata if it fails
|
||
to download NormalizationTest.txt file from pythontest.net. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-34272: Some C API tests were moved into the new Lib/test/test_capi/
|
||
directory.
|
||
|
||
Build
|
||
-----
|
||
|
||
- gh-issue-99086: Fix ``-Wimplicit-int``, ``-Wstrict-prototypes``, and
|
||
``-Wimplicit-function-declaration`` compiler warnings in
|
||
:program:`configure` checks.
|
||
|
||
- gh-issue-99086: Fix ``-Wimplicit-int`` compiler warning in
|
||
:program:`configure` check for ``PTHREAD_SCOPE_SYSTEM``.
|
||
|
||
- gh-issue-97731: Specify the full path to the source location for ``make
|
||
docclean`` (needed for cross-builds).
|
||
|
||
- gh-issue-98671: Fix ``NO_MISALIGNED_ACCESSES`` being not defined for the
|
||
SHA3 extension when ``HAVE_ALIGNED_REQUIRED`` is set. Allowing builds on
|
||
hardware that unaligned memory accesses are not allowed.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- gh-issue-99345: Use faster initialization functions to detect install
|
||
location for Windows Store package
|
||
|
||
- gh-issue-98689: Update Windows builds to zlib v1.2.13. v1.2.12 has
|
||
CVE-2022-37434, but the vulnerable ``inflateGetHeader`` API is not used by
|
||
Python.
|
||
|
||
- gh-issue-94328: Update Windows installer to use SQLite 3.39.4.
|
||
|
||
- bpo-40882: Fix a memory leak in
|
||
:class:`multiprocessing.shared_memory.SharedMemory` on Windows.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- gh-issue-94328: Update macOS installer to SQLite 3.39.4.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- gh-issue-97527: Fix a bug in the previous bugfix that caused IDLE to not
|
||
start when run with 3.10.8, 3.12.0a1, and at least Microsoft Python
|
||
3.10.2288.0 installed without the Lib/test package. 3.11.0 was never
|
||
affected.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- gh-issue-95731: Fix handling of module docstrings in
|
||
:file:`Tools/i18n/pygettext.py`.
|
||
|
||
|
||
What's New in Python 3.10.8 final?
|
||
==================================
|
||
|
||
*Release date: 2022-10-11*
|
||
|
||
Security
|
||
--------
|
||
|
||
- gh-issue-97616: Fix multiplying a list by an integer (``list *= int``):
|
||
detect the integer overflow when the new allocated length is close to the
|
||
maximum size. Issue reported by Jordan Limor. Patch by Victor Stinner.
|
||
|
||
- gh-issue-97612: Fix a shell code injection vulnerability in the
|
||
``get-remote-certificate.py`` example script. The script no longer uses a
|
||
shell to run ``openssl`` commands. Issue reported and initial fix by Caleb
|
||
Shortt. Patch by Victor Stinner.
|
||
|
||
- gh-issue-68966: The deprecated mailcap module now refuses to inject unsafe
|
||
text (filenames, MIME types, parameters) into shell commands. Instead of
|
||
using such text, it will warn and act as if a match was not found (or for
|
||
test commands, as if the test failed).
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- gh-issue-96078: :func:`os.sched_yield` now release the GIL while calling
|
||
sched_yield(2). Patch by Dong-hee Na.
|
||
|
||
- gh-issue-97943: Bugfix: :func:`PyFunction_GetAnnotations` should return a
|
||
borrowed reference. It was returning a new reference.
|
||
|
||
- gh-issue-97591: Fixed a missing incref/decref pair in
|
||
`Exception.__setstate__()`. Patch by Ofey Chan.
|
||
|
||
- gh-issue-96848: Fix command line parsing: reject :option:`-X
|
||
int_max_str_digits <-X>` option with no value (invalid) when the
|
||
:envvar:`PYTHONINTMAXSTRDIGITS` environment variable is set to a valid
|
||
limit. Patch by Victor Stinner.
|
||
|
||
- gh-issue-95921: Fix overly-broad source position information for chained
|
||
comparisons used as branching conditions.
|
||
|
||
- gh-issue-96821: Fix undefined behaviour in ``_testcapimodule.c``.
|
||
|
||
- gh-issue-95778: When :exc:`ValueError` is raised if an integer is larger
|
||
than the limit, mention the :func:`sys.set_int_max_str_digits` function in
|
||
the error message. Patch by Victor Stinner.
|
||
|
||
- gh-issue-96387: At Python exit, sometimes a thread holding the GIL can
|
||
wait forever for a thread (usually a daemon thread) which requested to
|
||
drop the GIL, whereas the thread already exited. To fix the race
|
||
condition, the thread which requested the GIL drop now resets its request
|
||
before exiting. Issue discovered and analyzed by Mingliang ZHAO. Patch by
|
||
Victor Stinner.
|
||
|
||
- gh-issue-96864: Fix a possible assertion failure, fatal error, or
|
||
:exc:`SystemError` if a line tracing event raises an exception while
|
||
opcode tracing is enabled.
|
||
|
||
- gh-issue-96678: Fix undefined behaviour in C code of null pointer
|
||
arithmetic.
|
||
|
||
- gh-issue-96641: Do not expose ``KeyWrapper`` in :mod:`_functools`.
|
||
|
||
- gh-issue-96611: When loading a file with invalid UTF-8 inside a multi-line
|
||
string, a correct SyntaxError is emitted.
|
||
|
||
- gh-issue-95196: Disable incorrect pickling of the C implemented
|
||
classmethod descriptors.
|
||
|
||
- gh-issue-96352: Fix :exc:`AttributeError` missing ``name`` and ``obj``
|
||
attributes in :meth:`object.__getattribute__`. Patch by Philip Georgi.
|
||
|
||
- bpo-42316: Document some places where an assignment expression needs
|
||
parentheses.
|
||
|
||
Library
|
||
-------
|
||
|
||
- gh-issue-87730: Wrap network errors consistently in urllib FTP support, so
|
||
the test suite doesn't fail when a network is available but the public
|
||
internet is not reachable.
|
||
|
||
- gh-issue-97825: Fixes :exc:`AttributeError` when
|
||
:meth:`subprocess.check_output` is used with argument ``input=None`` and
|
||
either of the arguments *encoding* or *errors* are used.
|
||
|
||
- gh-issue-96827: Avoid spurious tracebacks from :mod:`asyncio` when default
|
||
executor cleanup is delayed until after the event loop is closed (e.g. as
|
||
the result of a keyboard interrupt).
|
||
|
||
- gh-issue-97592: Avoid a crash in the C version of
|
||
:meth:`asyncio.Future.remove_done_callback` when an evil argument is
|
||
passed.
|
||
|
||
- gh-issue-97639: Remove ``tokenize.NL`` check from :mod:`tabnanny`.
|
||
|
||
- gh-issue-97545: Make Semaphore run faster.
|
||
|
||
- gh-issue-73588: Fix generation of the default name of
|
||
:class:`tkinter.Checkbutton`. Previously, checkbuttons in different parent
|
||
widgets could have the same short name and share the same state if
|
||
arguments "name" and "variable" are not specified. Now they are globally
|
||
unique.
|
||
|
||
- gh-issue-97005: Update bundled libexpat to 2.4.9
|
||
|
||
- gh-issue-85760: Fix race condition in :mod:`asyncio` where
|
||
:meth:`~asyncio.SubprocessProtocol.process_exited` called before the
|
||
:meth:`~asyncio.SubprocessProtocol.pipe_data_received` leading to
|
||
inconsistent output. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-96819: Fixed check in :mod:`multiprocessing.resource_tracker`
|
||
that guarantees that the length of a write to a pipe is not greater than
|
||
``PIPE_BUF``.
|
||
|
||
- gh-issue-96741: Corrected type annotation for dataclass attribute
|
||
``pstats.FunctionProfile.ncalls`` to be ``str``.
|
||
|
||
- gh-issue-96652: Fix the faulthandler implementation of
|
||
``faulthandler.register(signal, chain=True)`` if the ``sigaction()``
|
||
function is not available: don't call the previous signal handler if it's
|
||
NULL. Patch by Victor Stinner.
|
||
|
||
- gh-issue-96073: In :mod:`inspect`, fix overeager replacement of
|
||
"``typing.``" in formatting annotations.
|
||
|
||
- gh-issue-90467: Fix :class:`asyncio.streams.StreamReaderProtocol` to keep
|
||
a strong reference to the created task, so that it's not garbage collected
|
||
|
||
- gh-issue-96052: Fix handling compiler warnings (SyntaxWarning and
|
||
DeprecationWarning) in :func:`codeop.compile_command` when checking for
|
||
incomplete input. Previously it emitted warnings and raised a SyntaxError.
|
||
Now it always returns ``None`` for incomplete input without emitting any
|
||
warnings.
|
||
|
||
- gh-issue-91212: Fixed flickering of the turtle window when the tracer is
|
||
turned off. Patch by Shin-myoung-serp.
|
||
|
||
- gh-issue-74116: Allow :meth:`asyncio.StreamWriter.drain` to be awaited
|
||
concurrently by multiple tasks. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-90155: Fix broken :class:`asyncio.Semaphore` when acquire is
|
||
cancelled.
|
||
|
||
- gh-issue-92986: Fix :func:`ast.unparse` when ``ImportFrom.level`` is None
|
||
|
||
- gh-issue-91539: Improve performance of
|
||
``urllib.request.getproxies_environment`` when there are many environment
|
||
variables
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- gh-issue-97741: Fix ``!`` in c domain ref target syntax via a ``conf.py``
|
||
patch, so it works as intended to disable ref target resolution.
|
||
|
||
- gh-issue-95588: Clarified the conflicting advice given in the :mod:`ast`
|
||
documentation about :func:`ast.literal_eval` being "safe" for use on
|
||
untrusted input while at the same time warning that it can crash the
|
||
process. The latter statement is true and is deemed unfixable without a
|
||
large amount of work unsuitable for a bugfix. So we keep the warning and
|
||
no longer claim that ``literal_eval`` is safe.
|
||
|
||
- gh-issue-93031: Update tutorial introduction output to use 3.10+
|
||
SyntaxError invalid range.
|
||
|
||
Build
|
||
-----
|
||
|
||
- gh-issue-96729: Ensure that Windows releases built with
|
||
``Tools\msi\buildrelease.bat`` are upgradable to and from official Python
|
||
releases.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- gh-issue-97728: Fix possible crashes caused by the use of uninitialized
|
||
variables when pass invalid arguments in :func:`os.system` on Windows and
|
||
in Windows-specific modules (like ``winreg``).
|
||
|
||
- gh-issue-90989: Clarify some text in the Windows installer.
|
||
|
||
- gh-issue-96577: Fixes a potential buffer overrun in :mod:`msilib`.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- gh-issue-97897: The macOS 13 SDK includes support for the ``mkfifoat`` and
|
||
``mknodat`` system calls. Using the ``dir_fd`` option with either
|
||
:func:`os.mkfifo` or :func:`os.mknod` could result in a segfault if
|
||
cpython is built with the macOS 13 SDK but run on an earlier version of
|
||
macOS. Prevent this by adding runtime support for detection of these
|
||
system calls ("weaklinking") as is done for other newer syscalls on macOS.
|
||
|
||
|
||
What's New in Python 3.10.7 final?
|
||
==================================
|
||
|
||
*Release date: 2022-09-05*
|
||
|
||
Security
|
||
--------
|
||
|
||
- gh-issue-95778: Converting between :class:`int` and :class:`str` in bases
|
||
other than 2 (binary), 4, 8 (octal), 16 (hexadecimal), or 32 such as base
|
||
10 (decimal) now raises a :exc:`ValueError` if the number of digits in
|
||
string form is above a limit to avoid potential denial of service attacks
|
||
due to the algorithmic complexity. This is a mitigation for
|
||
`CVE-2020-10735
|
||
<https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-10735>`_.
|
||
|
||
This new limit can be configured or disabled by environment variable,
|
||
command line flag, or :mod:`sys` APIs. See the :ref:`integer string
|
||
conversion length limitation <int_max_str_digits>` documentation. The
|
||
default limit is 4300 digits in string form.
|
||
|
||
Patch by Gregory P. Smith [Google] and Christian Heimes [Red Hat] with
|
||
feedback from Victor Stinner, Thomas Wouters, Steve Dower, Ned Deily, and
|
||
Mark Dickinson.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- gh-issue-96187: Fixed a bug that caused ``_PyCode_GetExtra`` to return
|
||
garbage for negative indexes. Patch by Pablo Galindo
|
||
|
||
- gh-issue-95876: Fix format string in
|
||
``_PyPegen_raise_error_known_location`` that can lead to memory corruption
|
||
on some 64bit systems. The function was building a tuple with ``i`` (int)
|
||
instead of ``n`` (Py_ssize_t) for Py_ssize_t arguments.
|
||
|
||
- gh-issue-95605: Fix misleading contents of error message when converting
|
||
an all-whitespace string to :class:`float`.
|
||
|
||
- gh-issue-93592: ``coroutine.throw()`` now properly initializes the
|
||
``frame.f_back`` when resuming a stack of coroutines. This allows e.g.
|
||
``traceback.print_stack()`` to work correctly when an exception (such as
|
||
``CancelledError``) is thrown into a coroutine.
|
||
|
||
- gh-issue-94996: :func:`ast.parse` will no longer parse function
|
||
definitions with positional-only params when passed ``feature_version``
|
||
less than ``(3, 8)``. Patch by Shantanu Jain.
|
||
|
||
Library
|
||
-------
|
||
|
||
- gh-issue-68163: Correct conversion of :class:`numbers.Rational`'s to
|
||
:class:`float`.
|
||
|
||
- gh-issue-96159: Fix a performance regression in logging
|
||
TimedRotatingFileHandler. Only check for special files when the rollover
|
||
time has passed.
|
||
|
||
- gh-issue-96175: Fix unused ``localName`` parameter in the ``Attr`` class
|
||
in :mod:`xml.dom.minidom`.
|
||
|
||
- gh-issue-95609: Update bundled pip to 22.2.2.
|
||
|
||
- gh-issue-95231: Fail gracefully if :data:`~errno.EPERM` or
|
||
:data:`~errno.ENOSYS` is raised when loading :mod:`crypt` methods. This
|
||
may happen when trying to load ``MD5`` on a Linux kernel with :abbr:`FIPS
|
||
(Federal Information Processing Standard)` enabled.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- gh-issue-96098: Improve discoverability of the higher level
|
||
concurrent.futures module by providing clearer links from the lower level
|
||
threading and multiprocessing modules.
|
||
|
||
- gh-issue-95789: Update the default RFC base URL from deprecated
|
||
tools.ietf.org to datatracker.ietf.org
|
||
|
||
- gh-issue-91207: Fix stylesheet not working in Windows CHM htmlhelp docs.
|
||
Contributed by C.A.M. Gerlach.
|
||
|
||
- bpo-47115: The documentation now lists which members of C structs are part
|
||
of the :ref:`Limited API/Stable ABI <stable>`.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- gh-issue-95243: Mitigate the inherent race condition from using
|
||
find_unused_port() in testSockName() by trying to find an unused port a
|
||
few times before failing. Patch by Ross Burton.
|
||
|
||
Build
|
||
-----
|
||
|
||
- gh-issue-94682: Build and test with OpenSSL 1.1.1q
|
||
|
||
IDLE
|
||
----
|
||
|
||
- gh-issue-65802: Document handling of extensions in Save As dialogs.
|
||
|
||
- gh-issue-95191: Include prompts when saving Shell (interactive input and
|
||
output).
|
||
|
||
|
||
What's New in Python 3.10.6 final?
|
||
==================================
|
||
|
||
*Release date: 2022-08-01*
|
||
|
||
Security
|
||
--------
|
||
|
||
- gh-issue-87389: :mod:`http.server`: Fix an open redirection vulnerability
|
||
in the HTTP server when an URI path starts with ``//``. Vulnerability
|
||
discovered, and initial fix proposed, by Hamza Avvan.
|
||
|
||
- gh-issue-92888: Fix ``memoryview`` use after free when accessing the
|
||
backing buffer in certain cases.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- gh-issue-95355: ``_PyPegen_Parser_New`` now properly detects token memory
|
||
allocation errors. Patch by Honglin Zhu.
|
||
|
||
- gh-issue-94938: Fix error detection in some builtin functions when keyword
|
||
argument name is an instance of a str subclass with overloaded ``__eq__``
|
||
and ``__hash__``. Previously it could cause SystemError or other undesired
|
||
behavior.
|
||
|
||
- gh-issue-94949: :func:`ast.parse` will no longer parse parenthesized
|
||
context managers when passed ``feature_version`` less than ``(3, 9)``.
|
||
Patch by Shantanu Jain.
|
||
|
||
- gh-issue-94947: :func:`ast.parse` will no longer parse assignment
|
||
expressions when passed ``feature_version`` less than ``(3, 8)``. Patch by
|
||
Shantanu Jain.
|
||
|
||
- gh-issue-94869: Fix the column offsets for some expressions in multi-line
|
||
f-strings :mod:`ast` nodes. Patch by Pablo Galindo.
|
||
|
||
- gh-issue-91153: Fix an issue where a :class:`bytearray` item assignment
|
||
could crash if it's resized by the new value's :meth:`__index__` method.
|
||
|
||
- gh-issue-94329: Compile and run code with unpacking of extremely large
|
||
sequences (1000s of elements). Such code failed to compile. It now
|
||
compiles and runs correctly.
|
||
|
||
- gh-issue-94360: Fixed a tokenizer crash when reading encoded files with
|
||
syntax errors from ``stdin`` with non utf-8 encoded text. Patch by Pablo
|
||
Galindo
|
||
|
||
- gh-issue-94192: Fix error for dictionary literals with invalid expression
|
||
as value.
|
||
|
||
- gh-issue-93964: Strengthened compiler overflow checks to prevent crashes
|
||
when compiling very large source files.
|
||
|
||
- gh-issue-93671: Fix some exponential backtrace case happening with deeply
|
||
nested sequence patterns in match statements. Patch by Pablo Galindo
|
||
|
||
- gh-issue-93021: Fix the :attr:`__text_signature__` for :meth:`__get__`
|
||
methods implemented in C. Patch by Jelle Zijlstra.
|
||
|
||
- gh-issue-92930: Fixed a crash in ``_pickle.c`` from mutating collections
|
||
during ``__reduce__`` or ``persistent_id``.
|
||
|
||
- gh-issue-92914: Always round the allocated size for lists up to the
|
||
nearest even number.
|
||
|
||
- gh-issue-92858: Improve error message for some suites with syntax error
|
||
before ':'
|
||
|
||
Library
|
||
-------
|
||
|
||
- gh-issue-95339: Update bundled pip to 22.2.1.
|
||
|
||
- gh-issue-95045: Fix GC crash when deallocating ``_lsprof.Profiler`` by
|
||
untracking it before calling any callbacks. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-95087: Fix IndexError in parsing invalid date in the :mod:`email`
|
||
module.
|
||
|
||
- gh-issue-95199: Upgrade bundled setuptools to 63.2.0.
|
||
|
||
- gh-issue-95194: Upgrade bundled pip to 22.2.
|
||
|
||
- gh-issue-93899: Fix check for existence of :data:`os.EFD_CLOEXEC`,
|
||
:data:`os.EFD_NONBLOCK` and :data:`os.EFD_SEMAPHORE` flags on older kernel
|
||
versions where these flags are not present. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-95166: Fix :meth:`concurrent.futures.Executor.map` to cancel the
|
||
currently waiting on future on an error - e.g. TimeoutError or
|
||
KeyboardInterrupt.
|
||
|
||
- gh-issue-93157: Fix :mod:`fileinput` module didn't support ``errors``
|
||
option when ``inplace`` is true.
|
||
|
||
- gh-issue-94821: Fix binding of unix socket to empty address on Linux to
|
||
use an available address from the abstract namespace, instead of "\0".
|
||
|
||
- gh-issue-94736: Fix crash when deallocating an instance of a subclass of
|
||
``_multiprocessing.SemLock``. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-94637: :meth:`SSLContext.set_default_verify_paths` now releases
|
||
the GIL around ``SSL_CTX_set_default_verify_paths`` call. The function
|
||
call performs I/O and CPU intensive work.
|
||
|
||
- gh-issue-94510: Re-entrant calls to :func:`sys.setprofile` and
|
||
:func:`sys.settrace` now raise :exc:`RuntimeError`. Patch by Pablo
|
||
Galindo.
|
||
|
||
- gh-issue-92336: Fix bug where :meth:`linecache.getline` fails on bad files
|
||
with :exc:`UnicodeDecodeError` or :exc:`SyntaxError`. It now returns an
|
||
empty string as per the documentation.
|
||
|
||
- gh-issue-89988: Fix memory leak in :class:`pickle.Pickler` when looking up
|
||
:attr:`dispatch_table`. Patch by Kumar Aditya.
|
||
|
||
- gh-issue-94254: Fixed types of :mod:`struct` module to be immutable. Patch
|
||
by Kumar Aditya.
|
||
|
||
- gh-issue-94245: Fix pickling and copying of ``typing.Tuple[()]``.
|
||
|
||
- gh-issue-94207: Made :class:`_struct.Struct` GC-tracked in order to fix a
|
||
reference leak in the :mod:`_struct` module.
|
||
|
||
- gh-issue-94101: Manual instantiation of :class:`ssl.SSLSession` objects is
|
||
no longer allowed as it lead to misconfigured instances that crashed the
|
||
interpreter when attributes where accessed on them.
|
||
|
||
- gh-issue-84753: :func:`inspect.iscoroutinefunction`,
|
||
:func:`inspect.isgeneratorfunction`, and
|
||
:func:`inspect.isasyncgenfunction` now properly return ``True`` for
|
||
duck-typed function-like objects like instances of
|
||
:class:`unittest.mock.AsyncMock`.
|
||
|
||
This makes :func:`inspect.iscoroutinefunction` consistent with the
|
||
behavior of :func:`asyncio.iscoroutinefunction`. Patch by Mehdi ABAAKOUK.
|
||
|
||
- gh-issue-83499: Fix double closing of file description in :mod:`tempfile`.
|
||
|
||
- gh-issue-79512: Fixed names and ``__module__`` value of :mod:`weakref`
|
||
classes :class:`~weakref.ReferenceType`, :class:`~weakref.ProxyType`,
|
||
:class:`~weakref.CallableProxyType`. It makes them pickleable.
|
||
|
||
- gh-issue-90494: :func:`copy.copy` and :func:`copy.deepcopy` now always
|
||
raise a TypeError if ``__reduce__()`` returns a tuple with length 6
|
||
instead of silently ignore the 6th item or produce incorrect result.
|
||
|
||
- gh-issue-90549: Fix a multiprocessing bug where a global named resource
|
||
(such as a semaphore) could leak when a child process is spawned (as
|
||
opposed to forked).
|
||
|
||
- gh-issue-79579: :mod:`sqlite3` now correctly detects DML queries with
|
||
leading comments. Patch by Erlend E. Aasland.
|
||
|
||
- gh-issue-93421: Update :data:`sqlite3.Cursor.rowcount` when a DML
|
||
statement has run to completion. This fixes the row count for SQL queries
|
||
like ``UPDATE ... RETURNING``. Patch by Erlend E. Aasland.
|
||
|
||
- gh-issue-91810: Suppress writing an XML declaration in open files in
|
||
``ElementTree.write()`` with ``encoding='unicode'`` and
|
||
``xml_declaration=None``.
|
||
|
||
- gh-issue-93353: Fix the :func:`importlib.resources.as_file` context
|
||
manager to remove the temporary file if destroyed late during Python
|
||
finalization: keep a local reference to the :func:`os.remove` function.
|
||
Patch by Victor Stinner.
|
||
|
||
- gh-issue-83658: Make :class:`multiprocessing.Pool` raise an exception if
|
||
``maxtasksperchild`` is not ``None`` or a positive int.
|
||
|
||
- gh-issue-74696: :func:`shutil.make_archive` no longer temporarily changes
|
||
the current working directory during creation of standard ``.zip`` or tar
|
||
archives.
|
||
|
||
- gh-issue-91577: Move imports in :class:`~multiprocessing.SharedMemory`
|
||
methods to module level so that they can be executed late in python
|
||
finalization.
|
||
|
||
- bpo-47231: Fixed an issue with inconsistent trailing slashes in tarfile
|
||
longname directories.
|
||
|
||
- bpo-46755: In :class:`QueueHandler`, clear ``stack_info`` from
|
||
:class:`LogRecord` to prevent stack trace from being written twice.
|
||
|
||
- bpo-46053: Fix OSS audio support on NetBSD.
|
||
|
||
- bpo-46197: Fix :mod:`ensurepip` environment isolation for subprocess
|
||
running ``pip``.
|
||
|
||
- bpo-45924: Fix :mod:`asyncio` incorrect traceback when future's exception
|
||
is raised multiple times. Patch by Kumar Aditya.
|
||
|
||
- bpo-34828: :meth:`sqlite3.Connection.iterdump` now handles databases that
|
||
use ``AUTOINCREMENT`` in one or more tables.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- gh-issue-94321: Document the :pep:`246` style protocol type
|
||
:class:`sqlite3.PrepareProtocol`.
|
||
|
||
- gh-issue-86128: Document a limitation in ThreadPoolExecutor where its exit
|
||
handler is executed before any handlers in atexit.
|
||
|
||
- gh-issue-61162: Clarify :mod:`sqlite3` behavior when
|
||
:ref:`sqlite3-connection-context-manager`.
|
||
|
||
- gh-issue-87260: Align :mod:`sqlite3` argument specs with the actual
|
||
implementation.
|
||
|
||
- gh-issue-86986: The minimum Sphinx version required to build the
|
||
documentation is now 3.2.
|
||
|
||
- gh-issue-88831: Augmented documentation of asyncio.create_task().
|
||
Clarified the need to keep strong references to tasks and added a code
|
||
snippet detailing how to do this.
|
||
|
||
- bpo-47161: Document that :class:`pathlib.PurePath` does not collapse
|
||
initial double slashes because they denote UNC paths.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- gh-issue-95280: Fix problem with ``test_ssl`` ``test_get_ciphers`` on
|
||
systems that require perfect forward secrecy (PFS) ciphers.
|
||
|
||
- gh-issue-95212: Make multiprocessing test case
|
||
``test_shared_memory_recreate`` parallel-safe.
|
||
|
||
- gh-issue-91330: Added more tests for :mod:`dataclasses` to cover behavior
|
||
with data descriptor-based fields.
|
||
|
||
- gh-issue-94208: ``test_ssl`` is now checking for supported TLS version and
|
||
protocols in more tests.
|
||
|
||
- gh-issue-93951: In test_bdb.StateTestCase.test_skip, avoid including
|
||
auxiliary importers.
|
||
|
||
- gh-issue-93957: Provide nicer error reporting from subprocesses in
|
||
test_venv.EnsurePipTest.test_with_pip.
|
||
|
||
- gh-issue-57539: Increase calendar test coverage for
|
||
:meth:`calendar.LocaleTextCalendar.formatweekday`.
|
||
|
||
- gh-issue-92886: Fixing tests that fail when running with optimizations
|
||
(``-O``) in ``test_zipimport.py``
|
||
|
||
- bpo-47016: Create a GitHub Actions workflow for verifying bundled pip and
|
||
setuptools. Patch by Illia Volochii and Adam Turner.
|
||
|
||
Build
|
||
-----
|
||
|
||
- gh-issue-94841: Fix the possible performance regression of
|
||
:c:func:`PyObject_Free` compiled with MSVC version 1932.
|
||
|
||
- bpo-45816: Python now supports building with Visual Studio 2022 (MSVC
|
||
v143, VS Version 17.0). Patch by Jeremiah Vivian.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- gh-issue-90844: Allow virtual environments to correctly launch when they
|
||
have spaces in the path.
|
||
|
||
- gh-issue-92841: :mod:`asyncio` no longer throws ``RuntimeError: Event loop
|
||
is closed`` on interpreter exit after asynchronous socket activity. Patch
|
||
by Oleg Iarygin.
|
||
|
||
- bpo-42658: Support native Windows case-insensitive path comparisons by
|
||
using ``LCMapStringEx`` instead of :func:`str.lower` in
|
||
:func:`ntpath.normcase`. Add ``LCMapStringEx`` to the :mod:`_winapi`
|
||
module.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- gh-issue-95511: Fix the Shell context menu copy-with-prompts bug of
|
||
copying an extra line when one selects whole lines.
|
||
|
||
- gh-issue-95471: In the Edit menu, move ``Select All`` and add a new
|
||
separator.
|
||
|
||
- gh-issue-95411: Enable using IDLE's module browser with .pyw files.
|
||
|
||
- gh-issue-89610: Add .pyi as a recognized extension for IDLE on macOS.
|
||
This allows opening stub files by double clicking on them in the Finder.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- gh-issue-94538: Fix Argument Clinic output to custom file destinations.
|
||
Patch by Erlend E. Aasland.
|
||
|
||
- gh-issue-94430: Allow parameters named ``module`` and ``self`` with custom
|
||
C names in Argument Clinic. Patch by Erlend E. Aasland
|
||
|
||
C API
|
||
-----
|
||
|
||
- gh-issue-94930: Fix ``SystemError`` raised when
|
||
:c:func:`PyArg_ParseTupleAndKeywords` is used with ``#`` in ``(...)`` but
|
||
without ``PY_SSIZE_T_CLEAN`` defined.
|
||
|
||
- gh-issue-94864: Fix ``PyArg_Parse*`` with deprecated format units "u" and
|
||
"Z". It returned 1 (success) when warnings are turned into exceptions.
|
||
|
||
|
||
What's New in Python 3.10.5 final?
|
||
==================================
|
||
|
||
*Release date: 2022-06-06*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- gh-issue-93418: Fixed an assert where an f-string has an equal sign '='
|
||
following an expression, but there's no trailing brace. For example,
|
||
f"{i=".
|
||
|
||
- gh-issue-91924: Fix ``__ltrace__`` debug feature if the stdout encoding is
|
||
not UTF-8. Patch by Victor Stinner.
|
||
|
||
- gh-issue-93061: Backward jumps after ``async for`` loops are no longer
|
||
given dubious line numbers.
|
||
|
||
- gh-issue-93065: Fix contextvars HAMT implementation to handle iteration
|
||
over deep trees.
|
||
|
||
The bug was discovered and fixed by Eli Libman. See
|
||
`MagicStack/immutables#84
|
||
<https://github.com/MagicStack/immutables/issues/84>`_ for more details.
|
||
|
||
- gh-issue-92311: Fixed a bug where setting ``frame.f_lineno`` to jump over
|
||
a list comprehension could misbehave or crash.
|
||
|
||
- gh-issue-92112: Fix crash triggered by an evil custom ``mro()`` on a
|
||
metaclass.
|
||
|
||
- gh-issue-92036: Fix a crash in subinterpreters related to the garbage
|
||
collector. When a subinterpreter is deleted, untrack all objects tracked
|
||
by its GC. To prevent a crash in deallocator functions expecting objects
|
||
to be tracked by the GC, leak a strong reference to these objects on
|
||
purpose, so they are never deleted and their deallocator functions are not
|
||
called. Patch by Victor Stinner.
|
||
|
||
- gh-issue-91421: Fix a potential integer overflow in _Py_DecodeUTF8Ex.
|
||
|
||
- bpo-47212: Raise :exc:`IndentationError` instead of :exc:`SyntaxError` for
|
||
a bare ``except`` with no following indent. Improve :exc:`SyntaxError`
|
||
locations for an un-parenthesized generator used as arguments. Patch by
|
||
Matthieu Dartiailh.
|
||
|
||
- bpo-47182: Fix a crash when using a named unicode character like
|
||
``"\N{digit nine}"`` after the main interpreter has been initialized a
|
||
second time.
|
||
|
||
- bpo-46775: Some Windows system error codes(>= 10000) are now mapped into
|
||
the correct errno and may now raise a subclass of :exc:`OSError`. Patch by
|
||
Dong-hee Na.
|
||
|
||
- bpo-47117: Fix a crash if we fail to decode characters in interactive mode
|
||
if the tokenizer buffers are uninitialized. Patch by Pablo Galindo.
|
||
|
||
- bpo-39829: Removed the ``__len__()`` call when initializing a list and
|
||
moved initializing to ``list_extend``. Patch by Jeremiah Pascual.
|
||
|
||
- bpo-46962: Classes and functions that unconditionally declared their
|
||
docstrings ignoring the `--without-doc-strings` compilation flag no longer
|
||
do so.
|
||
|
||
The classes affected are :class:`ctypes.UnionType`,
|
||
:class:`pickle.PickleBuffer`, :class:`testcapi.RecursingInfinitelyError`,
|
||
and :class:`types.GenericAlias`.
|
||
|
||
The functions affected are 24 methods in :mod:`ctypes`.
|
||
|
||
Patch by Oleg Iarygin.
|
||
|
||
- bpo-36819: Fix crashes in built-in encoders with error handlers that
|
||
return position less or equal than the starting position of non-encodable
|
||
characters.
|
||
|
||
Library
|
||
-------
|
||
|
||
- gh-issue-93156: Accessing the :attr:`pathlib.PurePath.parents` sequence of
|
||
an absolute path using negative index values produced incorrect results.
|
||
|
||
- gh-issue-89973: Fix :exc:`re.error` raised in :mod:`fnmatch` if the
|
||
pattern contains a character range with upper bound lower than lower bound
|
||
(e.g. ``[c-a]``). Now such ranges are interpreted as empty ranges.
|
||
|
||
- gh-issue-93010: In a very special case, the email package tried to append
|
||
the nonexistent ``InvalidHeaderError`` to the defect list. It should have
|
||
been ``InvalidHeaderDefect``.
|
||
|
||
- gh-issue-92839: Fixed crash resulting from calling bisect.insort() or
|
||
bisect.insort_left() with the key argument not equal to None.
|
||
|
||
- gh-issue-91581: :meth:`~datetime.datetime.utcfromtimestamp` no longer
|
||
attempts to resolve ``fold`` in the pure Python implementation, since the
|
||
fold is never 1 in UTC. In addition to being slightly faster in the common
|
||
case, this also prevents some errors when the timestamp is close to
|
||
:attr:`datetime.min <datetime.datetime.min>`. Patch by Paul Ganssle.
|
||
|
||
- gh-issue-92530: Fix an issue that occurred after interrupting
|
||
:func:`threading.Condition.notify`.
|
||
|
||
- gh-issue-92049: Forbid pickling constants ``re._constants.SUCCESS`` etc.
|
||
Previously, pickling did not fail, but the result could not be unpickled.
|
||
|
||
- bpo-47029: Always close the read end of the pipe used by
|
||
:class:`multiprocessing.Queue` *after* the last write of buffered data to
|
||
the write end of the pipe to avoid :exc:`BrokenPipeError` at garbage
|
||
collection and at :meth:`multiprocessing.Queue.close` calls. Patch by Géry
|
||
Ogam.
|
||
|
||
- gh-issue-91401: Provide a fail-safe way to disable :mod:`subprocess` use
|
||
of ``vfork()`` via a private ``subprocess._USE_VFORK`` attribute. While
|
||
there is currently no known need for this, if you find a need please only
|
||
set it to ``False``. File a CPython issue as to why you needed it and link
|
||
to that from a comment in your code. This attribute is documented as a
|
||
footnote in 3.11.
|
||
|
||
- gh-issue-91910: Add missing f prefix to f-strings in error messages from
|
||
the :mod:`multiprocessing` and :mod:`asyncio` modules.
|
||
|
||
- gh-issue-91810: :class:`~xml.etree.ElementTree.ElementTree` method
|
||
:meth:`~xml.etree.ElementTree.ElementTree.write` and function
|
||
:func:`~xml.etree.ElementTree.tostring` now use the text file's encoding
|
||
("UTF-8" if not available) instead of locale encoding in XML declaration
|
||
when ``encoding="unicode"`` is specified.
|
||
|
||
- gh-issue-91832: Add ``required`` attribute to :class:`argparse.Action`
|
||
repr output.
|
||
|
||
- gh-issue-91734: Fix OSS audio support on Solaris.
|
||
|
||
- gh-issue-91700: Compilation of regular expression containing a conditional
|
||
expression ``(?(group)...)`` now raises an appropriate :exc:`re.error` if
|
||
the group number refers to not defined group. Previously an internal
|
||
RuntimeError was raised.
|
||
|
||
- gh-issue-91676: Fix :class:`unittest.IsolatedAsyncioTestCase` to shutdown
|
||
the per test event loop executor before returning from its ``run`` method
|
||
so that a not yet stopped or garbage collected executor state does not
|
||
persist beyond the test.
|
||
|
||
- gh-issue-90568: Parsing ``\N`` escapes of Unicode Named Character
|
||
Sequences in a :mod:`regular expression <re>` raises now :exc:`re.error`
|
||
instead of ``TypeError``.
|
||
|
||
- gh-issue-91595: Fix the comparison of character and integer inside
|
||
:func:`Tools.gdb.libpython.write_repr`. Patch by Yu Liu.
|
||
|
||
- gh-issue-90622: Worker processes for
|
||
:class:`concurrent.futures.ProcessPoolExecutor` are no longer spawned on
|
||
demand (a feature added in 3.9) when the multiprocessing context start
|
||
method is ``"fork"`` as that can lead to deadlocks in the child processes
|
||
due to a fork happening while threads are running.
|
||
|
||
- gh-issue-91575: Update case-insensitive matching in the :mod:`re` module
|
||
to the latest Unicode version.
|
||
|
||
- gh-issue-91581: Remove an unhandled error case in the C implementation of
|
||
calls to :meth:`datetime.fromtimestamp <datetime.datetime.fromtimestamp>`
|
||
with no time zone (i.e. getting a local time from an epoch timestamp).
|
||
This should have no user-facing effect other than giving a possibly more
|
||
accurate error message when called with timestamps that fall on
|
||
10000-01-01 in the local time. Patch by Paul Ganssle.
|
||
|
||
- bpo-47260: Fix ``os.closerange()`` potentially being a no-op in a Linux
|
||
seccomp sandbox.
|
||
|
||
- bpo-39064: :class:`zipfile.ZipFile` now raises :exc:`zipfile.BadZipFile`
|
||
instead of ``ValueError`` when reading a corrupt zip file in which the
|
||
central directory offset is negative.
|
||
|
||
- bpo-47151: When subprocess tries to use vfork, it now falls back to fork
|
||
if vfork returns an error. This allows use in situations where vfork isn't
|
||
allowed by the OS kernel.
|
||
|
||
- bpo-27929: Fix :meth:`asyncio.loop.sock_connect` to only resolve names for
|
||
:const:`socket.AF_INET` or :const:`socket.AF_INET6` families. Resolution
|
||
may not make sense for other families, like :const:`socket.AF_BLUETOOTH`
|
||
and :const:`socket.AF_UNIX`.
|
||
|
||
- bpo-43323: Fix errors in the :mod:`email` module if the charset itself
|
||
contains undecodable/unencodable characters.
|
||
|
||
- bpo-47101: :const:`hashlib.algorithms_available` now lists only algorithms
|
||
that are provided by activated crypto providers on OpenSSL 3.0. Legacy
|
||
algorithms are not listed unless the legacy provider has been loaded into
|
||
the default OSSL context.
|
||
|
||
- bpo-46787: Fix :class:`concurrent.futures.ProcessPoolExecutor` exception
|
||
memory leak
|
||
|
||
- bpo-45393: Fix the formatting for ``await x`` and ``not x`` in the
|
||
operator precedence table when using the :func:`help` system.
|
||
|
||
- bpo-46415: Fix ipaddress.ip_{address,interface,network} raising TypeError
|
||
instead of ValueError if given invalid tuple as address parameter.
|
||
|
||
- bpo-28249: Set :attr:`doctest.DocTest.lineno` to ``None`` when object does
|
||
not have :attr:`__doc__`.
|
||
|
||
- bpo-45138: Fix a regression in the :mod:`sqlite3` trace callback where
|
||
bound parameters were not expanded in the passed statement string. The
|
||
regression was introduced in Python 3.10 by :issue:`40318`. Patch by
|
||
Erlend E. Aasland.
|
||
|
||
- bpo-44493: Add missing terminated NUL in sockaddr_un's length
|
||
|
||
This was potentially observable when using non-abstract AF_UNIX datagram
|
||
sockets to processes written in another programming language.
|
||
|
||
- bpo-42627: Fix incorrect parsing of Windows registry proxy settings
|
||
|
||
- bpo-36073: Raise :exc:`~sqlite3.ProgrammingError` instead of segfaulting
|
||
on recursive usage of cursors in :mod:`sqlite3` converters. Patch by
|
||
Sergey Fedoseev.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- gh-issue-86438: Clarify that :option:`-W` and :envvar:`PYTHONWARNINGS` are
|
||
matched literally and case-insensitively, rather than as regular
|
||
expressions, in :mod:`warnings`.
|
||
|
||
- gh-issue-92240: Added release dates for "What's New in Python 3.X" for
|
||
3.0, 3.1, 3.2, 3.8 and 3.10
|
||
|
||
- gh-issue-91888: Add a new ``gh`` role to the documentation to link to
|
||
GitHub issues.
|
||
|
||
- gh-issue-91783: Document security issues concerning the use of the
|
||
function :meth:`shutil.unpack_archive`
|
||
|
||
- gh-issue-91547: Remove "Undocumented modules" page.
|
||
|
||
- bpo-44347: Clarify the meaning of *dirs_exist_ok*, a kwarg of
|
||
:func:`shutil.copytree`.
|
||
|
||
- bpo-38668: Update the introduction to documentation for :mod:`os.path` to
|
||
remove warnings that became irrelevant after the implementations of
|
||
:pep:`383` and :pep:`529`.
|
||
|
||
- bpo-47138: Pin Jinja to a version compatible with Sphinx version 3.2.1.
|
||
|
||
- bpo-46962: All docstrings in code snippets are now wrapped into
|
||
:func:`PyDoc_STR` to follow the guideline of `PEP 7's Documentation
|
||
Strings paragraph
|
||
<https://www.python.org/dev/peps/pep-0007/#documentation-strings>`_. Patch
|
||
by Oleg Iarygin.
|
||
|
||
- bpo-26792: Improve the docstrings of :func:`runpy.run_module` and
|
||
:func:`runpy.run_path`. Original patch by Andrew Brezovsky.
|
||
|
||
- bpo-40838: Document that :func:`inspect.getdoc`,
|
||
:func:`inspect.getmodule`, and :func:`inspect.getsourcefile` might return
|
||
``None``.
|
||
|
||
- bpo-45790: Adjust inaccurate phrasing in
|
||
:doc:`../extending/newtypes_tutorial` about the ``ob_base`` field and the
|
||
macros used to access its contents.
|
||
|
||
- bpo-42340: Document that in some circumstances :exc:`KeyboardInterrupt`
|
||
may cause the code to enter an inconsistent state. Provided a sample
|
||
workaround to avoid it if needed.
|
||
|
||
- bpo-41233: Link the errnos referenced in ``Doc/library/exceptions.rst`` to
|
||
their respective section in ``Doc/library/errno.rst``, and vice versa.
|
||
Previously this was only done for EINTR and InterruptedError. Patch by Yan
|
||
"yyyyyyyan" Orestes.
|
||
|
||
- bpo-38056: Overhaul the :ref:`error-handlers` documentation in
|
||
:mod:`codecs`.
|
||
|
||
- bpo-13553: Document tkinter.Tk args.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- gh-issue-92886: Fixing tests that fail when running with optimizations
|
||
(``-O``) in ``test_imaplib.py``.
|
||
|
||
- gh-issue-92670: Skip
|
||
``test_shutil.TestCopy.test_copyfile_nonexistent_dir`` test on AIX as the
|
||
test uses a trailing slash to force the OS consider the path as a
|
||
directory, but on AIX the trailing slash has no effect and is considered
|
||
as a file.
|
||
|
||
- gh-issue-91904: Fix initialization of
|
||
:envvar:`PYTHONREGRTEST_UNICODE_GUARD` which prevented running regression
|
||
tests on non-UTF-8 locale.
|
||
|
||
- gh-issue-91607: Fix ``test_concurrent_futures`` to test the correct
|
||
multiprocessing start method context in several cases where the test logic
|
||
mixed this up.
|
||
|
||
- bpo-47205: Skip test for :func:`~os.sched_getaffinity` and
|
||
:func:`~os.sched_setaffinity` error case on FreeBSD.
|
||
|
||
- bpo-47104: Rewrite :func:`asyncio.to_thread` tests to use
|
||
:class:`unittest.IsolatedAsyncioTestCase`.
|
||
|
||
- bpo-29890: Add tests for :class:`ipaddress.IPv4Interface` and
|
||
:class:`ipaddress.IPv6Interface` construction with tuple arguments.
|
||
Original patch and tests by louisom.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-47103: Windows ``PGInstrument`` builds now copy a required DLL into
|
||
the output directory, making it easier to run the profile stage of a PGO
|
||
build.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- gh-issue-92984: Explicitly disable incremental linking for non-Debug
|
||
builds
|
||
|
||
- bpo-47194: Update ``zlib`` to v1.2.12 to resolve CVE-2018-25032.
|
||
|
||
- bpo-46785: Fix race condition between :func:`os.stat` and unlinking a file
|
||
on Windows, by using errors codes returned by ``FindFirstFileW()`` when
|
||
appropriate in ``win32_xstat_impl``.
|
||
|
||
- bpo-40859: Update Windows build to use xz-5.2.5
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- gh-issue-91583: Fix regression in the code generated by Argument Clinic
|
||
for functions with the ``defining_class`` parameter.
|
||
|
||
|
||
What's New in Python 3.10.4 final?
|
||
==================================
|
||
|
||
*Release date: 2022-03-23*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-46968: Check for the existence of the "sys/auxv.h" header in
|
||
:mod:`faulthandler` to avoid compilation problems in systems where this
|
||
header doesn't exist. Patch by Pablo Galindo
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-23691: Protect the :func:`re.finditer` iterator from re-entering.
|
||
|
||
- bpo-42369: Fix thread safety of :meth:`zipfile._SharedFile.tell` to avoid
|
||
a "zipfile.BadZipFile: Bad CRC-32 for file" exception when reading a
|
||
:class:`ZipFile` from multiple threads.
|
||
|
||
- bpo-38256: Fix :func:`binascii.crc32` when it is compiled to use zlib'c
|
||
crc32 to work properly on inputs 4+GiB in length instead of returning the
|
||
wrong result. The workaround prior to this was to always feed the function
|
||
data in increments smaller than 4GiB or to just call the zlib module
|
||
function.
|
||
|
||
- bpo-39394: A warning about inline flags not at the start of the regular
|
||
expression now contains the position of the flag.
|
||
|
||
- bpo-47061: Deprecate the various modules listed by :pep:`594`:
|
||
|
||
aifc, asynchat, asyncore, audioop, cgi, cgitb, chunk, crypt, imghdr,
|
||
msilib, nntplib, nis, ossaudiodev, pipes, smtpd, sndhdr, spwd, sunau,
|
||
telnetlib, uu, xdrlib
|
||
|
||
- bpo-2604: Fix bug where doctests using globals would fail when run
|
||
multiple times.
|
||
|
||
- bpo-45997: Fix :class:`asyncio.Semaphore` re-aquiring FIFO order.
|
||
|
||
- bpo-47022: The :mod:`asynchat`, :mod:`asyncore` and :mod:`smtpd` modules
|
||
have been deprecated since at least Python 3.6. Their documentation and
|
||
deprecation warnings and have now been updated to note they will removed
|
||
in Python 3.12 (:pep:`594`).
|
||
|
||
- bpo-46421: Fix a unittest issue where if the command was invoked as
|
||
``python -m unittest`` and the filename(s) began with a dot (.), a
|
||
``ValueError`` is returned.
|
||
|
||
- bpo-40296: Fix supporting generic aliases in :mod:`pydoc`.
|
||
|
||
|
||
What's New in Python 3.10.3 final?
|
||
==================================
|
||
|
||
*Release date: 2022-03-16*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-46940: Avoid overriding :exc:`AttributeError` metadata information for
|
||
nested attribute access calls. Patch by Pablo Galindo.
|
||
|
||
- bpo-46852: Rename the private undocumented ``float.__set_format__()``
|
||
method to ``float.__setformat__()`` to fix a typo introduced in Python
|
||
3.7. The method is only used by test_float. Patch by Victor Stinner.
|
||
|
||
- bpo-46794: Bump up the libexpat version into 2.4.6
|
||
|
||
- bpo-46820: Fix parsing a numeric literal immediately (without spaces)
|
||
followed by "not in" keywords, like in ``1not in x``. Now the parser only
|
||
emits a warning, not a syntax error.
|
||
|
||
- bpo-46762: Fix an assert failure in debug builds when a '<', '>', or '='
|
||
is the last character in an f-string that's missing a closing right brace.
|
||
|
||
- bpo-46724: Make sure that all backwards jumps use the ``JUMP_ABSOLUTE``
|
||
instruction, rather than ``JUMP_FORWARD`` with an argument of
|
||
``(2**32)+offset``.
|
||
|
||
- bpo-46732: Correct the docstring for the :meth:`__bool__` method. Patch by
|
||
Jelle Zijlstra.
|
||
|
||
- bpo-46707: Avoid potential exponential backtracking when producing some
|
||
syntax errors involving lots of brackets. Patch by Pablo Galindo.
|
||
|
||
- bpo-40479: Add a missing call to ``va_end()`` in
|
||
``Modules/_hashopenssl.c``.
|
||
|
||
- bpo-46615: When iterating over sets internally in ``setobject.c``, acquire
|
||
strong references to the resulting items from the set. This prevents
|
||
crashes in corner-cases of various set operations where the set gets
|
||
mutated.
|
||
|
||
- bpo-45773: Remove two invalid "peephole" optimizations from the bytecode
|
||
compiler.
|
||
|
||
- bpo-43721: Fix docstrings of :attr:`~property.getter`,
|
||
:attr:`~property.setter`, and :attr:`~property.deleter` to clarify that
|
||
they create a new copy of the property.
|
||
|
||
- bpo-46503: Fix an assert when parsing some invalid \N escape sequences in
|
||
f-strings.
|
||
|
||
- bpo-46417: Fix a race condition on setting a type ``__bases__`` attribute:
|
||
the internal function ``add_subclass()`` now gets the
|
||
``PyTypeObject.tp_subclasses`` member after calling
|
||
:c:func:`PyWeakref_NewRef` which can trigger a garbage collection which
|
||
can indirectly modify ``PyTypeObject.tp_subclasses``. Patch by Victor
|
||
Stinner.
|
||
|
||
- bpo-46383: Fix invalid signature of ``_zoneinfo``'s ``module_free``
|
||
function to resolve a crash on wasm32-emscripten platform.
|
||
|
||
- bpo-46070: :c:func:`Py_EndInterpreter` now explicitly untracks all objects
|
||
currently tracked by the GC. Previously, if an object was used later by
|
||
another interpreter, calling :c:func:`PyObject_GC_UnTrack` on the object
|
||
crashed if the previous or the next object of the :c:type:`PyGC_Head`
|
||
structure became a dangling pointer. Patch by Victor Stinner.
|
||
|
||
- bpo-46339: Fix a crash in the parser when retrieving the error text for
|
||
multi-line f-strings expressions that do not start in the first line of
|
||
the string. Patch by Pablo Galindo
|
||
|
||
- bpo-46240: Correct the error message for unclosed parentheses when the
|
||
tokenizer doesn't reach the end of the source when the error is reported.
|
||
Patch by Pablo Galindo
|
||
|
||
- bpo-46091: Correctly calculate indentation levels for lines with
|
||
whitespace character that are ended by line continuation characters. Patch
|
||
by Pablo Galindo
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-43253: Fix a crash when closing transports where the underlying socket
|
||
handle is already invalid on the Proactor event loop.
|
||
|
||
- bpo-47004: Apply bugfixes from importlib_metadata 4.11.3, including bugfix
|
||
for EntryPoint.extras, which was returning match objects and not the
|
||
extras strings.
|
||
|
||
- bpo-46985: Upgrade pip wheel bundled with ensurepip (pip 22.0.4)
|
||
|
||
- bpo-46968: :mod:`faulthandler`: On Linux 5.14 and newer, dynamically
|
||
determine size of signal handler stack size CPython allocates using
|
||
``getauxval(AT_MINSIGSTKSZ)``. This changes allows for Python extension's
|
||
request to Linux kernel to use AMX_TILE instruction set on Sapphire Rapids
|
||
Xeon processor to succeed, unblocking use of the ISA in frameworks.
|
||
|
||
- bpo-46955: Expose :class:`asyncio.base_events.Server` as
|
||
:class:`asyncio.Server`. Patch by Stefan Zabka.
|
||
|
||
- bpo-23325: The :mod:`signal` module no longer assumes that
|
||
:const:`~signal.SIG_IGN` and :const:`~signal.SIG_DFL` are small int
|
||
singletons.
|
||
|
||
- bpo-46932: Update bundled libexpat to 2.4.7
|
||
|
||
- bpo-25707: Fixed a file leak in :func:`xml.etree.ElementTree.iterparse`
|
||
when the iterator is not exhausted. Patch by Jacob Walls.
|
||
|
||
- bpo-44886: Inherit asyncio proactor datagram transport from
|
||
:class:`asyncio.DatagramTransport`.
|
||
|
||
- bpo-46827: Support UDP sockets in :meth:`asyncio.loop.sock_connect` for
|
||
selector-based event loops. Patch by Thomas Grainger.
|
||
|
||
- bpo-46811: Make test suite support Expat >=2.4.5
|
||
|
||
- bpo-46252: Raise :exc:`TypeError` if :class:`ssl.SSLSocket` is passed to
|
||
transport-based APIs.
|
||
|
||
- bpo-46784: Fix libexpat symbols collisions with user dynamically loaded or
|
||
statically linked libexpat in embedded Python.
|
||
|
||
- bpo-39327: :func:`shutil.rmtree` can now work with VirtualBox shared
|
||
folders when running from the guest operating-system.
|
||
|
||
- bpo-46756: Fix a bug in
|
||
:meth:`urllib.request.HTTPPasswordMgr.find_user_password` and
|
||
:meth:`urllib.request.HTTPPasswordMgrWithPriorAuth.is_authenticated` which
|
||
allowed to bypass authorization. For example, access to URI
|
||
``example.org/foobar`` was allowed if the user was authorized for URI
|
||
``example.org/foo``.
|
||
|
||
- bpo-46643: In :func:`typing.get_type_hints`, support evaluating
|
||
stringified ``ParamSpecArgs`` and ``ParamSpecKwargs`` annotations. Patch
|
||
by Gregory Beauregard.
|
||
|
||
- bpo-45863: When the :mod:`tarfile` module creates a pax format archive, it
|
||
will put an integer representation of timestamps in the ustar header (if
|
||
possible) for the benefit of older unarchivers, in addition to the
|
||
existing full-precision timestamps in the pax extended header.
|
||
|
||
- bpo-46676: Make :data:`typing.ParamSpec` args and kwargs equal to
|
||
themselves. Patch by Gregory Beauregard.
|
||
|
||
- bpo-46672: Fix ``NameError`` in :func:`asyncio.gather` when initial type
|
||
check fails.
|
||
|
||
- bpo-46655: In :func:`typing.get_type_hints`, support evaluating bare
|
||
stringified ``TypeAlias`` annotations. Patch by Gregory Beauregard.
|
||
|
||
- bpo-45948: Fixed a discrepancy in the C implementation of the
|
||
:mod:`xml.etree.ElementTree` module. Now, instantiating an
|
||
:class:`xml.etree.ElementTree.XMLParser` with a ``target=None`` keyword
|
||
provides a default :class:`xml.etree.ElementTree.TreeBuilder` target as
|
||
the Python implementation does.
|
||
|
||
- bpo-46521: Fix a bug in the :mod:`codeop` module that was incorrectly
|
||
identifying invalid code involving string quotes as valid code.
|
||
|
||
- bpo-46581: Brings :class:`ParamSpec` propagation for :class:`GenericAlias`
|
||
in line with :class:`Concatenate` (and others).
|
||
|
||
- bpo-46591: Make the IDLE doc URL on the About IDLE dialog clickable.
|
||
|
||
- bpo-46400: expat: Update libexpat from 2.4.1 to 2.4.4
|
||
|
||
- bpo-46487: Add the ``get_write_buffer_limits`` method to
|
||
:class:`asyncio.transports.WriteTransport` and to the SSL transport.
|
||
|
||
- bpo-45173: Note the configparser deprecations will be removed in Python
|
||
3.12.
|
||
|
||
- bpo-46539: In :func:`typing.get_type_hints`, support evaluating
|
||
stringified ``ClassVar`` and ``Final`` annotations inside ``Annotated``.
|
||
Patch by Gregory Beauregard.
|
||
|
||
- bpo-46491: Allow :data:`typing.Annotated` to wrap :data:`typing.Final` and
|
||
:data:`typing.ClassVar`. Patch by Gregory Beauregard.
|
||
|
||
- bpo-46436: Fix command-line option ``-d``/``--directory`` in module
|
||
:mod:`http.server` which is ignored when combined with command-line option
|
||
``--cgi``. Patch by Géry Ogam.
|
||
|
||
- bpo-41403: Make :meth:`mock.patch` raise a :exc:`TypeError` with a
|
||
relevant error message on invalid arg. Previously it allowed a cryptic
|
||
:exc:`AttributeError` to escape.
|
||
|
||
- bpo-46474: In ``importlib.metadata.EntryPoint.pattern``, avoid potential
|
||
REDoS by limiting ambiguity in consecutive whitespace.
|
||
|
||
- bpo-46469: :mod:`asyncio` generic classes now return
|
||
:class:`types.GenericAlias` in ``__class_getitem__`` instead of the same
|
||
class.
|
||
|
||
- bpo-46434: :mod:`pdb` now gracefully handles ``help`` when :attr:`__doc__`
|
||
is missing, for example when run with pregenerated optimized ``.pyc``
|
||
files.
|
||
|
||
- bpo-46333: The :meth:`__eq__` and :meth:`__hash__` methods of
|
||
:class:`typing.ForwardRef` now honor the ``module`` parameter of
|
||
:class:`typing.ForwardRef`. Forward references from different modules are
|
||
now differentiated.
|
||
|
||
- bpo-46246: Add missing ``__slots__`` to
|
||
``importlib.metadata.DeprecatedList``. Patch by Arie Bovenberg.
|
||
|
||
- bpo-46266: Improve day constants in :mod:`calendar`.
|
||
|
||
Now all constants (`MONDAY` ... `SUNDAY`) are documented, tested, and
|
||
added to ``__all__``.
|
||
|
||
- bpo-46232: The :mod:`ssl` module now handles certificates with bit strings
|
||
in DN correctly.
|
||
|
||
- bpo-43118: Fix a bug in :func:`inspect.signature` that was causing it to
|
||
fail on some subclasses of classes with a ``__text_signature__``
|
||
referencing module globals. Patch by Weipeng Hong.
|
||
|
||
- bpo-26552: Fixed case where failing :func:`asyncio.ensure_future` did not
|
||
close the coroutine. Patch by Kumar Aditya.
|
||
|
||
- bpo-21987: Fix an issue with :meth:`tarfile.TarFile.getmember` getting a
|
||
directory name with a trailing slash.
|
||
|
||
- bpo-20392: Fix inconsistency with uppercase file extensions in
|
||
:meth:`MimeTypes.guess_type`. Patch by Kumar Aditya.
|
||
|
||
- bpo-46080: Fix exception in argparse help text generation if a
|
||
:class:`argparse.BooleanOptionalAction` argument's default is
|
||
``argparse.SUPPRESS`` and it has ``help`` specified. Patch by Felix
|
||
Fontein.
|
||
|
||
- bpo-44439: Fix ``.write()`` method of a member file in ``ZipFile``, when
|
||
the input data is an object that supports the buffer protocol, the file
|
||
length may be wrong.
|
||
|
||
- bpo-45703: When a namespace package is imported before another module from
|
||
the same namespace is created/installed in a different :data:`sys.path`
|
||
location while the program is running, calling the
|
||
:func:`importlib.invalidate_caches` function will now also guarantee the
|
||
new module is noticed.
|
||
|
||
- bpo-24959: Fix bug where :mod:`unittest` sometimes drops frames from
|
||
tracebacks of exceptions raised in tests.
|
||
|
||
- bpo-44791: Fix substitution of :class:`~typing.ParamSpec` in
|
||
:data:`~typing.Concatenate` with different parameter expressions.
|
||
Substitution with a list of types returns now a tuple of types.
|
||
Substitution with ``Concatenate`` returns now a ``Concatenate`` with
|
||
concatenated lists of arguments.
|
||
|
||
- bpo-14156: argparse.FileType now supports an argument of '-' in binary
|
||
mode, returning the .buffer attribute of sys.stdin/sys.stdout as
|
||
appropriate. Modes including 'x' and 'a' are treated equivalently to 'w'
|
||
when argument is '-'. Patch contributed by Josh Rosenberg
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-46463: Fixes :file:`escape4chm.py` script used when building the CHM
|
||
documentation file
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-46913: Fix test_faulthandler.test_sigfpe() if Python is built with
|
||
undefined behavior sanitizer (UBSAN): disable UBSAN on the
|
||
faulthandler_sigfpe() function. Patch by Victor Stinner.
|
||
|
||
- bpo-46708: Prevent default asyncio event loop policy modification warning
|
||
after ``test_asyncio`` execution.
|
||
|
||
- bpo-46678: The function ``make_legacy_pyc`` in
|
||
``Lib/test/support/import_helper.py`` no longer fails when
|
||
``PYTHONPYCACHEPREFIX`` is set to a directory on a different device from
|
||
where tempfiles are stored.
|
||
|
||
- bpo-46616: Ensures ``test_importlib.test_windows`` cleans up registry keys
|
||
after completion.
|
||
|
||
- bpo-44359: test_ftplib now silently ignores socket errors to prevent
|
||
logging unhandled threading exceptions. Patch by Victor Stinner.
|
||
|
||
- bpo-46542: Fix a Python crash in test_lib2to3 when using Python built in
|
||
debug mode: limit the recursion limit. Patch by Victor Stinner.
|
||
|
||
- bpo-46576: test_peg_generator now disables compiler optimization when
|
||
testing compilation of its own C extensions to significantly speed up the
|
||
testing on non-debug builds of CPython.
|
||
|
||
- bpo-46542: Fix ``test_json`` tests checking for :exc:`RecursionError`:
|
||
modify these tests to use ``support.infinite_recursion()``. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-13886: Skip test_builtin PTY tests on non-ASCII characters if the
|
||
readline module is loaded. The readline module changes input() behavior,
|
||
but test_builtin is not intented to test the readline module. Patch by
|
||
Victor Stinner.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-47032: Ensure Windows install builds fail correctly with a non-zero
|
||
exit code when part of the build fails.
|
||
|
||
- bpo-47024: Update OpenSSL to 1.1.1n for macOS installers and all Windows
|
||
builds.
|
||
|
||
- bpo-38472: Fix GCC detection in setup.py when cross-compiling. The C
|
||
compiler is now run with LC_ALL=C. Previously, the detection failed with a
|
||
German locale.
|
||
|
||
- bpo-46513: :program:`configure` no longer uses ``AC_C_CHAR_UNSIGNED``
|
||
macro and ``pyconfig.h`` no longer defines reserved symbol
|
||
``__CHAR_UNSIGNED__``.
|
||
|
||
- bpo-45925: Update Windows installer to use SQLite 3.37.2.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-44549: Update bzip2 to 1.0.8 in Windows builds to mitigate
|
||
CVE-2016-3189 and CVE-2019-12900
|
||
|
||
- bpo-46948: Prevent CVE-2022-26488 by ensuring the Add to PATH option in
|
||
the Windows installer uses the correct path when being repaired.
|
||
|
||
- bpo-46638: Ensures registry virtualization is consistently disabled. For
|
||
3.10 and earlier, it remains enabled (some registry writes are protected),
|
||
while for 3.11 and later it is disabled (registry modifications affect all
|
||
applications).
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-45925: Update macOS installer to SQLite 3.37.2.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-46630: Make query dialogs on Windows start with a cursor in the entry
|
||
box.
|
||
|
||
- bpo-45296: Clarify close, quit, and exit in IDLE. In the File menu,
|
||
'Close' and 'Exit' are now 'Close Window' (the current one) and 'Exit' is
|
||
now 'Exit IDLE' (by closing all windows). In Shell, 'quit()' and 'exit()'
|
||
mean 'close Shell'. If there are no other windows, this also exits IDLE.
|
||
|
||
- bpo-45447: Apply IDLE syntax highlighting to `.pyi` files. Patch by Alex
|
||
Waygood and Terry Jan Reedy.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-46433: The internal function _PyType_GetModuleByDef now correctly
|
||
handles inheritance patterns involving static types.
|
||
|
||
- bpo-14916: Fixed bug in the tokenizer that prevented
|
||
``PyRun_InteractiveOne`` from parsing from the provided FD.
|
||
|
||
|
||
What's New in Python 3.10.2 final?
|
||
==================================
|
||
|
||
*Release date: 2022-01-13*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-46347: Fix memory leak in PyEval_EvalCodeEx.
|
||
|
||
- bpo-46289: ASDL declaration of ``FormattedValue`` has changed to reflect
|
||
``conversion`` field is not optional.
|
||
|
||
- bpo-46237: Fix the line number of tokenizer errors inside f-strings. Patch
|
||
by Pablo Galindo.
|
||
|
||
- bpo-46006: Fix a regression when a type method like ``__init__()`` is
|
||
modified in a subinterpreter. Fix a regression in
|
||
``_PyUnicode_EqualToASCIIId()`` and type ``update_slot()``. Revert the
|
||
change which made the Unicode dictionary of interned strings compatible
|
||
with subinterpreters: the internal interned dictionary is shared again by
|
||
all interpreters. Patch by Victor Stinner.
|
||
|
||
- bpo-46085: Fix iterator cache mechanism of :class:`OrderedDict`.
|
||
|
||
- bpo-46110: Add a maximum recursion check to the PEG parser to avoid stack
|
||
overflow. Patch by Pablo Galindo
|
||
|
||
- bpo-46054: Fix parser error when parsing non-utf8 characters in source
|
||
files. Patch by Pablo Galindo.
|
||
|
||
- bpo-46042: Improve the location of the caret in :exc:`SyntaxError`
|
||
exceptions emitted by the symbol table. Patch by Pablo Galindo.
|
||
|
||
- bpo-46025: Fix a crash in the :mod:`atexit` module involving functions
|
||
that unregister themselves before raising exceptions. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-46009: Restore behavior from 3.9 and earlier when sending non-None to
|
||
newly started generator. In 3.9 this did not affect the state of the
|
||
generator. In 3.10.0 and 3.10.1 ``gen_func().send(0)`` is equivalent to
|
||
``gen_func().throw(TypeError(...)`` which exhausts the generator. In
|
||
3.10.2 onward, the behavior has been reverted to that of 3.9.
|
||
|
||
- bpo-46000: Improve compatibility of the :mod:`curses` module with NetBSD
|
||
curses.
|
||
|
||
- bpo-46004: Fix the :exc:`SyntaxError` location for errors involving for
|
||
loops with invalid targets. Patch by Pablo Galindo
|
||
|
||
- bpo-42918: Fix bug where the built-in :func:`compile` function did not
|
||
always raise a :exc:`SyntaxError` when passed multiple statements in
|
||
'single' mode. Patch by Weipeng Hong.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-40479: Fix :mod:`hashlib` *usedforsecurity* option to work correctly
|
||
with OpenSSL 3.0.0 in FIPS mode.
|
||
|
||
- bpo-46070: Fix possible segfault when importing the :mod:`asyncio` module
|
||
from different sub-interpreters in parallel. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-46278: Reflect ``context`` argument in ``AbstractEventLoop.call_*()``
|
||
methods. Loop implementations already support it.
|
||
|
||
- bpo-46239: Improve error message when importing
|
||
:mod:`asyncio.windows_events` on non-Windows.
|
||
|
||
- bpo-20369: :func:`concurrent.futures.wait` no longer blocks forever when
|
||
given duplicate Futures. Patch by Kumar Aditya.
|
||
|
||
- bpo-46105: Honor spec when generating requirement specs with urls and
|
||
extras (importlib_metadata 4.8.3).
|
||
|
||
- bpo-26952: :mod:`argparse` raises :exc:`ValueError` with clear message
|
||
when trying to render usage for an empty mutually-exclusive group.
|
||
Previously it raised a cryptic :exc:`IndexError`.
|
||
|
||
- bpo-27718: Fix help for the :mod:`signal` module. Some functions (e.g.
|
||
``signal()`` and ``getsignal()``) were omitted.
|
||
|
||
- bpo-46032: The ``registry()`` method of :func:`functools.singledispatch`
|
||
functions checks now the first argument or the first parameter annotation
|
||
and raises a TypeError if it is not supported. Previously unsupported
|
||
"types" were ignored (e.g. ``typing.List[int]``) or caused an error at
|
||
calling time (e.g. ``list[int]``).
|
||
|
||
- bpo-46018: Ensure that :func:`math.expm1` does not raise on underflow.
|
||
|
||
- bpo-45755: :mod:`typing` generic aliases now reveal the class attributes
|
||
of the original generic class when passed to ``dir()``. This was the
|
||
behavior up to Python 3.6, but was changed in 3.7-3.9.
|
||
|
||
- bpo-13236: :class:`unittest.TextTestResult` and
|
||
:class:`unittest.TextTestRunner` flush now the output stream more often.
|
||
|
||
- bpo-42378: Fixes the issue with log file being overwritten when
|
||
:class:`logging.FileHandler` is used in :mod:`atexit` with *filemode* set
|
||
to ``'w'``. Note this will cause the message in *atexit* not being logged
|
||
if the log stream is already closed due to shutdown of logging.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-46120: State that ``|`` is preferred for readability over ``Union`` in
|
||
the :mod:`typing` docs.
|
||
|
||
- bpo-46040: Fix removal Python version for ``@asyncio.coroutine``, the
|
||
correct value is 3.11.
|
||
|
||
- bpo-19737: Update the documentation for the :func:`globals` function.
|
||
|
||
- bpo-45840: Improve cross-references in the documentation for the data
|
||
model.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-46205: Fix hang in runtest_mp due to race condition
|
||
|
||
- bpo-46263: Fix test_capi on FreeBSD 14-dev: instruct jemalloc to not fill
|
||
freed memory with junk byte.
|
||
|
||
- bpo-46150: Now ``fakename`` in
|
||
``test_pathlib.PosixPathTest.test_expanduser`` is checked to be
|
||
non-existent.
|
||
|
||
- bpo-46129: Rewrite ``asyncio.locks`` tests with
|
||
:class:`unittest.IsolatedAsyncioTestCase` usage.
|
||
|
||
- bpo-46114: Fix test case for OpenSSL 3.0.1 version. OpenSSL 3.0 uses
|
||
``0xMNN00PP0L``.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-46263: ``configure`` no longer sets ``MULTIARCH`` on FreeBSD
|
||
platforms.
|
||
|
||
- bpo-46106: Updated OpenSSL to 1.1.1m in Windows builds, macOS installer
|
||
builds, and CI. Patch by Kumar Aditya.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-40477: The Python Launcher app for macOS now properly launches scripts
|
||
and, if necessary, the Terminal app when running on recent macOS releases.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-46236: Fix a bug in :c:func:`PyFunction_GetAnnotations` that caused it
|
||
to return a ``tuple`` instead of a ``dict``.
|
||
|
||
|
||
What's New in Python 3.10.1 final?
|
||
==================================
|
||
|
||
*Release date: 2021-12-06*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-42268: Fail the configure step if the selected compiler doesn't
|
||
support memory sanitizer. Patch by Pablo Galindo
|
||
|
||
- bpo-45727: Refine the custom syntax error that suggests that a comma may
|
||
be missing to trigger only when the expressions are detected between
|
||
parentheses or brackets. Patch by Pablo Galindo
|
||
|
||
- bpo-45614: Fix :mod:`traceback` display for exceptions with invalid module
|
||
name.
|
||
|
||
- bpo-45848: Allow the parser to obtain error lines directly from encoded
|
||
files. Patch by Pablo Galindo
|
||
|
||
- bpo-45826: Fixed a crash when calling ``.with_traceback(None)`` on
|
||
``NameError``. This occurs internally in
|
||
``unittest.TestCase.assertRaises()``.
|
||
|
||
- bpo-45822: Fixed a bug in the parser that was causing it to not respect
|
||
:pep:`263` coding cookies when no flags are provided. Patch by Pablo
|
||
Galindo
|
||
|
||
- bpo-45820: Fix a segfault when the parser fails without reading any input.
|
||
Patch by Pablo Galindo
|
||
|
||
- bpo-42540: Fix crash when :func:`os.fork` is called with an active
|
||
non-default memory allocator.
|
||
|
||
- bpo-45738: Fix computation of error location for invalid continuation
|
||
characters in the parser. Patch by Pablo Galindo.
|
||
|
||
- bpo-45773: Fix a compiler hang when attempting to optimize certain jump
|
||
patterns.
|
||
|
||
- bpo-45716: Improve the :exc:`SyntaxError` message when using ``True``,
|
||
``None`` or ``False`` as keywords in a function call. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-45688: :data:`sys.stdlib_module_names` now contains the macOS-specific
|
||
module :mod:`_scproxy`.
|
||
|
||
- bpo-30570: Fixed a crash in ``issubclass()`` from infinite recursion when
|
||
searching pathological ``__bases__`` tuples.
|
||
|
||
- bpo-45521: Fix a bug in the obmalloc radix tree code. On 64-bit machines,
|
||
the bug causes the tree to hold 46-bits of virtual addresses, rather than
|
||
the intended 48-bits.
|
||
|
||
- bpo-45494: Fix parser crash when reporting errors involving invalid
|
||
continuation characters. Patch by Pablo Galindo.
|
||
|
||
- bpo-45408: Fix a crash in the parser when reporting tokenizer errors that
|
||
occur at the same time unclosed parentheses are detected. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-45385: Fix reference leak from descr_check. Patch by Dong-hee Na.
|
||
|
||
- bpo-45167: Fix deepcopying of :class:`types.GenericAlias` objects.
|
||
|
||
- bpo-44219: Release the GIL while performing ``isatty`` system calls on
|
||
arbitrary file descriptors. In particular, this affects :func:`os.isatty`,
|
||
:func:`os.device_encoding` and :class:`io.TextIOWrapper`. By extension,
|
||
:func:`io.open` in text mode is also affected. This change solves a
|
||
deadlock in :func:`os.isatty`. Patch by Vincent Michel in :issue:`44219`.
|
||
|
||
- bpo-44959: Added fallback to extension modules with '.sl' suffix on HP-UX
|
||
|
||
- bpo-44050: Extensions that indicate they use global state (by setting
|
||
``m_size`` to -1) can again be used in multiple interpreters. This reverts
|
||
to behavior of Python 3.8.
|
||
|
||
- bpo-45121: Fix issue where ``Protocol.__init__`` raises ``RecursionError``
|
||
when it's called directly or via ``super()``. Patch provided by Yurii
|
||
Karabas.
|
||
|
||
- bpo-45083: When the interpreter renders an exception, its name now has a
|
||
complete qualname. Previously only the class name was concatenated to the
|
||
module name, which sometimes resulted in an incorrect full name being
|
||
displayed.
|
||
|
||
(This issue impacted only the C code exception rendering, the
|
||
:mod:`traceback` module was using qualname already).
|
||
|
||
- bpo-45056: Compiler now removes trailing unused constants from co_consts.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-27946: Fix possible crash when getting an attribute of
|
||
class:`xml.etree.ElementTree.Element` simultaneously with replacing the
|
||
``attrib`` dict.
|
||
|
||
- bpo-37658: Fix issue when on certain conditions ``asyncio.wait_for()`` may
|
||
allow a coroutine to complete successfully, but fail to return the result,
|
||
potentially causing memory leaks or other issues.
|
||
|
||
- bpo-44649: Handle dataclass(slots=True) with a field that has default a
|
||
default value, but for which init=False.
|
||
|
||
- bpo-45803: Added missing kw_only parameter to
|
||
dataclasses.make_dataclass().
|
||
|
||
- bpo-45831: :mod:`faulthandler` can now write ASCII-only strings (like
|
||
filenames and function names) with a single write() syscall when dumping a
|
||
traceback. It reduces the risk of getting an unreadable dump when two
|
||
threads or two processes dump a traceback to the same file (like stderr)
|
||
at the same time. Patch by Victor Stinner.
|
||
|
||
- bpo-41735: Fix thread lock in ``zlib.Decompress.flush()`` method before
|
||
``PyObject_GetBuffer``.
|
||
|
||
- bpo-45235: Reverted an argparse bugfix that caused regression in the
|
||
handling of default arguments for subparsers. This prevented leaf level
|
||
arguments from taking precedence over root level arguments.
|
||
|
||
- bpo-45765: In importlib.metadata, fix distribution discovery for an empty
|
||
path.
|
||
|
||
- bpo-45757: Fix bug where :mod:`dis` produced an incorrect oparg when
|
||
:opcode:`EXTENDED_ARG` is followed by an opcode that does not use its
|
||
argument.
|
||
|
||
- bpo-45644: In-place JSON file formatting using ``python3 -m json.tool
|
||
infile infile`` now works correctly, previously it left the file empty.
|
||
Patch by Chris Wesseling.
|
||
|
||
- bpo-45679: Fix caching of multi-value :data:`typing.Literal`.
|
||
``Literal[True, 2]`` is no longer equal to ``Literal[1, 2]``.
|
||
|
||
- bpo-45664: Fix :func:`types.resolve_bases` and :func:`types.new_class` for
|
||
:class:`types.GenericAlias` instance as a base.
|
||
|
||
- bpo-45663: Fix :func:`dataclasses.is_dataclass` for dataclasses which are
|
||
subclasses of :class:`types.GenericAlias`.
|
||
|
||
- bpo-45662: Fix the repr of :data:`dataclasses.InitVar` with a type alias
|
||
to the built-in class, e.g. ``InitVar[list[int]]``.
|
||
|
||
- bpo-45438: Fix typing.Signature string representation for generic builtin
|
||
types.
|
||
|
||
- bpo-45574: Fix warning about ``print_escape`` being unused.
|
||
|
||
- bpo-45581: :meth:`sqlite3.connect` now correctly raises :exc:`MemoryError`
|
||
if the underlying SQLite API signals memory error. Patch by Erlend E.
|
||
Aasland.
|
||
|
||
- bpo-45557: pprint.pprint() now handles underscore_numbers correctly.
|
||
Previously it was always setting it to False.
|
||
|
||
- bpo-45515: Add references to :mod:`zoneinfo` in the :mod:`datetime`
|
||
documentation, mostly replacing outdated references to ``dateutil.tz``.
|
||
Change by Paul Ganssle.
|
||
|
||
- bpo-45475: Reverted optimization of iterating :class:`gzip.GzipFile`,
|
||
:class:`bz2.BZ2File`, and :class:`lzma.LZMAFile` (see bpo-43787) because
|
||
it caused regression when user iterate them without having reference of
|
||
them. Patch by Inada Naoki.
|
||
|
||
- bpo-45428: Fix a regression in py_compile when reading filenames from
|
||
standard input.
|
||
|
||
- bpo-45467: Fix incremental decoder and stream reader in the
|
||
"raw-unicode-escape" codec. Previously they failed if the escape sequence
|
||
was split.
|
||
|
||
- bpo-45461: Fix incremental decoder and stream reader in the
|
||
"unicode-escape" codec. Previously they failed if the escape sequence was
|
||
split.
|
||
|
||
- bpo-45239: Fixed :func:`email.utils.parsedate_tz` crashing with
|
||
:exc:`UnboundLocalError` on certain invalid input instead of returning
|
||
``None``. Patch by Ben Hoyt.
|
||
|
||
- bpo-45249: Fix the behaviour of :func:`traceback.print_exc` when
|
||
displaying the caret when the ``end_offset`` in the exception is set to 0.
|
||
Patch by Pablo Galindo
|
||
|
||
- bpo-45416: Fix use of :class:`asyncio.Condition` with explicit
|
||
:class:`asyncio.Lock` objects, which was a regression due to removal of
|
||
explicit loop arguments. Patch by Joongi Kim.
|
||
|
||
- bpo-45419: Correct interfaces on DegenerateFiles.Path.
|
||
|
||
- bpo-44904: Fix bug in the :mod:`doctest` module that caused it to fail if
|
||
a docstring included an example with a ``classmethod`` ``property``. Patch
|
||
by Alex Waygood.
|
||
|
||
- bpo-45406: Make :func:`inspect.getmodule` catch ``FileNotFoundError``
|
||
raised by :'func:`inspect.getabsfile`, and return ``None`` to indicate
|
||
that the module could not be determined.
|
||
|
||
- bpo-45262: Prevent use-after-free in asyncio. Make sure the cached running
|
||
loop holder gets cleared on dealloc to prevent use-after-free in
|
||
get_running_loop
|
||
|
||
- bpo-45386: Make :mod:`xmlrpc.client` more robust to C runtimes where the
|
||
underlying C ``strftime`` function results in a ``ValueError`` when
|
||
testing for year formatting options.
|
||
|
||
- bpo-45371: Fix clang rpath issue in :mod:`distutils`. The UnixCCompiler
|
||
now uses correct clang option to add a runtime library directory (rpath)
|
||
to a shared library.
|
||
|
||
- bpo-20028: Improve error message of :class:`csv.Dialect` when
|
||
initializing. Patch by Vajrasky Kok and Dong-hee Na.
|
||
|
||
- bpo-45343: Update bundled pip to 21.2.4 and setuptools to 58.1.0
|
||
|
||
- bpo-45329: Fix freed memory access in :class:`pyexpat.xmlparser` when
|
||
building it with an installed expat library <= 2.2.0.
|
||
|
||
- bpo-41710: On Unix, if the ``sem_clockwait()`` function is available in
|
||
the C library (glibc 2.30 and newer), the :meth:`threading.Lock.acquire`
|
||
method now uses the monotonic clock (:data:`time.CLOCK_MONOTONIC`) for the
|
||
timeout, rather than using the system clock (:data:`time.CLOCK_REALTIME`),
|
||
to not be affected by system clock changes. Patch by Victor Stinner.
|
||
|
||
- bpo-45328: Fixed :class:`http.client.HTTPConnection` to work properly in
|
||
OSs that don't support the ``TCP_NODELAY`` socket option.
|
||
|
||
- bpo-1596321: Fix the :func:`threading._shutdown` function when the
|
||
:mod:`threading` module was imported first from a thread different than
|
||
the main thread: no longer log an error at Python exit.
|
||
|
||
- bpo-45274: Fix a race condition in the :meth:`Thread.join()
|
||
<threading.Thread.join>` method of the :mod:`threading` module. If the
|
||
function is interrupted by a signal and the signal handler raises an
|
||
exception, make sure that the thread remains in a consistent state to
|
||
prevent a deadlock. Patch by Victor Stinner.
|
||
|
||
- bpo-45238: Fix :meth:`unittest.IsolatedAsyncioTestCase.debug`: it runs now
|
||
asynchronous methods and callbacks.
|
||
|
||
- bpo-36674: :meth:`unittest.TestCase.debug` raises now a
|
||
:class:`unittest.SkipTest` if the class or the test method are decorated
|
||
with the skipping decorator.
|
||
|
||
- bpo-45235: Fix an issue where argparse would not preserve values in a
|
||
provided namespace when using a subparser with defaults.
|
||
|
||
- bpo-45183: Have zipimport.zipimporter.find_spec() not raise an exception
|
||
when the underlying zip file has been deleted and the internal cache has
|
||
been reset via invalidate_cache().
|
||
|
||
- bpo-45234: Fixed a regression in :func:`~shutil.copyfile`,
|
||
:func:`~shutil.copy`, :func:`~shutil.copy2` raising
|
||
:exc:`FileNotFoundError` when source is a directory, which should raise
|
||
:exc:`IsADirectoryError`
|
||
|
||
- bpo-45228: Fix stack buffer overflow in parsing J1939 network address.
|
||
|
||
- bpo-45192: Fix the ``tempfile._infer_return_type`` function so that the
|
||
``dir`` argument of the :mod:`tempfile` functions accepts an object
|
||
implementing the ``os.PathLike`` protocol.
|
||
|
||
Patch by Kyungmin Lee.
|
||
|
||
- bpo-42135: Fix typo: ``importlib.find_loader`` is really slated for
|
||
removal in Python 3.12 not 3.10, like the others in PR 25169.
|
||
|
||
Patch by Hugo van Kemenade.
|
||
|
||
- bpo-45160: When tracing a tkinter variable used by a ttk OptionMenu,
|
||
callbacks are no longer made twice.
|
||
|
||
- bpo-35474: Calling :func:`mimetypes.guess_all_extensions` with
|
||
``strict=False`` no longer affects the result of the following call with
|
||
``strict=True``. Also, mutating the returned list no longer affects the
|
||
global state.
|
||
|
||
- bpo-45166: :func:`typing.get_type_hints` now works with
|
||
:data:`~typing.Final` wrapped in :class:`~typing.ForwardRef`.
|
||
|
||
- bpo-20499: Improve the speed and accuracy of statistics.pvariance().
|
||
|
||
- bpo-24444: Fixed an error raised in :mod:`argparse` help display when help
|
||
for an option is set to 1+ blank spaces or when *choices* arg is an empty
|
||
container.
|
||
|
||
- bpo-45021: Fix a potential deadlock at shutdown of forked children when
|
||
using :mod:`concurrent.futures` module
|
||
|
||
- bpo-39039: tarfile.open raises :exc:`~tarfile.ReadError` when a zlib error
|
||
occurs during file extraction.
|
||
|
||
- bpo-44594: Fix an edge case of :class:`ExitStack` and
|
||
:class:`AsyncExitStack` exception chaining. They will now match ``with``
|
||
block behavior when ``__context__`` is explicitly set to ``None`` when the
|
||
exception is in flight.
|
||
|
||
- bpo-44295: Ensure deprecation warning from
|
||
:func:`assertDictContainsSubset` points at calling code - by Anthony
|
||
Sottile.
|
||
|
||
- bpo-43498: Avoid a possible *"RuntimeError: dictionary changed size during
|
||
iteration"* when adjusting the process count of
|
||
:class:`ProcessPoolExecutor`.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-45640: Properly marked-up grammar tokens in the documentation are now
|
||
clickable and take you to the definition of a given piece of grammar.
|
||
Patch by Arthur Milchior.
|
||
|
||
- bpo-45788: Link doc for sys.prefix to sysconfig doc on installation paths.
|
||
|
||
- bpo-45772: ``socket.socket`` documentation is corrected to a class from a
|
||
function.
|
||
|
||
- bpo-45392: Update the docstring of the :class:`type` built-in to remove a
|
||
redundant line and to mention keyword arguments for the constructor.
|
||
|
||
- bpo-45726: Improve documentation for :func:`functools.singledispatch` and
|
||
:class:`functools.singledispatchmethod`.
|
||
|
||
- bpo-45680: Amend the docs on ``GenericAlias`` objects to clarify that
|
||
non-container classes can also implement ``__class_getitem__``. Patch
|
||
contributed by Alex Waygood.
|
||
|
||
- bpo-45655: Add a new "relevant PEPs" section to the top of the
|
||
documentation for the ``typing`` module. Patch by Alex Waygood.
|
||
|
||
- bpo-45604: Add ``level`` argument to ``multiprocessing.log_to_stderr``
|
||
function docs.
|
||
|
||
- bpo-45250: Update the documentation to note that CPython does not
|
||
consistently require iterators to define ``__iter__``.
|
||
|
||
- bpo-45464: Mention in the documentation of :ref:`Built-in Exceptions
|
||
<bltin-exceptions>` that inheriting from multiple exception types in a
|
||
single subclass is not recommended due to possible memory layout
|
||
incompatibility.
|
||
|
||
- bpo-45449: Add note about :pep:`585` in :mod:`collections.abc`.
|
||
|
||
- bpo-45516: Add protocol description to the
|
||
:class:`importlib.abc.Traversable` documentation.
|
||
|
||
- bpo-20692: Add Programming FAQ entry explaining that int literal attribute
|
||
access requires either a space after or parentheses around the literal.
|
||
|
||
- bpo-45216: Remove extra documentation listing methods in ``difflib``. It
|
||
was rendering twice in pydoc and was outdated in some places.
|
||
|
||
- bpo-45024: :mod:`collections.abc` documentation has been expanded to
|
||
explicitly cover how instance and subclass checks work, with additional
|
||
doctest examples and an exhaustive list of ABCs which test membership
|
||
purely by presence of the right :term:`special method`\s. Patch by Raymond
|
||
Hettinger.
|
||
|
||
- bpo-25381: In the extending chapter of the extending doc, update a
|
||
paragraph about the global variables containing exception information.
|
||
|
||
- bpo-43905: Expanded :func:`~dataclasses.astuple` and
|
||
:func:`~dataclasses.asdict` docs, warning about deepcopy being applied and
|
||
providing a workaround.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-19460: Add new Test for
|
||
:class:`email.mime.nonmultipart.MIMENonMultipart`.
|
||
|
||
- bpo-45835: Fix race condition in test_queue tests with multiple "feeder"
|
||
threads.
|
||
|
||
- bpo-45678: Add tests for scenarios in which
|
||
:class:`functools.singledispatchmethod` is stacked on top of a method that
|
||
has already been wrapped by two other decorators. Patch by Alex Waygood.
|
||
|
||
- bpo-45578: Add tests for :func:`dis.distb`
|
||
|
||
- bpo-45678: Add tests to ensure that ``functools.singledispatchmethod``
|
||
correctly wraps the attributes of the target function.
|
||
|
||
- bpo-45577: Add subtests for all ``pickle`` protocols in ``test_zoneinfo``.
|
||
|
||
- bpo-45566: Fix ``test_frozen_pickle`` in ``test_dataclasses`` to check all
|
||
``pickle`` versions.
|
||
|
||
- bpo-43592: :mod:`test.libregrtest` now raises the soft resource limit for
|
||
the maximum number of file descriptors when the default is too low for our
|
||
test suite as was often the case on macOS.
|
||
|
||
- bpo-39679: Add more test cases for `@functools.singledispatchmethod` when
|
||
combined with `@classmethod` or `@staticmethod`.
|
||
|
||
- bpo-45400: Fix
|
||
test_name_error_suggestions_do_not_trigger_for_too_many_locals() of
|
||
test_exceptions if a directory name contains "a1" (like
|
||
"Python-3.11.0a1"): use a stricter regular expression. Patch by Victor
|
||
Stinner.
|
||
|
||
- bpo-40173: Fix :func:`test.support.import_helper.import_fresh_module`.
|
||
|
||
- bpo-45280: Add a test case for empty :class:`typing.NamedTuple`.
|
||
|
||
- bpo-45269: Cover case when invalid ``markers`` type is supplied to
|
||
``c_make_encoder``.
|
||
|
||
- bpo-45128: Fix ``test_multiprocessing_fork`` failure due to
|
||
``test_logging`` and ``sys.modules`` manipulation.
|
||
|
||
- bpo-45209: Fix ``UserWarning: resource_tracker`` warning in
|
||
``_test_multiprocessing._TestSharedMemory.test_shared_memory_cleaned_after_process_termination``
|
||
|
||
- bpo-45195: Fix test_readline.test_nonascii(): sometimes, the newline
|
||
character is not written at the end, so don't expect it in the output.
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-45156: Fixes infinite loop on :func:`unittest.mock.seal` of mocks
|
||
created by :func:`~unittest.create_autospec`.
|
||
|
||
- bpo-45125: Improves pickling tests and docs of ``SharedMemory`` and
|
||
``SharableList`` objects.
|
||
|
||
- bpo-44860: Update ``test_sysconfig.test_user_similar()`` for the
|
||
posix_user scheme: ``platlib`` doesn't use :data:`sys.platlibdir`. Patch
|
||
by Victor Stinner.
|
||
|
||
- bpo-25130: Add calls of :func:`gc.collect` in tests to support PyPy.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-44035: CI now verifies that autoconf files have been regenerated with
|
||
a current and unpatched autoconf package.
|
||
|
||
- bpo-33393: Update ``config.guess`` to 2021-06-03 and ``config.sub`` to
|
||
2021-08-14. ``Makefile`` now has an ``update-config`` target to make
|
||
updating more convenient.
|
||
|
||
- bpo-45866: ``make regen-all`` now produces the same output when run from a
|
||
directory other than the source tree: when building Python out of the
|
||
source tree. pegen now strips directory of the "generated by pygen from
|
||
<FILENAME>" header Patch by Victor Stinner.
|
||
|
||
- bpo-41498: Python now compiles on platforms without ``sigset_t``. Several
|
||
functions in :mod:`signal` are not available when ``sigset_t`` is missing.
|
||
|
||
Based on patch by Roman Yurchak for pyodide.
|
||
|
||
- bpo-45881: ``setup.py`` now uses ``CC`` from environment first to discover
|
||
multiarch and cross compile paths.
|
||
|
||
- bpo-43158: ``setup.py`` now uses values from configure script to build the
|
||
``_uuid`` extension module. Configure now detects util-linux's
|
||
``libuuid``, too.
|
||
|
||
- bpo-45571: ``Modules/Setup`` now use ``PY_CFLAGS_NODIST`` instead of
|
||
``PY_CFLAGS`` to compile shared modules.
|
||
|
||
- bpo-45561: Run smelly.py tool from $(srcdir).
|
||
|
||
- bpo-45532: Update :data:`sys.version` to use ``main`` as fallback
|
||
information. Patch by Jeong YunWon.
|
||
|
||
- bpo-45536: The ``configure`` script now checks whether OpenSSL headers and
|
||
libraries provide required APIs. Most common APIs are verified. The check
|
||
detects outdated or missing OpenSSL. Failures do not stop configure.
|
||
|
||
- bpo-45221: Fixed regression in handling of ``LDFLAGS`` and ``CPPFLAGS``
|
||
options where :meth:`argparse.parse_known_args` could interpret an option
|
||
as one of the built-in command line argument, for example ``-h`` for help.
|
||
|
||
- bpo-45405: Prevent ``internal configure error`` when running ``configure``
|
||
with recent versions of non-Apple clang. Patch by David Bohman.
|
||
|
||
- bpo-45220: Avoid building with the Windows 11 SDK previews automatically.
|
||
This may be overridden by setting the ``DefaultWindowsSDKVersion``
|
||
environment variable before building.
|
||
|
||
- bpo-45067: The ncurses function extended_color_content was introduced in
|
||
2017
|
||
|
||
(https://invisible-island.net/ncurses/NEWS.html#index-t20170401). The
|
||
|
||
ncurses-devel package in CentOS 7 had a older version ncurses resulted in
|
||
compilation error. For compiling ncurses with extended color support, we
|
||
verify the version of the ncurses library >= 20170401.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-45901: When installed through the Microsoft Store and set as the
|
||
default app for :file:`*.py` files, command line arguments will now be
|
||
passed to Python when invoking a script without explicitly launching
|
||
Python (that is, ``script.py args`` rather than ``python script.py
|
||
args``).
|
||
|
||
- bpo-45616: Fix Python Launcher's ability to distinguish between versions
|
||
3.1 and 3.10 when either one is explicitly requested. Previously, 3.1
|
||
would be used if 3.10 was requested but not installed, and 3.10 would be
|
||
used if 3.1 was requested but 3.10 was installed.
|
||
|
||
- bpo-45732: Updates bundled Tcl/Tk to 8.6.12.
|
||
|
||
- bpo-45720: Internal reference to :file:`shlwapi.dll` was dropped to help
|
||
improve startup time. This DLL will no longer be loaded at the start of
|
||
every Python process.
|
||
|
||
- bpo-43652: Update Tcl/Tk to 8.6.11, actually this time. The previous
|
||
update incorrectly included 8.6.10.
|
||
|
||
- bpo-45337: venv now warns when the created environment may need to be
|
||
accessed at a different path, due to redirections, links or junctions. It
|
||
also now correctly installs or upgrades components when the alternate path
|
||
is required.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-45732: Update python.org macOS installer to use Tcl/Tk 8.6.12.
|
||
|
||
- bpo-44828: Avoid tkinter file dialog failure on macOS 12 Monterey when
|
||
using the Tk 8.6.11 provided by python.org macOS installers. Patch by Marc
|
||
Culler of the Tk project.
|
||
|
||
- bpo-34602: When building CPython on macOS with ``./configure
|
||
--with-undefined-behavior-sanitizer --with-pydebug``, the stack size is
|
||
now quadrupled to allow for the entire test suite to pass.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-45495: Add context keywords 'case' and 'match' to completions list.
|
||
|
||
- bpo-45296: On Windows, change exit/quit message to suggest Ctrl-D, which
|
||
works, instead of <Ctrl-Z Return>, which does not work in IDLE.
|
||
|
||
- bpo-45193: Make completion boxes appear on Ubuntu again.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-44786: Fix a warning in regular expression in the c-analyzer script.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-39026: Fix Python.h to build C extensions with Xcode: remove a
|
||
relative include from ``Include/cpython/pystate.h``.
|
||
|
||
- bpo-45307: Restore the private C API function
|
||
:func:`_PyImport_FindExtensionObject`. It will be removed in Python 3.11.
|
||
|
||
- bpo-44687: :meth:`BufferedReader.peek` no longer raises :exc:`ValueError`
|
||
when the entire file has already been buffered.
|
||
|
||
- bpo-44751: Remove ``crypt.h`` include from the public ``Python.h`` header.
|
||
|
||
|
||
What's New in Python 3.10.0 final?
|
||
==================================
|
||
|
||
*Release date: 2021-10-04*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-45121: Fix issue where ``Protocol.__init__`` raises ``RecursionError``
|
||
when it's called directly or via ``super()``. Patch provided by Yurii
|
||
Karabas.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-45234: Fixed a regression in :func:`~shutil.copyfile`,
|
||
:func:`~shutil.copy`, :func:`~shutil.copy2` raising
|
||
:exc:`FileNotFoundError` when source is a directory, which should raise
|
||
:exc:`IsADirectoryError`
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-45216: Remove extra documentation listing methods in ``difflib``. It
|
||
was rendering twice in pydoc and was outdated in some places.
|
||
|
||
- bpo-45024: :mod:`collections.abc` documentation has been expanded to
|
||
explicitly cover how instance and subclass checks work, with additional
|
||
doctest examples and an exhaustive list of ABCs which test membership
|
||
purely by presence of the right :term:`special method`\s. Patch by Raymond
|
||
Hettinger.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-45128: Fix ``test_multiprocessing_fork`` failure due to
|
||
``test_logging`` and ``sys.modules`` manipulation.
|
||
|
||
- bpo-44860: Update ``test_sysconfig.test_user_similar()`` for the
|
||
posix_user scheme: ``platlib`` doesn't use :data:`sys.platlibdir`. Patch
|
||
by Victor Stinner.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-45067: The ncurses function extended_color_content was introduced in
|
||
2017
|
||
|
||
(https://invisible-island.net/ncurses/NEWS.html#index-t20170401). The
|
||
|
||
ncurses-devel package in CentOS 7 had a older version ncurses resulted in
|
||
compilation error. For compiling ncurses with extended color support, we
|
||
verify the version of the ncurses library >= 20170401.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-45193: Make completion boxes appear on Ubuntu again.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-45307: Restore the private C API function
|
||
:func:`_PyImport_FindExtensionObject`. It will be removed in Python 3.11.
|
||
|
||
|
||
What's New in Python 3.10.0 release candidate 2?
|
||
================================================
|
||
|
||
*Release date: 2021-09-07*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-42278: Replaced usage of :func:`tempfile.mktemp` with
|
||
:class:`~tempfile.TemporaryDirectory` to avoid a potential race condition.
|
||
|
||
- bpo-44394: Update the vendored copy of libexpat to 2.4.1 (from 2.2.8) to
|
||
get the fix for the CVE-2013-0340 "Billion Laughs" vulnerability. This
|
||
copy is most used on Windows and macOS.
|
||
|
||
- bpo-43124: Made the internal ``putcmd`` function in :mod:`smtplib`
|
||
sanitize input for presence of ``\r`` and ``\n`` characters to avoid
|
||
(unlikely) command injection.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-45123: Fix PyAiter_Check to only check for the __anext__ presence (not
|
||
for __aiter__). Rename PyAiter_Check to PyAIter_Check, PyObject_GetAiter
|
||
-> PyObject_GetAIter.
|
||
|
||
- bpo-45018: Fixed pickling of range iterators that iterated for over 2**32
|
||
times.
|
||
|
||
- bpo-45000: A :exc:`SyntaxError` is now raised when trying to delete
|
||
:const:`__debug__`. Patch by Dong-hee Na.
|
||
|
||
- bpo-44963: Implement ``send()`` and ``throw()`` methods for
|
||
``anext_awaitable`` objects. Patch by Pablo Galindo.
|
||
|
||
- bpo-44962: Fix a race in WeakKeyDictionary, WeakValueDictionary and
|
||
WeakSet when two threads attempt to commit the last pending removal. This
|
||
fixes asyncio.create_task and fixes a data loss in asyncio.run where
|
||
shutdown_asyncgens is not run
|
||
|
||
- bpo-44954: Fixed a corner case bug where the result of
|
||
``float.fromhex('0x.8p-1074')`` was rounded the wrong way.
|
||
|
||
- bpo-44947: Refine the syntax error for trailing commas in import
|
||
statements. Patch by Pablo Galindo.
|
||
|
||
- bpo-44698: Restore behaviour of complex exponentiation with integer-valued
|
||
exponent of type :class:`float` or :class:`complex`.
|
||
|
||
- bpo-44885: Correct the ast locations of f-strings with format specs and
|
||
repeated expressions. Patch by Pablo Galindo
|
||
|
||
- bpo-44872: Use new trashcan macros (Py_TRASHCAN_BEGIN/END) in
|
||
frameobject.c instead of the old ones (Py_TRASHCAN_SAFE_BEGIN/END).
|
||
|
||
- bpo-33930: Fix segmentation fault with deep recursion when cleaning method
|
||
objects. Patch by Augusto Goulart and Pablo Galindo.
|
||
|
||
- bpo-25782: Fix bug where ``PyErr_SetObject`` hangs when the current
|
||
exception has a cycle in its context chain.
|
||
|
||
- bpo-44856: Fix reference leaks in the error paths of ``update_bases()``
|
||
and ``__build_class__``. Patch by Pablo Galindo.
|
||
|
||
- bpo-44838: Fixed a bug that was causing the parser to raise an incorrect
|
||
custom :exc:`SyntaxError` for invalid 'if' expressions. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-44584: The threading debug (:envvar:`PYTHONTHREADDEBUG` environment
|
||
variable) is deprecated in Python 3.10 and will be removed in Python 3.12.
|
||
This feature requires a debug build of Python. Patch by Victor Stinner.
|
||
|
||
- bpo-39091: Fix crash when using passing a non-exception to a generator's
|
||
``throw()`` method. Patch by Noah Oxer
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-45081: Fix issue when dataclasses that inherit from
|
||
``typing.Protocol`` subclasses have wrong ``__init__``. Patch provided by
|
||
Yurii Karabas.
|
||
|
||
- bpo-41620: :meth:`~unittest.TestCase.run` now always return a
|
||
:class:`~unittest.TestResult` instance. Previously it returned ``None`` if
|
||
the test class or method was decorated with a skipping decorator.
|
||
|
||
- bpo-43913: Fix bugs in cleaning up classes and modules in :mod:`unittest`:
|
||
|
||
* Functions registered with :func:`~unittest.addModuleCleanup` were not called unless the user defines ``tearDownModule()`` in their test module.
|
||
* Functions registered with :meth:`~unittest.TestCase.addClassCleanup` were not called if ``tearDownClass`` is set to ``None``.
|
||
* Buffering in :class:`~unittest.TestResult` did not work with functions registered with ``addClassCleanup()`` and ``addModuleCleanup()``.
|
||
* Errors in functions registered with ``addClassCleanup()`` and ``addModuleCleanup()`` were not handled correctly in buffered and debug modes.
|
||
* Errors in ``setUpModule()`` and functions registered with ``addModuleCleanup()`` were reported in wrong order.
|
||
* And several lesser bugs.
|
||
|
||
- bpo-45030: Fix integer overflow in pickling and copying the range
|
||
iterator.
|
||
|
||
- bpo-45001: Made email date parsing more robust against malformed input,
|
||
namely a whitespace-only ``Date:`` header. Patch by Wouter Bolsterlee.
|
||
|
||
- bpo-44449: Fix a crash in the signal handler of the :mod:`faulthandler`
|
||
module: no longer modify the reference count of frame objects. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-44955: Method :meth:`~unittest.TestResult.stopTestRun` is now always
|
||
called in pair with method :meth:`~unittest.TestResult.startTestRun` for
|
||
:class:`~unittest.TestResult` objects implicitly created in
|
||
:meth:`~unittest.TestCase.run`. Previously it was not called for test
|
||
methods and classes decorated with a skipping decorator.
|
||
|
||
- bpo-44935: :mod:`subprocess` on Solaris now also uses
|
||
:func:`os.posix_spawn()` for better performance.
|
||
|
||
- bpo-44911: :class:`~unittest.IsolatedAsyncioTestCase` will no longer throw
|
||
an exception while cancelling leaked tasks. Patch by Bar Harel.
|
||
|
||
- bpo-44524: Make exception message more useful when subclass from typing
|
||
special form alias. Patch provided by Yurii Karabas.
|
||
|
||
- bpo-38956: :class:`argparse.BooleanOptionalAction`'s default value is no
|
||
longer printed twice when used with
|
||
:class:`argparse.ArgumentDefaultsHelpFormatter`.
|
||
|
||
- bpo-44860: Fix the ``posix_user`` scheme in :mod:`sysconfig` to not depend
|
||
on :data:`sys.platlibdir`.
|
||
|
||
- bpo-44581: Upgrade bundled pip to 21.2.3 and setuptools to 57.4.0
|
||
|
||
- bpo-44849: Fix the :func:`os.set_inheritable` function on FreeBSD 14 for
|
||
file descriptor opened with the :data:`~os.O_PATH` flag: ignore the
|
||
:data:`~errno.EBADF` error on ``ioctl()``, fallback on the ``fcntl()``
|
||
implementation. Patch by Victor Stinner.
|
||
|
||
- bpo-44605: The @functools.total_ordering() decorator now works with
|
||
metaclasses.
|
||
|
||
- bpo-44524: Fixed an issue wherein the ``__name__`` and ``__qualname__``
|
||
attributes of subscribed specialforms could be ``None``.
|
||
|
||
- bpo-44822: :mod:`sqlite3` user-defined functions and aggregators returning
|
||
:class:`strings <str>` with embedded NUL characters are no longer
|
||
truncated. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-44801: Ensure that the :class:`~typing.ParamSpec` variable in Callable
|
||
can only be substituted with a parameters expression (a list of types, an
|
||
ellipsis, ParamSpec or Concatenate).
|
||
|
||
- bpo-27334: The :mod:`sqlite3` context manager now performs a rollback
|
||
(thus releasing the database lock) if commit failed. Patch by Luca Citi
|
||
and Erlend E. Aasland.
|
||
|
||
- bpo-41402: Fix :meth:`email.message.EmailMessage.set_content` when called
|
||
with binary data and ``7bit`` content transfer encoding.
|
||
|
||
- bpo-32695: The *compresslevel* and *preset* keyword arguments of
|
||
:func:`tarfile.open` are now both documented and tested.
|
||
|
||
- bpo-34990: Fixed a Y2k38 bug in the compileall module where it would fail
|
||
to compile files with a modification time after the year 2038.
|
||
|
||
- bpo-38840: Fix ``test___all__`` on platforms lacking a shared memory
|
||
implementation.
|
||
|
||
- bpo-26228: pty.spawn no longer hangs on FreeBSD, macOS, and Solaris.
|
||
|
||
- bpo-33349: lib2to3 now recognizes async generators everywhere.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-44957: Promote PEP 604 union syntax by using it where possible. Also,
|
||
mention ``X | Y`` more prominently in section about ``Union`` and mention
|
||
``X | None`` at all in section about ``Optional``.
|
||
|
||
- bpo-44903: Removed the othergui.rst file, any references to it, and the
|
||
list of GUI frameworks in the FAQ. In their place I've added links to the
|
||
Python Wiki `page on GUI frameworks
|
||
<https://wiki.python.org/moin/GuiProgramming>`.
|
||
|
||
- bpo-33479: Tkinter documentation has been greatly expanded with new
|
||
"Architecture" and "Threading model" sections.
|
||
|
||
- bpo-36700: :mod:`base64` RFC references were updated to point to
|
||
:rfc:`4648`; a section was added to point users to the new "security
|
||
considerations" section of the RFC.
|
||
|
||
- bpo-44756: Reverted automated virtual environment creation on ``make
|
||
html`` when building documentation. It turned out to be disruptive for
|
||
downstream distributors.
|
||
|
||
- bpo-42958: Updated the docstring and docs of :func:`filecmp.cmp` to be
|
||
more accurate and less confusing especially in respect to *shallow* arg.
|
||
|
||
- bpo-43066: Added a warning to :mod:`zipfile` docs: filename arg with a
|
||
leading slash may cause archive to be un-openable on Windows systems.
|
||
|
||
- bpo-39452: Rewrote ``Doc/library/__main__.rst``. Broadened scope of the
|
||
document to explicitly discuss and differentiate between ``__main__.py``
|
||
in packages versus the ``__name__ == '__main__'`` expression (and the
|
||
idioms that surround it).
|
||
|
||
- bpo-27752: Documentation of csv.Dialect is more descriptive.
|
||
|
||
- bpo-41576: document BaseException in favor of bare except
|
||
|
||
- bpo-39498: Add a "Security Considerations" index which links to standard
|
||
library modules that have explicitly documented security considerations.
|
||
|
||
- bpo-33479: Remove the unqualified claim that tkinter is threadsafe. It has
|
||
not been true for several years and likely never was. An explanation of
|
||
what is true may be added later, after more discussion, and possibly after
|
||
patching _tkinter.c,
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-45052: ``WithProcessesTestSharedMemory.test_shared_memory_basics``
|
||
test was ignored, because ``self.assertEqual(sms.size, sms2.size)`` line
|
||
was failing. It is now removed and test is unskipped.
|
||
|
||
The main motivation for this line to be removed from the test is that the
|
||
``size`` of ``SharedMemory`` is not ever guaranteed to be the same. It is
|
||
decided by the platform.
|
||
|
||
- bpo-45042: Fixes that test classes decorated with
|
||
``@hashlib_helper.requires_hashdigest`` were skipped all the time.
|
||
|
||
- bpo-45011: Made tests relying on the :mod:`_asyncio` C extension module
|
||
optional to allow running on alternative Python implementations. Patch by
|
||
Serhiy Storchaka.
|
||
|
||
- bpo-44949: Fix auto history tests of test_readline: sometimes, the newline
|
||
character is not written at the end, so don't expect it in the output.
|
||
|
||
- bpo-44891: Tests were added to clarify :func:`id` is preserved when ``obj
|
||
* 1`` is used on :class:`str` and :class:`bytes` objects. Patch by Nikita
|
||
Sobolev.
|
||
|
||
- bpo-44852: Add ability to wholesale silence DeprecationWarnings while
|
||
running the regression test suite.
|
||
|
||
- bpo-40928: Notify users running test_decimal regression tests on macOS of
|
||
potential harmless "malloc can't allocate region" messages spewed by
|
||
test_decimal.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-45007: Update to OpenSSL 1.1.1l in Windows build
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-45007: Update macOS installer builds to use OpenSSL 1.1.1l.
|
||
|
||
- bpo-44689: :meth:`ctypes.util.find_library` now works correctly on macOS
|
||
11 Big Sur even if Python is built on an older version of macOS.
|
||
Previously, when built on older macOS systems, ``find_library`` was not
|
||
able to find macOS system libraries when running on Big Sur due to
|
||
changes in how system libraries are stored.
|
||
|
||
|
||
What's New in Python 3.10.0 release candidate 1?
|
||
================================================
|
||
|
||
*Release date: 2021-08-02*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-44600: Fix incorrect line numbers while tracing some failed patterns
|
||
in :ref:`match <match>` statements. Patch by Charles Burkland.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-44792: Improve syntax errors for if expressions. Patch by Miguel Brito
|
||
|
||
- bpo-34013: Generalize the invalid legacy statement custom error message
|
||
(like the one generated when "print" is called without parentheses) to
|
||
include more generic expressions. Patch by Pablo Galindo
|
||
|
||
- bpo-44732: Rename ``types.Union`` to ``types.UnionType``.
|
||
|
||
- bpo-44698: Fix undefined behaviour in complex object exponentiation.
|
||
|
||
- bpo-44653: Support :mod:`typing` types in parameter substitution in the
|
||
union type.
|
||
|
||
- bpo-44676: Add ability to serialise ``types.Union`` objects. Patch
|
||
provided by Yurii Karabas.
|
||
|
||
- bpo-44633: Parameter substitution of the union type with wrong types now
|
||
raises ``TypeError`` instead of returning ``NotImplemented``.
|
||
|
||
- bpo-44662: Add ``__module__`` to ``types.Union``. This also fixes
|
||
``types.Union`` issues with ``typing.Annotated``. Patch provided by Yurii
|
||
Karabas.
|
||
|
||
- bpo-44655: Include the name of the type in unset __slots__ attribute
|
||
errors. Patch by Pablo Galindo
|
||
|
||
- bpo-44655: Don't include a missing attribute with the same name as the
|
||
failing one when offering suggestions for missing attributes. Patch by
|
||
Pablo Galindo
|
||
|
||
- bpo-44646: Fix the hash of the union type: it no longer depends on the
|
||
order of arguments.
|
||
|
||
- bpo-44636: Collapse union of equal types. E.g. the result of ``int | int``
|
||
is now ``int``. Fix comparison of the union type with non-hashable
|
||
objects. E.g. ``int | str == {}`` no longer raises a TypeError.
|
||
|
||
- bpo-44635: Convert ``None`` to ``type(None)`` in the union type
|
||
constructor.
|
||
|
||
- bpo-44589: Mapping patterns in ``match`` statements with two or more equal
|
||
literal keys will now raise a :exc:`SyntaxError` at compile-time.
|
||
|
||
- bpo-44606: Fix ``__instancecheck__`` and ``__subclasscheck__`` for the
|
||
union type.
|
||
|
||
- bpo-42073: The ``@classmethod`` decorator can now wrap other
|
||
classmethod-like descriptors.
|
||
|
||
- bpo-44490: :mod:`typing` now searches for type parameters in
|
||
``types.Union`` objects. ``get_type_hints`` will also properly resolve
|
||
annotations with nested ``types.Union`` objects. Patch provided by Yurii
|
||
Karabas.
|
||
|
||
- bpo-44490: Add ``__parameters__`` attribute and ``__getitem__`` operator
|
||
to ``types.Union``. Patch provided by Yurii Karabas.
|
||
|
||
- bpo-44472: Fix ltrace functionality when exceptions are raised. Patch by
|
||
Pablo Galindo
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-44806: Non-protocol subclasses of :class:`typing.Protocol` ignore now
|
||
the ``__init__`` method inherited from protocol base classes.
|
||
|
||
- bpo-44793: Fix checking the number of arguments when subscribe a generic
|
||
type with ``ParamSpec`` parameter.
|
||
|
||
- bpo-44784: In importlib.metadata tests, override warnings behavior under
|
||
expected DeprecationWarnings (importlib_metadata 4.6.3).
|
||
|
||
- bpo-44667: The :func:`tokenize.tokenize` doesn't incorrectly generate a
|
||
``NEWLINE`` token if the source doesn't end with a new line character but
|
||
the last line is a comment, as the function is already generating a ``NL``
|
||
token. Patch by Pablo Galindo
|
||
|
||
- bpo-44752: :mod:`rcompleter` does not call :func:`getattr` on
|
||
:class:`property` objects to avoid the side-effect of evaluating the
|
||
corresponding method.
|
||
|
||
- bpo-44720: ``weakref.proxy`` objects referencing non-iterators now raise
|
||
``TypeError`` rather than dereferencing the null ``tp_iternext`` slot and
|
||
crashing.
|
||
|
||
- bpo-44704: The implementation of ``collections.abc.Set._hash()`` now
|
||
matches that of ``frozenset.__hash__()``.
|
||
|
||
- bpo-44666: Fixed issue in :func:`compileall.compile_file` when
|
||
``sys.stdout`` is redirected. Patch by Stefan Hölzl.
|
||
|
||
- bpo-42854: Fixed a bug in the :mod:`_ssl` module that was throwing
|
||
:exc:`OverflowError` when using :meth:`_ssl._SSLSocket.write` and
|
||
:meth:`_ssl._SSLSocket.read` for a big value of the ``len`` parameter.
|
||
Patch by Pablo Galindo
|
||
|
||
- bpo-44353: Refactor ``typing.NewType`` from function into callable class.
|
||
Patch provided by Yurii Karabas.
|
||
|
||
- bpo-44524: Add missing ``__name__`` and ``__qualname__`` attributes to
|
||
``typing`` module classes. Patch provided by Yurii Karabas.
|
||
|
||
- bpo-40897: Give priority to using the current class constructor in
|
||
:func:`inspect.signature`. Patch by Weipeng Hong.
|
||
|
||
- bpo-44648: Fixed wrong error being thrown by :func:`inspect.getsource`
|
||
when examining a class in the interactive session. Instead of
|
||
:exc:`TypeError`, it should be :exc:`OSError` with appropriate error
|
||
message.
|
||
|
||
- bpo-44608: Fix memory leak in :func:`_tkinter._flatten` if it is called
|
||
with a sequence or set, but not list or tuple.
|
||
|
||
- bpo-44559: [Enum] module reverted to 3.9; 3.10 changes pushed until 3.11
|
||
|
||
- bpo-41928: Update :func:`shutil.copyfile` to raise
|
||
:exc:`FileNotFoundError` instead of confusing :exc:`IsADirectoryError`
|
||
when a path ending with a :const:`os.path.sep` does not exist;
|
||
:func:`shutil.copy` and :func:`shutil.copy2` are also affected.
|
||
|
||
- bpo-44566: handle StopIteration subclass raised from
|
||
@contextlib.contextmanager generator
|
||
|
||
- bpo-41249: Fixes ``TypedDict`` to work with ``typing.get_type_hints()``
|
||
and postponed evaluation of annotations across modules.
|
||
|
||
- bpo-44461: Fix bug with :mod:`pdb`'s handling of import error due to a
|
||
package which does not have a ``__main__`` module
|
||
|
||
- bpo-43625: Fix a bug in the detection of CSV file headers by
|
||
:meth:`csv.Sniffer.has_header` and improve documentation of same.
|
||
|
||
- bpo-42892: Fixed an exception thrown while parsing a malformed multipart
|
||
email by :class:`email.message.EmailMessage`.
|
||
|
||
- bpo-27827: :meth:`pathlib.PureWindowsPath.is_reserved` now identifies a
|
||
greater range of reserved filenames, including those with trailing spaces
|
||
or colons.
|
||
|
||
- bpo-38741: :mod:`configparser`: using ']' inside a section header will no
|
||
longer cut the section name short at the ']'
|
||
|
||
- bpo-27513: :func:`email.utils.getaddresses` now accepts
|
||
:class:`email.header.Header` objects along with string values. Patch by
|
||
Zackery Spytz.
|
||
|
||
- bpo-29298: Fix ``TypeError`` when required subparsers without ``dest`` do
|
||
not receive arguments. Patch by Anthony Sottile.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-44740: Replaced occurences of uppercase "Web" and "Internet" with
|
||
lowercase versions per the 2016 revised Associated Press Style Book.
|
||
|
||
- bpo-44693: Update the definition of __future__ in the glossary by
|
||
replacing the confusing word "pseudo-module" with a more accurate
|
||
description.
|
||
|
||
- bpo-35183: Add typical examples to os.path.splitext docs
|
||
|
||
- bpo-30511: Clarify that :func:`shutil.make_archive` is not thread-safe due
|
||
to reliance on changing the current working directory.
|
||
|
||
- bpo-44561: Update of three expired hyperlinks in
|
||
Doc/distributing/index.rst: "Project structure", "Building and packaging
|
||
the project", and "Uploading the project to the Python Packaging Index".
|
||
|
||
- bpo-44613: importlib.metadata is no longer provisional.
|
||
|
||
- bpo-44544: List all kwargs for :func:`textwrap.wrap`,
|
||
:func:`textwrap.fill`, and :func:`textwrap.shorten`. Now, there are nav
|
||
links to attributes of :class:`TextWrap`, which makes navigation much
|
||
easier while minimizing duplication in the documentation.
|
||
|
||
- bpo-44453: Fix documentation for the return type of
|
||
:func:`sysconfig.get_path`.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-44734: Fixed floating point precision issue in turtle tests.
|
||
|
||
- bpo-44708: Regression tests, when run with -w, are now re-running only the
|
||
affected test methods instead of re-running the entire test file.
|
||
|
||
- bpo-44647: Added a permanent Unicode-valued environment variable to
|
||
regression tests to ensure they handle this use case in the future. If
|
||
your test environment breaks because of that, report a bug to us, and
|
||
temporarily set PYTHONREGRTEST_UNICODE_GUARD=0 in your test environment.
|
||
|
||
- bpo-44515: Adjust recently added contextlib tests to avoid assuming the
|
||
use of a refcounted GC
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-44572: Avoid consuming standard input in the :mod:`platform` module
|
||
|
||
- bpo-40263: This is a follow-on bug from
|
||
https://bugs.python.org/issue26903. Once that is applied we run into an
|
||
off-by-one assertion problem. The assert was not correct.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-41972: The framework build's user header path in sysconfig is changed
|
||
to add a 'pythonX.Y' component to match distutils's behavior.
|
||
|
||
- bpo-34932: Add socket.TCP_KEEPALIVE support for macOS. Patch by Shane
|
||
Harvey.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-44756: In the Makefile for documentation (:file:`Doc/Makefile`), the
|
||
``build`` rule is dependent on the ``venv`` rule. Therefore, ``html``,
|
||
``latex``, and other build-dependent rules are also now dependent on
|
||
``venv``. The ``venv`` rule only performs an action if ``$(VENVDIR)`` does
|
||
not exist. :file:`Doc/README.rst` was updated; most users now only need to
|
||
type ``make html``.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-41103: Reverts removal of the old buffer protocol because they are
|
||
part of stable ABI.
|
||
|
||
- bpo-42747: The ``Py_TPFLAGS_HAVE_VERSION_TAG`` type flag now does nothing.
|
||
The ``Py_TPFLAGS_HAVE_AM_SEND`` flag (which was added in 3.10) is removed.
|
||
Both were unnecessary because it is not possible to have type objects with
|
||
the relevant fields missing.
|
||
|
||
|
||
What's New in Python 3.10.0 beta 4?
|
||
===================================
|
||
|
||
*Release date: 2021-07-10*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-41180: Add auditing events to the :mod:`marshal` module, and stop
|
||
raising ``code.__init__`` events for every unmarshalled code object.
|
||
Directly instantiated code objects will continue to raise an event, and
|
||
audit event handlers should inspect or collect the raw marshal data. This
|
||
reduces a significant performance overhead when loading from ``.pyc``
|
||
files.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-44562: Remove uses of :c:func:`PyObject_GC_Del` in error path when
|
||
initializing :class:`types.GenericAlias`.
|
||
|
||
- bpo-41486: Fix a memory consumption and copying performance regression in
|
||
earlier 3.10 beta releases if someone used an output buffer larger than
|
||
4GiB with zlib.decompress on input data that expands that large.
|
||
|
||
- bpo-44553: Implement GC methods for ``types.Union`` to break reference
|
||
cycles and prevent memory leaks.
|
||
|
||
- bpo-44523: Remove the pass-through for :func:`hash` of
|
||
:class:`weakref.proxy` objects to prevent unintended consequences when the
|
||
original referred object dies while the proxy is part of a hashable
|
||
object. Patch by Pablo Galindo.
|
||
|
||
- bpo-44483: Fix a crash in ``types.Union`` objects when creating a union of
|
||
an object with bad ``__module__`` field.
|
||
|
||
- bpo-44297: Make sure that the line number is set when entering a
|
||
comprehension scope. Ensures that backtraces inclusing generator
|
||
expressions show the correct line number.
|
||
|
||
- bpo-44456: Improve the syntax error when mixing positional and keyword
|
||
patterns. Patch by Pablo Galindo.
|
||
|
||
- bpo-44368: Improve syntax errors for invalid "as" targets. Patch by Pablo
|
||
Galindo
|
||
|
||
- bpo-44317: Improve tokenizer error with improved locations. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-43667: Improve Unicode support in non-UTF locales on Oracle Solaris.
|
||
This issue does not affect other Solaris systems.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-44558: Make the implementation consistency of
|
||
:func:`~operator.indexOf` between C and Python versions. Patch by Dong-hee
|
||
Na.
|
||
|
||
- bpo-34798: Break up paragraph about :class:`pprint.PrettyPrinter`
|
||
construction parameters to make it easier to read.
|
||
|
||
- bpo-44516: Update vendored pip to 21.1.3
|
||
|
||
- bpo-44468: :func:`typing.get_type_hints` now finds annotations in classes
|
||
and base classes with unexpected ``__module__``. Previously, it skipped
|
||
those MRO elements.
|
||
|
||
- bpo-43977: Set the proper :const:`Py_TPFLAGS_MAPPING` and
|
||
:const:`Py_TPFLAGS_SEQUENCE` flags for subclasses created before a parent
|
||
has been registered as a :class:`collections.abc.Mapping` or
|
||
:class:`collections.abc.Sequence`.
|
||
|
||
- bpo-44482: Fix very unlikely resource leak in :mod:`glob` in alternate
|
||
Python implementations.
|
||
|
||
- bpo-44466: The :mod:`faulthandler` module now detects if a fatal error
|
||
occurs during a garbage collector collection. Patch by Victor Stinner.
|
||
|
||
- bpo-44404: :mod:`tkinter`'s ``after()`` method now supports callables
|
||
without the ``__name__`` attribute.
|
||
|
||
- bpo-44458: ``BUFFER_BLOCK_SIZE`` is now declared static, to avoid linking
|
||
collisions when bz2, lmza or zlib are statically linked.
|
||
|
||
- bpo-44464: Remove exception for flake8 in deprecated importlib.metadata
|
||
interfaces. Sync with importlib_metadata 4.6.
|
||
|
||
- bpo-44446: Take into account that ``lineno`` might be ``None`` in
|
||
:class:`traceback.FrameSummary`.
|
||
|
||
- bpo-44439: Fix in :meth:`bz2.BZ2File.write` / :meth:`lzma.LZMAFile.write`
|
||
methods, when the input data is an object that supports the buffer
|
||
protocol, the file length may be wrong.
|
||
|
||
- bpo-44434: _thread.start_new_thread() no longer calls
|
||
PyThread_exit_thread() explicitly at the thread exit, the call was
|
||
redundant. On Linux with the glibc, pthread_exit() aborts the whole
|
||
process if dlopen() fails to open libgcc_s.so file (ex: EMFILE error).
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-44395: Fix :meth:`~email.message.MIMEPart.as_string` to pass unixfrom
|
||
properly. Patch by Dong-hee Na.
|
||
|
||
- bpo-34266: Handle exceptions from parsing the arg of :mod:`pdb`'s
|
||
run/restart command.
|
||
|
||
- bpo-44077: It's now possible to receive the type of service (ToS), a.k.a.
|
||
differentiated services (DS), a.k.a. differenciated services code point
|
||
(DSCP) and excplicit congestion notification (ECN) IP header fields with
|
||
``socket.IP_RECVTOS``.
|
||
|
||
- bpo-43024: Improve the help signature of
|
||
:func:`traceback.print_exception`, :func:`traceback.format_exception` and
|
||
:func:`traceback.format_exception_only`.
|
||
|
||
- bpo-30256: Pass multiprocessing BaseProxy argument ``manager_owned``
|
||
through AutoProxy.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-44558: Match the docstring and python implementation of
|
||
:func:`~operator.countOf` to the behavior of its c implementation.
|
||
|
||
- bpo-38062: Clarify that atexit uses equality comparisons internally.
|
||
|
||
- bpo-40620: Convert examples in tutorial controlflow.rst section 4.3 to be
|
||
interpreter-demo style.
|
||
|
||
- bpo-13814: In the Design FAQ, answer "Why don't generators support the
|
||
with statement?"
|
||
|
||
- bpo-41621: Document that :class:`collections.defaultdict` parameter
|
||
``default_factory`` defaults to None and is positional-only.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-44287: Fix asyncio test_popen() of test_windows_utils by using a
|
||
longer timeout. Use military grade battle-tested
|
||
:data:`test.support.SHORT_TIMEOUT` timeout rather than a hardcoded timeout
|
||
of 10 seconds: it's 30 seconds by default, but it is made longer on slow
|
||
buildbots. Patch by Victor Stinner.
|
||
|
||
- bpo-44451: Reset ``DeprecationWarning`` filters in
|
||
``test.test_importlib.test_metadata_api.APITests.test_entry_points_by_index``
|
||
to avoid ``StopIteration`` error if ``DeprecationWarnings`` are ignored.
|
||
|
||
- bpo-30256: Add test for nested queues when using ``multiprocessing``
|
||
shared objects ``AutoProxy[Queue]`` inside ``ListProxy`` and ``DictProxy``
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-44535: Enable building using a Visual Studio 2022 install on Windows.
|
||
|
||
- bpo-43298: Improved error message when building without a Windows SDK
|
||
installed.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-44582: Accelerate speed of :mod:`mimetypes` initialization using a
|
||
native implementation of the registry scan.
|
||
|
||
- bpo-41299: Fix 16ms jitter when using timeouts in :mod:`threading`, such
|
||
as with :meth:`threading.Lock.acquire` or
|
||
:meth:`threading.Condition.wait`.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-44441: :c:func:`Py_RunMain` now resets :c:data:`PyImport_Inittab` to
|
||
its initial value at exit. It must be possible to call
|
||
:c:func:`PyImport_AppendInittab` or :c:func:`PyImport_ExtendInittab` at
|
||
each Python initialization. Patch by Victor Stinner.
|
||
|
||
- bpo-40939: Removed documentation for the removed ``PyParser_*`` C API.
|
||
|
||
|
||
What's New in Python 3.10.0 beta 3?
|
||
===================================
|
||
|
||
*Release date: 2021-06-17*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-44409: Fix error location information for tokenizer errors raised on
|
||
initialization of the tokenizer. Patch by Pablo Galindo.
|
||
|
||
- bpo-44396: Fix a possible crash in the tokenizer when raising syntax
|
||
errors for unclosed strings. Patch by Pablo Galindo.
|
||
|
||
- bpo-44349: Fix an edge case when displaying text from files with encoding
|
||
in syntax errors. Patch by Pablo Galindo.
|
||
|
||
- bpo-44335: Fix a regression when identifying incorrect characters in
|
||
syntax errors. Patch by Pablo Galindo
|
||
|
||
- bpo-44304: Fix a crash in the :mod:`sqlite3` module that happened when the
|
||
garbage collector clears :class:`sqlite.Statement` objects. Patch by Pablo
|
||
Galindo
|
||
|
||
- bpo-44305: Improve error message for ``try`` blocks without ``except`` or
|
||
``finally`` blocks. Patch by Pablo Galindo.
|
||
|
||
- bpo-43833: Emit a deprecation warning if the numeric literal is
|
||
immediately followed by one of keywords: and, else, for, if, in, is, or.
|
||
Raise a syntax error with more informative message if it is immediately
|
||
followed by other keyword or identifier.
|
||
|
||
- bpo-11105: When compiling :class:`ast.AST` objects with recursive
|
||
references through :func:`compile`, the interpreter doesn't crash anymore
|
||
instead it raises a :exc:`RecursionError`.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-42972: The _thread.RLock type now fully implement the GC protocol: add
|
||
a traverse function and the :const:`Py_TPFLAGS_HAVE_GC` flag. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-44422: The :func:`threading.enumerate` function now uses a reentrant
|
||
lock to prevent a hang on reentrant call. Patch by Victor Stinner.
|
||
|
||
- bpo-44389: Fix deprecation of :data:`ssl.OP_NO_TLSv1_3`
|
||
|
||
- bpo-44362: Improve :mod:`ssl` module's deprecation messages, error
|
||
reporting, and documentation for deprecations.
|
||
|
||
- bpo-44342: [Enum] Change pickling from by-value to by-name.
|
||
|
||
- bpo-44356: [Enum] Allow multiple data-type mixins if they are all the
|
||
same.
|
||
|
||
- bpo-44351: Restore back :func:`parse_makefile` in
|
||
:mod:`distutils.sysconfig` because it behaves differently than the similar
|
||
implementation in :mod:`sysconfig`.
|
||
|
||
- bpo-44242: Remove missing flag check from Enum creation and move into a
|
||
``verify`` decorator.
|
||
|
||
- bpo-44246: In ``importlib.metadata``, restore compatibility in the result
|
||
from ``Distribution.entry_points`` (``EntryPoints``) to honor expectations
|
||
in older implementations and issuing deprecation warnings for these cases:
|
||
A. ``EntryPoints`` objects are once again mutable, allowing for
|
||
``sort()`` and other list-based mutation operations. Avoid deprecation
|
||
warnings by casting to a mutable sequence (e.g.
|
||
``list(dist.entry_points).sort()``). B. ``EntryPoints`` results once again
|
||
allow for access by index. To avoid deprecation warnings, cast the
|
||
result to a Sequence first (e.g. ``tuple(dist.entry_points)[0]``).
|
||
|
||
- bpo-44246: In importlib.metadata.entry_points, de-duplication of
|
||
distributions no longer requires loading the full metadata for
|
||
PathDistribution objects, improving entry point loading performance by
|
||
~10x.
|
||
|
||
- bpo-43853: Improved string handling for :mod:`sqlite3` user-defined
|
||
functions and aggregates:
|
||
|
||
* It is now possible to pass strings with embedded null characters to UDFs
|
||
* Conversion failures now correctly raise :exc:`MemoryError`
|
||
|
||
Patch by Erlend E. Aasland.
|
||
|
||
- bpo-43318: Fix a bug where :mod:`pdb` does not always echo cleared
|
||
breakpoints.
|
||
|
||
- bpo-37022: :mod:`pdb` now displays exceptions from ``repr()`` with its
|
||
``p`` and ``pp`` commands.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-44392: Added a new section in the C API documentation for types used
|
||
in type hinting. Documented ``Py_GenericAlias`` and
|
||
``Py_GenericAliasType``.
|
||
|
||
- bpo-38291: Mark ``typing.io`` and ``typing.re`` as deprecated since Python
|
||
3.8 in the documentation. They were never properly supported by type
|
||
checkers.
|
||
|
||
- bpo-44322: Document that SyntaxError args have a details tuple and that
|
||
details are adjusted for errors in f-string field replacement expressions.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-44363: Account for address sanitizer in test_capi. test_capi now
|
||
passes when run GCC address sanitizer.
|
||
|
||
- bpo-43921: Fix test_ssl.test_wrong_cert_tls13(): use
|
||
``suppress_ragged_eofs=False``, since ``read()`` can raise
|
||
:exc:`ssl.SSLEOFError` on Windows. Patch by Victor Stinner.
|
||
|
||
- bpo-43921: Fix test_pha_required_nocert() of test_ssl: catch two more EOF
|
||
cases (when the ``recv()`` method returns an empty string). Patch by
|
||
Victor Stinner.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-44381: The Windows build now accepts :envvar:`EnableControlFlowGuard`
|
||
set to ``guard`` to enable CFG.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-40128: Mostly fix completions on macOS when not using tcl/tk 8.6.11
|
||
(as with 3.9). The added update_idletask call should be harmless and
|
||
possibly helpful otherwise.
|
||
|
||
- bpo-33962: Move the indent space setting from the Font tab to the new
|
||
Windows tab. Patch by Mark Roseman and Terry Jan Reedy.
|
||
|
||
- bpo-40468: Split the settings dialog General tab into Windows and Shell/ED
|
||
tabs. Move help sources, which extend the Help menu, to the Extensions
|
||
tab. Make space for new options and shorten the dialog. The latter makes
|
||
the dialog better fit small screens.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-43795: The list in :ref:`stable-abi-list` now shows the public name
|
||
:c:struct:`PyFrameObject` rather than ``_frame``. The non-existing entry
|
||
``_node`` no longer appears in the list.
|
||
|
||
- bpo-44378: :c:func:`Py_IS_TYPE` no longer uses :c:func:`Py_TYPE` to avoid
|
||
a compiler warning: no longer cast ``const PyObject*`` to ``PyObject*``.
|
||
Patch by Victor Stinner.
|
||
|
||
|
||
What's New in Python 3.10.0 beta 2?
|
||
===================================
|
||
|
||
*Release date: 2021-05-31*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-44022: mod:`http.client` now avoids infinitely reading potential HTTP
|
||
headers after a ``100 Continue`` status response from the server.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-43667: Improve Unicode support in non-UTF locales on Oracle Solaris.
|
||
This issue does not affect other Solaris systems.
|
||
|
||
- bpo-44232: Fix a regression in :func:`type` when a metaclass raises an
|
||
exception. The C function :c:func:`type_new` must properly report the
|
||
exception when a metaclass constructor raises an exception and the winner
|
||
class is not the metaclass. Patch by Victor Stinner.
|
||
|
||
- bpo-44201: Avoid side effects of checking for specialized syntax errors in
|
||
the REPL that was causing it to ask for extra tokens after a syntax error
|
||
had been detected. Patch by Pablo Galindo
|
||
|
||
- bpo-44184: Fix a crash at Python exit when a deallocator function removes
|
||
the last strong reference to a heap type. Patch by Victor Stinner.
|
||
|
||
- bpo-44180: The parser doesn't report generic syntax errors that happen in
|
||
a position further away that the one it reached in the first pass. Patch
|
||
by Pablo Galindo
|
||
|
||
- bpo-44168: Fix error message in the parser involving keyword arguments
|
||
with invalid expressions. Patch by Pablo Galindo
|
||
|
||
- bpo-44143: Fixed a crash in the parser that manifest when raising
|
||
tokenizer errors when an existing exception was present. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-44114: Fix incorrect dictkeys_reversed and dictitems_reversed function
|
||
signatures in C code, which broke webassembly builds.
|
||
|
||
- bpo-43149: Corrent the syntax error message regarding multiple exception
|
||
types to not refer to "exception groups". Patch by Pablo Galindo
|
||
|
||
- bpo-44056: Syntax errors when default ``except`` is not the last
|
||
``except`` are reported with the correct location. Patch by Mark Shannon.
|
||
|
||
- bpo-43822: The parser will prioritize tokenizer errors over custom syntax
|
||
errors when raising exceptions. Patch by Pablo Galindo.
|
||
|
||
- bpo-28146: Fix a confusing error message in :func:`str.format`.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-44254: On Mac, give turtledemo button text a color that works on both
|
||
light or dark background. Programmers cannot control the latter.
|
||
|
||
- bpo-38693: Prefer f-strings to ``.format`` in importlib.resources.
|
||
|
||
- bpo-33693: Importlib.metadata now prefers f-strings to .format.
|
||
|
||
- bpo-44241: Incorporate minor tweaks from importlib_metadata 4.1:
|
||
SimplePath protocol, support for Metadata 2.2.
|
||
|
||
- bpo-44210: Make importlib.metadata._meta.PackageMetadata public.
|
||
|
||
- bpo-43643: Declare readers.MultiplexedPath.name as a property per the
|
||
spec.
|
||
|
||
- bpo-33433: For IPv4 mapped IPv6 addresses (:rfc:`4291` Section 2.5.5.2),
|
||
the :mod:`ipaddress.IPv6Address.is_private` check is deferred to the
|
||
mapped IPv4 address. This solves a bug where public mapped IPv4 addresses
|
||
were considered private by the IPv6 check.
|
||
|
||
- bpo-44145: :mod:`hmac` computations were not releasing the GIL while
|
||
calling the OpenSSL ``HMAC_Update`` C API (a new feature in 3.9). This
|
||
unintentionally prevented parallel computation as other :mod:`hashlib`
|
||
algorithms support.
|
||
|
||
- bpo-37788: Fix a reference leak when a Thread object is never joined.
|
||
|
||
- bpo-38908: Subclasses of ``typing.Protocol`` which only have data
|
||
variables declared will now raise a ``TypeError`` when checked with
|
||
``isinstance`` unless they are decorated with :func:`runtime_checkable`.
|
||
Previously, these checks passed silently. Patch provided by Yurii Karabas.
|
||
|
||
- bpo-44098: ``typing.ParamSpec`` will no longer be found in the
|
||
``__parameters__`` of most :mod:`typing` generics except in valid use
|
||
locations specified by :pep:`612`. This prevents incorrect usage like
|
||
``typing.List[P][int]``. This change means incorrect usage which may have
|
||
passed silently in 3.10 beta 1 and earlier will now error.
|
||
|
||
- bpo-44089: Allow subclassing ``csv.Error`` in 3.10 (it was allowed in 3.9
|
||
and earlier but was disallowed in early versions of 3.10).
|
||
|
||
- bpo-44059: Register the SerenityOS Browser in the :mod:`webbrowser`
|
||
module.
|
||
|
||
- bpo-36515: The :mod:`hashlib` module no longer does unaligned memory
|
||
accesses when compiled for ARM platforms.
|
||
|
||
- bpo-44018: random.seed() no longer mutates bytearray inputs.
|
||
|
||
- bpo-38352: Add ``IO``, ``BinaryIO``, ``TextIO``, ``Match``, and
|
||
``Pattern`` to ``typing.__all__``. Patch by Jelle Zijlstra.
|
||
|
||
- bpo-43972: When :class:`http.server.SimpleHTTPRequestHandler` sends a
|
||
``301 (Moved Permanently)`` for a directory path not ending with `/`, add
|
||
a ``Content-Length: 0`` header. This improves the behavior for certain
|
||
clients.
|
||
|
||
- bpo-28528: Fix a bug in :mod:`pdb` where :meth:`~pdb.Pdb.checkline` raises
|
||
:exc:`AttributeError` if it is called after :meth:`~pdb.Pdb.reset`.
|
||
|
||
- bpo-43650: Fix :exc:`MemoryError` in :func:`shutil.unpack_archive` which
|
||
fails inside :func:`shutil._unpack_zipfile` on large files. Patch by Igor
|
||
Bolshakov.
|
||
|
||
- bpo-41730: ``DeprecationWarning`` is now raised when importing
|
||
:mod:`tkinter.tix`, which has been deprecated in documentation since
|
||
Python 3.6.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-42392: Document the deprecation and removal of the ``loop`` parameter
|
||
for many functions and classes in :mod:`asyncio`.
|
||
|
||
- bpo-44195: Corrected references to ``TraversableResources`` in docs. There
|
||
is no ``TraversableReader``.
|
||
|
||
- bpo-41963: Document that ``ConfigParser`` strips off comments when reading
|
||
configuration files.
|
||
|
||
- bpo-44072: Correct where in the numeric ABC hierarchy ``**`` support is
|
||
added, i.e., in numbers.Complex, not numbers.Integral.
|
||
|
||
- bpo-43558: Add the remark to :mod:`dataclasses` documentation that the
|
||
:meth:`__init__` of any base class has to be called in
|
||
:meth:`__post_init__`, along with a code example.
|
||
|
||
- bpo-44025: Clarify when '_' in match statements is a keyword, and when
|
||
not.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-31904: Ignore error string case in test_py_compile
|
||
``test_file_not_exists()``.
|
||
|
||
- bpo-42083: Add test to check that ``PyStructSequence_NewType`` accepts a
|
||
``PyStructSequence_Desc`` with ``doc`` field set to ``NULL``.
|
||
|
||
- bpo-35753: Fix crash in doctest when doctest parses modules that include
|
||
unwrappable functions by skipping those functions.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-41282: Fix broken ``make install`` that caused standard library
|
||
extension modules to be unnecessarily and incorrectly rebuilt during the
|
||
install phase of cpython.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-42686: Build :mod:`sqlite3` with math functions enabled. Patch by
|
||
Erlend E. Aasland.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-43109: Allow --with-lto configure option to work with Apple-supplied
|
||
Xcode or Command Line Tools.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-41611: Avoid uncaught exceptions in
|
||
``AutoCompleteWindow.winconfig_event()``.
|
||
|
||
- bpo-41611: Fix IDLE sometimes freezing upon tab-completion on macOS.
|
||
|
||
- bpo-44010: Highlight the new :ref:`match <match>` statement's :ref:`soft
|
||
keywords <soft-keywords>`: :keyword:`match`, :keyword:`case <match>`, and
|
||
:keyword:`_ <wildcard-patterns>`. However, this highlighting is not
|
||
perfect and will be incorrect in some rare cases, including some ``_``-s
|
||
in ``case`` patterns.
|
||
|
||
- bpo-44026: Include interpreter's typo fix suggestions in message line for
|
||
NameErrors and AttributeErrors. Patch by E. Paine.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-44074: Make patchcheck automatically detect the correct base branch
|
||
name (previously it was hardcoded to 'master')
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-43795: The undocumented function :c:func:`Py_FrozenMain` is removed
|
||
from the Limited API.
|
||
|
||
- bpo-43795: :c:func:`PyCodec_Unregister` is now properly exported as a
|
||
function in the Windows Stable ABI DLL.
|
||
|
||
|
||
What's New in Python 3.10.0 beta 1?
|
||
===================================
|
||
|
||
*Release date: 2021-05-03*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-43434: Creating :class:`sqlite3.Connection` objects now also produces
|
||
``sqlite3.connect`` and ``sqlite3.connect/handle`` :ref:`auditing events
|
||
<auditing>`. Previously these events were only produced by
|
||
:func:`sqlite3.connect` calls. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-43998: The :mod:`ssl` module sets more secure cipher suites defaults.
|
||
Ciphers without forward secrecy and with SHA-1 MAC are disabled by
|
||
default. Security level 2 prohibits weak RSA, DH, and ECC keys with less
|
||
than 112 bits of security. :class:`~ssl.SSLContext` defaults to minimum
|
||
protocol version TLS 1.2. Settings are based on Hynek Schlawack's
|
||
research.
|
||
|
||
- bpo-43882: The presence of newline or tab characters in parts of a URL
|
||
could allow some forms of attacks.
|
||
|
||
Following the controlling specification for URLs defined by WHATWG
|
||
:func:`urllib.parse` now removes ASCII newlines and tabs from URLs,
|
||
preventing such attacks.
|
||
|
||
- bpo-43472: Ensures interpreter-level audit hooks receive the
|
||
``cpython.PyInterpreterState_New`` event when called through the
|
||
``_xxsubinterpreters`` module.
|
||
|
||
- bpo-43362: Fix invalid free in _sha3 module. The issue was introduced in
|
||
3.10.0a1. Python 3.9 and earlier are not affected.
|
||
|
||
- bpo-43762: Add audit events for :func:`sqlite3.connect/handle`,
|
||
:meth:`sqlite3.Connection.enable_load_extension`, and
|
||
:meth:`sqlite3.Connection.load_extension`. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-43756: Add new audit event ``glob.glob/2`` to incorporate the new
|
||
*root_dir* and *dir_fd* arguments added to :func:`glob.glob` and
|
||
:func:`glob.iglob`.
|
||
|
||
- bpo-36384: :mod:`ipaddress` module no longer accepts any leading zeros in
|
||
IPv4 address strings. Leading zeros are ambiguous and interpreted as octal
|
||
notation by some libraries. For example the legacy function
|
||
:func:`socket.inet_aton` treats leading zeros as octal notatation. glibc
|
||
implementation of modern :func:`~socket.inet_pton` does not accept any
|
||
leading zeros. For a while the :mod:`ipaddress` module used to accept
|
||
ambiguous leading zeros.
|
||
|
||
- bpo-43075: Fix Regular Expression Denial of Service (ReDoS) vulnerability
|
||
in :class:`urllib.request.AbstractBasicAuthHandler`. The ReDoS-vulnerable
|
||
regex has quadratic worst-case complexity and it allows cause a denial of
|
||
service when identifying crafted invalid RFCs. This ReDoS issue is on the
|
||
client side and needs remote attackers to control the HTTP server.
|
||
|
||
- bpo-42800: Audit hooks are now fired for frame.f_code, traceback.tb_frame,
|
||
and generator code/frame attribute access.
|
||
|
||
- bpo-37363: Add audit events to the :mod:`http.client` module.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-43977: Prevent classes being both a sequence and a mapping when
|
||
pattern matching.
|
||
|
||
- bpo-43977: Use :c:member:`~PyTypeObject.tp_flags` on the class object to
|
||
determine if the subject is a sequence or mapping when pattern matching.
|
||
Avoids the need to import :mod:`collections.abc` when pattern matching.
|
||
|
||
- bpo-43892: Restore proper validation of complex literal value patterns
|
||
when parsing :keyword:`!match` blocks.
|
||
|
||
- bpo-43933: Set frame.f_lineno to the line number of the 'with' kweyword
|
||
when executing the call to ``__exit__``.
|
||
|
||
- bpo-43933: If the current position in a frame has no line number then set
|
||
the f_lineno attribute to None, instead of -1, to conform to PEP 626. This
|
||
should not normally be possible, but might occur in some unusual
|
||
circumstances.
|
||
|
||
- bpo-43963: Importing the :mod:`_signal` module in a subinterpreter has no
|
||
longer side effects.
|
||
|
||
- bpo-42739: The internal representation of line number tables is changed to
|
||
not use sentinels, and an explicit length parameter is added to the out of
|
||
process API function ``PyLineTable_InitAddressRange``. This makes the
|
||
handling of line number tables more robust in some circumstances.
|
||
|
||
- bpo-43908: Make :mod:`re` types immutable. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-43908: Make the :class:`array.array` type immutable. Patch by Erlend
|
||
E. Aasland.
|
||
|
||
- bpo-43901: Change class and module objects to lazy-create empty
|
||
annotations dicts on demand. The annotations dicts are stored in the
|
||
object's __dict__ for backwards compatibility.
|
||
|
||
- bpo-43892: Match patterns now use new dedicated AST nodes (``MatchValue``,
|
||
``MatchSingleton``, ``MatchSequence``, ``MatchStar``, ``MatchMapping``,
|
||
``MatchClass``) rather than reusing expression AST nodes. ``MatchAs`` and
|
||
``MatchOr`` are now defined as pattern nodes rather than as expression
|
||
nodes. Patch by Nick Coghlan.
|
||
|
||
- bpo-42725: Usage of ``await``/``yield``/``yield from`` and named
|
||
expressions within an annotation is now forbidden when PEP 563 is
|
||
activated.
|
||
|
||
- bpo-43754: When performing structural pattern matching (:pep:`634`),
|
||
captured names are now left unbound until the *entire* pattern has matched
|
||
successfully.
|
||
|
||
- bpo-42737: Annotations for complex targets (everything beside simple
|
||
names) no longer cause any runtime effects with ``from __future__ import
|
||
annotations``.
|
||
|
||
- bpo-43914: :exc:`SyntaxError` exceptions raised by the interpreter will
|
||
highlight the full error range of the expression that consistutes the
|
||
syntax error itself, instead of just where the problem is detected. Patch
|
||
by Pablo Galindo.
|
||
|
||
- bpo-38605: Revert making ``from __future__ import annotations`` the
|
||
default. This follows the Steering Council decision to postpone PEP 563
|
||
changes to at least Python 3.11. See the original email for more
|
||
information regarding the decision:
|
||
https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-43475: Hashes of NaN values now depend on object identity. Formerly,
|
||
they always hashed to 0 even though NaN values are not equal to one
|
||
another. Having the same hash for unequal values caused pile-ups in hash
|
||
tables.
|
||
|
||
- bpo-43859: Improve the error message for :exc:`IndentationError`
|
||
exceptions. Patch by Pablo Galindo
|
||
|
||
- bpo-41323: Constant tuple folding in bytecode optimizer now reuses tuple
|
||
in constant table.
|
||
|
||
- bpo-43846: Data stack usage is much reduced for large literal and call
|
||
expressions.
|
||
|
||
- bpo-38530: When printing :exc:`NameError` raised by the interpreter,
|
||
:c:func:`PyErr_Display` will offer suggestions of similar variable names
|
||
in the function that the exception was raised from. Patch by Pablo Galindo
|
||
|
||
- bpo-43823: Improve syntax errors for invalid dictionary literals. Patch by
|
||
Pablo Galindo.
|
||
|
||
- bpo-43822: Improve syntax errors in the parser for missing commas between
|
||
expressions. Patch by Pablo Galindo.
|
||
|
||
- bpo-43798: :class:`ast.alias` nodes now include source location metadata
|
||
attributes e.g. lineno, col_offset.
|
||
|
||
- bpo-43797: Improve ``SyntaxError`` error messages for invalid comparisons.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-43760: Move the flag for checking whether tracing is enabled to the C
|
||
stack, from the heap. Should speed up dispatch in the interpreter.
|
||
|
||
- bpo-43682: Static methods (:func:`@staticmethod <staticmethod>`) and class
|
||
methods (:func:`@classmethod <classmethod>`) now inherit the method
|
||
attributes (``__module__``, ``__name__``, ``__qualname__``, ``__doc__``,
|
||
``__annotations__``) and have a new ``__wrapped__`` attribute. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-43751: Fixed a bug where ``anext(ait, default)`` would erroneously
|
||
return None.
|
||
|
||
- bpo-42128: :data:`~object.__match_args__` is no longer allowed to be a
|
||
list.
|
||
|
||
- bpo-43683: Add GEN_START opcode. Marks start of generator, including
|
||
async, or coroutine and handles sending values to a newly created
|
||
generator or coroutine.
|
||
|
||
- bpo-43105: Importlib now resolves relative paths when creating module spec
|
||
objects from file locations.
|
||
|
||
- bpo-43682: Static methods (:func:`@staticmethod <staticmethod>`) are now
|
||
callable as regular functions. Patch by Victor Stinner.
|
||
|
||
- bpo-42609: Prevented crashes in the AST validator and optimizer when
|
||
compiling some absurdly long expressions like ``"+0"*1000000``.
|
||
:exc:`RecursionError` is now raised instead.
|
||
|
||
- bpo-38530: When printing :exc:`AttributeError`, :c:func:`PyErr_Display`
|
||
will offer suggestions of similar attribute names in the object that the
|
||
exception was raised from. Patch by Pablo Galindo
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-44015: In @dataclass(), raise a TypeError if KW_ONLY is specified more
|
||
than once.
|
||
|
||
- bpo-25478: Added a *total()* method to collections.Counter() to compute
|
||
the sum of the counts.
|
||
|
||
- bpo-43733: Change :class:`netrc.netrc` to use UTF-8 encoding before using
|
||
locale encoding.
|
||
|
||
- bpo-43979: Removed an unnecessary list comprehension before looping from
|
||
:func:`urllib.parse.parse_qsl`. Patch by Christoph Zwerschke and Dong-hee
|
||
Na.
|
||
|
||
- bpo-43993: Update bundled pip to 21.1.1.
|
||
|
||
- bpo-43957: [Enum] Deprecate ``TypeError`` when non-member is used in a
|
||
containment check; In 3.12 ``True`` or ``False`` will be returned instead,
|
||
and containment will return ``True`` if the value is either a member of
|
||
that enum or one of its members' value.
|
||
|
||
- bpo-42904: For backwards compatibility with previous minor versions of
|
||
Python, if :func:`typing.get_type_hints` receives no namespace dictionary
|
||
arguments, :func:`typing.get_type_hints` will search through the global
|
||
then local namespaces during evaluation of stringized type annotations
|
||
(string forward references) inside a class.
|
||
|
||
- bpo-43945: [Enum] Deprecate non-standard mixin format() behavior: in 3.12
|
||
the enum member, not the member's value, will be used for format() calls.
|
||
|
||
- bpo-41139: Deprecate undocumented ``cgi.log()`` API.
|
||
|
||
- bpo-43937: Fixed the :mod:`turtle` module working with non-default root
|
||
window.
|
||
|
||
- bpo-43930: Update bundled pip to 21.1 and setuptools to 56.0.0
|
||
|
||
- bpo-43907: Fix a bug in the pure-Python pickle implementation when using
|
||
protocol 5, where bytearray instances that occur several time in the
|
||
pickled object graph would incorrectly unpickle into repeated copies of
|
||
the bytearray object.
|
||
|
||
- bpo-43926: In ``importlib.metadata``, provide a uniform interface to
|
||
``Description``, allow for any field to be encoded with multiline values,
|
||
remove continuation lines from multiline values, and add a ``.json``
|
||
property for easy access to the PEP 566 JSON-compatible form. Sync with
|
||
``importlib_metadata 4.0``.
|
||
|
||
- bpo-43920: OpenSSL 3.0.0: :meth:`~ssl.SSLContext.load_verify_locations`
|
||
now returns a consistent error message when cadata contains no valid
|
||
certificate.
|
||
|
||
- bpo-43607: :mod:`urllib` can now convert Windows paths with ``\\?\``
|
||
prefixes into URL paths.
|
||
|
||
- bpo-43817: Add :func:`inspect.get_annotations`, which safely computes the
|
||
annotations defined on an object. It works around the quirks of accessing
|
||
the annotations from various types of objects, and makes very few
|
||
assumptions about the object passed in. :func:`inspect.get_annotations`
|
||
can also correctly un-stringize stringized annotations.
|
||
|
||
:func:`inspect.signature`, :func:`inspect.from_callable`, and
|
||
:func:`inspect.from_function` now call :func:`inspect.get_annotations` to
|
||
retrieve annotations. This means :func:`inspect.signature` and
|
||
:func:`inspect.from_callable` can now un-stringize stringized annotations,
|
||
too.
|
||
|
||
- bpo-43284: platform.win32_ver derives the windows version from
|
||
sys.getwindowsversion().platform_version which in turn derives the version
|
||
from kernel32.dll (which can be of a different version than Windows
|
||
itself). Therefore change the platform.win32_ver to determine the version
|
||
using the platform module's _syscmd_ver private function to return an
|
||
accurate version.
|
||
|
||
- bpo-42854: The :mod:`ssl` module now uses ``SSL_read_ex`` and
|
||
``SSL_write_ex`` internally. The functions support reading and writing of
|
||
data larger than 2 GB. Writing zero-length data no longer fails with a
|
||
protocol violation error.
|
||
|
||
- bpo-42333: Port ``_ssl`` extension module to multiphase initialization.
|
||
|
||
- bpo-43880: :mod:`ssl` now raises DeprecationWarning for OP_NO_SSL/TLS*
|
||
options, old TLS versions, old protocols, and other features that have
|
||
been deprecated since Python 3.6, 3.7, or OpenSSL 1.1.0.
|
||
|
||
- bpo-41559: :pep:`612` is now implemented purely in Python; builtin
|
||
``types.GenericAlias`` objects no longer include ``typing.ParamSpec`` in
|
||
``__parameters__`` (with the exception of ``collections.abc.Callable``\ 's
|
||
``GenericAlias``). This means previously invalid uses of ``ParamSpec``
|
||
(such as ``list[P]``) which worked in earlier versions of Python 3.10
|
||
alpha, will now raise ``TypeError`` during substitution.
|
||
|
||
- bpo-43867: The :mod:`multiprocessing` ``Server`` class now explicitly
|
||
catches :exc:`SystemExit` and closes the client connection in this case.
|
||
It happens when the ``Server.serve_client()`` method reaches the end of
|
||
file (EOF).
|
||
|
||
- bpo-40443: Remove unused imports: pyclbr no longer uses copy, and typing
|
||
no longer uses ast. Patch by Victor Stinner.
|
||
|
||
- bpo-43820: Remove an unneeded copy of the namespace passed to
|
||
dataclasses.make_dataclass().
|
||
|
||
- bpo-43787: Add ``__iter__()`` method to :class:`bz2.BZ2File`,
|
||
:class:`gzip.GzipFile`, and :class:`lzma.LZMAFile`. It makes iterating
|
||
them about 2x faster. Patch by Inada Naoki.
|
||
|
||
- bpo-43680: Deprecate io.OpenWrapper and _pyio.OpenWrapper: use io.open and
|
||
_pyio.open instead. Until Python 3.9, _pyio.open was not a static method
|
||
and builtins.open was set to OpenWrapper to not become a bound method when
|
||
set to a class variable. _io.open is a built-in function whereas
|
||
_pyio.open is a Python function. In Python 3.10, _pyio.open() is now a
|
||
static method, and builtins.open() is now io.open().
|
||
|
||
- bpo-43680: The Python :func:`_pyio.open` function becomes a static method
|
||
to behave as :func:`io.open` built-in function: don't become a bound
|
||
method when stored as a class variable. It becomes possible since static
|
||
methods are now callable in Python 3.10. Moreover,
|
||
:func:`_pyio.OpenWrapper` becomes a simple alias to :func:`_pyio.open`.
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-41515: Fix :exc:`KeyError` raised in :func:`typing.get_type_hints` due
|
||
to synthetic modules that don't appear in ``sys.modules``.
|
||
|
||
- bpo-43776: When :class:`subprocess.Popen` args are provided as a string or
|
||
as :class:`pathlib.Path`, the Popen instance repr now shows the right
|
||
thing.
|
||
|
||
- bpo-42248: [Enum] ensure exceptions raised in ``_missing__`` are released
|
||
|
||
- bpo-43744: fix issue with enum member name matching the start of a private
|
||
variable name
|
||
|
||
- bpo-43772: Fixed the return value of ``TypeVar.__ror__``. Patch by Jelle
|
||
Zijlstra.
|
||
|
||
- bpo-43764: Add match_args parameter to @dataclass decorator to allow
|
||
suppression of __match_args__ generation.
|
||
|
||
- bpo-43799: OpenSSL 3.0.0: define ``OPENSSL_API_COMPAT`` 1.1.1 to suppress
|
||
deprecation warnings. Python requires OpenSSL 1.1.1 APIs.
|
||
|
||
- bpo-43478: Mocks can no longer be used as the specs for other Mocks. As a
|
||
result, an already-mocked object cannot have an attribute mocked using
|
||
``autospec=True`` or be the subject of a ``create_autospec(...)`` call.
|
||
This can uncover bugs in tests since these Mock-derived Mocks will always
|
||
pass certain tests (e.g. :func:`isinstance`) and builtin assert functions
|
||
(e.g. assert_called_once_with) will unconditionally pass.
|
||
|
||
- bpo-43794: Add :data:`ssl.OP_IGNORE_UNEXPECTED_EOF` constants (OpenSSL
|
||
3.0.0)
|
||
|
||
- bpo-43785: Improve ``bz2.BZ2File`` performance by removing the RLock from
|
||
BZ2File. This makes BZ2File thread unsafe in the face of multiple
|
||
simultaneous readers or writers, just like its equivalent classes in
|
||
:mod:`gzip` and :mod:`lzma` have always been. Patch by Inada Naoki.
|
||
|
||
- bpo-43789: OpenSSL 3.0.0: Don't call the password callback function a
|
||
second time when first call has signaled an error condition.
|
||
|
||
- bpo-43788: The header files for :mod:`ssl` error codes are now OpenSSL
|
||
version-specific. Exceptions will now show correct reason and library
|
||
codes. The ``make_ssl_data.py`` script has been rewritten to use OpenSSL's
|
||
text file with error codes.
|
||
|
||
- bpo-43766: Implement :pep:`647` in the :mod:`typing` module by adding
|
||
:data:`TypeGuard`.
|
||
|
||
- bpo-25264: :func:`os.path.realpath` now accepts a *strict* keyword-only
|
||
argument. When set to ``True``, :exc:`OSError` is raised if a path doesn't
|
||
exist or a symlink loop is encountered.
|
||
|
||
- bpo-43780: In ``importlib.metadata``, incorporate changes from
|
||
importlib_metadata 3.10: Add mtime-based caching during distribution
|
||
discovery. Flagged use of dict result from ``entry_points()`` as
|
||
deprecated.
|
||
|
||
- The ``P.args`` and ``P.kwargs`` attributes of :class:`typing.ParamSpec`
|
||
are now instances of the new classes :class:`typing.ParamSpecArgs` and
|
||
:class:`typing.ParamSpecKwargs`, which enables a more useful ``repr()``.
|
||
Patch by Jelle Zijlstra.
|
||
|
||
- bpo-43731: Add an ``encoding`` parameter :func:`logging.fileConfig()`.
|
||
|
||
- bpo-43712: Add ``encoding`` and ``errors`` parameters to
|
||
:func:`fileinput.input` and :class:`fileinput.FileInput`.
|
||
|
||
- bpo-38659: A ``simple_enum`` decorator is added to the ``enum`` module to
|
||
convert a normal class into an Enum. ``test_simple_enum`` added to test
|
||
simple enums against a corresponding normal Enum. Standard library
|
||
modules updated to use ``simple_enum``.
|
||
|
||
- bpo-43764: Fix an issue where :data:`~object.__match_args__` generation
|
||
could fail for some :mod:`dataclasses`.
|
||
|
||
- bpo-43752: Fix :mod:`sqlite3` regression for zero-sized blobs with
|
||
converters, where ``b""`` was returned instead of ``None``. The regression
|
||
was introduced by PR 24723. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-43655: :mod:`tkinter` dialog windows are now recognized as dialogs by
|
||
window managers on macOS and X Window.
|
||
|
||
- bpo-43723: The following ``threading`` methods are now deprecated and
|
||
should be replaced:
|
||
|
||
- ``currentThread`` => :func:`threading.current_thread`
|
||
|
||
- ``activeCount`` => :func:`threading.active_count`
|
||
|
||
- ``Condition.notifyAll`` => :meth:`threading.Condition.notify_all`
|
||
|
||
- ``Event.isSet`` => :meth:`threading.Event.is_set`
|
||
|
||
- ``Thread.setName`` => :attr:`threading.Thread.name`
|
||
|
||
- ``thread.getName`` => :attr:`threading.Thread.name`
|
||
|
||
- ``Thread.isDaemon`` => :attr:`threading.Thread.daemon`
|
||
|
||
- ``Thread.setDaemon`` => :attr:`threading.Thread.daemon`
|
||
|
||
Patch by Jelle Zijlstra.
|
||
|
||
- bpo-2135: Deprecate find_module() and find_loader() implementations in
|
||
importlib and zipimport.
|
||
|
||
- bpo-43534: :func:`turtle.textinput` and :func:`turtle.numinput` create now
|
||
a transient window working on behalf of the canvas window.
|
||
|
||
- bpo-43532: Add the ability to specify keyword-only fields to dataclasses.
|
||
These fields will become keyword-only arguments to the generated __init__.
|
||
|
||
- bpo-43522: Fix problem with
|
||
:attr:`~ssl.SSLContext.hostname_checks_common_name`. OpenSSL does not copy
|
||
hostflags from *struct SSL_CTX* to *struct SSL*.
|
||
|
||
- bpo-8978: Improve error message for :func:`tarfile.open` when :mod:`lzma`
|
||
/ :mod:`bz2` are unavailable. Patch by Anthony Sottile.
|
||
|
||
- bpo-42967: Allow :class:`bytes` ``separator`` argument in
|
||
``urllib.parse.parse_qs`` and ``urllib.parse.parse_qsl`` when parsing
|
||
:class:`str` query strings. Previously, this raised a ``TypeError``.
|
||
|
||
- bpo-43296: Improve :mod:`sqlite3` error handling: ``sqlite3_value_blob()``
|
||
errors that set ``SQLITE_NOMEM`` now raise :exc:`MemoryError`. Patch by
|
||
Erlend E. Aasland.
|
||
|
||
- bpo-43312: New functions :func:`sysconfig.get_preferred_scheme` and
|
||
:func:`sysconfig.get_default_scheme` are added to query a platform for its
|
||
preferred "user", "home", and "prefix" (default) scheme names.
|
||
|
||
- bpo-43265: Improve :meth:`sqlite3.Connection.backup` error handling. The
|
||
error message for non-existent target database names is now ``unknown
|
||
database <database name>`` instead of ``SQL logic error``. Patch by Erlend
|
||
E. Aasland.
|
||
|
||
- bpo-41282: Install schemes in :mod:`distutils.command.install` are now
|
||
loaded from :mod:`sysconfig`.
|
||
|
||
- bpo-41282: :mod:`distutils.sysconfig` has been merged to :mod:`sysconfig`.
|
||
|
||
- bpo-43176: Fixed processing of a dataclass that inherits from a frozen
|
||
dataclass with no fields. It is now correctly detected as an error.
|
||
|
||
- bpo-43080: :mod:`pprint` now has support for
|
||
:class:`dataclasses.dataclass`. Patch by Lewis Gaul.
|
||
|
||
- bpo-39950: Add `pathlib.Path.hardlink_to()` method that supersedes
|
||
`link_to()`. The new method has the same argument order as `symlink_to()`.
|
||
|
||
- bpo-42904: :func:`typing.get_type_hints` now checks the local namespace of
|
||
a class when evaluating :pep:`563` annotations inside said class.
|
||
|
||
- bpo-42269: Add ``slots`` parameter to ``dataclasses.dataclass`` decorator
|
||
to automatically generate ``__slots__`` for class. Patch provided by Yurii
|
||
Karabas.
|
||
|
||
- bpo-39529: Deprecated use of :func:`asyncio.get_event_loop` without
|
||
running event loop. Emit deprecation warning for :mod:`asyncio` functions
|
||
which implicitly create a :class:`~asyncio.Future` or
|
||
:class:`~asyncio.Task` objects if there is no running event loop and no
|
||
explicit *loop* argument is passed: :func:`~asyncio.ensure_future`,
|
||
:func:`~asyncio.wrap_future`, :func:`~asyncio.gather`,
|
||
:func:`~asyncio.shield`, :func:`~asyncio.as_completed` and constructors of
|
||
:class:`~asyncio.Future`, :class:`~asyncio.Task`,
|
||
:class:`~asyncio.StreamReader`, :class:`~asyncio.StreamReaderProtocol`.
|
||
|
||
- bpo-18369: Certificate and PrivateKey classes were added to the ssl
|
||
module. Certificates and keys can now be loaded from memory buffer, too.
|
||
|
||
- bpo-41486: Use a new output buffer management code for :mod:`bz2` /
|
||
:mod:`lzma` / :mod:`zlib` modules, and add ``.readall()`` function to
|
||
``_compression.DecompressReader`` class. These bring some performance
|
||
improvements. Patch by Ma Lin.
|
||
|
||
- bpo-31870: The :func:`ssl.get_server_certificate` function now has a
|
||
*timeout* parameter.
|
||
|
||
- bpo-41735: Fix thread locks in zlib module may go wrong in rare case.
|
||
Patch by Ma Lin.
|
||
|
||
- bpo-36470: Fix dataclasses with ``InitVar``\s and
|
||
:func:`~dataclasses.replace()`. Patch by Claudiu Popa.
|
||
|
||
- bpo-40849: Expose X509_V_FLAG_PARTIAL_CHAIN ssl flag
|
||
|
||
- bpo-35114: :func:`ssl.RAND_status` now returns a boolean value (as
|
||
documented) instead of ``1`` or ``0``.
|
||
|
||
- bpo-39906: :meth:`pathlib.Path.stat` and :meth:`~pathlib.Path.chmod` now
|
||
accept a *follow_symlinks* keyword-only argument for consistency with
|
||
corresponding functions in the :mod:`os` module.
|
||
|
||
- bpo-39899: :func:`os.path.expanduser()` now refuses to guess Windows home
|
||
directories if the basename of current user's home directory does not
|
||
match their username.
|
||
|
||
:meth:`pathlib.Path.expanduser()` and :meth:`~pathlib.Path.home()` now
|
||
consistently raise :exc:`RuntimeError` exception when a home directory
|
||
cannot be resolved. Previously a :exc:`KeyError` exception could be raised
|
||
on Windows when the ``"USERNAME"`` environment variable was unset.
|
||
|
||
- bpo-36076: Added SNI support to :func:`ssl.get_server_certificate`.
|
||
|
||
- bpo-38490: Covariance, Pearson's correlation, and simple linear regression
|
||
functionality was added to statistics module. Patch by Tymoteusz Wołodźko.
|
||
|
||
- bpo-33731: Provide a locale.localize() function, which converts a
|
||
normalized number string into a locale format.
|
||
|
||
- bpo-32745: Fix a regression in the handling of ctypes'
|
||
:data:`ctypes.c_wchar_p` type: embedded null characters would cause a
|
||
:exc:`ValueError` to be raised. Patch by Zackery Spytz.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-43987: Add "Annotations Best Practices" document as a new HOWTO.
|
||
|
||
- bpo-43977: Document the new :const:`Py_TPFLAGS_MAPPING` and
|
||
:const:`Py_TPFLAGS_SEQUENCE` type flags.
|
||
|
||
- bpo-43959: The documentation on the PyContextVar C-API was clarified.
|
||
|
||
- bpo-43938: Update dataclasses documentation to express that
|
||
FrozenInstanceError is derived from AttributeError.
|
||
|
||
- bpo-43778: Fix the Sphinx glossary_search extension: create the _static/
|
||
sub-directory if it doesn't exist.
|
||
|
||
- bpo-43755: Update documentation to reflect that unparenthesized lambda
|
||
expressions can no longer be the expression part in an ``if`` clause in
|
||
comprehensions and generator expressions since Python 3.9.
|
||
|
||
- bpo-43739: Fixing the example code in Doc/extending/extending.rst to
|
||
declare and initialize the pmodule variable to be of the right type.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-43961: Fix test_logging.test_namer_rotator_inheritance() on Windows:
|
||
use :func:`os.replace` rather than :func:`os.rename`. Patch by Victor
|
||
Stinner.
|
||
|
||
- bpo-43842: Fix a race condition in the SMTP test of test_logging. Don't
|
||
close a file descriptor (socket) from a different thread while
|
||
asyncore.loop() is polling the file descriptor. Patch by Victor Stinner.
|
||
|
||
- bpo-43843: :mod:`test.libregrtest` now marks a test as ENV_CHANGED
|
||
(altered the execution environment) if a thread raises an exception but
|
||
does not catch it. It sets a hook on :func:`threading.excepthook`. Use
|
||
``--fail-env-changed`` option to mark the test as failed. Patch by Victor
|
||
Stinner.
|
||
|
||
- bpo-43811: Tests multiple OpenSSL versions on GitHub Actions. Use ccache
|
||
to speed up testing.
|
||
|
||
- bpo-43791: OpenSSL 3.0.0: Disable testing of legacy protocols TLS 1.0 and
|
||
1.1. Tests are failing with TLSV1_ALERT_INTERNAL_ERROR.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-43567: Improved generated code refresh (AST/tokens/opcodes/keywords)
|
||
on Windows.
|
||
|
||
- bpo-43669: Implement :pep:`644`. Python now requires OpenSSL 1.1.1 or
|
||
newer.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-35306: Adds additional arguments to :func:`os.startfile` function.
|
||
|
||
- bpo-43538: Avoid raising errors from :meth:`pathlib.Path.exists()` when
|
||
passed an invalid filename.
|
||
|
||
- bpo-38822: Fixed :func:`os.stat` failing on inaccessible directories with
|
||
a trailing slash, rather than falling back to the parent directory's
|
||
metadata. This implicitly affected :func:`os.path.exists` and
|
||
:func:`os.path.isdir`.
|
||
|
||
- bpo-26227: Fixed decoding of host names in :func:`socket.gethostbyaddr`
|
||
and :func:`socket.gethostbyname_ex`.
|
||
|
||
- bpo-40432: Updated pegen regeneration script on Windows to find and use
|
||
Python 3.8 or higher. Prior to this, pegen regeneration already required
|
||
3.8 or higher, but the script may have used lower versions of Python.
|
||
|
||
- bpo-43745: Actually updates Windows release to OpenSSL 1.1.1k. Earlier
|
||
releases were mislabelled and actually included 1.1.1i again.
|
||
|
||
- bpo-43652: Update Tcl and Tk to 8.6.11 in Windows installer.
|
||
|
||
- bpo-43492: Upgrade Windows installer to use SQLite 3.35.5.
|
||
|
||
- bpo-30555: Fix ``WindowsConsoleIO`` errors in the presence of fd
|
||
redirection. Patch by Segev Finer.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-42119: Fix check for macOS SDK paths when building Python. Narrow
|
||
search to match contents of SDKs, namely only files in
|
||
``/System/Library``, ``/System/IOSSupport``, and ``/usr`` other than
|
||
``/usr/local``. Previously, anything under ``/System`` was assumed to be
|
||
in an SDK which causes problems with the new file system layout in 10.15+
|
||
where user file systems may appear to be mounted under ``/System``. Paths
|
||
in ``/Library`` were also incorrectly treated as SDK locations.
|
||
|
||
- bpo-43568: Drop support for MACOSX_DEPLOYMENT_TARGET < 10.3
|
||
|
||
- bpo-44009: Provide "python3.x-intel64" executable to allow reliably
|
||
forcing macOS universal2 framework builds to run under Rosetta 2 Intel-64
|
||
emulation on Apple Silicon Macs. This can be useful for testing or when
|
||
universal2 wheels are not yet available.
|
||
|
||
- bpo-43851: Build SQLite with ``SQLITE_OMIT_AUTOINIT`` on macOS. Patch by
|
||
Erlend E. Aasland.
|
||
|
||
- bpo-43492: Update macOS installer to use SQLite 3.35.4.
|
||
|
||
- bpo-42235: ``Mac/BuildScript/build-installer.py`` will now use
|
||
"--enable-optimizations" and ``--with-lto`` when building on macOS 10.15
|
||
or later.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-37903: Add mouse actions to the shell sidebar. Left click and
|
||
optional drag selects one or more lines, as with the editor line number
|
||
sidebar. Right click after selecting raises a context menu with 'copy
|
||
with prompts'. This zips together prompts from the sidebar with lines
|
||
from the selected text.
|
||
|
||
- bpo-43981: Fix reference leak in test_sidebar and test_squeezer. Patches
|
||
by Terry Jan Reedy and Pablo Galindo
|
||
|
||
- bpo-37892: Indent IDLE Shell input with spaces instead of tabs
|
||
|
||
- bpo-43655: IDLE dialog windows are now recognized as dialogs by window
|
||
managers on macOS and X Window.
|
||
|
||
- bpo-37903: IDLE's shell now shows prompts in a separate side-bar.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-43916: Add a new :c:data:`Py_TPFLAGS_DISALLOW_INSTANTIATION` type flag
|
||
to disallow creating type instances. Patch by Victor Stinner.
|
||
|
||
- bpo-43774: Remove the now unused ``PYMALLOC_DEBUG`` macro. Debug hooks on
|
||
memory allocators are now installed by default if Python is built in debug
|
||
mode (if ``Py_DEBUG`` macro is defined). Moreover, they can now be used on
|
||
Python build in release mode (ex: using ``PYTHONMALLOC=debug`` environment
|
||
variable).
|
||
|
||
- bpo-43962: _PyInterpreterState_IDIncref() now calls
|
||
_PyInterpreterState_IDInitref() and always increments id_refcount.
|
||
Previously, calling _xxsubinterpreters.get_current() could create an
|
||
id_refcount inconsistency when a _xxsubinterpreters.InterpreterID object
|
||
was deallocated. Patch by Victor Stinner.
|
||
|
||
- bpo-28254: Add new C-API functions to control the state of the garbage
|
||
collector: :c:func:`PyGC_Enable()`, :c:func:`PyGC_Disable()`,
|
||
:c:func:`PyGC_IsEnabled()`, corresponding to the functions in the
|
||
:mod:`gc` module.
|
||
|
||
- bpo-43908: Introduce :const:`Py_TPFLAGS_IMMUTABLETYPE` flag for immutable
|
||
type objects, and modify :c:func:`PyType_Ready` to set it for static
|
||
types. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-43795: :c:func:`PyMem_Calloc` is now available in the limited C API
|
||
(``Py_LIMITED_API``).
|
||
|
||
- bpo-43868: :c:func:`PyOS_ReadlineFunctionPointer` is no longer exported by
|
||
limited C API headers and by ``python3.dll`` on Windows. Like any function
|
||
that takes ``FILE*``, it is not part of the stable ABI.
|
||
|
||
- bpo-43795: Stable ABI and limited API definitions are generated from a
|
||
central manifest (:pep:`652`).
|
||
|
||
- bpo-43753: Add the :c:func:`Py_Is(x, y) <Py_Is>` function to test if the
|
||
*x* object is the *y* object, the same as ``x is y`` in Python. Add also
|
||
the :c:func:`Py_IsNone`, :c:func:`Py_IsTrue`, :c:func:`Py_IsFalse`
|
||
functions to test if an object is, respectively, the ``None`` singleton,
|
||
the ``True`` singleton or the ``False`` singleton. Patch by Victor
|
||
Stinner.
|
||
|
||
|
||
What's New in Python 3.10.0 alpha 7?
|
||
====================================
|
||
|
||
*Release date: 2021-04-05*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-42988: CVE-2021-3426: Remove the ``getfile`` feature of the
|
||
:mod:`pydoc` module which could be abused to read arbitrary files on the
|
||
disk (directory traversal vulnerability). Moreover, even source code of
|
||
Python modules can contain sensitive data like passwords. Vulnerability
|
||
reported by David Schwörer.
|
||
|
||
- bpo-43285: :mod:`ftplib` no longer trusts the IP address value returned
|
||
from the server in response to the PASV command by default. This prevents
|
||
a malicious FTP server from using the response to probe IPv4 address and
|
||
port combinations on the client network.
|
||
|
||
Code that requires the former vulnerable behavior may set a
|
||
``trust_server_pasv_ipv4_address`` attribute on their :class:`ftplib.FTP`
|
||
instances to ``True`` to re-enable it.
|
||
|
||
- bpo-43439: Add audit hooks for :func:`gc.get_objects`,
|
||
:func:`gc.get_referrers` and :func:`gc.get_referents`. Patch by Pablo
|
||
Galindo.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-27129: Update CPython bytecode magic number.
|
||
|
||
- bpo-43672: Raise ImportWarning when calling find_loader().
|
||
|
||
- bpo-43660: Fix crash that happens when replacing ``sys.stderr`` with a
|
||
callable that can remove the object while an exception is being printed.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-27129: The bytecode interpreter uses instruction, rather byte, offsets
|
||
internally. This reduces the number of EXTENDED_ARG instructions needed
|
||
and streamlines instruction dispatch a bit.
|
||
|
||
- bpo-40645: Fix reference leak in the :mod:`_hashopenssl` extension. Patch
|
||
by Pablo Galindo.
|
||
|
||
- bpo-42134: Calls to find_module() by the import system now raise
|
||
ImportWarning.
|
||
|
||
- bpo-41064: Improve the syntax error for invalid usage of double starred
|
||
elements ('**') in f-strings. Patch by Pablo Galindo.
|
||
|
||
- bpo-43575: Speed up calls to ``map()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention. Patch by Dong-hee Na.
|
||
|
||
- bpo-42137: The import system now prefers using ``__spec__`` for
|
||
``ModuleType.__repr__`` over ``module_repr()``.
|
||
|
||
- bpo-43452: Added micro-optimizations to ``_PyType_Lookup()`` to improve
|
||
cache lookup performance in the common case of cache hits.
|
||
|
||
- bpo-43555: Report the column offset for :exc:`SyntaxError` for invalid
|
||
line continuation characters. Patch by Pablo Galindo.
|
||
|
||
- bpo-43517: Fix misdetection of circular imports when using ``from pkg.mod
|
||
import attr``, which caused false positives in non-trivial multi-threaded
|
||
code.
|
||
|
||
- bpo-43497: Emit SyntaxWarnings for assertions with tuple constants, this
|
||
is a regression introduced in python3.7
|
||
|
||
- bpo-39316: Tracing now has correct line numbers for attribute accesses
|
||
when the the attribute is on a different line from the object. Improves
|
||
debugging and profiling for multi-line method chains.
|
||
|
||
- bpo-35883: Python no longer fails at startup with a fatal error if a
|
||
command line argument contains an invalid Unicode character. The
|
||
:c:func:`Py_DecodeLocale` function now escapes byte sequences which would
|
||
be decoded as Unicode characters outside the [U+0000; U+10ffff] range.
|
||
|
||
- bpo-43410: Fix a bug that was causing the parser to crash when emitting
|
||
syntax errors when reading input from stdin. Patch by Pablo Galindo
|
||
|
||
- bpo-43406: Fix a possible race condition where ``PyErr_CheckSignals``
|
||
tries to execute a non-Python signal handler.
|
||
|
||
- bpo-42128: Add ``__match_args__`` to :c:type:`structsequence` based
|
||
classes. Patch by Pablo Galindo.
|
||
|
||
- bpo-43390: CPython now sets the ``SA_ONSTACK`` flag in ``PyOS_setsig`` for
|
||
the VM's default signal handlers. This is friendlier to other in-process
|
||
code that an extension module or embedding use could pull in (such as
|
||
Golang's cgo) where tiny thread stacks are the norm and ``sigaltstack()``
|
||
has been used to provide for signal handlers. This is a no-op change for
|
||
the vast majority of processes that don't use sigaltstack.
|
||
|
||
- bpo-43287: Speed up calls to ``filter()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention. Patch by Dong-hee Na.
|
||
|
||
- bpo-37448: Add a radix tree based memory map to track in-use obmalloc
|
||
arenas. Use to replace the old implementation of address_in_range(). The
|
||
radix tree approach makes it easy to increase pool sizes beyond the OS
|
||
page size. Boosting the pool and arena size allows obmalloc to handle a
|
||
significantly higher percentage of requests from its ultra-fast paths.
|
||
|
||
It also has the advantage of eliminating the memory unsanitary behavior of
|
||
the previous address_in_range(). The old address_in_range() was marked
|
||
with the annotations _Py_NO_SANITIZE_ADDRESS, _Py_NO_SANITIZE_THREAD, and
|
||
_Py_NO_SANITIZE_MEMORY. Those annotations are no longer needed.
|
||
|
||
To disable the radix tree map, set a preprocessor flag as follows:
|
||
`-DWITH_PYMALLOC_RADIX_TREE=0`.
|
||
|
||
Co-authored-by: Tim Peters <tim.peters@gmail.com>
|
||
|
||
- bpo-29988: Only handle asynchronous exceptions and requests to drop the
|
||
GIL when returning from a call or on the back edges of loops. Makes sure
|
||
that :meth:`__exit__` is always called in with statements, even for
|
||
interrupts.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-43720: Document various stdlib deprecations in imp, pkgutil, and
|
||
importlib.util for removal in Python 3.12.
|
||
|
||
- bpo-43433: :class:`xmlrpc.client.ServerProxy` no longer ignores query and
|
||
fragment in the URL of the server.
|
||
|
||
- bpo-31956: The :meth:`~array.array.index` method of :class:`array.array`
|
||
now has optional *start* and *stop* parameters.
|
||
|
||
- bpo-40066: Enum: adjust ``repr()`` to show only enum and member name (not
|
||
value, nor angle brackets) and ``str()`` to show only member name. Update
|
||
and improve documentation to match.
|
||
|
||
- bpo-42136: Deprecate all module_repr() methods found in importlib as their
|
||
use is being phased out by Python 3.12.
|
||
|
||
- bpo-35930: Raising an exception raised in a "future" instance will create
|
||
reference cycles.
|
||
|
||
- bpo-41369: Finish updating the vendored libmpdec to version 2.5.1. Patch
|
||
by Stefan Krah.
|
||
|
||
- bpo-43422: Revert the _decimal C API which was added in bpo-41324.
|
||
|
||
- bpo-43577: Fix deadlock when using :class:`ssl.SSLContext` debug callback
|
||
with :meth:`ssl.SSLContext.sni_callback`.
|
||
|
||
- bpo-43571: It's now possible to create MPTCP sockets with IPPROTO_MPTCP
|
||
|
||
- bpo-43542: ``image/heic`` and ``image/heif`` were added to
|
||
:mod:`mimetypes`.
|
||
|
||
- bpo-40645: The :mod:`hmac` module now uses OpenSSL's HMAC implementation
|
||
when digestmod argument is a hash name or builtin hash function.
|
||
|
||
- bpo-43510: Implement :pep:`597`: Add ``EncodingWarning`` warning, ``-X
|
||
warn_default_encoding`` option, :envvar:`PYTHONWARNDEFAULTENCODING`
|
||
environment variable and ``encoding="locale"`` argument value.
|
||
|
||
- bpo-43521: ``ast.unparse`` can now render NaNs and empty sets.
|
||
|
||
- bpo-42914: :func:`pprint.pprint` gains a new boolean
|
||
``underscore_numbers`` optional argument to emit integers with thousands
|
||
separated by an underscore character for improved readability (for example
|
||
``1_000_000`` instead of ``1000000``).
|
||
|
||
- bpo-41361: :meth:`~collections.deque.rotate` calls are now slightly faster
|
||
due to faster argument parsing.
|
||
|
||
- bpo-43423: :func:`subprocess.communicate` no longer raises an IndexError
|
||
when there is an empty stdout or stderr IO buffer during a timeout on
|
||
Windows.
|
||
|
||
- bpo-27820: Fixed long-standing bug of smtplib.SMTP where doing AUTH LOGIN
|
||
with initial_response_ok=False will fail.
|
||
|
||
The cause is that SMTP.auth_login _always_ returns a password if provided
|
||
with a challenge string, thus non-compliant with the standard for AUTH
|
||
LOGIN.
|
||
|
||
Also fixes bug with the test for smtpd.
|
||
|
||
- bpo-43445: Add frozen modules to :data:`sys.stdlib_module_names`. For
|
||
example, add ``"_frozen_importlib"`` and ``"_frozen_importlib_external"``
|
||
names.
|
||
|
||
- bpo-43245: Add keyword arguments support to ``ChainMap.new_child()``.
|
||
|
||
- bpo-29982: Add optional parameter *ignore_cleanup_errors* to
|
||
:func:`tempfile.TemporaryDirectory` and allow multiple :func:`cleanup`
|
||
attempts. Contributed by C.A.M. Gerlach.
|
||
|
||
- bpo-43428: Include changes from `importlib_metadata 3.7
|
||
<https://importlib-metadata.readthedocs.io/en/latest/history.html#v3-7-0>`_:
|
||
|
||
Performance enhancements to distribution discovery.
|
||
|
||
``entry_points`` only returns unique distributions.
|
||
|
||
Introduces new ``EntryPoints`` object for containing a set of entry points
|
||
with convenience methods for selecting entry points by group or name.
|
||
``entry_points`` now returns this object if selection parameters are
|
||
supplied but continues to return a dict object for compatibility. Users
|
||
are encouraged to rely on the selection interface. The dict object result
|
||
is likely to be deprecated in the future.
|
||
|
||
Added packages_distributions function to return a mapping of packages to
|
||
the distributions that provide them.
|
||
|
||
- bpo-43332: Improves the networking efficiency of :mod:`http.client` when
|
||
using a proxy via :meth:`~HTTPConnection.set_tunnel`. Fewer small send
|
||
calls are made during connection setup.
|
||
|
||
- bpo-43420: Improve performance of :class:`fractions.Fraction` arithmetics
|
||
for large components. Contributed by Sergey B. Kirpichev.
|
||
|
||
- bpo-43356: Allow passing a signal number to ``_thread.interrupt_main()``.
|
||
|
||
- bpo-43399: Fix ``ElementTree.extend`` not working on iterators when using
|
||
the Python implementation
|
||
|
||
- bpo-43369: Improve :mod:`sqlite3` error handling: If
|
||
``sqlite3_column_text()`` and ``sqlite3_column_blob()`` set
|
||
``SQLITE_NOMEM``, :exc:`MemoryError` is now raised. Patch by Erlend E.
|
||
Aasland.
|
||
|
||
- bpo-43368: Fix a regression introduced in PR 24562, where an empty
|
||
bytestring was fetched as ``None`` instead of ``b''`` in :mod:`sqlite3`.
|
||
Patch by Mariusz Felisiak.
|
||
|
||
- bpo-41282: Fixed stacklevel of ``DeprecationWarning`` emitted from
|
||
``import distutils``.
|
||
|
||
- bpo-42129: ``importlib.resources`` now honors namespace packages, merging
|
||
resources from each location in the namespace as introduced in
|
||
``importlib_resources`` 3.2 and including incidental changes through
|
||
5.0.3.
|
||
|
||
- bpo-43295: :meth:`datetime.datetime.strptime` now raises ``ValueError``
|
||
instead of ``IndexError`` when matching ``'z'`` with the ``%z`` format
|
||
specifier.
|
||
|
||
- bpo-43125: Return empty string if base64mime.body_encode receive empty
|
||
bytes
|
||
|
||
- bpo-43084: :func:`curses.window.enclose` returns now ``True`` or ``False``
|
||
(as was documented) instead of ``1`` or ``0``.
|
||
|
||
- bpo-42994: Add MIME types for opus, AAC, 3gpp and 3gpp2
|
||
|
||
- bpo-14678: Add an invalidate_caches() method to the zipimport.zipimporter
|
||
class to support importlib.invalidate_caches(). Patch by Desmond Cheong.
|
||
|
||
- bpo-42782: Fail fast in :func:`shutil.move()` to avoid creating
|
||
destination directories on failure.
|
||
|
||
- bpo-40066: Enum's `repr()` and `str()` have changed: `repr()` is now
|
||
*EnumClass.MemberName* and `str()` is *MemberName*. Additionally, stdlib
|
||
Enum's whose contents are available as module attributes, such as
|
||
`RegexFlag.IGNORECASE`, have their `repr()` as *module.name*, e.g.
|
||
`re.IGNORECASE`.
|
||
|
||
- bpo-26053: Fixed bug where the :mod:`pdb` interactive run command echoed
|
||
the args from the shell command line, even if those have been overridden
|
||
at the pdb prompt.
|
||
|
||
- bpo-24160: Fixed bug where breakpoints did not persist across multiple
|
||
debugger sessions in :mod:`pdb`'s interactive mode.
|
||
|
||
- bpo-40701: When the :data:`tempfile.tempdir` global variable is set to a
|
||
value of type bytes, it is now handled consistently. Previously
|
||
exceptions could be raised from some tempfile APIs when the directory did
|
||
not already exist in this situation. Also ensures that the
|
||
:func:`tempfile.gettempdir()` and :func:`tempfile.gettempdirb()` functions
|
||
*always* return ``str`` and ``bytes`` respectively.
|
||
|
||
- bpo-39342: Expose ``X509_V_FLAG_ALLOW_PROXY_CERTS`` as
|
||
:data:`~ssl.VERIFY_ALLOW_PROXY_CERTS` to allow proxy certificate
|
||
validation as explained in
|
||
https://www.openssl.org/docs/man1.1.1/man7/proxy-certificates.html.
|
||
|
||
- bpo-31861: Add builtins.aiter and builtins.anext. Patch by Joshua Bronson
|
||
(@jab), Daniel Pope (@lordmauve), and Justin Wang (@justin39).
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-43199: Answer "Why is there no goto?" in the Design and History FAQ.
|
||
|
||
- bpo-43407: Clarified that a result from :func:`time.monotonic`,
|
||
:func:`time.perf_counter`, :func:`time.process_time`, or
|
||
:func:`time.thread_time` can be compared with the result from any
|
||
following call to the same function - not just the next immediate call.
|
||
|
||
- bpo-43354: Fix type documentation for ``Fault.faultCode``; the type has to
|
||
be ``int`` instead of ``str``.
|
||
|
||
- bpo-41933: Clarified wording of s * n in the Common Sequence Operations
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-37945: Fix test_getsetlocale_issue1813() of test_locale: skip the test
|
||
if ``setlocale()`` fails. Patch by Victor Stinner.
|
||
|
||
- bpo-41561: Add workaround for Ubuntu's custom OpenSSL security level
|
||
policy.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-43179: Introduce and correctly use ALIGNOF_X in place of SIZEOF_X for
|
||
alignment-related code in optimized string routines. Patch by Jessica
|
||
Clarke.
|
||
|
||
- bpo-43631: Update macOS, Windows, and CI to OpenSSL 1.1.1k.
|
||
|
||
- bpo-43617: Improve configure.ac: Check for presence of autoconf-archive
|
||
package and remove our copies of M4 macros.
|
||
|
||
- bpo-43466: The ``configure`` script now supports ``--with-openssl-rpath``
|
||
option.
|
||
|
||
- bpo-43372: Use ``_freeze_importlib`` to generate code for the
|
||
``__hello__`` module. This approach ensures the code matches the
|
||
interpreter version. Previously, PYTHON_FOR_REGEN was used to generate
|
||
the code, which might be wrong. The marshal format for code objects has
|
||
changed with bpo-42246, commit 877df851. Update the code and the expected
|
||
code sizes in ctypes test_frozentable.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-43440: Build :mod:`sqlite3` with the ``R*Tree`` module enabled. Patch
|
||
by Erlend E. Aasland.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-42225: Document that IDLE can fail on Unix either from misconfigured
|
||
IP masquerade rules or failure displaying complex colored (non-ascii)
|
||
characters.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-43688: The limited C API is now supported if Python is built in debug
|
||
mode (if the ``Py_DEBUG`` macro is defined). In the limited C API, the
|
||
:c:func:`Py_INCREF` and :c:func:`Py_DECREF` functions are now implemented
|
||
as opaque function calls, rather than accessing directly the
|
||
:c:member:`PyObject.ob_refcnt` member, if Python is built in debug mode
|
||
and the ``Py_LIMITED_API`` macro targets Python 3.10 or newer. It became
|
||
possible to support the limited C API in debug mode because the
|
||
:c:type:`PyObject` structure is the same in release and debug mode since
|
||
Python 3.8 (see :issue:`36465`).
|
||
|
||
The limited C API is still not supported in the ``--with-trace-refs``
|
||
special build (``Py_TRACE_REFS`` macro).
|
||
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-43244: Remove the ``pyarena.h`` header file with functions:
|
||
|
||
* ``PyArena_New()``
|
||
* ``PyArena_Free()``
|
||
* ``PyArena_Malloc()``
|
||
* ``PyArena_AddPyObject()``
|
||
|
||
These functions were undocumented, excluded from the limited C API, and
|
||
were only used internally by the compiler. Patch by Victor Stinner.
|
||
|
||
- bpo-43244: Remove the compiler and parser functions using ``struct _mod``
|
||
type, because the public AST C API was removed:
|
||
|
||
* ``PyAST_Compile()``
|
||
* ``PyAST_CompileEx()``
|
||
* ``PyAST_CompileObject()``
|
||
* ``PyFuture_FromAST()``
|
||
* ``PyFuture_FromASTObject()``
|
||
* ``PyParser_ASTFromFile()``
|
||
* ``PyParser_ASTFromFileObject()``
|
||
* ``PyParser_ASTFromFilename()``
|
||
* ``PyParser_ASTFromString()``
|
||
* ``PyParser_ASTFromStringObject()``
|
||
|
||
These functions were undocumented and excluded from the limited C API.
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-43244: Remove ``ast.h``, ``asdl.h``, and ``Python-ast.h`` header
|
||
files. These functions were undocumented and excluded from the limited C
|
||
API. Most names defined by these header files were not prefixed by ``Py``
|
||
and so could create names conflicts. For example, ``Python-ast.h`` defined
|
||
a ``Yield`` macro which was conflict with the ``Yield`` name used by the
|
||
Windows ``<winbase.h>`` header. Use the Python :mod:`ast` module instead.
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-43541: Fix a ``PyEval_EvalCodeEx()`` regression: fix reference
|
||
counting on builtins. Patch by Victor Stinner.
|
||
|
||
- bpo-43244: Remove the ``symtable.h`` header file and the undocumented
|
||
functions:
|
||
|
||
* ``PyST_GetScope()``
|
||
* ``PySymtable_Build()``
|
||
* ``PySymtable_BuildObject()``
|
||
* ``PySymtable_Free()``
|
||
* ``Py_SymtableString()``
|
||
* ``Py_SymtableStringObject()``
|
||
|
||
The ``Py_SymtableString()`` function was part the stable ABI by mistake
|
||
but it could not be used, because the ``symtable.h`` header file was
|
||
excluded from the limited C API.
|
||
|
||
The Python :mod:`symtable` module remains available and is unchanged.
|
||
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-43244: Remove the ``PyAST_Validate()`` function. It is no longer
|
||
possible to build a AST object (``mod_ty`` type) with the public C API.
|
||
The function was already excluded from the limited C API (:pep:`384`).
|
||
Patch by Victor Stinner.
|
||
|
||
|
||
What's New in Python 3.10.0 alpha 6?
|
||
====================================
|
||
|
||
*Release date: 2021-03-01*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-42967: Fix web cache poisoning vulnerability by defaulting the query
|
||
args separator to ``&``, and allowing the user to choose a custom
|
||
separator.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-43321: Fix ``SystemError`` raised when ``PyArg_Parse*()`` is used with
|
||
``#`` but without ``PY_SSIZE_T_CLEAN`` defined.
|
||
|
||
- bpo-36346: ``PyArg_Parse*()`` functions now emits ``DeprecationWarning``
|
||
when ``u`` or ``Z`` format is used. See :pep:`623` for detail.
|
||
|
||
- bpo-43277: Add a new :c:func:`PySet_CheckExact` function to the C-API to
|
||
check if an object is an instance of :class:`set` but not an instance of a
|
||
subtype. Patch by Pablo Galindo.
|
||
|
||
- bpo-42990: The :data:`types.FunctionType` constructor now inherits the
|
||
current builtins if the *globals* dictionary has no ``"__builtins__"``
|
||
key, rather than using ``{"None": None}`` as builtins: same behavior as
|
||
:func:`eval` and :func:`exec` functions. Defining a function with ``def
|
||
function(...): ...`` in Python is not affected, globals cannot be
|
||
overridden with this syntax: it also inherits the current builtins. Patch
|
||
by Victor Stinner.
|
||
|
||
- bpo-42990: Functions have a new ``__builtins__`` attribute which is used
|
||
to look for builtin symbols when a function is executed, instead of
|
||
looking into ``__globals__['__builtins__']``. Patch by Mark Shannon and
|
||
Victor Stinner.
|
||
|
||
- bpo-43149: Improve the error message in the parser for exception groups
|
||
without parentheses. Patch by Pablo Galindo.
|
||
|
||
- bpo-43121: Fixed an incorrect :exc:`SyntaxError` message for missing comma
|
||
in literals. Patch by Pablo Galindo.
|
||
|
||
- bpo-42819: :mod:`readline`: Explicitly disable bracketed paste in the
|
||
interactive interpreter, even if it's set in the inputrc, is enabled by
|
||
default (eg GNU Readline 8.1), or a user calls
|
||
``readline.read_init_file()``. The Python REPL has not implemented
|
||
bracketed paste support. Also, bracketed mode writes the ``"\x1b[?2004h"``
|
||
escape sequence into stdout which causes test failures in applications
|
||
that don't support it. It can still be explicitly enabled by calling
|
||
``readline.parse_and_bind("set enable-bracketed-paste on")``. Patch by
|
||
Dustin Rodrigues.
|
||
|
||
- bpo-42808: Simple calls to ``type(object)`` are now faster due to the
|
||
``vectorcall`` calling convention. Patch by Dennis Sweeney.
|
||
|
||
- bpo-42217: Make the compiler merges same co_code and co_linetable objects
|
||
in a module like already did for co_consts.
|
||
|
||
- bpo-41972: Substring search functions such as ``str1 in str2`` and
|
||
``str2.find(str1)`` now sometimes use the "Two-Way" string comparison
|
||
algorithm to avoid quadratic behavior on long strings.
|
||
|
||
- bpo-42128: Implement :pep:`634` (structural pattern matching). Patch by
|
||
Brandt Bucher.
|
||
|
||
- bpo-40692: In the :class:`concurrent.futures.ProcessPoolExecutor`,
|
||
validate that :func:`multiprocess.synchronize` is available on a given
|
||
platform and rely on that check in the :mod:`concurrent.futures` test
|
||
suite so we can run tests that are unrelated to
|
||
:class:`ProcessPoolExecutor` on those platforms.
|
||
|
||
- bpo-38302: If :func:`object.__ipow__` returns :const:`NotImplemented`, the
|
||
operator will correctly fall back to :func:`object.__pow__` and
|
||
:func:`object.__rpow__` as expected.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-43316: The ``python -m gzip`` command line application now properly
|
||
fails when detecting an unsupported extension. It exits with a non-zero
|
||
exit code and prints an error message to stderr.
|
||
|
||
- bpo-43317: Set the chunk size for the ``gzip`` module main function to
|
||
io.DEFAULT_BUFFER_SIZE. This is slightly faster than the 1024 bytes
|
||
constant that was used previously.
|
||
|
||
- bpo-43146: Handle None in single-arg versions of
|
||
:func:`~traceback.print_exception` and
|
||
:func:`~traceback.format_exception`.
|
||
|
||
- bpo-43260: Fix TextIOWrapper can not flush internal buffer forever after
|
||
very large text is written.
|
||
|
||
- bpo-43258: Prevent needless allocation of :mod:`sqlite3` aggregate
|
||
function context when no rows match an aggregate query. Patch by Erlend E.
|
||
Aasland.
|
||
|
||
- bpo-43251: Improve :mod:`sqlite3` error handling:
|
||
``sqlite3_column_name()`` failures now result in :exc:`MemoryError`. Patch
|
||
by Erlend E. Aasland.
|
||
|
||
- bpo-40956: Fix segfault in :meth:`sqlite3.Connection.backup` if no
|
||
argument was provided. The regression was introduced by PR 23838. Patch by
|
||
Erlend E. Aasland.
|
||
|
||
- bpo-43172: The readline module now passes its tests when built directly
|
||
against libedit. Existing irreconcilable API differences remain in
|
||
:func:`readline.get_begidx` and :func:`readline.get_endidx` behavior based
|
||
on libreadline vs libedit use.
|
||
|
||
- bpo-43163: Fix a bug in :mod:`codeop` that was causing it to not ask for
|
||
more input when multi-line snippets have unclosed parentheses. Patch by
|
||
Pablo Galindo
|
||
|
||
- bpo-43162: deprecate unsupported ability to access enum members as
|
||
attributes of other enum members
|
||
|
||
- bpo-43146: Fix recent regression in None argument handling in
|
||
:mod:`~traceback` module functions.
|
||
|
||
- bpo-43102: The namedtuple __new__ method had its __builtins__ set to None
|
||
instead of an actual dictionary. This created problems for introspection
|
||
tools.
|
||
|
||
- bpo-43106: Added :data:`~os.O_EVTONLY`, :data:`~os.O_FSYNC`,
|
||
:data:`~os.O_SYMLINK` and :data:`~os.O_NOFOLLOW_ANY` for macOS. Patch by
|
||
Dong-hee Na.
|
||
|
||
- bpo-42960: Adds :data:`resource.RLIMIT_KQUEUES` constant from FreeBSD to
|
||
the :mod:`resource` module.
|
||
|
||
- bpo-42151: Make the pure Python implementation of
|
||
:mod:`xml.etree.ElementTree` behave the same as the C implementation
|
||
(:mod:`_elementree`) regarding default attribute values (by not setting
|
||
``specified_attributes=1``).
|
||
|
||
- bpo-29753: In ctypes, now packed bitfields are calculated properly and the
|
||
first item of packed bitfields is now shrank correctly.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-27646: Clarify that 'yield from <expr>' works with any iterable, not
|
||
just iterators.
|
||
|
||
- bpo-36346: Update some deprecated unicode APIs which are documented as
|
||
"will be removed in 4.0" to "3.12". See :pep:`623` for detail.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-43288: Fix test_importlib to correctly skip Unicode file tests if the
|
||
filesystem does not support them.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-43174: Windows build now uses ``/utf-8`` compiler option.
|
||
|
||
- bpo-43103: Add a new configure ``--without-static-libpython`` option to
|
||
not build the ``libpythonMAJOR.MINOR.a`` static library and not install
|
||
the ``python.o`` object file.
|
||
|
||
- bpo-13501: The configure script can now use *libedit* instead of
|
||
*readline* with the command line option ``--with-readline=editline``.
|
||
|
||
- bpo-42603: Make configure script use pkg-config to detect the location of
|
||
Tcl/Tk headers and libraries, used to build tkinter.
|
||
|
||
On macOS, a Tcl/Tk configuration provided by pkg-config will be preferred
|
||
over Tcl/Tk frameworks installed in ``/{System/,}Library/Frameworks``. If
|
||
both exist and the latter is preferred, the appropriate ``--with-tcltk-*``
|
||
configuration options need to be explicitly set.
|
||
|
||
- bpo-39448: Add the "regen-frozen" makefile target that regenerates the
|
||
code for the frozen ``__hello__`` module.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-43155: :c:func:`PyCMethod_New` is now present in ``python3.lib``.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-41837: Update macOS installer build to use OpenSSL 1.1.1j.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-43283: Document why printing to IDLE's Shell is often slower than
|
||
printing to a system terminal and that it can be made faster by
|
||
pre-formatting a single string before printing.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-43278: Always put compiler and system information on the first line of
|
||
the REPL welcome message.
|
||
|
||
- bpo-43270: Remove the private ``_PyErr_OCCURRED()`` macro: use the public
|
||
:c:func:`PyErr_Occurred` function instead.
|
||
|
||
- bpo-35134: Move odictobject.h, parser_interface.h, picklebufobject.h,
|
||
pydebug.h, and pyfpe.h into the cpython/ directory. They must not be
|
||
included directly, as they are already included by Python.h: :ref:`Include
|
||
Files <api-includes>`.
|
||
|
||
- bpo-35134: Move pyarena.h, pyctype.h, and pytime.h into the cpython/
|
||
directory. They must not be included directly, as they are already
|
||
included by Python.h: :ref:`Include Files <api-includes>`.
|
||
|
||
- bpo-40170: :c:func:`PyExceptionClass_Name` is now always declared as a
|
||
function, in order to hide implementation details. The macro accessed
|
||
:c:member:`PyTypeObject.tp_name` directly. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-43239: The :c:func:`PyCFunction_New` function is now exported in the
|
||
ABI when compiled with ``-fvisibility=hidden``.
|
||
|
||
- bpo-40170: :c:func:`PyIter_Check` is now always declared as a function, in
|
||
order to hide implementation details. The macro accessed
|
||
:c:member:`PyTypeObject.tp_iternext` directly. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-40170: Convert :c:func:`PyDescr_IsData` macro to a function to hide
|
||
implementation details: The macro accessed
|
||
:c:member:`PyTypeObject.tp_descr_set` directly. Patch by Erlend E.
|
||
Aasland.
|
||
|
||
- bpo-43181: Convert :c:func:`PyObject_TypeCheck` macro to a static inline
|
||
function. Patch by Erlend E. Aasland.
|
||
|
||
|
||
What's New in Python 3.10.0 alpha 5?
|
||
====================================
|
||
|
||
*Release date: 2021-02-02*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-42938: Avoid static buffers when computing the repr of
|
||
:class:`ctypes.c_double` and :class:`ctypes.c_longdouble` values.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-42990: Refactor the ``PyEval_`` family of functions.
|
||
|
||
* An new function ``_PyEval_Vector`` is added to simplify calls to Python from C.
|
||
* ``_PyEval_EvalCodeWithName`` is removed
|
||
* ``PyEval_EvalCodeEx`` is retained as part of the API, but is not used internally
|
||
|
||
- bpo-38631: Replace :c:func:`Py_FatalError` calls in the compiler with
|
||
regular :exc:`SystemError` exceptions. Patch by Victor Stinner.
|
||
|
||
- bpo-42997: Improve error message for missing ":" before blocks. Patch by
|
||
Pablo Galindo.
|
||
|
||
- bpo-43017: Improve error message in the parser when using un-parenthesised
|
||
tuples in comprehensions. Patch by Pablo Galindo.
|
||
|
||
- bpo-42986: Fix parser crash when reporting syntax errors in f-string with
|
||
newlines. Patch by Pablo Galindo.
|
||
|
||
- bpo-40176: Syntax errors for unterminated string literals now point to the
|
||
start of the string instead of reporting EOF/EOL.
|
||
|
||
- bpo-42927: The inline cache for ``LOAD_ATTR`` now also optimizes access to
|
||
attributes defined by ``__slots__``. This makes reading such attribute up
|
||
to 30% faster.
|
||
|
||
- bpo-42864: Improve error messages in the parser when parentheses are not
|
||
closed. Patch by Pablo Galindo.
|
||
|
||
- bpo-42924: Fix ``bytearray`` repetition incorrectly copying data from the
|
||
start of the buffer, even if the data is offset within the buffer (e.g.
|
||
after reassigning a slice at the start of the ``bytearray`` to a shorter
|
||
byte string).
|
||
|
||
- bpo-42882: Fix the :c:func:`_PyUnicode_FromId` function
|
||
(_Py_IDENTIFIER(var) API) when :c:func:`Py_Initialize` /
|
||
:c:func:`Py_Finalize` is called multiple times: preserve
|
||
``_PyRuntime.unicode_ids.next_index`` value.
|
||
|
||
- bpo-42827: Fix a crash when working out the error line of a
|
||
:exc:`SyntaxError` in some multi-line expressions.
|
||
|
||
- bpo-42823: frame.f_lineno is correct even if frame.f_trace is set to True
|
||
|
||
- bpo-37324: Remove deprecated aliases to
|
||
:ref:`collections-abstract-base-classes` from the :mod:`collections`
|
||
module.
|
||
|
||
- bpo-41994: Fixed possible leak in ``import`` when ``sys.modules`` is not a
|
||
``dict``.
|
||
|
||
- bpo-27772: In string formatting, preceding the *width* field by ``'0'`` no
|
||
longer affects the default alignment for strings.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-43108: Fixed a reference leak in the :mod:`curses` module. Patch by
|
||
Pablo Galindo
|
||
|
||
- bpo-43077: Update the bundled pip to 21.0.1 and setuptools to 52.0.0.
|
||
|
||
- bpo-41282: Deprecate ``distutils`` in documentation and add warning on
|
||
import.
|
||
|
||
- bpo-43014: Improve performance of :mod:`tokenize` by 20-30%. Patch by
|
||
Anthony Sottile.
|
||
|
||
- bpo-42323: Fix :func:`math.nextafter` for NaN on AIX.
|
||
|
||
- bpo-42955: Add :data:`sys.stdlib_module_names`, containing the list of the
|
||
standard library module names. Patch by Victor Stinner.
|
||
|
||
- bpo-42944: Fix ``random.Random.sample`` when ``counts`` argument is not
|
||
``None``.
|
||
|
||
- bpo-42934: Use :class:`~traceback.TracebackException`'s new ``compact``
|
||
param in :class:`~unittest.TestResult` to reduce time and memory consumed
|
||
by traceback formatting.
|
||
|
||
- bpo-42931: Add :func:`randbytes` to ``random.__all__``.
|
||
|
||
- bpo-38250: [Enum] Flags consisting of a single bit are now considered
|
||
canonical, and will be the only flags returned from listing and iterating
|
||
over a Flag class or a Flag member. Multi-bit flags are considered
|
||
aliases; they will be returned from lookups and operations that result in
|
||
their value. Iteration for both Flag and Flag members is in definition
|
||
order.
|
||
|
||
- bpo-42877: Added the ``compact`` parameter to the constructor of
|
||
:class:`traceback.TracebackException` to reduce time and memory for use
|
||
cases that only need to call :func:`TracebackException.format` and
|
||
:func:`TracebackException.format_exception_only`.
|
||
|
||
- bpo-42923: The :c:func:`Py_FatalError` function and the
|
||
:mod:`faulthandler` module now dump the list of extension modules on a
|
||
fatal error.
|
||
|
||
- bpo-42848: Removed recursion from :class:`~traceback.TracebackException`
|
||
to allow it to handle long exception chains.
|
||
|
||
- bpo-42901: [Enum] move member creation from ``EnumMeta.__new__`` to
|
||
``_proto_member.__set_name__``, allowing members to be created and visible
|
||
in ``__init_subclass__``.
|
||
|
||
- bpo-42780: Fix os.set_inheritable() for O_PATH file descriptors on Linux.
|
||
|
||
- bpo-42866: Fix a reference leak in the ``getcodec()`` function of CJK
|
||
codecs. Patch by Victor Stinner.
|
||
|
||
- bpo-42846: Convert the 6 CJK codec extension modules (_codecs_cn,
|
||
_codecs_hk, _codecs_iso2022, _codecs_jp, _codecs_kr and _codecs_tw) to the
|
||
multiphase initialization API (:pep:`489`). Patch by Victor Stinner.
|
||
|
||
- bpo-42851: remove __init_subclass__ support for Enum members
|
||
|
||
- bpo-42834: Make internal caches of the ``_json`` module compatible with
|
||
subinterpreters.
|
||
|
||
- bpo-41748: Fix HTMLParser parsing rules for element attributes containing
|
||
commas with spaces. Patch by Karl Dubost.
|
||
|
||
- bpo-40810: Require SQLite 3.7.15 or newer. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-1635741: Convert the _multibytecodec extension module (CJK codecs) to
|
||
multi-phase initialization (:pep:`489`). Patch by Erlend E. Aasland.
|
||
|
||
- bpo-42802: The distutils ``bdist_wininst`` command deprecated in Python
|
||
3.8 has been removed. The distutils ``bdist_wheel`` command is now
|
||
recommended to distribute binary packages on Windows.
|
||
|
||
- bpo-24464: The undocumented built-in function
|
||
``sqlite3.enable_shared_cache`` is now deprecated, scheduled for removal
|
||
in Python 3.12. Its use is strongly discouraged by the SQLite3
|
||
documentation. Patch by Erlend E. Aasland.
|
||
|
||
- bpo-42384: Make pdb populate sys.path[0] exactly the same as regular
|
||
python execution.
|
||
|
||
- bpo-42383: Fix pdb: previously pdb would fail to restart the debugging
|
||
target if it was specified using a relative path and the current directory
|
||
changed.
|
||
|
||
- bpo-42005: Fix CLI of :mod:`cProfile` and :mod:`profile` to catch
|
||
:exc:`BrokenPipeError`.
|
||
|
||
- bpo-41604: Don't decrement the reference count of the previous user_ptr
|
||
when set_panel_userptr fails.
|
||
|
||
- bpo-41149: Allow executing callables that have a boolean value of
|
||
``False`` when passed to :class:`Threading.thread` as the target. Patch
|
||
contributed by Barney Stratford.
|
||
|
||
- bpo-38307: Add an 'end_lineno' attribute to the Class and Function objects
|
||
that appear in the tree returned by pyclbr functions. This and the
|
||
existing 'lineno' attribute define the extent of class and def statements.
|
||
Patch by Aviral Srivastava.
|
||
|
||
- bpo-39273: The ``BUTTON5_*`` constants are now exposed in the
|
||
:mod:`curses` module if available.
|
||
|
||
- bpo-33289: Correct call to :mod:`tkinter.colorchooser` to return RGB
|
||
triplet of ints instead of floats. Patch by Cheryl Sabella.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-40304: Fix doc for type(name, bases, dict). Patch by Boris
|
||
Verkhovskiy and Éric Araujo.
|
||
|
||
- bpo-42811: Updated importlib.utils.resolve_name() doc to use
|
||
__spec__.parent instead of __package__. (Thanks Yair Frid.)
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-40823: Use :meth:`unittest.TestLoader().loadTestsFromTestCase` instead
|
||
of :meth:`unittest.makeSuite` in :mod:`sqlite3` tests. Patch by Erlend E.
|
||
Aasland.
|
||
|
||
- bpo-40810: In :mod:`sqlite3`, fix ``CheckTraceCallbackContent`` for SQLite
|
||
pre 3.7.15.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-43031: Pass ``--timeout=$(TESTTIMEOUT)`` option to the default profile
|
||
task ``./python -m test --pgo`` command.
|
||
|
||
- bpo-36143: ``make regen-all`` now also runs ``regen-keyword``. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-42874: Removed the grep -q and -E flags in the tzpath validation
|
||
section of the configure script to better accommodate users of some
|
||
platforms (specifically Solaris 10).
|
||
|
||
- bpo-31904: Add library search path by wr-cc in add_cross_compiling_paths()
|
||
for VxWorks.
|
||
|
||
- bpo-42856: Add ``--with-wheel-pkg-dir=PATH`` option to the ``./configure``
|
||
script. If specified, the :mod:`ensurepip` module looks for ``setuptools``
|
||
and ``pip`` wheel packages in this directory: if both are present, these
|
||
wheel packages are used instead of ensurepip bundled wheel packages.
|
||
|
||
Some Linux distribution packaging policies recommend against bundling
|
||
dependencies. For example, Fedora installs wheel packages in the
|
||
``/usr/share/python-wheels/`` directory and don't install the
|
||
``ensurepip._bundled`` package.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-41837: Updated Windows installer to include OpenSSL 1.1.1i
|
||
|
||
- bpo-42584: Upgrade Windows installer to use SQLite 3.34.0.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-42504: Ensure that the value of
|
||
sysconfig.get_config_var('MACOSX_DEPLOYMENT_TARGET') is always a string,
|
||
even in when the value is parsable as an integer.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-43008: Make IDLE invoke :func:`sys.excepthook` in normal, 2-process
|
||
mode. Patch by Ken Hilton.
|
||
|
||
- bpo-33065: Fix problem debugging user classes with __repr__ method.
|
||
|
||
- bpo-23544: Disable Debug=>Stack Viewer when user code is running or
|
||
Debugger is active, to prevent hang or crash. Patch by Zackery Spytz.
|
||
|
||
- bpo-32631: Finish zzdummy example extension module: make menu entries
|
||
work; add docstrings and tests with 100% coverage.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-42979: When Python is built in debug mode (with C assertions), calling
|
||
a type slot like ``sq_length`` (``__len__()`` in Python) now fails with a
|
||
fatal error if the slot succeeded with an exception set, or failed with no
|
||
exception set. The error message contains the slot, the type name, and the
|
||
current exception (if an exception is set). Patch by Victor Stinner.
|
||
|
||
- bpo-43030: Fixed a compiler warning in :c:func:`Py_UNICODE_ISSPACE()` on
|
||
platforms with signed ``wchar_t``.
|
||
|
||
|
||
What's New in Python 3.10.0 alpha 4?
|
||
====================================
|
||
|
||
*Release date: 2021-01-04*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-42814: Fix undefined behavior in ``Objects/genericaliasobject.c``.
|
||
|
||
- bpo-42806: Fix the column offsets for f-strings :mod:`ast` nodes
|
||
surrounded by parentheses and for nodes that spawn multiple lines. Patch
|
||
by Pablo Galindo.
|
||
|
||
- bpo-40631: Fix regression where a single parenthesized starred expression
|
||
was a valid assignment target.
|
||
|
||
- bpo-27794: Improve the error message for failed writes/deletes to property
|
||
objects. When possible, the attribute name is now shown. Patch provided by
|
||
Yurii Karabas.
|
||
|
||
- bpo-42745: Make the type attribute lookup cache per-interpreter. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-42246: Jumps to jumps are not eliminated when it would break PEP 626.
|
||
|
||
- bpo-42246: Make sure that the ``f_lasti`` and ``f_lineno`` attributes of a
|
||
frame are set correctly when an exception is raised or re-raised. Required
|
||
for PEP 626.
|
||
|
||
- bpo-32381: The coding cookie (ex: ``# coding: latin1``) is now ignored in
|
||
the command passed to the :option:`-c` command line option. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-30858: Improve error location in expressions that contain assignments.
|
||
Patch by Pablo Galindo and Lysandros Nikolaou.
|
||
|
||
- bpo-42615: Remove jump commands made redundant by the deletion of
|
||
unreachable bytecode blocks
|
||
|
||
- bpo-42639: Make the :mod:`atexit` module state per-interpreter. It is now
|
||
safe have more than one :mod:`atexit` module instance. Patch by Dong-hee
|
||
Na and Victor Stinner.
|
||
|
||
- bpo-32381: Fix encoding name when running a ``.pyc`` file on Windows:
|
||
:c:func:`PyRun_SimpleFileExFlags()` now uses the correct encoding to
|
||
decode the filename.
|
||
|
||
- bpo-42195: The ``__args__`` of the parameterized generics for
|
||
:data:`typing.Callable` and :class:`collections.abc.Callable` are now
|
||
consistent. The ``__args__`` for :class:`collections.abc.Callable` are
|
||
now flattened while :data:`typing.Callable`'s have not changed. To allow
|
||
this change, :class:`types.GenericAlias` can now be subclassed and
|
||
``collections.abc.Callable``'s ``__class_getitem__`` will now return a
|
||
subclass of ``types.GenericAlias``. Tests for typing were also updated to
|
||
not subclass things like ``Callable[..., T]`` as that is not a valid base
|
||
class. Finally, both ``Callable``\ s no longer validate their
|
||
``argtypes``, in ``Callable[[argtypes], resulttype]`` to prepare for
|
||
:pep:`612`. Patch by Ken Jin.
|
||
|
||
- bpo-40137: Convert functools module to use
|
||
:c:func:`PyType_FromModuleAndSpec`.
|
||
|
||
- bpo-40077: Convert :mod:`array` to use heap types, and establish module
|
||
state for these.
|
||
|
||
- bpo-42008: Fix _random.Random() seeding.
|
||
|
||
- bpo-1635741: Port the :mod:`pyexpat` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-40521: Make the Unicode dictionary of interned strings compatible with
|
||
subinterpreters. Patch by Victor Stinner.
|
||
|
||
- bpo-39465: Make :c:func:`_PyUnicode_FromId` function compatible with
|
||
subinterpreters. Each interpreter now has an array of identifier objects
|
||
(interned strings decoded from UTF-8). Patch by Victor Stinner.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-42257: Handle empty string in variable executable in
|
||
platform.libc_ver()
|
||
|
||
- bpo-42772: randrange() now raises a TypeError when step is specified
|
||
without a stop argument. Formerly, it silently ignored the step argument.
|
||
|
||
- bpo-42759: Fixed equality comparison of :class:`tkinter.Variable` and
|
||
:class:`tkinter.font.Font`. Objects which belong to different Tcl
|
||
interpreters are now always different, even if they have the same name.
|
||
|
||
- bpo-42756: Configure LMTP Unix-domain socket to use socket global default
|
||
timeout when a timeout is not explicitly provided.
|
||
|
||
- bpo-23328: Allow / character in username, password fields on _PROXY
|
||
envars.
|
||
|
||
- bpo-42740: :func:`typing.get_args` and :func:`typing.get_origin` now
|
||
support :pep:`604` union types and :pep:`612` additions to ``Callable``.
|
||
|
||
- bpo-42655: :mod:`subprocess` *extra_groups* is now correctly passed into
|
||
setgroups() system call.
|
||
|
||
- bpo-42727: ``EnumMeta.__prepare__`` now accepts ``**kwds`` to properly
|
||
support ``__init_subclass__``
|
||
|
||
- bpo-38308: Add optional *weights* to *statistics.harmonic_mean()*.
|
||
|
||
- bpo-42721: When simple query dialogs (:mod:`tkinter.simpledialog`),
|
||
message boxes (:mod:`tkinter.messagebox`) or color choose dialog
|
||
(:mod:`tkinter.colorchooser`) are created without arguments *master* and
|
||
*parent*, and the default root window is not yet created, and
|
||
:func:`~tkinter.NoDefaultRoot` was not called, a new temporal hidden root
|
||
window will be created automatically. It will not be set as the default
|
||
root window and will be destroyed right after closing the dialog window.
|
||
It will help to use these simple dialog windows in programs which do not
|
||
need other GUI.
|
||
|
||
- bpo-25246: Optimized :meth:`collections.deque.remove`.
|
||
|
||
- bpo-35728: Added a root parameter to :func:`tkinter.font.nametofont`.
|
||
|
||
- bpo-15303: :mod:`tkinter` supports now widgets with boolean value False.
|
||
|
||
- bpo-42681: Fixed range checks for color and pair numbers in :mod:`curses`.
|
||
|
||
- bpo-42685: Improved placing of simple query windows in Tkinter (such as
|
||
:func:`tkinter.simpledialog.askinteger`). They are now centered at the
|
||
center of the parent window if it is specified and shown, otherwise at the
|
||
center of the screen.
|
||
|
||
- bpo-9694: Argparse help no longer uses the confusing phrase, "optional
|
||
arguments". It uses "options" instead.
|
||
|
||
- bpo-1635741: Port the :mod:`_thread` extension module to the multiphase
|
||
initialization API (:pep:`489`) and convert its static types to heap
|
||
types.
|
||
|
||
- bpo-37961: Fix crash in :func:`tracemalloc.Traceback.__repr__` (regressed
|
||
in Python 3.9).
|
||
|
||
- bpo-42630: :mod:`tkinter` functions and constructors which need a default
|
||
root window raise now :exc:`RuntimeError` with descriptive message instead
|
||
of obscure :exc:`AttributeError` or :exc:`NameError` if it is not created
|
||
yet or cannot be created automatically.
|
||
|
||
- bpo-42639: :func:`atexit._run_exitfuncs` now logs callback exceptions
|
||
using :data:`sys.unraisablehook`, rather than logging them directly into
|
||
:data:`sys.stderr` and raise the last exception.
|
||
|
||
- bpo-42644: ``logging.disable`` will now validate the types and value of
|
||
its parameter. It also now accepts strings representing the levels (as
|
||
does ``loging.setLevel``) instead of only the numerical values.
|
||
|
||
- bpo-42639: At Python exit, if a callback registered with
|
||
:func:`atexit.register` fails, its exception is now logged. Previously,
|
||
only some exceptions were logged, and the last exception was always
|
||
silently ignored.
|
||
|
||
- bpo-36541: Fixed lib2to3.pgen2 to be able to parse PEP-570 positional only
|
||
argument syntax.
|
||
|
||
- bpo-42382: In ``importlib.metadata``: - ``EntryPoint`` objects now expose
|
||
a ``.dist`` object referencing the ``Distribution`` when constructed from
|
||
a ``Distribution``. - Add support for package discovery under package
|
||
normalization rules. - The object returned by ``metadata()`` now has a
|
||
formally defined protocol called ``PackageMetadata`` with declared support
|
||
for the ``.get_all()`` method. - Synced with importlib_metadata 3.3.
|
||
|
||
- bpo-41877: A check is added against misspellings of autospect, auto_spec
|
||
and set_spec being passed as arguments to patch, patch.object and
|
||
create_autospec.
|
||
|
||
- bpo-39717: [tarfile] update nested exception raising to use ``from None``
|
||
or ``from e``
|
||
|
||
- bpo-41877: AttributeError for suspected misspellings of assertions on
|
||
mocks are now pointing out that the cause are misspelled assertions and
|
||
also what to do if the misspelling is actually an intended attribute name.
|
||
The unittest.mock document is also updated to reflect the current set of
|
||
recognised misspellings.
|
||
|
||
- bpo-41559: Implemented :pep:`612`: added ``ParamSpec`` and ``Concatenate``
|
||
to :mod:`typing`. Patch by Ken Jin.
|
||
|
||
- bpo-42385: StrEnum: fix _generate_next_value_ to return a str
|
||
|
||
- bpo-31904: Define THREAD_STACK_SIZE for VxWorks.
|
||
|
||
- bpo-34750: [Enum] `_EnumDict.update()` is now supported
|
||
|
||
- bpo-42517: Enum: private names do not become members / do not generate
|
||
errors -- they remain normal attributes
|
||
|
||
- bpo-42678: ``Enum``: call ``__init_subclass__`` after members have been
|
||
added
|
||
|
||
- bpo-28964: :func:`ast.literal_eval` adds line number information (if
|
||
available) in error message for malformed nodes.
|
||
|
||
- bpo-42470: :func:`random.sample` no longer warns on a sequence which is
|
||
also a set.
|
||
|
||
- bpo-31904: :func:`posixpath.expanduser` returns the input *path* unchanged
|
||
if user home directory is None on VxWorks.
|
||
|
||
- bpo-42388: Fix subprocess.check_output(..., input=None) behavior when
|
||
text=True to be consistent with that of the documentation and
|
||
universal_newlines=True.
|
||
|
||
- bpo-34463: Fixed discrepancy between :mod:`traceback` and the interpreter
|
||
in formatting of SyntaxError with lineno not set (:mod:`traceback` was
|
||
changed to match interpreter).
|
||
|
||
- bpo-42393: Raise :exc:`OverflowError` instead of silent truncation in
|
||
:meth:`socket.ntohs` and :meth:`socket.htons`. Silent truncation was
|
||
deprecated in Python 3.7. Patch by Erlend E. Aasland
|
||
|
||
- bpo-42222: Harmonized :func:`random.randrange` argument handling to match
|
||
:func:`range`.
|
||
|
||
* The integer test and conversion in ``randrange()`` now uses
|
||
:func:`operator.index`.
|
||
* Non-integer arguments to ``randrange()`` are deprecated.
|
||
* The ``ValueError`` is deprecated in favor of a ``TypeError``.
|
||
* It now runs a little faster than before.
|
||
|
||
(Contributed by Raymond Hettinger and Serhiy Storchaka.)
|
||
|
||
- bpo-42163: Restore compatibility for ``uname_result`` around deepcopy and
|
||
_replace.
|
||
|
||
- bpo-42090: ``zipfile.Path.joinpath`` now accepts arbitrary arguments, same
|
||
as ``pathlib.Path.joinpath``.
|
||
|
||
- bpo-1635741: Port the _csv module to the multi-phase initialization API
|
||
(:pep:`489`).
|
||
|
||
- bpo-42059: :class:`typing.TypedDict` types created using the alternative
|
||
call-style syntax now correctly respect the ``total`` keyword argument
|
||
when setting their ``__required_keys__`` and ``__optional_keys__`` class
|
||
attributes.
|
||
|
||
- bpo-41960: Add ``globalns`` and ``localns`` parameters to the
|
||
:func:`inspect.signature` and :meth:`inspect.Signature.from_callable`.
|
||
|
||
- bpo-41907: fix ``format()`` behavior for ``IntFlag``
|
||
|
||
- bpo-41891: Ensure asyncio.wait_for waits for task completion
|
||
|
||
- bpo-24792: Fixed bug where :mod:`zipimporter` sometimes reports an
|
||
incorrect cause of import errors.
|
||
|
||
- bpo-31904: Fix site and sysconfig modules for VxWorks RTOS which has no
|
||
home directories.
|
||
|
||
- bpo-41462: Add :func:`os.set_blocking()` support for VxWorks RTOS.
|
||
|
||
- bpo-40219: Lowered :class:`tkinter.ttk.LabeledScale` dummy widget to
|
||
prevent hiding part of the content label.
|
||
|
||
- bpo-37193: Fixed memory leak in ``socketserver.ThreadingMixIn`` introduced
|
||
in Python 3.7.
|
||
|
||
- bpo-39068: Fix initialization race condition in :func:`a85encode` and
|
||
:func:`b85encode` in :mod:`base64`. Patch by Brandon Stansbury.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-17140: Add documentation for the
|
||
:class:`multiprocessing.pool.ThreadPool` class.
|
||
|
||
- bpo-34398: Prominently feature listings from the glossary in documentation
|
||
search results. Patch by Ammar Askar.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-42794: Update test_nntplib to use official group name of news.aioe.org
|
||
for testing. Patch by Dong-hee Na.
|
||
|
||
- bpo-31904: Skip some asyncio tests on VxWorks.
|
||
|
||
- bpo-42641: Enhance ``test_select.test_select()``: it now takes 500 ms
|
||
rather than 10 seconds. Use Python rather than a shell to make the test
|
||
more portable.
|
||
|
||
- bpo-31904: Skip some tests in _test_all_chown_common() on VxWorks.
|
||
|
||
- bpo-42199: Fix bytecode helper assertNotInBytecode.
|
||
|
||
- bpo-41443: Add more attribute checking in test_posix.py
|
||
|
||
- bpo-31904: Disable os.popen and impacted tests on VxWorks
|
||
|
||
- bpo-41439: Port test_ssl and test_uuid to VxWorks RTOS.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-42692: Fix __builtin_available check on older compilers. Patch by
|
||
Joshua Root.
|
||
|
||
- bpo-27640: Added ``--disable-test-modules`` option to the ``configure``
|
||
script: don't build nor install test modules. Patch by Xavier de Gaye,
|
||
Thomas Petazzoni and Peixing Xin.
|
||
|
||
- bpo-42604: Now all platforms use a value for the "EXT_SUFFIX" build
|
||
variable derived from SOABI (for instance in freeBSD, "EXT_SUFFIX" is now
|
||
".cpython-310d.so" instead of ".so"). Previously only Linux, Mac and
|
||
VxWorks were using a value for "EXT_SUFFIX" that included "SOABI".
|
||
|
||
- bpo-42598: Fix implicit function declarations in configure which could
|
||
have resulted in incorrect configuration checks. Patch contributed by
|
||
Joshua Root.
|
||
|
||
- bpo-31904: Enable libpython3.so for VxWorks.
|
||
|
||
- bpo-29076: Add fish shell support to macOS installer.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-42361: Update macOS installer build to use Tcl/Tk 8.6.11 (rc2,
|
||
expected to be final release).
|
||
|
||
- bpo-41837: Update macOS installer build to use OpenSSL 1.1.1i.
|
||
|
||
- bpo-42584: Update macOS installer to use SQLite 3.34.0.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-42726: Fixed Python 3 compatibility issue with gdb/libpython.py
|
||
handling of attribute dictionaries.
|
||
|
||
- bpo-42613: Fix ``freeze.py`` tool to use the prope config and library
|
||
directories. Patch by Victor Stinner.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-42591: Export the :c:func:`Py_FrozenMain` function: fix a Python 3.9.0
|
||
regression. Python 3.9 uses ``-fvisibility=hidden`` and the function was
|
||
not exported explicitly and so not exported.
|
||
|
||
- bpo-32381: Remove the private :c:func:`_Py_fopen` function which is no
|
||
longer needed. Use :c:func:`_Py_wfopen` or :c:func:`_Py_fopen_obj`
|
||
instead. Patch by Victor Stinner.
|
||
|
||
- bpo-1635741: Port :mod:`resource` extension module to module state
|
||
|
||
- bpo-42111: Update the ``xxlimited`` module to be a better example of how
|
||
to use the limited C API.
|
||
|
||
- bpo-40052: Fix an alignment build warning/error in function
|
||
``PyVectorcall_Function()``. Patch by Andreas Schneider, Antoine Pitrou
|
||
and Petr Viktorin.
|
||
|
||
|
||
What's New in Python 3.10.0 alpha 3?
|
||
====================================
|
||
|
||
*Release date: 2020-12-07*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-40791: Add ``volatile`` to the accumulator variable in
|
||
``hmac.compare_digest``, making constant-time-defeating optimizations less
|
||
likely.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-42576: ``types.GenericAlias`` will now raise a ``TypeError`` when
|
||
attempting to initialize with a keyword argument. Previously, this would
|
||
cause the interpreter to crash if the interpreter was compiled with debug
|
||
symbols. This does not affect interpreters compiled for release. Patch by
|
||
Ken Jin.
|
||
|
||
- bpo-42536: Several built-in and standard library types now ensure that
|
||
their internal result tuples are always tracked by the :term:`garbage
|
||
collector <garbage collection>`:
|
||
|
||
- :meth:`collections.OrderedDict.items() <collections.OrderedDict>`
|
||
|
||
- :meth:`dict.items`
|
||
|
||
- :func:`enumerate`
|
||
|
||
- :func:`functools.reduce`
|
||
|
||
- :func:`itertools.combinations`
|
||
|
||
- :func:`itertools.combinations_with_replacement`
|
||
|
||
- :func:`itertools.permutations`
|
||
|
||
- :func:`itertools.product`
|
||
|
||
- :func:`itertools.zip_longest`
|
||
|
||
- :func:`zip`
|
||
|
||
Previously, they could have become untracked by a prior garbage
|
||
collection. Patch by Brandt Bucher.
|
||
|
||
- bpo-42500: Improve handling of exceptions near recursion limit. Converts a
|
||
number of Fatal Errors in RecursionErrors.
|
||
|
||
- bpo-42246: PEP 626: After a return, the f_lineno attribute of a frame is
|
||
always the last line executed.
|
||
|
||
- bpo-42435: Speed up comparison of bytes objects with non-bytes objects
|
||
when option :option:`-b` is specified. Speed up comparison of bytarray
|
||
objects with non-buffer object.
|
||
|
||
- bpo-1635741: Port the ``_warnings`` extension module to the multi-phase
|
||
initialization API (:pep:`489`). Patch by Victor Stinner.
|
||
|
||
- bpo-41686: On Windows, the ``SIGINT`` event, ``_PyOS_SigintEvent()``, is
|
||
now created even if Python is configured to not install signal handlers
|
||
(if :c:member:`PyConfig.install_signal_handlers` equals to 0, or
|
||
``Py_InitializeEx(0)``).
|
||
|
||
- bpo-42381: Allow assignment expressions in set literals and set
|
||
comprehensions as per PEP 572. Patch by Pablo Galindo.
|
||
|
||
- bpo-42202: Change function parameters annotations internal representation
|
||
to tuple of strings. Patch provided by Yurii Karabas.
|
||
|
||
- bpo-42374: Fix a regression introduced by the new parser, where an
|
||
unparenthesized walrus operator was not allowed within generator
|
||
expressions.
|
||
|
||
- bpo-42316: Allow an unparenthesized walrus in subscript indexes.
|
||
|
||
- bpo-42349: Make sure that the compiler front-end produces a well-formed
|
||
control flow graph. Be be more aggressive in the compiler back-end, as it
|
||
is now safe to do so.
|
||
|
||
- bpo-42296: On Windows, fix a regression in signal handling which prevented
|
||
to interrupt a program using CTRL+C. The signal handler can be run in a
|
||
thread different than the Python thread, in which case the test deciding
|
||
if the thread can handle signals is wrong.
|
||
|
||
- bpo-42332: :class:`types.GenericAlias` objects can now be the targets of
|
||
weakrefs.
|
||
|
||
- bpo-42282: Optimise constant subexpressions that appear as part of named
|
||
expressions (previously the AST optimiser did not descend into named
|
||
expressions). Patch by Nick Coghlan.
|
||
|
||
- bpo-42266: Fixed a bug with the LOAD_ATTR opcode cache that was not
|
||
respecting monkey-patching a class-level attribute to make it a
|
||
descriptor. Patch by Pablo Galindo.
|
||
|
||
- bpo-40077: Convert :mod:`queue` to use heap types.
|
||
|
||
- bpo-42246: Improved accuracy of line tracing events and f_lineno attribute
|
||
of Frame objects. See PEP 626 for details.
|
||
|
||
- bpo-40077: Convert :mod:`mmap` to use heap types.
|
||
|
||
- bpo-42233: Allow ``GenericAlias`` objects to use :ref:`union type
|
||
expressions <types-union>`. This allows expressions like ``list[int] |
|
||
dict[float, str]`` where previously a ``TypeError`` would have been
|
||
thrown. This also fixes union type expressions not de-duplicating
|
||
``GenericAlias`` objects. (Contributed by Ken Jin in :issue:`42233`.)
|
||
|
||
- bpo-26131: The import system triggers a `ImportWarning` when it falls back
|
||
to using `load_module()`.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-5054: CGIHTTPRequestHandler.run_cgi() HTTP_ACCEPT improperly parsed.
|
||
Replace the special purpose getallmatchingheaders with generic get_all
|
||
method and add relevant tests.
|
||
|
||
Original Patch by Martin Panter. Modified by Senthil Kumaran.
|
||
|
||
- bpo-42562: Fix issue when dis failed to parse function that has no line
|
||
numbers. Patch provided by Yurii Karabas.
|
||
|
||
- bpo-17735: :func:`inspect.findsource` now raises :exc:`OSError` instead of
|
||
:exc:`IndexError` when :attr:`co_lineno` of a code object is greater than
|
||
the file length. This can happen, for example, when a file is edited after
|
||
it was imported. PR by Irit Katriel.
|
||
|
||
- bpo-42116: Fix handling of trailing comments by :func:`inspect.getsource`.
|
||
|
||
- bpo-42532: Remove unexpected call of ``__bool__`` when passing a
|
||
``spec_arg`` argument to a Mock.
|
||
|
||
- bpo-38200: Added itertools.pairwise()
|
||
|
||
- bpo-41818: Fix test_master_read() so that it succeeds on all platforms
|
||
that either raise OSError or return b"" upon reading from master.
|
||
|
||
- bpo-42487: ChainMap.__iter__ no longer calls __getitem__ on underlying
|
||
maps
|
||
|
||
- bpo-42482: :class:`~traceback.TracebackException` no longer holds a
|
||
reference to the exception's traceback object. Consequently, instances of
|
||
TracebackException for equivalent but non-equal exceptions now compare as
|
||
equal.
|
||
|
||
- bpo-41818: Make test_openpty() avoid unexpected success due to number of
|
||
rows and/or number of columns being == 0.
|
||
|
||
- bpo-42392: Remove loop parameter from ``asyncio.subprocess`` and
|
||
``asyncio.tasks`` functions. Patch provided by Yurii Karabas.
|
||
|
||
- bpo-42392: Remove loop parameter from ``asyncio.open_connection`` and
|
||
``asyncio.start_server`` functions. Patch provided by Yurii Karabas.
|
||
|
||
- bpo-28468: Add :func:`platform.freedesktop_os_release` function to parse
|
||
freedesktop.org ``os-release`` files.
|
||
|
||
- bpo-42299: Removed the ``formatter`` module, which was deprecated in
|
||
Python 3.4. It is somewhat obsolete, little used, and not tested. It was
|
||
originally scheduled to be removed in Python 3.6, but such removals were
|
||
delayed until after Python 2.7 EOL. Existing users should copy whatever
|
||
classes they use into their code. Patch by Dong-hee Na and and Terry J.
|
||
Reedy.
|
||
|
||
- bpo-26131: Deprecate zipimport.zipimporter.load_module() in favour of
|
||
exec_module().
|
||
|
||
- bpo-41818: Updated tests for the pty library. test_basic() has been
|
||
changed to test_openpty(); this additionally checks if slave termios and
|
||
slave winsize are being set properly by pty.openpty(). In order to add
|
||
support for FreeBSD, NetBSD, OpenBSD, and Darwin, this also adds
|
||
test_master_read(), which demonstrates that pty.spawn() should not depend
|
||
on an OSError to exit from its copy loop.
|
||
|
||
- bpo-42392: Remove loop parameter from ``__init__`` in all
|
||
``asyncio.locks`` and ``asyncio.Queue`` classes. Patch provided by Yurii
|
||
Karabas.
|
||
|
||
- bpo-15450: Make :class:`filecmp.dircmp` respect subclassing. Now the
|
||
:attr:`filecmp.dircmp.subdirs` behaves as expected when subclassing
|
||
dircmp.
|
||
|
||
- bpo-42413: The exception :exc:`socket.timeout` is now an alias of
|
||
:exc:`TimeoutError`.
|
||
|
||
- bpo-31904: Support signal module on VxWorks.
|
||
|
||
- bpo-42406: We fixed an issue in `pickle.whichmodule` in which importing
|
||
`multiprocessing` could change the how pickle identifies which module an
|
||
object belongs to, potentially breaking the unpickling of those objects.
|
||
|
||
- bpo-42403: Simplify the :mod:`importlib` external bootstrap code:
|
||
``importlib._bootstrap_external`` now uses regular imports to import
|
||
builtin modules. When it is imported, the builtin :func:`__import__()`
|
||
function is already fully working and so can be used to import builtin
|
||
modules like :mod:`sys`. Patch by Victor Stinner.
|
||
|
||
- bpo-1635741: Convert _sre module types to heap types (PEP 384). Patch by
|
||
Erlend E. Aasland.
|
||
|
||
- bpo-42375: subprocess module update for DragonFlyBSD support.
|
||
|
||
- bpo-41713: Port the ``_signal`` extension module to the multi-phase
|
||
initialization API (:pep:`489`). Patch by Victor Stinner and Mohamed
|
||
Koubaa.
|
||
|
||
- bpo-37205: :func:`time.time()`, :func:`time.perf_counter()` and
|
||
:func:`time.monotonic()` functions can no longer fail with a Python fatal
|
||
error, instead raise a regular Python exception on failure.
|
||
|
||
- bpo-42328: Fixed :meth:`tkinter.ttk.Style.map`. The function accepts now
|
||
the representation of the default state as empty sequence (as returned by
|
||
``Style.map()``). The structure of the result is now the same on all
|
||
platform and does not depend on the value of ``wantobjects``.
|
||
|
||
- bpo-42345: Fix various issues with ``typing.Literal`` parameter handling
|
||
(flatten, deduplicate, use type to cache key). Patch provided by Yurii
|
||
Karabas.
|
||
|
||
- bpo-37205: :func:`time.perf_counter()` on Windows and
|
||
:func:`time.monotonic()` on macOS are now system-wide. Previously, they
|
||
used an offset computed at startup to reduce the precision loss caused by
|
||
the float type. Use :func:`time.perf_counter_ns()` and
|
||
:func:`time.monotonic_ns()` added in Python 3.7 to avoid this precision
|
||
loss.
|
||
|
||
- bpo-42318: Fixed support of non-BMP characters in :mod:`tkinter` on macOS.
|
||
|
||
- bpo-42350: Fix the :class:`threading.Thread` class at fork: do nothing if
|
||
the thread is already stopped (ex: fork called at Python exit).
|
||
Previously, an error was logged in the child process.
|
||
|
||
- bpo-42333: Port _ssl extension module to heap types.
|
||
|
||
- bpo-42014: The ``onerror`` callback from ``shutil.rmtree`` now receives
|
||
correct function when ``os.open`` fails.
|
||
|
||
- bpo-42237: Fix `os.sendfile()` on illumos.
|
||
|
||
- bpo-42308: Add :data:`threading.__excepthook__` to allow retrieving the
|
||
original value of :func:`threading.excepthook` in case it is set to a
|
||
broken or a different value. Patch by Mario Corchero.
|
||
|
||
- bpo-42131: Implement PEP 451/spec methods on zipimport.zipimporter:
|
||
find_spec(), create_module(), and exec_module().
|
||
|
||
This also allows for the documented deprecation of find_loader(),
|
||
find_module(), and load_module().
|
||
|
||
- bpo-41877: Mock objects which are not unsafe will now raise an
|
||
AttributeError if an attribute with the prefix asert, aseert, or assrt is
|
||
accessed, in addition to this already happening for the prefixes assert or
|
||
assret.
|
||
|
||
- bpo-42264: ``sqlite3.OptimizedUnicode`` has been undocumented and obsolete
|
||
since Python 3.3, when it was made an alias to :class:`str`. It is now
|
||
deprecated, scheduled for removal in Python 3.12.
|
||
|
||
- bpo-42251: Added :func:`threading.gettrace` and
|
||
:func:`threading.getprofile` to retrieve the functions set by
|
||
:func:`threading.settrace` and :func:`threading.setprofile` respectively.
|
||
Patch by Mario Corchero.
|
||
|
||
- bpo-42249: Fixed writing binary Plist files larger than 4 GiB.
|
||
|
||
- bpo-42236: On Unix, the :func:`os.device_encoding` function now returns
|
||
``'UTF-8'`` rather than the device encoding if the :ref:`Python UTF-8 Mode
|
||
<utf8-mode>` is enabled.
|
||
|
||
- bpo-41754: webbrowser: Ignore *NotADirectoryError* when calling
|
||
``xdg-settings``.
|
||
|
||
- bpo-42183: Fix a stack overflow error for asyncio Task or Future repr().
|
||
|
||
The overflow occurs under some circumstances when a Task or Future
|
||
recursively returns itself.
|
||
|
||
- bpo-42140: Improve asyncio.wait function to create the futures set just
|
||
one time.
|
||
|
||
- bpo-42133: Update various modules in the stdlib to fall back on
|
||
`__spec__.loader` when `__loader__` isn't defined on a module.
|
||
|
||
- bpo-26131: The `load_module()` methods found in importlib now trigger a
|
||
DeprecationWarning.
|
||
|
||
- bpo-39825: Windows: Change ``sysconfig.get_config_var('EXT_SUFFIX')`` to
|
||
the expected full ``platform_tag.extension`` format. Previously it was
|
||
hard-coded to ``.pyd``, now it is compatible with ``distutils.sysconfig``
|
||
and will result in something like ``.cp38-win_amd64.pyd``. This brings
|
||
windows into conformance with the other platforms.
|
||
|
||
- bpo-26389: The :func:`traceback.format_exception`,
|
||
:func:`traceback.format_exception_only`, and
|
||
:func:`traceback.print_exception` functions can now take an exception
|
||
object as a positional-only argument.
|
||
|
||
- bpo-41889: Enum: fix regression involving inheriting a multiply inherited
|
||
enum
|
||
|
||
- bpo-41861: Convert :mod:`sqlite3` to use heap types (PEP 384). Patch by
|
||
Erlend E. Aasland.
|
||
|
||
- bpo-40624: Added support for the XPath ``!=`` operator in xml.etree
|
||
|
||
- bpo-28850: Fix :meth:`pprint.PrettyPrinter.format` overrides being ignored
|
||
for contents of small containers. The :func:`pprint._safe_repr` function
|
||
was removed.
|
||
|
||
- bpo-41625: Expose the :c:func:`splice` as :func:`os.splice` in the
|
||
:mod:`os` module. Patch by Pablo Galindo
|
||
|
||
- bpo-34215: Clarify the error message for
|
||
:exc:`asyncio.IncompleteReadError` when ``expected`` is ``None``.
|
||
|
||
- bpo-41543: Add async context manager support for contextlib.nullcontext.
|
||
|
||
- bpo-21041: :attr:`pathlib.PurePath.parents` now supports negative
|
||
indexing. Patch contributed by Yaroslav Pankovych.
|
||
|
||
- bpo-41332: Added missing connect_accepted_socket() method to
|
||
``asyncio.AbstractEventLoop``.
|
||
|
||
- bpo-12800: Extracting a symlink from a tarball should succeed and
|
||
overwrite the symlink if it already exists. The fix is to remove the
|
||
existing file or symlink before extraction. Based on patch by Chris AtLee,
|
||
Jeffrey Kintscher, and Senthil Kumaran.
|
||
|
||
- bpo-40968: :mod:`urllib.request` and :mod:`http.client` now send
|
||
``http/1.1`` ALPN extension during TLS handshake when no custom context is
|
||
supplied.
|
||
|
||
- bpo-41001: Add func:`os.eventfd` to provide a low level interface for
|
||
Linux's event notification file descriptor.
|
||
|
||
- bpo-40816: Add AsyncContextDecorator to contextlib to support async
|
||
context manager as a decorator.
|
||
|
||
- bpo-40550: Fix time-of-check/time-of-action issue in
|
||
subprocess.Popen.send_signal.
|
||
|
||
- bpo-39411: Add an ``is_async`` identifier to :mod:`pyclbr`'s ``Function``
|
||
objects. Patch by Batuhan Taskaya
|
||
|
||
- bpo-35498: Add slice support to :attr:`pathlib.PurePath.parents`.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-42238: Tentative to deprecate ``make suspicious`` by first removing it
|
||
from the CI and documentation builds, but keeping it around for manual
|
||
uses.
|
||
|
||
- bpo-42153: Fix the URL for the IMAP protocol documents.
|
||
|
||
- bpo-41028: Language and version switchers, previously maintained in every
|
||
cpython branches, are now handled by docsbuild-script.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-41473: Re-enable test_gdb on gdb 9.2 and newer:
|
||
https://bugzilla.redhat.com/show_bug.cgi?id=1866884 bug is fixed in gdb
|
||
10.1.
|
||
|
||
- bpo-42553: Fix ``test_asyncio.test_call_later()`` race condition: don't
|
||
measure asyncio performance in the ``call_later()`` unit test. The test
|
||
failed randomly on the CI.
|
||
|
||
- bpo-31904: Fix test_netrc on VxWorks: create temporary directories using
|
||
temp_cwd().
|
||
|
||
- bpo-31904: skip test_getaddrinfo_ipv6_scopeid_symbolic and
|
||
test_getnameinfo_ipv6_scopeid_symbolic on VxWorks
|
||
|
||
- bpo-31904: skip test_test of test_mailcap on VxWorks
|
||
|
||
- bpo-31904: add shell requirement for test_pipes
|
||
|
||
- bpo-31904: skip some tests related to fifo on VxWorks
|
||
|
||
- bpo-31904: Fix test_doctest.py failures for VxWorks.
|
||
|
||
- bpo-40754: Include ``_testinternalcapi`` module in Windows installer for
|
||
test suite
|
||
|
||
- bpo-41561: test_ssl: skip test_min_max_version_mismatch when TLS 1.0 is
|
||
not available
|
||
|
||
- bpo-31904: Fix os module failures for VxWorks RTOS.
|
||
|
||
- bpo-31904: Fix fifo test cases for VxWorks RTOS.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-31904: remove libnet dependency from detect_socket() for VxWorks
|
||
|
||
- bpo-42398: Fix a race condition in "make regen-all" when make -jN option
|
||
is used to run jobs in parallel. The clinic.py script now only use atomic
|
||
write to write files. Moveover, generated files are now left unchanged if
|
||
the content does not change, to not change the file modification time.
|
||
|
||
- bpo-41617: Fix building ``pycore_bitutils.h`` internal header on old clang
|
||
version without ``__builtin_bswap16()`` (ex: Xcode 4.6.3 on Mac OS X
|
||
10.7). Patch by Joshua Root and Victor Stinner.
|
||
|
||
- bpo-38823: It is no longer possible to build the ``_ctypes`` extension
|
||
module without :c:type:`wchar_t` type: remove ``CTYPES_UNICODE`` macro.
|
||
Anyway, the :c:type:`wchar_t` type is required to build Python. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-42087: Support was removed for AIX 5.3 and below. See :issue:`40680`.
|
||
|
||
- bpo-40998: Addressed three compiler warnings found by undefined behavior
|
||
sanitizer (ubsan).
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-42120: Remove macro definition of ``copysign`` (to ``_copysign``) in
|
||
headers.
|
||
|
||
- bpo-38506: The Windows launcher now properly handles Python 3.10 when
|
||
listing installed Python versions.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-42504: Fix build on macOS Big Sur when MACOSX_DEPLOYMENT_TARGET=11
|
||
|
||
- bpo-41116: Ensure distutils.unixxcompiler.find_library_file can find
|
||
system provided libraries on macOS 11.
|
||
|
||
- bpo-41100: Add support for macOS 11 and Apple Silicon systems.
|
||
|
||
It is now possible to build "Universal 2" binaries using
|
||
"--enable-universalsdk --with-universal-archs=universal2".
|
||
|
||
Binaries build on later macOS versions can be deployed back to older
|
||
versions (tested up to macOS 10.9), when using the correct deployment
|
||
target. This is tested using Xcode 11 and later.
|
||
|
||
- bpo-42232: Added Darwin specific madvise options to mmap module.
|
||
|
||
- bpo-38443: The ``--enable-universalsdk`` and ``--with-universal-archs``
|
||
options for the configure script now check that the specified
|
||
architectures can be used.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-42508: Keep IDLE running on macOS. Remove obsolete workaround that
|
||
prevented running files with shortcuts when using new universal2
|
||
installers built on macOS 11.
|
||
|
||
- bpo-42426: Fix reporting offset of the RE error in searchengine.
|
||
|
||
- bpo-42415: Get docstrings for IDLE calltips more often by using
|
||
inspect.getdoc.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-42212: The smelly.py script now also checks the Python dynamic library
|
||
and extension modules, not only the Python static library. Make also the
|
||
script more verbose: explain what it does.
|
||
|
||
- bpo-36310: Allow :file:`Tools/i18n/pygettext.py` to detect calls to
|
||
``gettext`` in f-strings.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-42423: The :c:func:`PyType_FromSpecWithBases` and
|
||
:c:func:`PyType_FromModuleAndSpec` functions now accept a single class as
|
||
the *bases* argument.
|
||
|
||
- bpo-1635741: Port :mod:`select` extension module to multiphase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Port _posixsubprocess extension module to multiphase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Port _posixshmem extension module to multiphase
|
||
initialization (:pep:`489`)
|
||
|
||
- bpo-1635741: Port _struct extension module to multiphase initialization
|
||
(:pep:`489`)
|
||
|
||
- bpo-1635741: Port :mod:`spwd` extension module to multiphase
|
||
initialization (:pep:`489`)
|
||
|
||
- bpo-1635741: Port :mod:`gc` extension module to multiphase initialization
|
||
(:pep:`489`)
|
||
|
||
- bpo-1635741: Port _queue extension module to multiphase initialization
|
||
(:pep:`489`)
|
||
|
||
- bpo-39573: Convert :c:func:`Py_TYPE` and :c:func:`Py_SIZE` back to macros
|
||
to allow using them as an l-value. Many third party C extension modules
|
||
rely on the ability of using Py_TYPE() and Py_SIZE() to set an object type
|
||
and size: ``Py_TYPE(obj) = type;`` and ``Py_SIZE(obj) = size;``.
|
||
|
||
- bpo-1635741: Port :mod:`symtable` extension module to multiphase
|
||
initialization (:pep:`489`)
|
||
|
||
- bpo-1635741: Port :mod:`grp` and :mod:`pwd` extension modules to
|
||
multiphase initialization (:pep:`489`)
|
||
|
||
- bpo-1635741: Port _random extension module to multiphase initialization
|
||
(:pep:`489`)
|
||
|
||
- bpo-1635741: Port _hashlib extension module to multiphase initialization
|
||
(:pep:`489`)
|
||
|
||
- bpo-41713: Removed the undocumented ``PyOS_InitInterrupts()`` function.
|
||
Initializing Python already implicitly installs signal handlers: see
|
||
:c:member:`PyConfig.install_signal_handlers`. Patch by Victor Stinner.
|
||
|
||
- bpo-40170: The ``Py_TRASHCAN_BEGIN`` macro no longer accesses PyTypeObject
|
||
attributes, but now can get the condition by calling the new private
|
||
:c:func:`_PyTrash_cond()` function which hides implementation details.
|
||
|
||
- bpo-42260: :c:func:`Py_GetPath`, :c:func:`Py_GetPrefix`,
|
||
:c:func:`Py_GetExecPrefix`, :c:func:`Py_GetProgramFullPath`,
|
||
:c:func:`Py_GetPythonHome` and :c:func:`Py_GetProgramName` functions now
|
||
return ``NULL`` if called before :c:func:`Py_Initialize` (before Python is
|
||
initialized). Use the new :ref:`Python Initialization Configuration API
|
||
<init-config>` to get the :ref:`Python Path Configuration.
|
||
<init-path-config>`. Patch by Victor Stinner.
|
||
|
||
- bpo-42260: The :c:func:`PyConfig_Read` function now only parses
|
||
:c:member:`PyConfig.argv` arguments once: :c:member:`PyConfig.parse_argv`
|
||
is set to ``2`` after arguments are parsed. Since Python arguments are
|
||
strippped from :c:member:`PyConfig.argv`, parsing arguments twice would
|
||
parse the application options as Python options.
|
||
|
||
- bpo-42262: Added :c:func:`Py_NewRef` and :c:func:`Py_XNewRef` functions to
|
||
increment the reference count of an object and return the object. Patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-42260: When :c:func:`Py_Initialize` is called twice, the second call
|
||
now updates more :mod:`sys` attributes for the configuration, rather than
|
||
only :data:`sys.argv`. Patch by Victor Stinner.
|
||
|
||
- bpo-41832: The :c:func:`PyType_FromModuleAndSpec` function now accepts
|
||
NULL ``tp_doc`` slot.
|
||
|
||
- bpo-1635741: Added :c:func:`PyModule_AddObjectRef` function: similar to
|
||
:c:func:`PyModule_AddObject` but don't steal a reference to the value on
|
||
success. Patch by Victor Stinner.
|
||
|
||
- bpo-42171: The :c:data:`METH_FASTCALL` calling convention is added to the
|
||
limited API. The functions :c:func:`PyModule_AddType`,
|
||
:c:func:`PyType_FromModuleAndSpec`, :c:func:`PyType_GetModule` and
|
||
:c:func:`PyType_GetModuleState` are added to the limited API on Windows.
|
||
|
||
- bpo-42085: Add dedicated entry to PyAsyncMethods for sending values
|
||
|
||
- bpo-41073: :c:func:`PyType_GetSlot()` can now accept static types.
|
||
|
||
- bpo-30459: :c:func:`PyList_SET_ITEM`, :c:func:`PyTuple_SET_ITEM` and
|
||
:c:func:`PyCell_SET` macros can no longer be used as l-value or r-value.
|
||
For example, ``x = PyList_SET_ITEM(a, b, c)`` and ``PyList_SET_ITEM(a, b,
|
||
c) = x`` now fail with a compiler error. It prevents bugs like ``if
|
||
(PyList_SET_ITEM (a, b, c) < 0) ...`` test. Patch by Zackery Spytz and
|
||
Victor Stinner.
|
||
|
||
|
||
What's New in Python 3.10.0 alpha 2?
|
||
====================================
|
||
|
||
*Release date: 2020-11-03*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-42103: Prevented potential DoS attack via CPU and RAM exhaustion when
|
||
processing malformed Apple Property List files in binary format.
|
||
|
||
- bpo-42051: The :mod:`plistlib` module no longer accepts entity
|
||
declarations in XML plist files to avoid XML vulnerabilities. This should
|
||
not affect users as entity declarations are not used in regular plist
|
||
files.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-42236: If the ``nl_langinfo(CODESET)`` function returns an empty
|
||
string, Python now uses UTF-8 as the filesystem encoding. Patch by Victor
|
||
Stinner.
|
||
|
||
- bpo-42218: Fixed a bug in the PEG parser that was causing crashes in debug
|
||
mode. Now errors are checked in left-recursive rules to avoid cases where
|
||
such errors do not get handled in time and appear as long-distance crashes
|
||
in other places.
|
||
|
||
- bpo-42214: Fixed a possible crash in the PEG parser when checking for the
|
||
'!=' token in the ``barry_as_flufl`` rule. Patch by Pablo Galindo.
|
||
|
||
- bpo-42206: Propagate and raise the errors caused by
|
||
:c:func:`PyAST_Validate` in the parser.
|
||
|
||
- bpo-41796: The :mod:`ast` module internal state is now per interpreter.
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-42143: Fix handling of errors during creation of ``PyFunctionObject``,
|
||
which resulted in operations on uninitialized memory. Patch by Yonatan
|
||
Goldschmidt.
|
||
|
||
- bpo-41659: Fix a bug in the parser, where a curly brace following a
|
||
`primary` didn't fail immediately. This led to invalid expressions like `a
|
||
{b}` to throw a :exc:`SyntaxError` with a wrong offset, or invalid
|
||
expressions ending with a curly brace like `a {` to not fail immediately
|
||
in the REPL.
|
||
|
||
- bpo-42150: Fix possible buffer overflow in the new parser when checking
|
||
for continuation lines. Patch by Pablo Galindo.
|
||
|
||
- bpo-42123: Run the parser two times. On the first run, disable all the
|
||
rules that only generate better error messages to gain performance. If
|
||
there's a parse failure, run the parser a second time with those enabled.
|
||
|
||
- bpo-42093: The ``LOAD_ATTR`` instruction now uses new "per opcode cache"
|
||
mechanism and it is about 36% faster now. Patch by Pablo Galindo and Yury
|
||
Selivanov.
|
||
|
||
- bpo-42030: Support for the legacy AIX-specific shared library loading
|
||
support has been removed. All versions of AIX since 4.3 have supported and
|
||
defaulted to using the common Unix mechanism instead.
|
||
|
||
- bpo-41984: The garbage collector now tracks all user-defined classes.
|
||
Patch by Brandt Bucher.
|
||
|
||
- bpo-41993: Fixed potential issues with removing not completely initialized
|
||
module from ``sys.modules`` when import fails.
|
||
|
||
- bpo-41979: Star-unpacking is now allowed for with item's targets in the
|
||
PEG parser.
|
||
|
||
- bpo-41974: Removed special methods ``__int__``, ``__float__``,
|
||
``__floordiv__``, ``__mod__``, ``__divmod__``, ``__rfloordiv__``,
|
||
``__rmod__`` and ``__rdivmod__`` of the :class:`complex` class. They
|
||
always raised a :exc:`TypeError`.
|
||
|
||
- bpo-41902: Micro optimization when compute
|
||
:c:member:`~PySequenceMethods.sq_item` and
|
||
:c:member:`~PyMappingMethods.mp_subscript` of :class:`range`. Patch by
|
||
Dong-hee Na.
|
||
|
||
- bpo-41894: When loading a native module and a load failure occurs, prevent
|
||
a possible UnicodeDecodeError when not running in a UTF-8 locale by
|
||
decoding the load error message using the current locale's encoding.
|
||
|
||
- bpo-41902: Micro optimization for range.index if step is 1. Patch by
|
||
Dong-hee Na.
|
||
|
||
- bpo-41435: Add `sys._current_exceptions()` function to retrieve a
|
||
dictionary mapping each thread's identifier to the topmost exception
|
||
currently active in that thread at the time the function is called.
|
||
|
||
- bpo-38605: Enable ``from __future__ import annotations`` (:pep:`563`) by
|
||
default. The values found in :attr:`__annotations__` dicts are now
|
||
strings, e.g. ``{"x": "int"}`` instead of ``{"x": int}``.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-35455: On Solaris, :func:`~time.thread_time` is now implemented with
|
||
``gethrvtime()`` because ``clock_gettime(CLOCK_THREAD_CPUTIME_ID)`` is not
|
||
always available. Patch by Jakub Kulik.
|
||
|
||
- bpo-42233: The :func:`repr` of :mod:`typing` types containing
|
||
:ref:`Generic Alias Types <types-genericalias>` previously did not show
|
||
the parameterized types in the ``GenericAlias``. They have now been
|
||
changed to do so.
|
||
|
||
- bpo-29566: ``binhex.binhex()`` consistently writes macOS 9 line endings.
|
||
|
||
- bpo-26789: The :class:`logging.FileHandler` class now keeps a reference to
|
||
the builtin :func:`open` function to be able to open or reopen the file
|
||
during Python finalization. Fix errors like: ``NameError: name 'open' is
|
||
not defined``. Patch by Victor Stinner.
|
||
|
||
- bpo-42157: Removed the ``unicodedata.ucnhash_CAPI`` attribute which was an
|
||
internal PyCapsule object. The related private ``_PyUnicode_Name_CAPI``
|
||
structure was moved to the internal C API. Patch by Victor Stinner.
|
||
|
||
- bpo-42157: Convert the :mod:`unicodedata` extension module to the
|
||
multiphase initialization API (:pep:`489`) and convert the
|
||
``unicodedata.UCD`` static type to a heap type. Patch by Mohamed Koubaa
|
||
and Victor Stinner.
|
||
|
||
- bpo-42146: Fix memory leak in :func:`subprocess.Popen` in case an uid
|
||
(gid) specified in `user` (`group`, `extra_groups`) overflows `uid_t`
|
||
(`gid_t`).
|
||
|
||
- bpo-42103: :exc:`~plistlib.InvalidFileException` and :exc:`RecursionError`
|
||
are now the only errors caused by loading malformed binary Plist file
|
||
(previously ValueError and TypeError could be raised in some specific
|
||
cases).
|
||
|
||
- bpo-41490: In ``importlib.resources``, ``.path`` method is more aggressive
|
||
about releasing handles to zipfile objects early, enabling use-cases like
|
||
certifi to leave the context open but delete the underlying zip file.
|
||
|
||
- bpo-41052: Pickling heap types implemented in C with protocols 0 and 1
|
||
raises now an error instead of producing incorrect data.
|
||
|
||
- bpo-42089: In ``importlib.metadata.PackageNotFoundError``, make reference
|
||
to the package metadata being missing to improve the user experience.
|
||
|
||
- bpo-41491: plistlib: fix parsing XML plists with hexadecimal integer
|
||
values
|
||
|
||
- bpo-42065: Fix an incorrectly formatted error from
|
||
:meth:`_codecs.charmap_decode` when called with a mapped value outside the
|
||
range of valid Unicode code points. PR by Max Bernstein.
|
||
|
||
- bpo-41966: Fix pickling pure Python :class:`datetime.time` subclasses.
|
||
Patch by Dean Inwood.
|
||
|
||
- bpo-19270: :meth:`sched.scheduler.cancel()` will now cancel the correct
|
||
event, if two events with same priority are scheduled for the same time.
|
||
Patch by Bar Harel.
|
||
|
||
- bpo-28660: :func:`textwrap.wrap` now attempts to break long words after
|
||
hyphens when ``break_long_words=True`` and ``break_on_hyphens=True``.
|
||
|
||
- bpo-35823: Use ``vfork()`` instead of ``fork()`` for
|
||
:func:`subprocess.Popen` on Linux to improve performance in cases where it
|
||
is deemed safe.
|
||
|
||
- bpo-42043: Add support for ``zipfile.Path`` inheritance.
|
||
``zipfile.Path.is_file()`` now returns False for non-existent names.
|
||
``zipfile.Path`` objects now expose a ``.filename`` attribute and rely on
|
||
that to resolve ``.name`` and ``.parent`` when the ``Path`` object is at
|
||
the root of the zipfile.
|
||
|
||
- bpo-42021: Fix possible ref leaks in :mod:`sqlite3` module init.
|
||
|
||
- bpo-39101: Fixed tests using IsolatedAsyncioTestCase from hanging on
|
||
BaseExceptions.
|
||
|
||
- bpo-41976: Fixed a bug that was causing :func:`ctypes.util.find_library`
|
||
to return ``None`` when triying to locate a library in an environment when
|
||
gcc>=9 is available and ``ldconfig`` is not. Patch by Pablo Galindo
|
||
|
||
- bpo-41943: Fix bug where TestCase.assertLogs doesn't correctly filter
|
||
messages by level.
|
||
|
||
- bpo-41923: Implement :pep:`613`, introducing :data:`typing.TypeAlias`
|
||
annotation.
|
||
|
||
- bpo-41905: A new function in abc: *update_abstractmethods* to re-calculate
|
||
an abstract class's abstract status. In addition, *dataclass* has been
|
||
changed to call this function.
|
||
|
||
- bpo-23706: Added *newline* parameter to ``pathlib.Path.write_text()``.
|
||
|
||
- bpo-41876: Tkinter font class repr uses font name
|
||
|
||
- bpo-41831: ``str()`` for the ``type`` attribute of the ``tkinter.Event``
|
||
object always returns now the numeric code returned by Tk instead of the
|
||
name of the event type.
|
||
|
||
- bpo-39337: :func:`encodings.normalize_encoding` now ignores non-ASCII
|
||
characters.
|
||
|
||
- bpo-41747: Ensure all methods that generated from
|
||
:func:`dataclasses.dataclass` objects now have the proper ``__qualname__``
|
||
attribute referring to the class they belong to. Patch by Batuhan Taskaya.
|
||
|
||
- bpo-30681: Handle exceptions caused by unparsable date headers when using
|
||
email "default" policy. Patch by Tim Bell, Georges Toth
|
||
|
||
- bpo-41586: Add F_SETPIPE_SZ and F_GETPIPE_SZ to fcntl module. Allow
|
||
setting pipesize on subprocess.Popen.
|
||
|
||
- bpo-41229: Add ``contextlib.aclosing`` for deterministic cleanup of async
|
||
generators which is analogous to ``contextlib.closing`` for non-async
|
||
generators. Patch by Joongi Kim and John Belmonte.
|
||
|
||
- bpo-16396: Allow ``ctypes.wintypes`` to be imported on non-Windows
|
||
systems.
|
||
|
||
- bpo-4356: Add a key function to the bisect module.
|
||
|
||
- bpo-40592: :func:`shutil.which` now ignores empty entries in
|
||
:envvar:`PATHEXT` instead of treating them as a match.
|
||
|
||
- bpo-40492: Fix ``--outfile`` for :mod:`cProfile` / :mod:`profile` not
|
||
writing the output file in the original directory when the program being
|
||
profiled changes the working directory. PR by Anthony Sottile.
|
||
|
||
- bpo-34204: The :mod:`shelve` module now uses
|
||
:data:`pickle.DEFAULT_PROTOCOL` by default instead of :mod:`pickle`
|
||
protocol ``3``.
|
||
|
||
- bpo-27321: Fixed KeyError exception when flattening an email to a string
|
||
attempts to replace a non-existent Content-Transfer-Encoding header.
|
||
|
||
- bpo-38976: The :mod:`http.cookiejar` module now supports the parsing of
|
||
cookies in CURL-style cookiejar files through MozillaCookieJar on all
|
||
platforms. Previously, such cookie entries would be silently ignored when
|
||
loading a cookiejar with such entries.
|
||
|
||
Additionally, the HTTP Only attribute is persisted in the object, and will
|
||
be correctly written to file if the MozillaCookieJar object is
|
||
subsequently dumped.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-42061: Document __format__ functionality for IP addresses.
|
||
|
||
- bpo-41910: Document the default implementation of `object.__eq__`.
|
||
|
||
- bpo-42010: Clarify that subscription expressions are also valid for
|
||
certain :term:`classes <class>` and :term:`types <type>` in the standard
|
||
library, and for user-defined classes and types if the classmethod
|
||
:meth:`__class_getitem__` is provided.
|
||
|
||
- bpo-41805: Documented :ref:`generic alias type <types-genericalias>` and
|
||
:data:`types.GenericAlias`. Also added an entry in glossary for
|
||
:term:`generic types <generic type>`.
|
||
|
||
- bpo-39693: Fix tarfile's extractfile documentation
|
||
|
||
- bpo-39416: Document some restrictions on the default string
|
||
representations of numeric classes.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-41739: Fix test_logging.test_race_between_set_target_and_flush(): the
|
||
test now waits until all threads complete to avoid leaking running
|
||
threads.
|
||
|
||
- bpo-41970: Avoid a test failure in ``test_lib2to3`` if the module has
|
||
already imported at the time the test executes. Patch by Pablo Galindo.
|
||
|
||
- bpo-41944: Tests for CJK codecs no longer call ``eval()`` on content
|
||
received via HTTP.
|
||
|
||
- bpo-41306: Fixed a failure in ``test_tk.test_widgets.ScaleTest`` happening
|
||
when executing the test with Tk 8.6.10.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-38980: Add ``-fno-semantic-interposition`` to both the compile and
|
||
link line when building with ``--enable-optimizations``. Patch by Victor
|
||
Stinner and Pablo Galindo.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-38439: Updates the icons for IDLE in the Windows Store package.
|
||
|
||
- bpo-38252: Use 8-byte step to detect ASCII sequence in 64-bit Windows
|
||
build.
|
||
|
||
- bpo-39107: Update Tcl and Tk to 8.6.10 in Windows installer.
|
||
|
||
- bpo-41557: Update Windows installer to use SQLite 3.33.0.
|
||
|
||
- bpo-38324: Avoid Unicode errors when accessing certain locale data on
|
||
Windows.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-41471: Ignore invalid prefix lengths in system proxy excludes.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-33987: Mostly finish using ttk widgets, mainly for editor, settings,
|
||
and searches. Some patches by Mark Roseman.
|
||
|
||
- bpo-40511: Typing opening and closing parentheses inside the parentheses
|
||
of a function call will no longer cause unnecessary "flashing" off and on
|
||
of an existing open call-tip, e.g. when typed in a string literal.
|
||
|
||
- bpo-38439: Add a 256×256 pixel IDLE icon to the Windows .ico file. Created
|
||
by Andrew Clover. Remove the low-color gif variations from the .ico file.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-42157: The private ``_PyUnicode_Name_CAPI`` structure of the PyCapsule
|
||
API ``unicodedata.ucnhash_CAPI`` has been moved to the internal C API.
|
||
Patch by Victor Stinner.
|
||
|
||
- bpo-42015: Fix potential crash in deallocating method objects when
|
||
dynamically allocated `PyMethodDef`'s lifetime is managed through the
|
||
``self`` argument of a `PyCFunction`.
|
||
|
||
- bpo-40423: The :mod:`subprocess` module and ``os.closerange`` will now use
|
||
the ``close_range(low, high, flags)`` syscall when it is available for
|
||
more efficient closing of ranges of descriptors.
|
||
|
||
- bpo-41845: :c:func:`PyObject_GenericGetDict` is available again in the
|
||
limited API when targeting 3.10 or later.
|
||
|
||
- bpo-40422: Add `_Py_closerange` function to provide performant closing of
|
||
a range of file descriptors.
|
||
|
||
- bpo-41986: :c:data:`Py_FileSystemDefaultEncodeErrors` and
|
||
:c:data:`Py_UTF8Mode` are available again in limited API.
|
||
|
||
- bpo-41756: Add `PyIter_Send` function to allow sending value into
|
||
generator/coroutine/iterator without raising StopIteration exception to
|
||
signal return.
|
||
|
||
- bpo-41784: Added ``PyUnicode_AsUTF8AndSize`` to the limited C API.
|
||
|
||
|
||
What's New in Python 3.10.0 alpha 1?
|
||
====================================
|
||
|
||
*Release date: 2020-10-05*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-41304: Fixes `python3x._pth` being ignored on Windows, caused by the
|
||
fix for :issue:`29778` (CVE-2020-15801).
|
||
|
||
- bpo-41162: Audit hooks are now cleared later during finalization to avoid
|
||
missing events.
|
||
|
||
- bpo-29778: Ensure :file:`python3.dll` is loaded from correct locations
|
||
when Python is embedded (CVE-2020-15523).
|
||
|
||
- bpo-41004: The __hash__() methods of ipaddress.IPv4Interface and
|
||
ipaddress.IPv6Interface incorrectly generated constant hash values of 32
|
||
and 128 respectively. This resulted in always causing hash collisions. The
|
||
fix uses hash() to generate hash values for the tuple of (address, mask
|
||
length, network address).
|
||
|
||
- bpo-39603: Prevent http header injection by rejecting control characters
|
||
in http.client.putrequest(...).
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-41909: Fixed stack overflow in :func:`issubclass` and
|
||
:func:`isinstance` when getting the ``__bases__`` attribute leads to
|
||
infinite recursion.
|
||
|
||
- bpo-41922: Speed up calls to ``reversed()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention. Patch by Dong-hee Na.
|
||
|
||
- bpo-41873: Calls to ``float()`` are now faster due to the ``vectorcall``
|
||
calling convention. Patch by Dennis Sweeney.
|
||
|
||
- bpo-41870: Speed up calls to ``bool()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention. Patch by Dong-hee Na.
|
||
|
||
- bpo-1635741: Port the :mod:`_bisect` module to the multi-phase
|
||
initialization API (:pep:`489`).
|
||
|
||
- bpo-39934: Correctly count control blocks in 'except' in compiler. Ensures
|
||
that a syntax error, rather a fatal error, occurs for deeply nested, named
|
||
exception handlers.
|
||
|
||
- bpo-41780: Fix :meth:`__dir__` of :class:`types.GenericAlias`. Patch by
|
||
Batuhan Taskaya.
|
||
|
||
- bpo-1635741: Port the :mod:`_lsprof` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Port the :mod:`cmath` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Port the :mod:`_scproxy` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Port the :mod:`termios` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Convert the :mod:`_sha256` extension module types to heap
|
||
types.
|
||
|
||
- bpo-41690: Fix a possible stack overflow in the parser when parsing
|
||
functions and classes with a huge amount of arguments. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-1635741: Port the :mod:`_overlapped` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Port the :mod:`_curses_panel` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Port the :mod:`_opcode` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-41681: Fixes the wrong error description in the error raised by using
|
||
2 `,` in format string in f-string and :meth:`str.format`.
|
||
|
||
- bpo-41675: The implementation of :func:`signal.siginterrupt` now uses
|
||
:c:func:`sigaction` (if it is available in the system) instead of the
|
||
deprecated :c:func:`siginterrupt`. Patch by Pablo Galindo.
|
||
|
||
- bpo-41670: Prevent line trace being skipped on platforms not compiled with
|
||
``USE_COMPUTED_GOTOS``. Fixes issue where some lines nested within a
|
||
try-except block were not being traced on Windows.
|
||
|
||
- bpo-41654: Fix a crash that occurred when destroying subclasses of
|
||
:class:`MemoryError`. Patch by Pablo Galindo.
|
||
|
||
- bpo-1635741: Port the :mod:`zlib` extension module to multi-phase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-41631: The ``_ast`` module uses again a global state. Using a module
|
||
state per module instance is causing subtle practical problems. For
|
||
example, the Mercurial project replaces the ``__import__()`` function to
|
||
implement lazy import, whereas Python expected that ``import _ast`` always
|
||
return a fully initialized ``_ast`` module.
|
||
|
||
- bpo-40077: Convert :mod:`_operator` to use :c:func:`PyType_FromSpec`.
|
||
|
||
- bpo-1653741: Port :mod:`_sha3` to multi-phase init. Convert static types
|
||
to heap types.
|
||
|
||
- bpo-1635741: Port the :mod:`_blake2` extension module to the multi-phase
|
||
initialization API (:pep:`489`).
|
||
|
||
- bpo-41533: Free the stack allocated in ``va_build_stack`` if
|
||
``do_mkstack`` fails and the stack is not a ``small_stack``.
|
||
|
||
- bpo-41531: Fix a bug that was dropping keys when compiling dict literals
|
||
with more than 0xFFFF elements. Patch by Pablo Galindo.
|
||
|
||
- bpo-41525: The output of ``python --help`` contains now only ASCII
|
||
characters.
|
||
|
||
- bpo-1635741: Port the :mod:`_sha1`, :mod:`_sha512`, and :mod:`_md5`
|
||
extension modules to multi-phase initialization API (:pep:`489`).
|
||
|
||
- bpo-41431: Optimize ``dict_merge()`` for copying dict (e.g. ``dict(d)``
|
||
and ``{}.update(d)``).
|
||
|
||
- bpo-41428: Implement PEP 604. This supports (int | str) etc. in place of
|
||
Union[str, int].
|
||
|
||
- bpo-41340: Removed fallback implementation for ``strdup``.
|
||
|
||
- bpo-38156: Handle interrupts that come after EOF correctly in
|
||
``PyOS_StdioReadline``.
|
||
|
||
- bpo-41342: :func:`round` with integer argument is now faster (9--60%).
|
||
|
||
- bpo-41334: Constructors :func:`str`, :func:`bytes` and :func:`bytearray`
|
||
are now faster (around 30--40% for small objects).
|
||
|
||
- bpo-41295: Resolve a regression in CPython 3.8.4 where defining
|
||
"__setattr__" in a multi-inheritance setup and calling up the hierarchy
|
||
chain could fail if builtins/extension types were involved in the base
|
||
types.
|
||
|
||
- bpo-41323: Bytecode optimizations are performed directly on the control
|
||
flow graph. This will result in slightly more compact code objects in some
|
||
circumstances.
|
||
|
||
- bpo-41247: Always cache the running loop holder when running
|
||
``asyncio.set_running_loop``.
|
||
|
||
- bpo-41252: Fix incorrect refcounting in _ssl.c's
|
||
``_servername_callback()``.
|
||
|
||
- bpo-1635741: Port :mod:`multiprocessing` to multi-phase initialization
|
||
|
||
- bpo-1635741: Port :mod:`winapi` to multiphase initialization
|
||
|
||
- bpo-41215: Use non-NULL default values in the PEG parser keyword list to
|
||
overcome a bug that was preventing Python from being properly compiled
|
||
when using the XLC compiler. Patch by Pablo Galindo.
|
||
|
||
- bpo-41218: Python 3.8.3 had a regression where compiling with
|
||
ast.PyCF_ALLOW_TOP_LEVEL_AWAIT would aggressively mark list comprehension
|
||
with CO_COROUTINE. Now only list comprehension making use of async/await
|
||
will tagged as so.
|
||
|
||
- bpo-1635741: Port :mod:`faulthandler` to multiphase initialization.
|
||
|
||
- bpo-1635741: Port :mod:`sha256` to multiphase initialization
|
||
|
||
- bpo-41175: Guard against a NULL pointer dereference within bytearrayobject
|
||
triggered by the ``bytearray() + bytearray()`` operation.
|
||
|
||
- bpo-41100: add arm64 to the allowable Mac OS arches in mpdecimal.h
|
||
|
||
- bpo-41094: Fix decoding errors with audit when open files with non-ASCII
|
||
names on non-UTF-8 locale.
|
||
|
||
- bpo-39960: The "hackcheck" that prevents sneaking around a type's
|
||
__setattr__() by calling the superclass method was rewritten to allow C
|
||
implemented heap types.
|
||
|
||
- bpo-41084: Prefix the error message with 'f-string: ', when parsing an
|
||
f-string expression which throws a :exc:`SyntaxError`.
|
||
|
||
- bpo-40521: Empty frozensets are no longer singletons.
|
||
|
||
- bpo-41076: Pre-feed the parser with the location of the f-string
|
||
expression, not the f-string itself, which allows us to skip the shifting
|
||
of the AST node locations after the parsing is completed.
|
||
|
||
- bpo-41056: Fixes a reference to deallocated stack space during startup
|
||
when constructing sys.path involving a relative symlink when code was
|
||
supplied via -c. (discovered via Coverity)
|
||
|
||
- bpo-41061: Fix incorrect expressions and asserts in hashtable code and
|
||
tests.
|
||
|
||
- bpo-41052: Opt out serialization/deserialization for _random.Random
|
||
|
||
- bpo-40939: Rename `PyPegen*` functions to `PyParser*`, so that we can
|
||
remove the old set of `PyParser*` functions that were using the old
|
||
parser, but keep everything backwards-compatible.
|
||
|
||
- bpo-35975: Stefan Behnel reported that cf_feature_version is used even
|
||
when PyCF_ONLY_AST is not set. This is against the intention and against
|
||
the documented behavior, so it's been fixed.
|
||
|
||
- bpo-40939: Remove the remaining files from the old parser and the
|
||
:mod:`symbol` module.
|
||
|
||
- bpo-40077: Convert :mod:`_bz2` to use :c:func:`PyType_FromSpec`.
|
||
|
||
- bpo-41006: The ``encodings.latin_1`` module is no longer imported at
|
||
startup. Now it is only imported when it is the filesystem encoding or the
|
||
stdio encoding.
|
||
|
||
- bpo-40636: :func:`zip` now supports :pep:`618`'s ``strict`` parameter,
|
||
which raises a :exc:`ValueError` if the arguments are exhausted at
|
||
different lengths. Patch by Brandt Bucher.
|
||
|
||
- bpo-1635741: Port :mod:`_gdbm` to multiphase initialization.
|
||
|
||
- bpo-40985: Fix a bug that caused the :exc:`SyntaxError` text to be empty
|
||
when a file ends with a line ending in a line continuation character (i.e.
|
||
backslash). The error text should contain the text of the last line.
|
||
|
||
- bpo-40958: Fix a possible buffer overflow in the PEG parser when gathering
|
||
information for emitting syntax errors. Patch by Pablo Galindo.
|
||
|
||
- bpo-1635741: Port :mod:`_dbm` to multiphase initialization.
|
||
|
||
- bpo-40957: Fix refleak in _Py_fopen_obj() when PySys_Audit() fails
|
||
|
||
- bpo-40950: Add a state to the :mod:`nis` module (:pep:`3121`) and apply
|
||
the multiphase initialization. Patch by Dong-hee Na.
|
||
|
||
- bpo-40947: The Python :ref:`Path Configuration <init-path-config>` now
|
||
takes :c:member:`PyConfig.platlibdir` in account.
|
||
|
||
- bpo-40939: Remove the old parser, the :mod:`parser` module and all
|
||
associated support code, command-line options and environment variables.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-40847: Fix a bug where a line with only a line continuation character
|
||
is not considered a blank line at tokenizer level. In such cases, more
|
||
than a single `NEWLINE` token was emitted. The old parser was working
|
||
around the issue, but the new parser threw a :exc:`SyntaxError` for valid
|
||
input due to this. For example, an empty line following a line
|
||
continuation character was interpreted as a :exc:`SyntaxError`.
|
||
|
||
- bpo-40890: Each dictionary view now has a ``mapping`` attribute that
|
||
provides a :class:`types.MappingProxyType` wrapping the original
|
||
dictionary. Patch contributed by Dennis Sweeney.
|
||
|
||
- bpo-40889: Improved the performance of symmetric difference operations on
|
||
dictionary item views. Patch by Dennis Sweeney.
|
||
|
||
- bpo-40904: Fix possible segfault in the new PEG parser when parsing
|
||
f-string containing yield statements with no value (:code:`f"{yield}"`).
|
||
Patch by Pablo Galindo
|
||
|
||
- bpo-40903: Fixed a possible segfault in the new PEG parser when producing
|
||
error messages for invalid assignments of the form :code:`p=p=`. Patch by
|
||
Pablo Galindo
|
||
|
||
- bpo-40880: Fix invalid memory read in the new parser when checking
|
||
newlines in string literals. Patch by Pablo Galindo.
|
||
|
||
- bpo-40883: Fix memory leak in when parsing f-strings in the new parser.
|
||
Patch by Pablo Galindo
|
||
|
||
- bpo-40870: Raise :exc:`ValueError` when validating custom AST's where the
|
||
constants ``True``, ``False`` and ``None`` are used within a
|
||
:class:`ast.Name` node.
|
||
|
||
- bpo-40854: Allow overriding :data:`sys.platlibdir` via a new
|
||
:envvar:`PYTHONPLATLIBDIR` environment variable.
|
||
|
||
- bpo-40826: Fix GIL usage in :c:func:`PyOS_Readline`: lock the GIL to set
|
||
an exception and pass the Python thread state when checking if there is a
|
||
pending signal.
|
||
|
||
- bpo-1635741: Port :mod:`fcntl` to multiphase initialization.
|
||
|
||
- bpo-19468: Delete unnecessary instance check in importlib.reload(). Patch
|
||
by Furkan Önder.
|
||
|
||
- bpo-40824: Unexpected errors in calling the ``__iter__`` method are no
|
||
longer masked by ``TypeError`` in the :keyword:`in` operator and functions
|
||
:func:`~operator.contains`, :func:`~operator.indexOf` and
|
||
:func:`~operator.countOf` of the :mod:`operator` module.
|
||
|
||
- bpo-40792: Attributes ``start``, ``stop`` and ``step`` of the
|
||
:class:`range` object now always has exact type :class:`int`. Previously,
|
||
they could have been an instance of a subclass of ``int``.
|
||
|
||
- bpo-40780: Fix a corner case where g-style string formatting of a float
|
||
failed to remove trailing zeros.
|
||
|
||
- bpo-38964: When there's a :exc:`SyntaxError` in the expression part of an
|
||
fstring, the filename attribute of the :exc:`SyntaxError` gets correctly
|
||
set to the name of the file the fstring resides in.
|
||
|
||
- bpo-40750: Support the "-d" debug flag in the new PEG parser. Patch by
|
||
Pablo Galindo
|
||
|
||
- bpo-40217: Instances of types created with
|
||
:c:func:`PyType_FromSpecWithBases` will no longer automatically visit
|
||
their class object when traversing references in the garbage collector.
|
||
The user is expected to manually visit the object's class. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-39573: :c:func:`Py_TYPE()` is changed to the inline static function.
|
||
Patch by Dong-hee Na.
|
||
|
||
- bpo-40696: Fix a hang that can arise after :meth:`generator.throw` due to
|
||
a cycle in the exception context chain.
|
||
|
||
- bpo-40521: Each interpreter now its has own free lists, singletons and
|
||
caches:
|
||
|
||
* Free lists: float, tuple, list, dict, frame, context,
|
||
asynchronous generator, MemoryError.
|
||
* Singletons: empty tuple, empty bytes string, empty Unicode string,
|
||
single byte character, single Unicode (latin1) character.
|
||
* Slice cache.
|
||
|
||
They are no longer shared by all interpreters.
|
||
|
||
- bpo-40679: Certain :exc:`TypeError` messages about missing or extra
|
||
arguments now include the function's :term:`qualified name`. Patch by
|
||
Dennis Sweeney.
|
||
|
||
- bpo-29590: Make the stack trace correct after calling
|
||
:meth:`generator.throw` on a generator that has yielded from a ``yield
|
||
from``.
|
||
|
||
- bpo-4022: Improve performance of generators by not raising internal
|
||
StopIteration.
|
||
|
||
- bpo-1635741: Port :mod:`mmap` to multiphase initialization.
|
||
|
||
- bpo-1635741: Port :mod:`_lzma` to multiphase initialization.
|
||
|
||
- bpo-37999: Builtin and extension functions that take integer arguments no
|
||
longer accept :class:`~decimal.Decimal`\ s, :class:`~fractions.Fraction`\
|
||
s and other objects that can be converted to integers only with a loss
|
||
(e.g. that have the :meth:`~object.__int__` method but do not have the
|
||
:meth:`~object.__index__` method).
|
||
|
||
- bpo-29882: Add :meth:`int.bit_count()`, counting the number of ones in the
|
||
binary representation of an integer. Patch by Niklas Fiekas.
|
||
|
||
- bpo-36982: Use ncurses extended color functions when available to support
|
||
terminals with 256 colors, and add the new function
|
||
:func:`curses.has_extended_color_support` to indicate whether extended
|
||
color support is provided by the underlying ncurses library.
|
||
|
||
- bpo-19569: Add the private macros ``_Py_COMP_DIAG_PUSH``,
|
||
``_Py_COMP_DIAG_IGNORE_DEPR_DECLS``, and ``_Py_COMP_DIAG_POP``.
|
||
|
||
- bpo-26680: The int type now supports the x.is_integer() method for
|
||
compatibility with float.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-41900: C14N 2.0 serialisation in xml.etree.ElementTree failed for
|
||
unprefixed attributes when a default namespace was defined.
|
||
|
||
- bpo-41887: Strip leading spaces and tabs on :func:`ast.literal_eval`. Also
|
||
document stripping of spaces and tabs for :func:`eval`.
|
||
|
||
- bpo-41773: Note in documentation that :func:`random.choices` doesn't
|
||
support non-finite weights, raise :exc:`ValueError` when given non-finite
|
||
weights.
|
||
|
||
- bpo-41840: Fix a bug in the :mod:`symtable` module that was causing
|
||
module-scope global variables to not be reported as both local and global.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-41842: Add :func:`codecs.unregister` function to unregister a codec
|
||
search function.
|
||
|
||
- bpo-40564: In ``zipfile.Path``, mutate the passed ZipFile object type
|
||
instead of making a copy. Prevents issues when both the local copy and the
|
||
caller’s copy attempt to close the same file handle.
|
||
|
||
- bpo-40670: More reliable validation of statements in
|
||
:class:`timeit.Timer`. It now accepts "empty" statements (only whitespaces
|
||
and comments) and rejects misindentent statements.
|
||
|
||
- bpo-41833: The :class:`threading.Thread` constructor now uses the target
|
||
name if the *target* argument is specified but the *name* argument is
|
||
omitted.
|
||
|
||
- bpo-41817: fix `tkinter.EventType` Enum so all members are strings, and
|
||
none are tuples
|
||
|
||
- bpo-41810: :data:`types.EllipsisType`, :data:`types.NotImplementedType`
|
||
and :data:`types.NoneType` have been reintroduced, providing a new set of
|
||
types readily interpretable by static type checkers.
|
||
|
||
- bpo-41815: Fix SQLite3 segfault when backing up closed database. Patch
|
||
contributed by Peter David McCormick.
|
||
|
||
- bpo-41816: StrEnum added: it ensures that all members are already strings
|
||
or string candidates
|
||
|
||
- bpo-41517: fix bug allowing Enums to be extended via multiple inheritance
|
||
|
||
- bpo-39587: use the correct mix-in data type when constructing Enums
|
||
|
||
- bpo-41792: Add is_typeddict function to typing.py to check if a type is a
|
||
TypedDict class
|
||
|
||
Previously there was no way to check that without using private API. See
|
||
the `relevant issue in python/typing
|
||
<https://github.com/python/typing/issues/751>`
|
||
|
||
- bpo-41789: Honor `object` overrides in `Enum` class creation
|
||
(specifically, `__str__`, `__repr__`, `__format__`, and `__reduce_ex__`).
|
||
|
||
- bpo-32218: `enum.Flag` and `enum.IntFlag` members are now iterable
|
||
|
||
- bpo-39651: Fix a race condition in the ``call_soon_threadsafe()`` method
|
||
of ``asyncio.ProactorEventLoop``: do nothing if the self-pipe socket has
|
||
been closed.
|
||
|
||
- bpo-1635741: Port the ``mashal`` extension module to the multi-phase
|
||
initialization API (:pep:`489`).
|
||
|
||
- bpo-1635741: Port the ``_string`` extension module to the multi-phase
|
||
initialization API (:pep:`489`).
|
||
|
||
- bpo-41732: Added an :term:`iterator` to :class:`memoryview`.
|
||
|
||
- bpo-41720: Fixed :meth:`turtle.Vec2D.__rmul__` for arguments which are not
|
||
int or float.
|
||
|
||
- bpo-41696: Fix handling of debug mode in :func:`asyncio.run`. This allows
|
||
setting ``PYTHONASYNCIODEBUG`` or ``-X dev`` to enable asyncio debug mode
|
||
when using :func:`asyncio.run`.
|
||
|
||
- bpo-41687: Fix implementation of sendfile to be compatible with Solaris.
|
||
|
||
- bpo-41662: No longer override exceptions raised in ``__len__()`` of a
|
||
sequence of parameters in :mod:`sqlite3` with
|
||
:exc:`~sqlite3.ProgrammingError`.
|
||
|
||
- bpo-39010: Restarting a ``ProactorEventLoop`` on Windows no longer logs
|
||
spurious ``ConnectionResetErrors``.
|
||
|
||
- bpo-41638: :exc:`~sqlite3.ProgrammingError` message for absent parameter
|
||
in :mod:`sqlite3` contains now the name of the parameter instead of its
|
||
index when parameters are supplied as a dict.
|
||
|
||
- bpo-41662: Fixed crash when mutate list of parameters during iteration in
|
||
:mod:`sqlite3`.
|
||
|
||
- bpo-41513: Improved the accuracy of math.hypot(). Internally, each step
|
||
is computed with extra precision so that the result is now almost always
|
||
correctly rounded.
|
||
|
||
- bpo-41609: The pdb whatis command correctly reports instance methods as
|
||
'Method' rather than 'Function'.
|
||
|
||
- bpo-39994: Fixed pprint's handling of dict subclasses that override
|
||
__repr__.
|
||
|
||
- bpo-32751: When cancelling the task due to a timeout,
|
||
:meth:`asyncio.wait_for` will now wait until the cancellation is complete
|
||
also in the case when *timeout* is <= 0, like it does with positive
|
||
timeouts.
|
||
|
||
- bpo-37658: :meth:`asyncio.wait_for` now properly handles races between
|
||
cancellation of itself and the completion of the wrapped awaitable.
|
||
|
||
- bpo-40782: Change the method asyncio.AbstractEventLoop.run_in_executor to
|
||
not be a coroutine.
|
||
|
||
- bpo-41520: Fix :mod:`codeop` regression that prevented turning compile
|
||
warnings into errors.
|
||
|
||
- bpo-41528: turtle uses math module functions to convert degrees to radians
|
||
and vice versa and to calculate vector norm
|
||
|
||
- bpo-41513: Minor algorithmic improvement to math.hypot() and math.dist()
|
||
giving small gains in speed and accuracy.
|
||
|
||
- bpo-41503: Fixed a race between setTarget and flush in
|
||
logging.handlers.MemoryHandler.
|
||
|
||
- bpo-41497: Fix potential UnicodeDecodeError in dis module.
|
||
|
||
- bpo-41467: On Windows, fix asyncio ``recv_into()`` return value when the
|
||
socket/pipe is closed (:exc:`BrokenPipeError`): return ``0`` rather than
|
||
an empty byte string (``b''``).
|
||
|
||
- bpo-41425: Make tkinter doc example runnable.
|
||
|
||
- bpo-41421: Make an algebraic simplification to random.paretovariate(). It
|
||
now is slightly less subject to round-off error and is slightly faster.
|
||
Inputs that used to cause ZeroDivisionError now cause an OverflowError
|
||
instead.
|
||
|
||
- bpo-41440: Add :func:`os.cpu_count()` support for VxWorks RTOS.
|
||
|
||
- bpo-41316: Fix the :mod:`tarfile` module to write only basename of TAR
|
||
file to GZIP compression header.
|
||
|
||
- bpo-41384: Raise TclError instead of TypeError when an unknown option is
|
||
passed to tkinter.OptionMenu.
|
||
|
||
- bpo-41317: Use add_done_callback() in asyncio.loop.sock_accept() to
|
||
unsubscribe reader early on cancellation.
|
||
|
||
- bpo-41364: Reduce import overhead of :mod:`uuid`.
|
||
|
||
- bpo-35328: Set the environment variable ``VIRTUAL_ENV_PROMPT`` at
|
||
:mod:`venv` activation.
|
||
|
||
- bpo-41341: Recursive evaluation of `typing.ForwardRef` in
|
||
`get_type_hints`.
|
||
|
||
- bpo-41344: Prevent creating :class:`shared_memory.SharedMemory` objects
|
||
with :code:`size=0`.
|
||
|
||
- bpo-41333: :meth:`collections.OrderedDict.pop` is now 2 times faster.
|
||
|
||
- bpo-41288: Unpickling invalid NEWOBJ_EX opcode with the C implementation
|
||
raises now UnpicklingError instead of crashing.
|
||
|
||
- bpo-39017: Avoid infinite loop when reading specially crafted TAR files
|
||
using the tarfile module (CVE-2019-20907).
|
||
|
||
- bpo-41273: Speed up any transport using ``_ProactorReadPipeTransport`` by
|
||
calling ``recv_into`` instead of ``recv``, thus not creating a new buffer
|
||
for each ``recv`` call in the transport's read loop.
|
||
|
||
- bpo-41235: Fix the error handling in
|
||
:meth:`ssl.SSLContext.load_dh_params`.
|
||
|
||
- bpo-41207: In distutils.spawn, restore expectation that DistutilsExecError
|
||
is raised when the command is not found.
|
||
|
||
- bpo-29727: Register :class:`array.array` as a
|
||
:class:`~collections.abc.MutableSequence`. Patch by Pablo Galindo.
|
||
|
||
- bpo-39168: Remove the ``__new__`` method of :class:`typing.Generic`.
|
||
|
||
- bpo-41194: Fix a crash in the ``_ast`` module: it can no longer be loaded
|
||
more than once. It now uses a global state rather than a module state.
|
||
|
||
- bpo-41195: Add read-only ssl.SSLContext.security_level attribute to
|
||
retrieve the context's security level.
|
||
|
||
- bpo-41193: The ``write_history()`` atexit function of the readline
|
||
completer now ignores any :exc:`OSError` to ignore error if the filesystem
|
||
is read-only, instead of only ignoring :exc:`FileNotFoundError` and
|
||
:exc:`PermissionError`.
|
||
|
||
- bpo-41182: selector: use DefaultSelector based upon implementation
|
||
|
||
- bpo-41161: The decimal module now requires libmpdec-2.5.0. Users of
|
||
--with-system-libmpdec should update their system library.
|
||
|
||
- bpo-40874: The decimal module now requires libmpdec-2.5.0.
|
||
|
||
- bpo-41138: Fixed the :mod:`trace` module CLI for Python source files with
|
||
non-UTF-8 encoding.
|
||
|
||
- bpo-31082: Use the term "iterable" in the docstring for
|
||
:func:`functools.reduce`.
|
||
|
||
- bpo-40521: Remove freelist from collections.deque().
|
||
|
||
- bpo-31938: Fix default-value signatures of several functions in the
|
||
:mod:`select` module - by Anthony Sottile.
|
||
|
||
- bpo-41068: Fixed reading files with non-ASCII names from ZIP archive
|
||
directly after writing them.
|
||
|
||
- bpo-41058: :func:`pdb.find_function` now correctly determines the source
|
||
file encoding.
|
||
|
||
- bpo-41056: Invalid file descriptor values are now prevented from being
|
||
passed to os.fpathconf. (discovered by Coverity)
|
||
|
||
- bpo-41056: Fix a NULL pointer dereference within the ssl module during a
|
||
MemoryError in the keylog callback. (discovered by Coverity)
|
||
|
||
- bpo-41056: Fixed an instance where a MemoryError within the zoneinfo
|
||
module might not be reported or not reported at its source. (found by
|
||
Coverity)
|
||
|
||
- bpo-41048: :func:`mimetypes.read_mime_types` function reads the rule file
|
||
using UTF-8 encoding, not the locale encoding. Patch by Srinivas Reddy
|
||
Thatiparthy.
|
||
|
||
- bpo-41043: Fixed the use of :func:`~glob.glob` in the stdlib: literal part
|
||
of the path is now always correctly escaped.
|
||
|
||
- bpo-41025: Fixed an issue preventing the C implementation of
|
||
:class:`zoneinfo.ZoneInfo` from being subclassed.
|
||
|
||
- bpo-35018: Add the :class:`xml.sax.handler.LexicalHandler` class that is
|
||
present in other SAX XML implementations.
|
||
|
||
- bpo-41002: Improve performance of HTTPResponse.read with a given amount.
|
||
Patch by Bruce Merry.
|
||
|
||
- bpo-40448: :mod:`ensurepip` now disables the use of `pip` cache when
|
||
installing the bundled versions of `pip` and `setuptools`. Patch by
|
||
Krzysztof Konopko.
|
||
|
||
- bpo-40967: Removed :meth:`asyncio.Task.current_task` and
|
||
:meth:`asyncio.Task.all_tasks`. Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-40924: Ensure ``importlib.resources.path`` returns an extant path for
|
||
the SourceFileLoader's resource reader. Avoids the regression identified
|
||
in master while a long-term solution is devised.
|
||
|
||
- bpo-40955: Fix a minor memory leak in :mod:`subprocess` module when
|
||
extra_groups was specified.
|
||
|
||
- bpo-40855: The standard deviation and variance functions in the statistics
|
||
module were ignoring their mu and xbar arguments.
|
||
|
||
- bpo-40939: Use the new PEG parser when generating the stdlib
|
||
:mod:`keyword` module.
|
||
|
||
- bpo-23427: Add :data:`sys.orig_argv` attribute: the list of the original
|
||
command line arguments passed to the Python executable.
|
||
|
||
- bpo-33689: Ignore empty or whitespace-only lines in .pth files. This
|
||
matches the documentated behavior. Before, empty lines caused the
|
||
site-packages dir to appear multiple times in sys.path. By Ido Michael,
|
||
contributors Malcolm Smith and Tal Einat.
|
||
|
||
- bpo-40884: Added a `defaults` parameter to :class:`logging.Formatter`, to
|
||
allow specifying default values for custom fields. Patch by Asaf Alon and
|
||
Bar Harel.
|
||
|
||
- bpo-40876: Clarify error message in the :mod:`csv` module.
|
||
|
||
- bpo-39791: Refresh importlib.metadata from importlib_metadata 1.6.1.
|
||
|
||
- bpo-40807: Stop codeop._maybe_compile, used by code.InteractiveInterpreter
|
||
(and IDLE). from emitting each warning three times.
|
||
|
||
- bpo-32604: Fix reference leak in the :mod:`select` module when the module
|
||
is imported in a subinterpreter.
|
||
|
||
- bpo-39791: Built-in loaders (SourceFileLoader and ZipImporter) now supply
|
||
``TraversableResources`` implementations for ``ResourceReader``, and the
|
||
fallback function has been removed.
|
||
|
||
- bpo-39314: :class:`rlcompleter.Completer` and the standard Python shell
|
||
now close the parenthesis for functions that take no arguments. Patch
|
||
contributed by Rémi Lapeyre.
|
||
|
||
- bpo-17005: The topological sort functionality that was introduced
|
||
initially in the :mod:`functools` module has been moved to a new
|
||
:mod:`graphlib` module to better accommodate the new tools and keep the
|
||
original scope of the :mod:`functools` module. Patch by Pablo Galindo
|
||
|
||
- bpo-40834: Fix truncate when sending str object
|
||
with_xxsubinterpreters.channel_send.
|
||
|
||
- bpo-40755: Add rich comparisons to collections.Counter().
|
||
|
||
- bpo-26407: Unexpected errors in calling the ``__iter__`` method are no
|
||
longer masked by ``TypeError`` in :func:`csv.reader`,
|
||
:func:`csv.writer.writerow` and :meth:`csv.writer.writerows`.
|
||
|
||
- bpo-39384: Fixed email.contentmanager to allow set_content() to set a null
|
||
string.
|
||
|
||
- bpo-40744: The :mod:`sqlite3` module uses SQLite API functions that
|
||
require SQLite v3.7.3 or higher. This patch removes support for older
|
||
SQLite versions, and explicitly requires SQLite 3.7.3 both at build,
|
||
compile and runtime. Patch by Sergey Fedoseev and Erlend E. Aasland.
|
||
|
||
- bpo-40777: Initialize PyDateTime_IsoCalendarDateType.tp_base at run-time
|
||
to avoid errors on some compilers.
|
||
|
||
- bpo-38488: Update ensurepip to install pip 20.1.1 and setuptools 47.1.0.
|
||
|
||
- bpo-40792: The result of :func:`operator.index` now always has exact type
|
||
:class:`int`. Previously, the result could have been an instance of a
|
||
subclass of ``int``.
|
||
|
||
- bpo-40767: :mod:`webbrowser` now properly finds the default browser in
|
||
pure Wayland systems by checking the WAYLAND_DISPLAY environment variable.
|
||
Patch contributed by Jérémy Attali.
|
||
|
||
- bpo-40791: :func:`hashlib.compare_digest` uses OpenSSL's
|
||
``CRYPTO_memcmp()`` function when OpenSSL is available.
|
||
|
||
- bpo-40795: :mod:`ctypes` module: If ctypes fails to convert the result of
|
||
a callback or if a ctypes callback function raises an exception,
|
||
sys.unraisablehook is now called with an exception set. Previously, the
|
||
error was logged into stderr by :c:func:`PyErr_Print`.
|
||
|
||
- bpo-16995: Add :func:`base64.b32hexencode` and :func:`base64.b32hexdecode`
|
||
to support the Base32 Encoding with Extended Hex Alphabet.
|
||
|
||
- bpo-30008: Fix :mod:`ssl` code to be compatible with OpenSSL 1.1.x builds
|
||
that use ``no-deprecated`` and ``--api=1.1.0``.
|
||
|
||
- bpo-30064: Fix asyncio ``loop.sock_*`` race condition issue
|
||
|
||
- bpo-40759: Deprecate the :mod:`symbol` module.
|
||
|
||
- bpo-40756: The second argument (extra) of ``LoggerAdapter.__init__`` now
|
||
defaults to None.
|
||
|
||
- bpo-37129: Add a new :data:`os.RWF_APPEND` flag for :func:`os.pwritev`.
|
||
|
||
- bpo-40737: Fix possible reference leak for :mod:`sqlite3` initialization.
|
||
|
||
- bpo-40726: Handle cases where the ``end_lineno`` is ``None`` on
|
||
:func:`ast.increment_lineno`.
|
||
|
||
- bpo-40698: :mod:`distutils` upload creates SHA2-256 and Blake2b-256
|
||
digests. MD5 digests is skipped if platform blocks MD5.
|
||
|
||
- bpo-40695: :mod:`hashlib` no longer falls back to builtin hash
|
||
implementations when OpenSSL provides a hash digest and the algorithm is
|
||
blocked by security policy.
|
||
|
||
- bpo-9216: func:`hashlib.new` passed ``usedforsecurity`` to OpenSSL EVP
|
||
constructor ``_hashlib.new()``. test_hashlib and test_smtplib handle
|
||
strict security policy better.
|
||
|
||
- bpo-40614: :func:`ast.parse` will not parse self documenting expressions
|
||
in f-strings when passed ``feature_version`` is less than ``(3, 8)``.
|
||
|
||
- bpo-40626: Add h5 file extension as MIME Type application/x-hdf5, as per
|
||
HDF Group recommendation for HDF5 formatted data files. Patch contributed
|
||
by Mark Schwab.
|
||
|
||
- bpo-25920: On macOS, when building Python for macOS 10.4 and older, which
|
||
wasn't the case for python.org macOS installer, :func:`socket.getaddrinfo`
|
||
no longer uses an internal lock to prevent race conditions when calling
|
||
``getaddrinfo()`` which is thread-safe since macOS 10.5. Python 3.9
|
||
requires macOS 10.6 or newer. The internal lock caused random hang on fork
|
||
when another thread was calling :func:`socket.getaddrinfo`. The lock was
|
||
also used on FreeBSD older than 5.3, OpenBSD older than 201311 and NetBSD
|
||
older than 4.
|
||
|
||
- bpo-40671: Prepare ``_hashlib`` for :pep:`489` and use
|
||
:c:func:`PyModule_AddType`.
|
||
|
||
- bpo-32309: Added a new :term:`coroutine` :func:`asyncio.to_thread`. It is
|
||
mainly used for running IO-bound functions in a separate thread to avoid
|
||
blocking the event loop, and essentially works as a high-level version of
|
||
:meth:`~asyncio.loop.run_in_executor` that can directly take keyword
|
||
arguments.
|
||
|
||
- bpo-36543: Restored the deprecated :mod:`xml.etree.cElementTree` module.
|
||
|
||
- bpo-40611: :data:`~mmap.MAP_POPULATE` constant has now been added to the
|
||
list of exported :mod:`mmap` module flags.
|
||
|
||
- bpo-39881: PEP 554 for use in the test suite. (Patch By Joannah Nanjekye)
|
||
|
||
- bpo-13097: ``ctypes`` now raises an ``ArgumentError`` when a callback is
|
||
invoked with more than 1024 arguments.
|
||
|
||
- bpo-39385: A new test assertion context-manager,
|
||
:func:`unittest.assertNoLogs` will ensure a given block of code emits no
|
||
log messages using the logging module. Contributed by Kit Yan Choi.
|
||
|
||
- bpo-23082: Updated the error message and docs of PurePath.relative_to() to
|
||
better reflect the function behaviour.
|
||
|
||
- bpo-40318: Use SQLite3 trace v2 API, if it is available.
|
||
|
||
- bpo-40105: ZipFile truncates files to avoid corruption when a shorter
|
||
comment is provided in append ("a") mode. Patch by Jan Mazur.
|
||
|
||
- bpo-40084: Fix ``Enum.__dir__``: dir(Enum.member) now includes attributes
|
||
as well as methods.
|
||
|
||
- bpo-31122: ssl.wrap_socket() now raises ssl.SSLEOFError rather than
|
||
OSError when peer closes connection during TLS negotiation
|
||
|
||
- bpo-39728: fix default `_missing_` so a duplicate `ValueError` is not set
|
||
as the `__context__` of the original `ValueError`
|
||
|
||
- bpo-39244: Fixed :class:`multiprocessing.context.get_all_start_methods` to
|
||
properly return the default method first on macOS.
|
||
|
||
- bpo-39040: Fix parsing of invalid mime headers parameters by collapsing
|
||
whitespace between encoded words in a bare-quote-string.
|
||
|
||
- bpo-38731: Add ``--quiet`` option to command-line interface of
|
||
:mod:`py_compile`. Patch by Gregory Schevchenko.
|
||
|
||
- bpo-35714: :exc:`struct.error` is now raised if there is a null character
|
||
in a :mod:`struct` format string.
|
||
|
||
- bpo-38144: Added the *root_dir* and *dir_fd* parameters in
|
||
:func:`glob.glob`.
|
||
|
||
- bpo-26543: Fix :meth:`IMAP4.noop()` when debug mode is enabled (ex:
|
||
``imaplib.Debug = 3``).
|
||
|
||
- bpo-12178: :func:`csv.writer` now correctly escapes *escapechar* when
|
||
input contains *escapechar*. Patch by Catalin Iacob, Berker Peksag, and
|
||
Itay Elbirt.
|
||
|
||
- bpo-36290: AST nodes are now raising :exc:`TypeError` on conflicting
|
||
keyword arguments. Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-33944: Added site.py site-packages tracing in verbose mode.
|
||
|
||
- bpo-35078: Refactor formatweekday, formatmonthname methods in
|
||
LocaleHTMLCalendar and LocaleTextCalendar classes in calendar module to
|
||
call the base class methods.This enables customizable CSS classes for
|
||
LocaleHTMLCalendar. Patch by Srinivas Reddy Thatiparthy
|
||
|
||
- bpo-29620: :func:`~unittest.TestCase.assertWarns` no longer raises a
|
||
``RuntimeException`` when accessing a module's ``__warningregistry__``
|
||
causes importation of a new module, or when a new module is imported in
|
||
another thread. Patch by Kernc.
|
||
|
||
- bpo-31844: Remove ``ParserBase.error()`` method from the private and
|
||
undocumented ``_markupbase`` module. :class:`html.parser.HTMLParser` is
|
||
the only subclass of ``ParserBase`` and its ``error()`` implementation was
|
||
deprecated in Python 3.4 and removed in Python 3.5.
|
||
|
||
- bpo-34226: Fix `cgi.parse_multipart` without content_length. Patch by
|
||
Roger Duran
|
||
|
||
- bpo-33660: Fix pathlib.PosixPath to resolve a relative path located on the
|
||
root directory properly.
|
||
|
||
- bpo-28557: Improve the error message for a misbehaving ``rawio.readinto``
|
||
|
||
- bpo-26680: The d.is_integer() method is added to the Decimal type, for
|
||
compatibility with other number types.
|
||
|
||
- bpo-26680: The x.is_integer() method is incorporated into the abstract
|
||
types of the numeric tower, Real, Rational and Integral, with appropriate
|
||
default implementations.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-41428: Add documentation for :pep:`604` (Allow writing union types as
|
||
``X | Y``).
|
||
|
||
- bpo-41774: In Programming FAQ "Sequences (Tuples/Lists)" section, add "How
|
||
do you remove multiple items from a list".
|
||
|
||
- bpo-35293: Fix RemovedInSphinx40Warning when building the documentation.
|
||
Patch by Dong-hee Na.
|
||
|
||
- bpo-37149: Change Shipman tkinter doc link from archive.org to TkDocs.
|
||
(The doc has been removed from the NMT server.) The new link responds
|
||
much faster and includes a short explanatory note.
|
||
|
||
- bpo-41726: Update the refcounts info of ``PyType_FromModuleAndSpec``.
|
||
|
||
- bpo-41624: Fix the signature of :class:`typing.Coroutine`.
|
||
|
||
- bpo-40204: Enable Sphinx 3.2 ``c_allow_pre_v3`` option and disable
|
||
``c_warn_on_allowed_pre_v3`` option to make the documentation compatible
|
||
with Sphinx 2 and Sphinx 3.
|
||
|
||
- bpo-41045: Add documentation for debug feature of f-strings.
|
||
|
||
- bpo-41314: Changed the release when ``from __future__ import annotations``
|
||
becomes the default from ``4.0`` to ``3.10`` (following a change in PEP
|
||
563).
|
||
|
||
- bpo-40979: Refactored typing.rst, arranging more than 70 classes,
|
||
functions, and decorators into new sub-sections.
|
||
|
||
- bpo-40552: Fix in tutorial section 4.2. Code snippet is now correct.
|
||
|
||
- bpo-39883: Make code, examples, and recipes in the Python documentation be
|
||
licensed under the more permissive BSD0 license in addition to the
|
||
existing Python 2.0 license.
|
||
|
||
- bpo-37703: Updated Documentation to comprehensively elaborate on the
|
||
behaviour of gather.cancel()
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-41939: Fix test_site.test_license_exists_at_url(): call
|
||
``urllib.request.urlcleanup()`` to reset the global
|
||
``urllib.request._opener``. Patch by Victor Stinner.
|
||
|
||
- bpo-41731: Make test_cmd_line_script pass with option '-vv'.
|
||
|
||
- bpo-41602: Add tests for SIGINT handling in the runpy module.
|
||
|
||
- bpo-41521: :mod:`test.support`: Rename ``blacklist`` parameter of
|
||
:func:`~test.support.check__all__` to ``not_exported``.
|
||
|
||
- bpo-41477: Make ctypes optional in test_genericalias.
|
||
|
||
- bpo-41085: Fix integer overflow in the :meth:`array.array.index` method on
|
||
64-bit Windows for index larger than ``2**31``.
|
||
|
||
- bpo-41069: :data:`test.support.TESTFN` and the current directory for tests
|
||
when run via ``test.regrtest`` contain now non-ascii characters if
|
||
possible.
|
||
|
||
- bpo-38377: On Linux, skip tests using multiprocessing if the current user
|
||
cannot create a file in ``/dev/shm/`` directory. Add the
|
||
:func:`~test.support.skip_if_broken_multiprocessing_synchronize` function
|
||
to the :mod:`test.support` module.
|
||
|
||
- bpo-41009: Fix use of ``support.require_{linux|mac|freebsd}_version()``
|
||
decorators as class decorator.
|
||
|
||
- bpo-41003: Fix ``test_copyreg`` when ``numpy`` is installed:
|
||
``test.pickletester`` now saves/restores warnings filters when importing
|
||
``numpy``, to ignore filters installed by ``numpy``.
|
||
|
||
- bpo-40964: Disable remote :mod:`imaplib` tests, host cyrus.andrew.cmu.edu
|
||
is blocking incoming connections.
|
||
|
||
- bpo-40927: Fix test_binhex when run twice: it now uses
|
||
import_fresh_module() to ensure that it raises DeprecationWarning each
|
||
time.
|
||
|
||
- bpo-17258: Skip some :mod:`multiprocessing` tests when MD5 hash digest is
|
||
blocked.
|
||
|
||
- bpo-31904: Increase LOOPBACK_TIMEOUT to 10 for VxWorks RTOS.
|
||
|
||
- bpo-38169: Increase code coverage for SharedMemory and ShareableList
|
||
|
||
- bpo-34401: Make test_gdb properly run on HP-UX. Patch by Michael Osipov.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-38249: Update :c:macro:`Py_UNREACHABLE` to use __builtin_unreachable()
|
||
if only the compiler is able to use it. Patch by Dong-hee Na.
|
||
|
||
- bpo-41617: Fix ``pycore_bitutils.h`` header file to support old clang
|
||
versions: ``__builtin_bswap16()`` is not available in LLVM clang 3.0.
|
||
|
||
- bpo-40204: Pin Sphinx version to 2.3.1 in ``Doc/Makefile``.
|
||
|
||
- bpo-36020: The C99 functions :c:func:`snprintf` and :c:func:`vsnprintf`
|
||
are now required to build Python.
|
||
|
||
- bpo-40684: ``make install`` now uses the ``PLATLIBDIR`` variable for the
|
||
destination ``lib-dynload/`` directory when ``./configure
|
||
--with-platlibdir`` is used.
|
||
|
||
- bpo-40683: Fixed an issue where the :mod:`zoneinfo` module and its tests
|
||
were not included when Python is installed with ``make``.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-41744: Fixes automatic import of props file when using the Nuget
|
||
package.
|
||
|
||
- bpo-41627: The user site directory for 32-bit now includes a ``-32``
|
||
suffix to distinguish it from the 64-bit interpreter's directory.
|
||
|
||
- bpo-41526: Fixed layout of final page of the installer by removing the
|
||
special thanks to Mark Hammond (with his permission).
|
||
|
||
- bpo-41492: Fixes the description that appears in UAC prompts.
|
||
|
||
- bpo-40948: Improve post-install message to direct people to the "py"
|
||
command.
|
||
|
||
- bpo-41412: The installer will now fail to install on Windows 7 and Windows
|
||
8. Further, the UCRT dependency is now always downloaded on demand.
|
||
|
||
- bpo-40741: Update Windows release to include SQLite 3.32.3.
|
||
|
||
- bpo-41142: :mod:`msilib` now supports creating CAB files with non-ASCII
|
||
file path and adding files with non-ASCII file path to them.
|
||
|
||
- bpo-41074: Fixed support of non-ASCII names in functions
|
||
:func:`msilib.OpenDatabase` and :func:`msilib.init_database` and non-ASCII
|
||
SQL in method :meth:`msilib.Database.OpenView`.
|
||
|
||
- bpo-41039: Stable ABI redirection DLL (python3.dll) now uses ``#pragma
|
||
comment(linker)`` for re-exporting.
|
||
|
||
- bpo-40164: Updates Windows OpenSSL to 1.1.1g
|
||
|
||
- bpo-39631: Changes the registered MIME type for ``.py`` files on Windows
|
||
to ``text/x-python`` instead of ``text/plain``.
|
||
|
||
- bpo-40677: Manually define IO_REPARSE_TAG_APPEXECLINK in case some old
|
||
Windows SDK doesn't have it.
|
||
|
||
- bpo-37556: Extend py.exe help to mention overrides via venv, shebang,
|
||
environmental variables & ini files.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-41557: Update macOS installer to use SQLite 3.33.0.
|
||
|
||
- bpo-39580: Avoid opening Finder window if running installer from the
|
||
command line. Patch contributed by Rick Heil.
|
||
|
||
- bpo-41100: Fix configure error when building on macOS 11. Note that the
|
||
current Python release was released shortly after the first developer
|
||
preview of macOS 11 (Big Sur); there are other known issues with building
|
||
and running on the developer preview. Big Sur is expected to be fully
|
||
supported in a future bugfix release of Python 3.8.x and with 3.9.0.
|
||
|
||
- bpo-40741: Update macOS installer to use SQLite 3.32.3.
|
||
|
||
- bpo-41005: fixed an XDG settings issue not allowing macos to open browser
|
||
in webbrowser.py
|
||
|
||
- bpo-40741: Update macOS installer to use SQLite 3.32.2.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-41775: Use 'IDLE Shell' as shell title
|
||
|
||
- bpo-35764: Rewrite the Calltips doc section.
|
||
|
||
- bpo-40181: In calltips, stop reminding that '/' marks the end of
|
||
positional-only arguments.
|
||
|
||
- bpo-41468: Improve IDLE run crash error message (which users should never
|
||
see).
|
||
|
||
- bpo-41373: Save files loaded with no line ending, as when blank, or
|
||
different line endings, by setting its line ending to the system default.
|
||
Fix regression in 3.8.4 and 3.9.0b4.
|
||
|
||
- bpo-41300: Save files with non-ascii chars. Fix regression released in
|
||
3.9.0b4 and 3.8.4.
|
||
|
||
- bpo-37765: Add keywords to module name completion list. Rewrite
|
||
Completions section of IDLE doc.
|
||
|
||
- bpo-41152: The encoding of ``stdin``, ``stdout`` and ``stderr`` in IDLE is
|
||
now always UTF-8.
|
||
|
||
- bpo-41144: Make Open Module open a special module such as os.path.
|
||
|
||
- bpo-39885: Make context menu Cut and Copy work again when right-clicking
|
||
within a selection.
|
||
|
||
- bpo-40723: Make test_idle pass when run after import.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-41936: Removed undocumented macros ``Py_ALLOW_RECURSION`` and
|
||
``Py_END_ALLOW_RECURSION`` and the ``recursion_critical`` field of the
|
||
:c:type:`PyInterpreterState` structure.
|
||
|
||
- bpo-41692: The ``PyUnicode_InternImmortal()`` function is now deprecated
|
||
and will be removed in Python 3.12: use :c:func:`PyUnicode_InternInPlace`
|
||
instead. Patch by Victor Stinner.
|
||
|
||
- bpo-41842: Add :c:func:`PyCodec_Unregister` function to unregister a codec
|
||
search function.
|
||
|
||
- bpo-41834: Remove the ``_Py_CheckRecursionLimit`` variable: it has been
|
||
replaced by ``ceval.recursion_limit`` of the :c:type:`PyInterpreterState`
|
||
structure. Patch by Victor Stinner.
|
||
|
||
- bpo-41689: Types created with :c:func:`PyType_FromSpec` now make any
|
||
signature in their ``tp_doc`` slot accessible from ``__text_signature__``.
|
||
|
||
- bpo-41524: Fix bug in PyOS_mystrnicmp and PyOS_mystricmp that incremented
|
||
pointers beyond the end of a string.
|
||
|
||
- bpo-41324: Add a minimal decimal capsule API. The API supports fast
|
||
conversions between Decimals up to 38 digits and their triple
|
||
representation as a C struct.
|
||
|
||
- bpo-30155: Add :c:func:`PyDateTime_DATE_GET_TZINFO` and
|
||
:c:func:`PyDateTime_TIME_GET_TZINFO` macros for accessing the ``tzinfo``
|
||
attributes of :class:`datetime.datetime` and :class:`datetime.time`
|
||
objects.
|
||
|
||
- bpo-40170: Revert :c:func:`PyType_HasFeature` change: it reads again
|
||
directly the :c:member:`PyTypeObject.tp_flags` member when the limited C
|
||
API is not used, rather than always calling :c:func:`PyType_GetFlags`
|
||
which hides implementation details.
|
||
|
||
- bpo-41123: Remove ``PyUnicode_AsUnicodeCopy``.
|
||
|
||
- bpo-41123: Removed ``PyLong_FromUnicode()``.
|
||
|
||
- bpo-41123: Removed ``PyUnicode_GetMax()``.
|
||
|
||
- bpo-41123: Removed ``Py_UNICODE_str*`` functions manipulating
|
||
``Py_UNICODE*`` strings.
|
||
|
||
- bpo-41103: ``PyObject_AsCharBuffer()``, ``PyObject_AsReadBuffer()``,
|
||
``PyObject_CheckReadBuffer()``, and ``PyObject_AsWriteBuffer()`` are
|
||
removed. Please migrate to new buffer protocol;
|
||
:c:func:`PyObject_GetBuffer` and :c:func:`PyBuffer_Release`.
|
||
|
||
- bpo-36346: Raises DeprecationWarning for ``PyUnicode_FromUnicode(NULL,
|
||
size)`` and ``PyUnicode_FromStringAndSize(NULL, size)`` with ``size > 0``.
|
||
|
||
- bpo-36346: Mark ``Py_UNICODE_COPY``, ``Py_UNICODE_FILL``,
|
||
``PyUnicode_WSTR_LENGTH``, ``PyUnicode_FromUnicode``,
|
||
``PyUnicode_AsUnicode``, and ``PyUnicode_AsUnicodeAndSize`` as deprecated
|
||
in C. Remove ``Py_UNICODE_MATCH`` which was deprecated and broken since
|
||
Python 3.3.
|
||
|
||
- bpo-40989: The :c:func:`PyObject_INIT` and :c:func:`PyObject_INIT_VAR`
|
||
macros become aliases to, respectively, :c:func:`PyObject_Init` and
|
||
:c:func:`PyObject_InitVar` functions.
|
||
|
||
- bpo-36020: On Windows, ``#include "pyerrors.h"`` no longer defines
|
||
``snprintf`` and ``vsnprintf`` macros.
|
||
|
||
- bpo-40943: The ``PY_SSIZE_T_CLEAN`` macro must now be defined to use
|
||
:c:func:`PyArg_ParseTuple` and :c:func:`Py_BuildValue` formats which use
|
||
``#``: ``es#``, ``et#``, ``s#``, ``u#``, ``y#``, ``z#``, ``U#`` and
|
||
``Z#``. See :ref:`Parsing arguments and building values <arg-parsing>` and
|
||
the :pep:`353`.
|
||
|
||
- bpo-40910: Export explicitly the :c:func:`Py_GetArgcArgv` function to the
|
||
C API and document the function. Previously, it was exported implicitly
|
||
which no longer works since Python is built with ``-fvisibility=hidden``.
|
||
|
||
- bpo-40724: Allow defining buffer slots in type specs.
|
||
|
||
- bpo-40679: Fix a ``_PyEval_EvalCode()`` crash if *qualname* argument is
|
||
NULL.
|
||
|
||
- bpo-40839: Calling :c:func:`PyDict_GetItem` without :term:`GIL` held had
|
||
been allowed for historical reason. It is no longer allowed.
|
||
|
||
- bpo-40826: :c:func:`PyOS_InterruptOccurred` now fails with a fatal error
|
||
if it is called with the GIL released.
|
||
|
||
- bpo-40792: The result of :c:func:`PyNumber_Index` now always has exact
|
||
type :class:`int`. Previously, the result could have been an instance of a
|
||
subclass of ``int``.
|
||
|
||
- bpo-39573: Convert :c:func:`Py_REFCNT` and :c:func:`Py_SIZE` macros to
|
||
static inline functions. They cannot be used as l-value anymore: use
|
||
:c:func:`Py_SET_REFCNT` and :c:func:`Py_SET_SIZE` to set an object
|
||
reference count and size. This change is backward incompatible on purpose,
|
||
to prepare the C API for an opaque :c:type:`PyObject` structure.
|
||
|
||
- bpo-40703: The PyType_FromSpec*() functions no longer overwrite the type's
|
||
"__module__" attribute if it is set via "Py_tp_members" or "Py_tp_getset".
|
||
|
||
- bpo-39583: Remove superfluous "extern C" declarations from
|
||
``Include/cpython/*.h``.
|
||
|
||
|
||
What's New in Python 3.9.0 beta 1?
|
||
==================================
|
||
|
||
*Release date: 2020-05-19*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-40501: :mod:`uuid` no longer uses :mod:`ctypes` to load
|
||
:file:`libuuid` or :file:`rpcrt4.dll` at runtime.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-40663: Correctly generate annotations where parentheses are omitted
|
||
but required (e.g: ``Type[(str, int, *other))]``.
|
||
|
||
- bpo-40596: Fixed :meth:`str.isidentifier` for non-canonicalized strings
|
||
containing non-BMP characters on Windows.
|
||
|
||
- bpo-40593: Improved syntax errors for invalid characters in source code.
|
||
|
||
- bpo-40585: Fixed a bug when using :func:`codeop.compile_command` that was
|
||
causing exceptions to be swallowed with the new parser. Patch by Pablo
|
||
Galindo
|
||
|
||
- bpo-40566: Apply :pep:`573` to :mod:`abc`.
|
||
|
||
- bpo-40502: Initialize ``n->n_col_offset``. (Patch by Joannah Nanjekye)
|
||
|
||
- bpo-40527: Fix command line argument parsing: no longer write errors
|
||
multiple times into stderr.
|
||
|
||
- bpo-1635741: Port :mod:`errno` to multiphase initialization (:pep:`489`).
|
||
|
||
- bpo-40523: Add pass-throughs for :func:`hash` and :func:`reversed` to
|
||
:class:`weakref.proxy` objects. Patch by Pablo Galindo.
|
||
|
||
- bpo-1635741: Port :mod:`syslog` to multiphase initialization (:pep:`489`).
|
||
|
||
- bpo-40246: Reporting a specialised error message for invalid string
|
||
prefixes, which was introduced in :issue:`40246`, is being reverted due to
|
||
backwards compatibility concerns for strings that immediately follow a
|
||
reserved keyword without whitespace between them. Constructs like
|
||
`bg="#d00" if clear else"#fca"` were failing to parse, which is not an
|
||
acceptable breakage on such short notice.
|
||
|
||
- bpo-40417: Fix imp module deprecation warning when PyImport_ReloadModule
|
||
is called. Patch by Robert Rouhani.
|
||
|
||
- bpo-40408: Fixed support of nested type variables in GenericAlias (e.g.
|
||
``list[list[T]]``).
|
||
|
||
- bpo-1635741: Port _stat module to multiphase initialization (:pep:`489`).
|
||
|
||
- bpo-29587: Enable implicit exception chaining when calling
|
||
:meth:`generator.throw`.
|
||
|
||
- bpo-40328: Add tools for generating mappings headers for CJKCodecs.
|
||
|
||
- bpo-40228: Setting frame.f_lineno is now robust w.r.t. changes in the
|
||
source-to-bytecode compiler
|
||
|
||
- bpo-38880: Added the ability to list interpreters associated with channel
|
||
ends in the internal subinterpreters module.
|
||
|
||
- bpo-37986: Improve performance of :c:func:`PyLong_FromDouble` for values
|
||
that fit into :c:expr:`long`.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-40662: Fixed :func:`ast.get_source_segment` for ast nodes that have
|
||
incomplete location information. Patch by Irit Katriel.
|
||
|
||
- bpo-40665: Convert :mod:`bisect` to use Argument Clinic.
|
||
|
||
- bpo-40536: Added the :func:`~zoneinfo.available_timezones` function to the
|
||
:mod:`zoneinfo` module. Patch by Paul Ganssle.
|
||
|
||
- bpo-40645: The :class:`hmac.HMAC` exposes internal implementation details.
|
||
The attributes ``digest_cons``, ``inner``, and ``outer`` are deprecated
|
||
and will be removed in the future.
|
||
|
||
- bpo-40645: The internal module ``_hashlib`` wraps and exposes OpenSSL's
|
||
HMAC API. The new code will be used in Python 3.10 after the internal
|
||
implementation details of the pure Python HMAC module are no longer part
|
||
of the public API.
|
||
|
||
- bpo-40637: Builtin hash modules can now be disabled or selectively enabled
|
||
with ``configure --with-builtin-hashlib-hashes=sha3,blake1`` or
|
||
``--without-builtin-hashlib-hashes``.
|
||
|
||
- bpo-37630: The :mod:`hashlib` module can now use SHA3 hashes and SHAKE XOF
|
||
from OpenSSL when available.
|
||
|
||
- bpo-40479: The :mod:`hashlib` now compiles with OpenSSL 3.0.0-alpha2.
|
||
|
||
- bpo-40257: Revert changes to :func:`inspect.getdoc`.
|
||
|
||
- bpo-40607: When cancelling a task due to timeout, :meth:`asyncio.wait_for`
|
||
will now propagate the exception if an error happens during cancellation.
|
||
Patch by Roman Skurikhin.
|
||
|
||
- bpo-40612: Fix edge cases in SyntaxError formatting. If the offset is <=
|
||
0, no caret is printed. If the offset is > line length, the caret is
|
||
printed pointing just after the last character.
|
||
|
||
- bpo-40597: If text content lines are longer than policy.max_line_length,
|
||
always use a content-encoding to make sure they are wrapped.
|
||
|
||
- bpo-40571: Added functools.cache() as a simpler, more discoverable way to
|
||
access the unbounded cache variant of lru_cache(maxsize=None).
|
||
|
||
- bpo-40503: :pep:`615`, the :mod:`zoneinfo` module. Adds support for the
|
||
IANA time zone database.
|
||
|
||
- bpo-40397: Removed attributes ``__args__`` and ``__parameters__`` from
|
||
special generic aliases like ``typing.List`` (not subscripted).
|
||
|
||
- bpo-40549: Convert posixmodule.c ("posix" or "nt" module) to the
|
||
multiphase initialization (PEP 489).
|
||
|
||
- bpo-31033: Add a ``msg`` argument to :meth:`Future.cancel` and
|
||
:meth:`Task.cancel`.
|
||
|
||
- bpo-40541: Added an optional *counts* parameter to random.sample().
|
||
|
||
- bpo-40515: The :mod:`ssl` and :mod:`hashlib` modules now actively check
|
||
that OpenSSL is build with thread support. Python 3.7.0 made thread
|
||
support mandatory and no longer works safely with a no-thread builds.
|
||
|
||
- bpo-31033: When a :class:`asyncio.Task` is cancelled, the exception
|
||
traceback now chains all the way back to where the task was first
|
||
interrupted.
|
||
|
||
- bpo-40504: :func:`functools.lru_cache` objects can now be the targets of
|
||
weakrefs.
|
||
|
||
- bpo-40559: Fix possible memory leak in the C implementation of
|
||
:class:`asyncio.Task`.
|
||
|
||
- bpo-40480: ``fnmatch.fnmatch()`` could take exponential time in the
|
||
presence of multiple ``*`` pattern characters. This was repaired by
|
||
generating more elaborate regular expressions to avoid futile
|
||
backtracking.
|
||
|
||
- bpo-40495: :mod:`compileall` is now able to use hardlinks to prevent
|
||
duplicates in a case when ``.pyc`` files for different optimization levels
|
||
have the same content.
|
||
|
||
- bpo-40457: The ssl module now support OpenSSL builds without TLS 1.0 and
|
||
1.1 methods.
|
||
|
||
- bpo-40355: Improve error reporting in :func:`ast.literal_eval` in the
|
||
presence of malformed :class:`ast.Dict` nodes instead of silently ignoring
|
||
any non-conforming elements. Patch by Curtis Bucher.
|
||
|
||
- bpo-40465: Deprecated the optional *random* argument to
|
||
*random.shuffle()*.
|
||
|
||
- bpo-40459: :func:`platform.win32_ver` now produces correct *ptype* strings
|
||
instead of empty strings.
|
||
|
||
- bpo-39435: The first argument of :func:`pickle.loads` is now
|
||
positional-only.
|
||
|
||
- bpo-39305: Update :mod:`nntplib` to merge :class:`nntplib.NNTP` and
|
||
:class:`nntplib._NNTPBase`. Patch by Dong-hee Na.
|
||
|
||
- bpo-32494: Update :mod:`dbm.gnu` to use gdbm_count if possible when
|
||
calling :func:`len`. Patch by Dong-hee Na.
|
||
|
||
- bpo-40453: Add ``isolated=True`` keyword-only parameter to
|
||
``_xxsubinterpreters.create()``. An isolated subinterpreter cannot spawn
|
||
threads, spawn a child process or call ``os.fork()``.
|
||
|
||
- bpo-40286: Remove ``_random.Random.randbytes()``: the C implementation of
|
||
``randbytes()``. Implement the method in Python to ease subclassing:
|
||
``randbytes()`` now directly reuses ``getrandbits()``.
|
||
|
||
- bpo-40394: Added default arguments to
|
||
:meth:`difflib.SequenceMatcher.find_longest_match()`.
|
||
|
||
- bpo-39995: Fix a race condition in concurrent.futures._ThreadWakeup:
|
||
access to _ThreadWakeup is now protected with the shutdown lock.
|
||
|
||
- bpo-30966: ``Process.shutdown(wait=True)`` of :mod:`concurrent.futures`
|
||
now closes explicitly the result queue.
|
||
|
||
- bpo-30966: Add a new :meth:`~multiprocessing.SimpleQueue.close` method to
|
||
the :class:`~multiprocessing.SimpleQueue` class to explicitly close the
|
||
queue.
|
||
|
||
- bpo-39966: Revert bpo-25597. :class:`unittest.mock.MagicMock` with wraps'
|
||
set uses default return values for magic methods.
|
||
|
||
- bpo-39791: Added ``files()`` function to importlib.resources with support
|
||
for subdirectories in package data, matching backport in
|
||
importlib_resources 1.5.
|
||
|
||
- bpo-40375: :meth:`imaplib.IMAP4.unselect` is added. Patch by Dong-hee Na.
|
||
|
||
- bpo-40389: ``repr()`` now returns ``typing.Optional[T]`` when called for
|
||
``typing.Union`` of two types, one of which is ``NoneType``.
|
||
|
||
- bpo-40291: Add support for CAN_J1939 sockets (available on Linux 5.4+)
|
||
|
||
- bpo-40273: :class:`types.MappingProxyType` is now reversible.
|
||
|
||
- bpo-39075: The repr for :class:`types.SimpleNamespace` is now insertion
|
||
ordered rather than alphabetical.
|
||
|
||
- bpo-40192: On AIX, :func:`~time.thread_time` is now implemented with
|
||
``thread_cputime()`` which has nanosecond resolution, rather than
|
||
``clock_gettime(CLOCK_THREAD_CPUTIME_ID)`` which has a resolution of 10
|
||
ms. Patch by Batuhan Taskaya.
|
||
|
||
- bpo-40025: Raise TypeError when _generate_next_value_ is defined after
|
||
members. Patch by Ethan Onstott.
|
||
|
||
- bpo-39058: In the argparse module, the repr for Namespace() and other
|
||
argument holders now displayed in the order attributes were added.
|
||
Formerly, it displayed in alphabetical order even though argument order is
|
||
preserved the user visible parts of the module.
|
||
|
||
- bpo-24416: The ``isocalendar()`` methods of :class:`datetime.date` and
|
||
:class:`datetime.datetime` now return a :term:`named tuple` instead of a
|
||
:class:`tuple`.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-34790: Add version of removal for explicit passing of coros to
|
||
`asyncio.wait()`'s documentation
|
||
|
||
- bpo-40561: Provide docstrings for webbrowser open functions.
|
||
|
||
- bpo-40499: Mention that :func:`asyncio.wait` requires a non-empty set of
|
||
awaitables.
|
||
|
||
- bpo-39705: Tutorial example for sorted() in the Loop Techniques section is
|
||
given a better explanation. Also a new example is included to explain
|
||
sorted()'s basic behavior.
|
||
|
||
- bpo-39435: Fix an incorrect signature for :func:`pickle.loads` in the docs
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-40055: distutils.tests now saves/restores warnings filters to leave
|
||
them unchanged. Importing tests imports docutils which imports
|
||
pkg_resources which adds a warnings filter.
|
||
|
||
- bpo-40436: test_gdb and test.pythoninfo now check gdb command exit code.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-40653: Move _dirnameW out of HAVE_SYMLINK to fix a potential compiling
|
||
issue.
|
||
|
||
- bpo-40514: Add ``--with-experimental-isolated-subinterpreters`` build
|
||
option to ``configure``: better isolate subinterpreters, experimental
|
||
build mode.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-40650: Include winsock2.h in pytime.c for timeval.
|
||
|
||
- bpo-40458: Increase reserved stack space to prevent overflow crash on
|
||
Windows.
|
||
|
||
- bpo-39148: Add IPv6 support to :mod:`asyncio` datagram endpoints in
|
||
ProactorEventLoop. Change the raised exception for unknown address
|
||
families to ValueError as it's not coming from Windows API.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-34956: When building Python on macOS from source, ``_tkinter`` now
|
||
links with non-system Tcl and Tk frameworks if they are installed in
|
||
``/Library/Frameworks``, as had been the case on older releases of macOS.
|
||
If a macOS SDK is explicitly configured, by using
|
||
``--enable-universalsdk=`` or ``-isysroot``, only the SDK itself is
|
||
searched. The default behavior can still be overridden with
|
||
``--with-tcltk-includes`` and ``--with-tcltk-libs``.
|
||
|
||
- bpo-35569: Expose RFC 3542 IPv6 socket options.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-40479: Update multissltest helper to test with latest OpenSSL 1.0.2,
|
||
1.1.0, 1.1.1, and 3.0.0-alpha.
|
||
|
||
- bpo-40431: Fix a syntax typo in ``turtledemo`` that now raises a
|
||
``SyntaxError``.
|
||
|
||
- bpo-40163: Fix multissltest tool. OpenSSL has changed download URL for old
|
||
releases. The multissltest tool now tries to download from current and old
|
||
download URLs.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-39465: Remove the ``_PyUnicode_ClearStaticStrings()`` function from
|
||
the C API.
|
||
|
||
- bpo-38787: Add PyCFunction_CheckExact() macro for exact type checks now
|
||
that we allow subtypes of PyCFunction, as well as PyCMethod_CheckExact()
|
||
and PyCMethod_Check() for the new PyCMethod subtype.
|
||
|
||
- bpo-40545: Declare ``_PyErr_GetTopmostException()`` with ``PyAPI_FUNC()``
|
||
to properly export the function in the C API. The function remains private
|
||
(``_Py``) prefix.
|
||
|
||
- bpo-40412: Nullify inittab_copy during finalization, preventing future
|
||
interpreter initializations in an embedded situation from crashing. Patch
|
||
by Gregory Szorc.
|
||
|
||
- bpo-40429: The :c:func:`PyThreadState_GetFrame` function now returns a
|
||
strong reference to the frame.
|
||
|
||
- bpo-40428: Remove the following functions from the C API. Call
|
||
:c:func:`PyGC_Collect` explicitly to free all free lists.
|
||
|
||
* ``PyAsyncGen_ClearFreeLists()``
|
||
* ``PyContext_ClearFreeList()``
|
||
* ``PyDict_ClearFreeList()``
|
||
* ``PyFloat_ClearFreeList()``
|
||
* ``PyFrame_ClearFreeList()``
|
||
* ``PyList_ClearFreeList()``
|
||
* ``PySet_ClearFreeList()``
|
||
* ``PyTuple_ClearFreeList()``
|
||
|
||
- bpo-40421: New :c:func:`PyFrame_GetBack` function: get the frame next
|
||
outer frame.
|
||
|
||
- bpo-40421: New :c:func:`PyFrame_GetCode` function: return a borrowed
|
||
reference to the frame code.
|
||
|
||
- bpo-40217: Ensure that instances of types created with
|
||
:c:func:`PyType_FromSpecWithBases` will visit its class object when
|
||
traversing references in the garbage collector (implemented as an
|
||
extension of the provided :c:member:`~PyTypeObject.tp_traverse`). Patch by
|
||
Pablo Galindo.
|
||
|
||
- bpo-38787: Module C state is now accessible from C-defined heap type
|
||
methods (:pep:`573`). Patch by Marcel Plch and Petr Viktorin.
|
||
|
||
|
||
What's New in Python 3.9.0 alpha 6?
|
||
===================================
|
||
|
||
*Release date: 2020-04-27*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-40121: Fixes audit events raised on creating a new socket.
|
||
|
||
- bpo-39073: Disallow CR or LF in email.headerregistry.Address arguments to
|
||
guard against header injection attacks.
|
||
|
||
- bpo-39503: CVE-2020-8492: The
|
||
:class:`~urllib.request.AbstractBasicAuthHandler` class of the
|
||
:mod:`urllib.request` module uses an inefficient regular expression which
|
||
can be exploited by an attacker to cause a denial of service. Fix the
|
||
regex to prevent the catastrophic backtracking. Vulnerability reported by
|
||
Ben Caller and Matt Schwager.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-40313: Improve the performance of bytes.hex().
|
||
|
||
- bpo-40334: Switch to a new parser, based on PEG. For more details see PEP
|
||
617. To temporarily switch back to the old parser, use ``-X oldparser`` or
|
||
``PYTHONOLDPARSER=1``. In Python 3.10 we will remove the old parser
|
||
completely, including the ``parser`` module (already deprecated) and
|
||
anything that depends on it.
|
||
|
||
- bpo-40267: Fix the tokenizer to display the correct error message, when
|
||
there is a SyntaxError on the last input character and no newline follows.
|
||
It used to be `unexpected EOF while parsing`, while it should be `invalid
|
||
syntax`.
|
||
|
||
- bpo-39522: Correctly unparse explicit ``u`` prefix for strings when
|
||
postponed evaluation for annotations activated. Patch by Batuhan Taskaya.
|
||
|
||
- bpo-40246: Report a specialized error message, `invalid string prefix`,
|
||
when the tokenizer encounters a string with an invalid prefix.
|
||
|
||
- bpo-40082: Fix the signal handler: it now always uses the main
|
||
interpreter, rather than trying to get the current Python thread state.
|
||
|
||
- bpo-37388: str.encode() and str.decode() no longer check the encoding and
|
||
errors in development mode or in debug mode during Python finalization.
|
||
The codecs machinery can no longer work on very late calls to str.encode()
|
||
and str.decode().
|
||
|
||
- bpo-40077: Fix possible refleaks in :mod:`_json`, memo of PyScannerObject
|
||
should be traversed.
|
||
|
||
- bpo-37207: Speed up calls to ``dict()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention.
|
||
|
||
- bpo-40141: Add column and line information to ``ast.keyword`` nodes. Patch
|
||
by Pablo Galindo.
|
||
|
||
- bpo-1635741: Port :mod:`resource` to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-1635741: Port :mod:`math` to multiphase initialization (:pep:`489`).
|
||
|
||
- bpo-1635741: Port _uuid module to multiphase initialization (:pep:`489`).
|
||
|
||
- bpo-40077: Convert json module to use :c:func:`PyType_FromSpec`.
|
||
|
||
- bpo-40067: Improve the error message for multiple star expressions in an
|
||
assignment. Patch by Furkan Onder
|
||
|
||
- bpo-1635741: Port _functools module to multiphase initialization (PEP
|
||
489). Patch by Paulo Henrique Silva.
|
||
|
||
- bpo-1635741: Port operator module to multiphase initialization (PEP 489).
|
||
Patch by Paulo Henrique Silva.
|
||
|
||
- bpo-20526: Fix :c:func:`PyThreadState_Clear()`. ``PyThreadState.frame`` is
|
||
a borrowed reference, not a strong reference: ``PyThreadState_Clear()``
|
||
must not call ``Py_CLEAR(tstate->frame)``.
|
||
|
||
- bpo-1635741: Port time module to multiphase initialization (:pep:`489`).
|
||
Patch by Paulo Henrique Silva.
|
||
|
||
- bpo-1635741: Port _weakref extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-40020: Fix a leak and subsequent crash in parsetok.c caused by realloc
|
||
misuse on a rare codepath.
|
||
|
||
- bpo-39939: Added str.removeprefix and str.removesuffix methods and
|
||
corresponding bytes, bytearray, and collections.UserString methods to
|
||
remove affixes from a string if present. See :pep:`616` for a full
|
||
description. Patch by Dennis Sweeney.
|
||
|
||
- bpo-39481: Implement PEP 585. This supports list[int], tuple[str, ...]
|
||
etc.
|
||
|
||
- bpo-32894: Support unparsing of infinity numbers in postponed annotations.
|
||
Patch by Batuhan Taşkaya.
|
||
|
||
- bpo-37207: Speed up calls to ``list()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention. Patch by Mark Shannon.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-40398: :func:`typing.get_args` now always returns an empty tuple for
|
||
special generic aliases.
|
||
|
||
- bpo-40396: Functions :func:`typing.get_origin`, :func:`typing.get_args`
|
||
and :func:`typing.get_type_hints` support now generic aliases like
|
||
``list[int]``.
|
||
|
||
- bpo-38061: Optimize the :mod:`subprocess` module on FreeBSD using
|
||
``closefrom()``. A single ``close(fd)`` syscall is cheap, but when
|
||
``sysconf(_SC_OPEN_MAX)`` is high, the loop calling ``close(fd)`` on each
|
||
file descriptor can take several milliseconds.
|
||
|
||
The workaround on FreeBSD to improve performance was to load and mount the
|
||
fdescfs kernel module, but this is not enabled by default.
|
||
|
||
Initial patch by Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans
|
||
(kevans) and Kubilay Kocak (koobs):
|
||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274
|
||
|
||
- bpo-38061: On FreeBSD, ``os.closerange(fd_low, fd_high)`` now calls
|
||
``closefrom(fd_low)`` if *fd_high* is greater than or equal to
|
||
``sysconf(_SC_OPEN_MAX)``.
|
||
|
||
Initial patch by Ed Maste (emaste), Conrad Meyer (cem), Kyle Evans
|
||
(kevans) and Kubilay Kocak (koobs):
|
||
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=242274
|
||
|
||
- bpo-40360: The :mod:`lib2to3` module is pending deprecation due to
|
||
:pep:`617`.
|
||
|
||
- bpo-40138: Fix the Windows implementation of :func:`os.waitpid` for exit
|
||
code larger than ``INT_MAX >> 8``. The exit status is now interpreted as
|
||
an unsigned number.
|
||
|
||
- bpo-39942: Set "__main__" as the default module name when "__name__" is
|
||
missing in :class:`typing.TypeVar`. Patch by Weipeng Hong.
|
||
|
||
- bpo-40275: The :mod:`logging` package is now imported lazily in
|
||
:mod:`unittest` only when the :meth:`~unittest.TestCase.assertLogs`
|
||
assertion is used.
|
||
|
||
- bpo-40275: The :mod:`asyncio` package is now imported lazily in
|
||
:mod:`unittest` only when the :class:`~unittest.IsolatedAsyncioTestCase`
|
||
class is used.
|
||
|
||
- bpo-40330: In :meth:`ShareableList.__setitem__`, check the size of a new
|
||
string item after encoding it to utf-8, not before.
|
||
|
||
- bpo-40148: Added :meth:`pathlib.Path.with_stem()` to create a new Path
|
||
with the stem replaced.
|
||
|
||
- bpo-40325: Deprecated support for set objects in random.sample().
|
||
|
||
- bpo-40257: Improved help for the :mod:`typing` module. Docstrings are now
|
||
shown for all special forms and special generic aliases (like ``Union``
|
||
and ``List``). Using ``help()`` with generic alias like ``List[int]`` will
|
||
show the help for the correspondent concrete type (``list`` in this case).
|
||
|
||
- bpo-40257: func:`inspect.getdoc` no longer returns docstring inherited
|
||
from the type of the object or from parent class if it is a class if it is
|
||
not defined in the object itself. In :mod:`pydoc` the documentation string
|
||
is now shown not only for class, function, method etc, but for any object
|
||
that has its own ``__doc__`` attribute.
|
||
|
||
- bpo-40287: Fixed ``SpooledTemporaryFile.seek()`` to return the position.
|
||
|
||
- bpo-40290: Added zscore() to statistics.NormalDist().
|
||
|
||
- bpo-40282: Allow ``random.getrandbits(0)`` to succeed and to return 0.
|
||
|
||
- bpo-40286: Add :func:`random.randbytes` function and
|
||
:meth:`random.Random.randbytes` method to generate random bytes.
|
||
|
||
- bpo-40277: :func:`collections.namedtuple` now provides a human-readable
|
||
repr for its field accessors.
|
||
|
||
- bpo-40270: The included copy of sqlite3 on Windows is now compiled with
|
||
the json extension. This allows the use of functions such as
|
||
``json_object``.
|
||
|
||
- bpo-29255: Wait in `KqueueSelector.select` when no fds are registered
|
||
|
||
- bpo-40260: Ensure :mod:`modulefinder` uses :func:`io.open_code` and
|
||
respects coding comments.
|
||
|
||
- bpo-40234: Allow again to spawn daemon threads in subinterpreters (revert
|
||
change which denied them).
|
||
|
||
- bpo-39207: Workers in :class:`~concurrent.futures.ProcessPoolExecutor` are
|
||
now spawned on demand, only when there are no available idle workers to
|
||
reuse. This optimizes startup overhead and reduces the amount of lost CPU
|
||
time to idle workers. Patch by Kyle Stanley.
|
||
|
||
- bpo-40091: Fix a hang at fork in the logging module: the new private
|
||
_at_fork_reinit() method is now used to reinitialize locks at fork in the
|
||
child process.
|
||
|
||
- bpo-40149: Implement traverse and clear slots in _abc._abc_data type.
|
||
|
||
- bpo-40208: Remove deprecated :meth:`symtable.SymbolTable.has_exec`.
|
||
|
||
- bpo-40196: Fix a bug in the :mod:`symtable` module that was causing
|
||
incorrectly report global variables as local. Patch by Pablo Galindo.
|
||
|
||
- bpo-40190: Add support for ``_SC_AIX_REALMEM`` to :func:`posix.sysconf`.
|
||
|
||
- bpo-40182: Removed the ``_field_types`` attribute of the
|
||
:class:`typing.NamedTuple` class.
|
||
|
||
- bpo-36517: Multiple inheritance with :class:`typing.NamedTuple` now raises
|
||
an error instead of silently ignoring other types.
|
||
|
||
- bpo-40126: Fixed reverting multiple patches in unittest.mock. Patcher's
|
||
``__exit__()`` is now never called if its ``__enter__()`` is failed.
|
||
Returning true from ``__exit__()`` silences now the exception.
|
||
|
||
- bpo-40094: CGIHTTPRequestHandler of http.server now logs the CGI script
|
||
exit code, rather than the CGI script exit status of os.waitpid(). For
|
||
example, if the script is killed by signal 11, it now logs: "CGI script
|
||
exit code -11."
|
||
|
||
- bpo-40108: Improve the error message when triying to import a module using
|
||
:mod:`runpy` and incorrently use the ".py" extension at the end of the
|
||
module name. Patch by Pablo Galindo.
|
||
|
||
- bpo-40094: Add :func:`os.waitstatus_to_exitcode` function: convert a wait
|
||
status to an exit code.
|
||
|
||
- bpo-40089: Fix threading._after_fork(): if fork was not called by a thread
|
||
spawned by threading.Thread, threading._after_fork() now creates a
|
||
_MainThread instance for _main_thread, instead of a _DummyThread instance.
|
||
|
||
- bpo-40089: Add a private ``_at_fork_reinit()`` method to
|
||
:class:`_thread.Lock`, :class:`_thread.RLock`, :class:`threading.RLock`
|
||
and :class:`threading.Condition` classes: reinitialize the lock at fork in
|
||
the child process, reset the lock to the unlocked state. Rename also the
|
||
private ``_reset_internal_locks()`` method of :class:`threading.Event` to
|
||
``_at_fork_reinit()``.
|
||
|
||
- bpo-25780: Expose :data:`~socket.CAN_RAW_JOIN_FILTERS` in the
|
||
:mod:`socket` module.
|
||
|
||
- bpo-39503: :class:`~urllib.request.AbstractBasicAuthHandler` of
|
||
:mod:`urllib.request` now parses all WWW-Authenticate HTTP headers and
|
||
accepts multiple challenges per header: use the realm of the first Basic
|
||
challenge.
|
||
|
||
- bpo-39812: Removed daemon threads from :mod:`concurrent.futures` by adding
|
||
an internal `threading._register_atexit()`, which calls registered
|
||
functions prior to joining all non-daemon threads. This allows for
|
||
compatibility with subinterpreters, which don't support daemon threads.
|
||
|
||
- bpo-40050: Fix ``importlib._bootstrap_external``: avoid creating a new
|
||
``winreg`` builtin module if it's already available in
|
||
:data:`sys.modules`, and remove redundant imports.
|
||
|
||
- bpo-40014: Fix ``os.getgrouplist()``: if ``getgrouplist()`` function fails
|
||
because the group list is too small, retry with a larger group list. On
|
||
failure, the glibc implementation of ``getgrouplist()`` sets ``ngroups``
|
||
to the total number of groups. For other implementations, double the group
|
||
list size.
|
||
|
||
- bpo-40017: Add :data:`time.CLOCK_TAI` constant if the operating system
|
||
support it.
|
||
|
||
- bpo-40016: In re docstring, clarify the relationship between inline and
|
||
argument compile flags.
|
||
|
||
- bpo-39953: Update internal table of OpenSSL error codes in the ``ssl``
|
||
module.
|
||
|
||
- bpo-36144: Added :pep:`584` operators to
|
||
:class:`weakref.WeakValueDictionary`.
|
||
|
||
- bpo-36144: Added :pep:`584` operators to
|
||
:class:`weakref.WeakKeyDictionary`.
|
||
|
||
- bpo-38891: Fix linear runtime behaviour of the `__getitem__` and
|
||
`__setitem__` methods in
|
||
:class:`multiprocessing.shared_memory.ShareableList`. This avoids
|
||
quadratic performance when iterating a `ShareableList`. Patch by Thomas
|
||
Krennwallner.
|
||
|
||
- bpo-39682: Remove undocumented support for *closing* a `pathlib.Path`
|
||
object via its context manager. The context manager magic methods remain,
|
||
but they are now a no-op, making `Path` objects immutable.
|
||
|
||
- bpo-36144: Added :pep:`584` operators (``|`` and ``|=``) to
|
||
:class:`collections.ChainMap`.
|
||
|
||
- bpo-39011: Normalization of line endings in ElementTree attributes was
|
||
removed, as line endings which were replaced by entity numbers should be
|
||
preserved in original form.
|
||
|
||
- bpo-38410: Properly handle :func:`sys.audit` failures in
|
||
:func:`sys.set_asyncgen_hooks`.
|
||
|
||
- bpo-36541: lib2to3 now recognizes named assignment expressions (the walrus
|
||
operator, ``:=``)
|
||
|
||
- bpo-35967: In platform, delay the invocation of 'uname -p' until the
|
||
processor attribute is requested.
|
||
|
||
- bpo-35113: :meth:`inspect.getsource` now returns correct source code for
|
||
inner class with same name as module level class. Decorators are also
|
||
returned as part of source of the class. Patch by Karthikeyan
|
||
Singaravelan.
|
||
|
||
- bpo-33262: Deprecate passing None as an argument for
|
||
:func:`shlex.split()`'s ``s`` parameter. Patch by Zackery Spytz.
|
||
|
||
- bpo-31758: Prevent crashes when using an uninitialized
|
||
``_elementtree.XMLParser`` object. Patch by Oren Milman.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-27635: The pickle documentation incorrectly claimed that ``__new__``
|
||
isn't called by default when unpickling.
|
||
|
||
- bpo-39879: Updated :ref:`datamodel` docs to include :func:`dict` insertion
|
||
order preservation. Patch by Furkan Onder and Samy Lahfa.
|
||
|
||
- bpo-38387: Document :c:macro:`PyDoc_STRVAR` macro in the C-API reference.
|
||
|
||
- bpo-13743: Some methods within xml.dom.minidom.Element class are now
|
||
better documented.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-31904: Set expected default encoding in test_c_locale_coercion.py for
|
||
VxWorks RTOS.
|
||
|
||
- bpo-40162: Update Travis CI configuration to OpenSSL 1.1.1f.
|
||
|
||
- bpo-40146: Update OpenSSL to 1.1.1f in Azure Pipelines.
|
||
|
||
- bpo-40094: Add :func:`test.support.wait_process` function.
|
||
|
||
- bpo-40003: ``test.bisect_cmd`` now copies Python command line options like
|
||
``-O`` or ``-W``. Moreover, emit a warning if ``test.bisect_cmd`` is used
|
||
with ``-w``/``--verbose2`` option.
|
||
|
||
- bpo-39380: Add the encoding in :class:`ftplib.FTP` and
|
||
:class:`ftplib.FTP_TLS` to the constructor as keyword-only and change the
|
||
default from ``latin-1`` to ``utf-8`` to follow :rfc:`2640`.
|
||
|
||
- bpo-39793: Use the same domain when testing ``make_msgid``. Patch by
|
||
Batuhan Taskaya.
|
||
|
||
- bpo-1812: Fix newline handling in doctest.testfile when loading from a
|
||
package whose loader has a get_data method. Patch by Peter Donis.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-38360: Support single-argument form of macOS -isysroot flag.
|
||
|
||
- bpo-40158: Fix CPython MSBuild Properties in NuGet Package
|
||
(build/native/python.props)
|
||
|
||
- bpo-38527: Fix configure check on Solaris for "float word ordering":
|
||
sometimes, the correct "grep" command was not being used. Patch by Arnon
|
||
Yaari.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-40164: Updates Windows to OpenSSL 1.1.1f
|
||
|
||
- bpo-8901: Ignore the Windows registry when the ``-E`` option is used.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-38329: python.org macOS installers now update the Current version
|
||
symlink of /Library/Frameworks/Python.framework/Versions for 3.9 installs.
|
||
Previously, Current was only updated for Python 2.x installs. This should
|
||
make it easier to embed Python 3 into other macOS applications.
|
||
|
||
- bpo-40164: Update macOS installer builds to use OpenSSL 1.1.1g.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-38439: Add a 256×256 pixel IDLE icon to support more modern
|
||
environments. Created by Andrew Clover. Delete the unused macOS idle.icns
|
||
icon file.
|
||
|
||
- bpo-38689: IDLE will no longer freeze when inspect.signature fails when
|
||
fetching a calltip.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-40385: Removed the checkpyc.py tool. Please see compileall without
|
||
force mode as a potential alternative.
|
||
|
||
- bpo-40179: Fixed translation of ``#elif`` in Argument Clinic.
|
||
|
||
- bpo-40094: Fix ``which.py`` script exit code: it now uses
|
||
:func:`os.waitstatus_to_exitcode` to convert :func:`os.system` exit status
|
||
into an exit code.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-40241: Move the :c:type:`PyGC_Head` structure to the internal C API.
|
||
|
||
- bpo-40170: Convert :c:func:`PyObject_IS_GC` macro to a function to hide
|
||
implementation details.
|
||
|
||
- bpo-40241: Add the functions :c:func:`PyObject_GC_IsTracked` and
|
||
:c:func:`PyObject_GC_IsFinalized` to the public API to allow to query if
|
||
Python objects are being currently tracked or have been already finalized
|
||
by the garbage collector respectively. Patch by Pablo Galindo.
|
||
|
||
- bpo-40170: The :c:func:`PyObject_NEW` macro becomes an alias to the
|
||
:c:func:`PyObject_New` macro, and the :c:func:`PyObject_NEW_VAR` macro
|
||
becomes an alias to the :c:func:`PyObject_NewVar` macro, to hide
|
||
implementation details. They no longer access directly the
|
||
:c:member:`PyTypeObject.tp_basicsize` member.
|
||
|
||
- bpo-40170: :c:func:`PyType_HasFeature` now always calls
|
||
:c:func:`PyType_GetFlags` to hide implementation details. Previously, it
|
||
accessed directly the :c:member:`PyTypeObject.tp_flags` member when the
|
||
limited C API was not used.
|
||
|
||
- bpo-40170: Convert the :c:func:`PyObject_GET_WEAKREFS_LISTPTR` macro to a
|
||
function to hide implementation details: the macro accessed directly to
|
||
the :c:member:`PyTypeObject.tp_weaklistoffset` member.
|
||
|
||
- bpo-40170: Convert :c:func:`PyObject_CheckBuffer` macro to a function to
|
||
hide implementation details: the macro accessed directly the
|
||
:c:member:`PyTypeObject.tp_as_buffer` member.
|
||
|
||
- bpo-40170: Always declare :c:func:`PyIndex_Check` as an opaque function to
|
||
hide implementation details: remove ``PyIndex_Check()`` macro. The macro
|
||
accessed directly the :c:member:`PyTypeObject.tp_as_number` member.
|
||
|
||
- bpo-39947: Add :c:func:`PyThreadState_GetID` function: get the unique
|
||
identifier of a Python thread state.
|
||
|
||
|
||
What's New in Python 3.9.0 alpha 5?
|
||
===================================
|
||
|
||
*Release date: 2020-03-23*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-38576: Disallow control characters in hostnames in http.client,
|
||
addressing CVE-2019-18348. Such potentially malicious header injection
|
||
URLs now cause a InvalidURL to be raised.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-40010: Optimize pending calls in multithreaded applications. If a
|
||
thread different than the main thread schedules a pending call
|
||
(:c:func:`Py_AddPendingCall`), the bytecode evaluation loop is no longer
|
||
interrupted at each bytecode instruction to check for pending calls which
|
||
cannot be executed. Only the main thread can execute pending calls.
|
||
|
||
Previously, the bytecode evaluation loop was interrupted at each
|
||
instruction until the main thread executes pending calls.
|
||
|
||
- bpo-1635741: Port _weakref extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-1635741: Port _collections module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-40010: Optimize signal handling in multithreaded applications. If a
|
||
thread different than the main thread gets a signal, the bytecode
|
||
evaluation loop is no longer interrupted at each bytecode instruction to
|
||
check for pending signals which cannot be handled. Only the main thread of
|
||
the main interpreter can handle signals.
|
||
|
||
Previously, the bytecode evaluation loop was interrupted at each
|
||
instruction until the main thread handles signals.
|
||
|
||
- bpo-39984: If :c:func:`Py_AddPendingCall` is called in a subinterpreter,
|
||
the function is now scheduled to be called from the subinterpreter, rather
|
||
than being called from the main interpreter. Each subinterpreter now has
|
||
its own list of scheduled calls.
|
||
|
||
- bpo-1635741: Port _heapq module to multiphase initialization.
|
||
|
||
- bpo-1635741: Port itertools module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-37207: Speed up calls to ``frozenset()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention. Patch by Dong-hee Na.
|
||
|
||
- bpo-39984: subinterpreters: Move
|
||
``_PyRuntimeState.ceval.tracing_possible`` to
|
||
``PyInterpreterState.ceval.tracing_possible``: each interpreter now has
|
||
its own variable.
|
||
|
||
- bpo-37207: Speed up calls to ``set()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention. Patch by Dong-hee Na.
|
||
|
||
- bpo-1635741: Port _statistics module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-39968: Use inline function to replace extension modules'
|
||
get_module_state macros.
|
||
|
||
- bpo-39965: Correctly raise ``SyntaxError`` if *await* is used inside
|
||
non-async functions and ``PyCF_ALLOW_TOP_LEVEL_AWAIT`` is set (like in the
|
||
asyncio REPL). Patch by Pablo Galindo.
|
||
|
||
- bpo-39562: Allow executing asynchronous comprehensions on the top level
|
||
when the ``PyCF_ALLOW_TOP_LEVEL_AWAIT`` flag is given. Patch by Batuhan
|
||
Taskaya.
|
||
|
||
- bpo-37207: Speed up calls to ``tuple()`` by using the :pep:`590`
|
||
``vectorcall`` calling convention. Patch by Dong-hee Na.
|
||
|
||
- bpo-38373: Changed list overallocation strategy. It no longer
|
||
overallocates if the new size is closer to overallocated size than to the
|
||
old size and adds padding.
|
||
|
||
- bpo-39926: Update Unicode database to Unicode version 13.0.0.
|
||
|
||
- bpo-19466: Clear the frames of daemon threads earlier during the Python
|
||
shutdown to call objects destructors. So "unclosed file" resource warnings
|
||
are now emitted for daemon threads in a more reliable way.
|
||
|
||
- bpo-38894: Fix a bug that was causing incomplete results when calling
|
||
``pathlib.Path.glob`` in the presence of symlinks that point to files
|
||
where the user does not have read access. Patch by Pablo Galindo and Matt
|
||
Wozniski.
|
||
|
||
- bpo-39877: Fix :c:func:`PyEval_RestoreThread` random crash at exit with
|
||
daemon threads. It now accesses the ``_PyRuntime`` variable directly
|
||
instead of using ``tstate->interp->runtime``, since ``tstate`` can be a
|
||
dangling pointer after :c:func:`Py_Finalize` has been called. Moreover,
|
||
the daemon thread now exits before trying to take the GIL.
|
||
|
||
- bpo-39871: Fix a possible :exc:`SystemError` in
|
||
``math.{atan2,copysign,remainder}()`` when the first argument cannot be
|
||
converted to a :class:`float`. Patch by Zackery Spytz.
|
||
|
||
- bpo-39776: Fix race condition where threads created by PyGILState_Ensure()
|
||
could get a duplicate id.
|
||
|
||
This affects consumers of tstate->id like the contextvar caching
|
||
machinery, which could return invalid cached objects under heavy thread
|
||
load (observed in embedded scenarios).
|
||
|
||
- bpo-39778: Fixed a crash due to incorrect handling of weak references in
|
||
``collections.OrderedDict`` classes. Patch by Pablo Galindo.
|
||
|
||
- bpo-1635741: Port audioop extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-39702: Relax :term:`decorator` grammar restrictions to allow any valid
|
||
expression (:pep:`614`).
|
||
|
||
- bpo-38091: Tweak import deadlock detection code to not deadlock itself.
|
||
|
||
- bpo-1635741: Port _locale extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-39087: Optimize :c:func:`PyUnicode_AsUTF8` and
|
||
:c:func:`PyUnicode_AsUTF8AndSize` slightly when they need to create
|
||
internal UTF-8 cache.
|
||
|
||
- bpo-39520: Fix unparsing of ext slices with no items (``foo[:,]``). Patch
|
||
by Batuhan Taskaya.
|
||
|
||
- bpo-39220: Do not optimize annotations if 'from __future__ import
|
||
annotations' is used. Patch by Pablo Galindo.
|
||
|
||
- bpo-35712: Using :data:`NotImplemented` in a boolean context has been
|
||
deprecated. Patch contributed by Josh Rosenberg.
|
||
|
||
- bpo-22490: Don't leak environment variable ``__PYVENV_LAUNCHER__`` into
|
||
the interpreter session on macOS.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-39830: Add :class:`zipfile.Path` to ``__all__`` in the :mod:`zipfile`
|
||
module.
|
||
|
||
- bpo-40000: Improved error messages for validation of ``ast.Constant``
|
||
nodes. Patch by Batuhan Taskaya.
|
||
|
||
- bpo-39999: ``__module__`` of the AST node classes is now set to "ast"
|
||
instead of "_ast". Added docstrings for dummy AST node classes and
|
||
deprecated attributes.
|
||
|
||
- bpo-39991: :func:`uuid.getnode` now skips IPv6 addresses with the same
|
||
string length than a MAC address (17 characters): only use MAC addresses.
|
||
|
||
- bpo-39988: Deprecated ``ast.AugLoad`` and ``ast.AugStore`` node classes
|
||
because they are no longer used.
|
||
|
||
- bpo-39656: Ensure ``bin/python3.#`` is always present in virtual
|
||
environments on POSIX platforms - by Anthony Sottile.
|
||
|
||
- bpo-39969: Deprecated ``ast.Param`` node class because it's no longer
|
||
used. Patch by Batuhan Taskaya.
|
||
|
||
- bpo-39360: Ensure all workers exit when finalizing a
|
||
:class:`multiprocessing.Pool` implicitly via the module finalization
|
||
handlers of multiprocessing. This fixes a deadlock situation that can be
|
||
experienced when the Pool is not properly finalized via the context
|
||
manager or a call to ``multiprocessing.Pool.terminate``. Patch by Batuhan
|
||
Taskaya and Pablo Galindo.
|
||
|
||
- bpo-35370: sys.settrace(), sys.setprofile() and _lsprof.Profiler.enable()
|
||
now properly report :c:func:`PySys_Audit` error if "sys.setprofile" or
|
||
"sys.settrace" audit event is denied.
|
||
|
||
- bpo-39936: AIX: Fix _aix_support module when the subprocess is not
|
||
available, when building Python from scratch. It now uses new private
|
||
_bootsubprocess module, rather than having two implementations depending
|
||
if subprocess is available or not. So _aix_support.aix_platform() result
|
||
is now the same if subprocess is available or not.
|
||
|
||
- bpo-36144: :class:`collections.OrderedDict` now implements ``|`` and
|
||
``|=`` (:pep:`584`).
|
||
|
||
- bpo-39652: The column name found in ``sqlite3.Cursor.description`` is now
|
||
truncated on the first '[' only if the PARSE_COLNAMES option is set.
|
||
|
||
- bpo-39915: Ensure :attr:`unittest.mock.AsyncMock.await_args_list` has call
|
||
objects in the order of awaited arguments instead of using
|
||
:attr:`unittest.mock.Mock.call_args` which has the last value of the call.
|
||
Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-36144: Updated :data:`os.environ` and :data:`os.environb` to support
|
||
:pep:`584`'s merge (``|``) and update (``|=``) operators.
|
||
|
||
- bpo-38662: The ``ensurepip`` module now invokes ``pip`` via the ``runpy``
|
||
module. Hence it is no longer tightly coupled with the internal API of the
|
||
bundled ``pip`` version, allowing easier updates to a newer ``pip``
|
||
version both internally and for distributors.
|
||
|
||
- bpo-38075: Fix the :meth:`random.Random.seed` method when a :class:`bool`
|
||
is passed as the seed.
|
||
|
||
- bpo-39916: More reliable use of ``os.scandir()`` in ``Path.glob()``. It no
|
||
longer emits a ResourceWarning when interrupted.
|
||
|
||
- bpo-39850: :mod:`multiprocessing` now supports abstract socket addresses
|
||
(if abstract sockets are supported in the running platform). When creating
|
||
arbitrary addresses (like when default-constructing
|
||
:class:`multiprocessing.connection.Listener` objects) abstract sockets are
|
||
preferred to avoid the case when the temporary-file-generated address is
|
||
too large for an AF_UNIX socket address. Patch by Pablo Galindo.
|
||
|
||
- bpo-36287: :func:`ast.dump()` no longer outputs optional fields and
|
||
attributes with default values. The default values for optional fields and
|
||
attributes of AST nodes are now set as class attributes (e.g.
|
||
``Constant.kind`` is set to ``None``).
|
||
|
||
- bpo-39889: Fixed :func:`ast.unparse` for extended slices containing a
|
||
single element (e.g. ``a[i:j,]``). Remove redundant tuples when index with
|
||
a tuple (e.g. ``a[i, j]``).
|
||
|
||
- bpo-39828: Fix :mod:`json.tool` to catch :exc:`BrokenPipeError`. Patch by
|
||
Dong-hee Na.
|
||
|
||
- bpo-13487: Avoid a possible *"RuntimeError: dictionary changed size during
|
||
iteration"* from :func:`inspect.getmodule` when it tried to loop through
|
||
:attr:`sys.modules`.
|
||
|
||
- bpo-39674: Revert "bpo-37330: open() no longer accept 'U' in file mode".
|
||
The "U" mode of open() is kept in Python 3.9 to ease transition from
|
||
Python 2.7, but will be removed in Python 3.10.
|
||
|
||
- bpo-28577: The hosts method on 32-bit prefix length IPv4Networks and
|
||
128-bit prefix IPv6Networks now returns a list containing the single
|
||
Address instead of an empty list.
|
||
|
||
- bpo-39826: Add getConnection method to logging HTTPHandler to enable
|
||
custom connections.
|
||
|
||
- bpo-39763: Reimplement :func:`distutils.spawn.spawn` function with the
|
||
:mod:`subprocess` module.
|
||
|
||
- bpo-39794: Add --without-decimal-contextvar build option. This enables a
|
||
thread-local rather than a coroutine local context.
|
||
|
||
- bpo-36144: :class:`collections.defaultdict` now implements ``|``
|
||
(:pep:`584`).
|
||
|
||
- bpo-39517: Fix runpy.run_path() when using pathlike objects
|
||
|
||
- bpo-39775: Change ``inspect.Signature.parameters`` back to
|
||
``collections.OrderedDict``. This was changed to ``dict`` in Python
|
||
3.9.0a4.
|
||
|
||
- bpo-39678: Refactor queue_manager in
|
||
:class:`concurrent.futures.ProcessPoolExecutor` to make it easier to
|
||
maintain.
|
||
|
||
- bpo-39764: Fix AttributeError when calling get_stack on a PyAsyncGenObject
|
||
Task
|
||
|
||
- bpo-39769: The :func:`compileall.compile_dir` function's *ddir* parameter
|
||
and the compileall command line flag `-d` no longer write the wrong
|
||
pathname to the generated pyc file for submodules beneath the root of the
|
||
directory tree being compiled. This fixes a regression introduced with
|
||
Python 3.5.
|
||
|
||
- bpo-36144: :class:`types.MappingProxyType` objects now support the merge
|
||
(``|``) operator from :pep:`584`.
|
||
|
||
- bpo-38691: The :mod:`importlib` module now ignores the
|
||
:envvar:`PYTHONCASEOK` environment variable when the :option:`-E` or
|
||
:option:`-I` command line options are being used.
|
||
|
||
- bpo-39719: Remove :meth:`tempfile.SpooledTemporaryFile.softspace` as files
|
||
no longer have the ``softspace`` attribute in Python 3. Patch by Shantanu.
|
||
|
||
- bpo-39667: Improve pathlib.Path compatibility on zipfile.Path and correct
|
||
performance degradation as found in zipp 3.0.
|
||
|
||
- bpo-39638: Keep ASDL signatures in the docstrings for ``AST`` nodes. Patch
|
||
by Batuhan Taskaya
|
||
|
||
- bpo-39639: Deprecated ``ast.Suite`` node class because it's no longer
|
||
used. Patch by Batuhan Taskaya.
|
||
|
||
- bpo-39609: Add thread_name_prefix to default asyncio executor
|
||
|
||
- bpo-39548: Fix handling of header in
|
||
:class:`urllib.request.AbstractDigestAuthHandler` when the optional
|
||
``qop`` parameter is not present.
|
||
|
||
- bpo-39509: HTTP status codes ``103 EARLY_HINTS`` and ``425 TOO_EARLY`` are
|
||
added to :class:`http.HTTPStatus`. Patch by Dong-hee Na.
|
||
|
||
- bpo-39507: Adding HTTP status 418 "I'm a Teapot" to HTTPStatus in http
|
||
library. Patch by Ross Rhodes.
|
||
|
||
- bpo-39495: Remove default value from *attrs* parameter of
|
||
:meth:`xml.etree.ElementTree.TreeBuilder.start` for consistency between
|
||
Python and C implementations.
|
||
|
||
- bpo-38971: Open issue in the BPO indicated a desire to make the
|
||
implementation of codecs.open() at parity with io.open(), which implements
|
||
a try/except to assure file stream gets closed before an exception is
|
||
raised.
|
||
|
||
- bpo-38641: Added starred expressions support to ``return`` and ``yield``
|
||
statements for ``lib2to3``. Patch by Vlad Emelianov.
|
||
|
||
- bpo-37534: When using minidom module to generate XML documents the ability
|
||
to add Standalone Document Declaration is added. All the changes are made
|
||
to generate a document in compliance with Extensible Markup Language (XML)
|
||
1.0 (Fifth Edition) W3C Recommendation (available here:
|
||
https://www.w3.org/TR/xml/#sec-prolog-dtd).
|
||
|
||
- bpo-34788: Add support for scoped IPv6 addresses to :mod:`ipaddress`.
|
||
Patch by Oleksandr Pavliuk.
|
||
|
||
- bpo-34822: Simplified AST for subscription. Simple indices are now
|
||
represented by their value, extended slices are represented as tuples.
|
||
:mod:`ast` classes ``Index`` and ``ExtSlice`` are considered deprecated
|
||
and will be removed in future Python versions. In the meantime,
|
||
``Index(value)`` now returns a ``value`` itself, ``ExtSlice(slices)``
|
||
returns ``Tuple(slices, Load())``.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-39868: Updated the Language Reference for :pep:`572`.
|
||
|
||
- bpo-13790: Change 'string' to 'specification' in format doc.
|
||
|
||
- bpo-17422: The language reference no longer restricts default class
|
||
namespaces to dicts only.
|
||
|
||
- bpo-39530: Fix misleading documentation about mixed-type numeric
|
||
comparisons.
|
||
|
||
- bpo-39718: Update :mod:`token` documentation to reflect additions in
|
||
Python 3.8
|
||
|
||
- bpo-39677: Changed operand name of **MAKE_FUNCTION** from *argc* to
|
||
*flags* for module :mod:`dis`
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-40019: test_gdb now skips tests if it detects that gdb failed to read
|
||
debug information because the Python binary is optimized.
|
||
|
||
- bpo-27807: ``test_site.test_startup_imports()`` is now skipped if a path
|
||
of :data:`sys.path` contains a ``.pth`` file.
|
||
|
||
- bpo-26067: Do not fail test_shutil test_chown test when uid or gid of user
|
||
cannot be resolved to a name.
|
||
|
||
- bpo-39855: test_subprocess.test_user() now skips the test on an user name
|
||
if the user name doesn't exist. For example, skip the test if the user
|
||
"nobody" doesn't exist on Linux.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-39761: Fix build with DTrace but without additional DFLAGS.
|
||
|
||
- bpo-39763: setup.py now uses a basic implementation of the
|
||
:mod:`subprocess` module if the :mod:`subprocess` module is not available:
|
||
before required C extension modules are built.
|
||
|
||
- bpo-1294959: Add ``--with-platlibdir`` option to the configure script:
|
||
name of the platform-specific library directory, stored in the new
|
||
:attr:`sys.platlibdir` attribute. It is used to build the path of
|
||
platform-specific extension modules and the path of the standard library.
|
||
It is equal to ``"lib"`` on most platforms. On Fedora and SuSE, it is
|
||
equal to ``"lib64"`` on 64-bit platforms. Patch by Jan Matějek, Matěj
|
||
Cepl, Charalampos Stratakis and Victor Stinner.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-39930: Ensures the required :file:`vcruntime140.dll` is included in
|
||
install packages.
|
||
|
||
- bpo-39847: Avoid hang when computer is hibernated whilst waiting for a
|
||
mutex (for lock-related objects from :mod:`threading`) around 49-day
|
||
uptime.
|
||
|
||
- bpo-38597: :mod:`distutils` will no longer statically link
|
||
:file:`vcruntime140.dll` when a redistributable version is unavailable.
|
||
All future releases of CPython will include a copy of this DLL to ensure
|
||
distributed extensions can continue to load.
|
||
|
||
- bpo-38380: Update Windows builds to use SQLite 3.31.1
|
||
|
||
- bpo-39789: Update Windows release build machines to Visual Studio 2019
|
||
(MSVC 14.2).
|
||
|
||
- bpo-34803: Package for nuget.org now includes repository reference and
|
||
bundled icon image.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-38380: Update macOS builds to use SQLite 3.31.1
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-27115: For 'Go to Line', use a Query box subclass with IDLE standard
|
||
behavior and improved error checking.
|
||
|
||
- bpo-39885: Since clicking to get an IDLE context menu moves the cursor,
|
||
any text selection should be and now is cleared.
|
||
|
||
- bpo-39852: Edit "Go to line" now clears any selection, preventing
|
||
accidental deletion. It also updates Ln and Col on the status bar.
|
||
|
||
- bpo-39781: Selecting code context lines no longer causes a jump.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-36184: Port python-gdb.py to FreeBSD. python-gdb.py now checks for
|
||
"take_gil" function name to check if a frame tries to acquire the GIL,
|
||
instead of checking for "pthread_cond_timedwait" which is specific to
|
||
Linux and can be a different condition than the GIL.
|
||
|
||
- bpo-38080: Added support to fix ``getproxies`` in the
|
||
:mod:`lib2to3.fixes.fix_urllib` module. Patch by José Roberto Meza
|
||
Cabrera.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-40024: Add :c:func:`PyModule_AddType` helper function: add a type to a
|
||
module. Patch by Dong-hee Na.
|
||
|
||
- bpo-39946: Remove ``_PyRuntime.getframe`` hook and remove
|
||
``_PyThreadState_GetFrame`` macro which was an alias to
|
||
``_PyRuntime.getframe``. They were only exposed by the internal C API.
|
||
Remove also ``PyThreadFrameGetter`` type.
|
||
|
||
- bpo-39947: Add :c:func:`PyThreadState_GetFrame` function: get the current
|
||
frame of a Python thread state.
|
||
|
||
- bpo-37207: Add _PyArg_NoKwnames helper function. Patch by Dong-hee Na.
|
||
|
||
- bpo-39947: Add :c:func:`PyThreadState_GetInterpreter`: get the interpreter
|
||
of a Python thread state.
|
||
|
||
- bpo-39947: Add :c:func:`PyInterpreterState_Get` function to the limited C
|
||
API.
|
||
|
||
- bpo-35370: If :c:func:`PySys_Audit` fails in :c:func:`PyEval_SetProfile`
|
||
or :c:func:`PyEval_SetTrace`, log the error as an unraisable exception.
|
||
|
||
- bpo-39947: Move the static inline function flavor of
|
||
Py_EnterRecursiveCall() and Py_LeaveRecursiveCall() to the internal C API:
|
||
they access PyThreadState attributes. The limited C API provides regular
|
||
functions which hide implementation details.
|
||
|
||
- bpo-39947: Py_TRASHCAN_BEGIN_CONDITION and Py_TRASHCAN_END macro no longer
|
||
access PyThreadState attributes, but call new private _PyTrash_begin() and
|
||
_PyTrash_end() functions which hide implementation details.
|
||
|
||
- bpo-39884: :c:func:`PyDescr_NewMethod` and :c:func:`PyCFunction_NewEx` now
|
||
include the method name in the SystemError "bad call flags" error message
|
||
to ease debug.
|
||
|
||
- bpo-39877: Deprecated :c:func:`PyEval_InitThreads` and
|
||
:c:func:`PyEval_ThreadsInitialized`. Calling :c:func:`PyEval_InitThreads`
|
||
now does nothing.
|
||
|
||
- bpo-38249: :c:macro:`Py_UNREACHABLE` is now implemented with
|
||
``__builtin_unreachable()`` and analogs in release mode.
|
||
|
||
- bpo-38643: :c:func:`PyNumber_ToBase` now raises a :exc:`SystemError`
|
||
instead of crashing when called with invalid base.
|
||
|
||
- bpo-39882: The :c:func:`Py_FatalError` function is replaced with a macro
|
||
which logs automatically the name of the current function, unless the
|
||
``Py_LIMITED_API`` macro is defined.
|
||
|
||
- bpo-39824: Extension modules: :c:member:`~PyModuleDef.m_traverse`,
|
||
:c:member:`~PyModuleDef.m_clear` and :c:member:`~PyModuleDef.m_free`
|
||
functions of :c:type:`PyModuleDef` are no longer called if the module
|
||
state was requested but is not allocated yet. This is the case immediately
|
||
after the module is created and before the module is executed
|
||
(:c:data:`Py_mod_exec` function). More precisely, these functions are not
|
||
called if :c:member:`~PyModuleDef.m_size` is greater than 0 and the module
|
||
state (as returned by :c:func:`PyModule_GetState`) is ``NULL``.
|
||
|
||
Extension modules without module state (``m_size <= 0``) are not affected.
|
||
|
||
- bpo-38913: Fixed segfault in ``Py_BuildValue()`` called with a format
|
||
containing "#" and undefined PY_SSIZE_T_CLEAN whwn an exception is set.
|
||
|
||
- bpo-38500: Add a private API to get and set the frame evaluation function:
|
||
add :c:func:`_PyInterpreterState_GetEvalFrameFunc` and
|
||
:c:func:`_PyInterpreterState_SetEvalFrameFunc` C functions. The
|
||
:c:type:`_PyFrameEvalFunction` function type now takes a *tstate*
|
||
parameter.
|
||
|
||
|
||
What's New in Python 3.9.0 alpha 4?
|
||
===================================
|
||
|
||
*Release date: 2020-02-25*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-39184: Add audit events to functions in `fcntl`, `msvcrt`, `os`,
|
||
`resource`, `shutil`, `signal` and `syslog`.
|
||
|
||
- bpo-39401: Avoid unsafe DLL load at startup on Windows 7 and earlier.
|
||
|
||
- bpo-39184: Add audit events to command execution functions in os and pty
|
||
modules.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-39382: Fix a use-after-free in the single inheritance path of
|
||
``issubclass()``, when the ``__bases__`` of an object has a single
|
||
reference, and so does its first item. Patch by Yonatan Goldschmidt.
|
||
|
||
- bpo-39573: Update clinic tool to use :c:func:`Py_IS_TYPE`. Patch by
|
||
Dong-hee Na.
|
||
|
||
- bpo-39619: Enable use of :func:`os.chroot` on HP-UX systems.
|
||
|
||
- bpo-39573: Add :c:func:`Py_IS_TYPE` static inline function to check
|
||
whether the object *o* type is *type*.
|
||
|
||
- bpo-39606: Fix regression caused by fix for bpo-39386, that prevented
|
||
calling ``aclose`` on an async generator that had already been closed or
|
||
exhausted.
|
||
|
||
- bpo-39579: Change the ending column offset of `Attribute` nodes
|
||
constructed in `ast_for_dotted_name` to point at the end of the current
|
||
node and not at the end of the last `NAME` node.
|
||
|
||
- bpo-1635741: Port _crypt extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-1635741: Port _contextvars extension module to multiphase
|
||
initialization (:pep:`489`).
|
||
|
||
- bpo-39510: Fix segfault in ``readinto()`` method on closed BufferedReader.
|
||
|
||
- bpo-39502: Fix :func:`time.localtime` on 64-bit AIX to support years
|
||
before 1902 and after 2038. Patch by M Felt.
|
||
|
||
- bpo-39492: Fix a reference cycle in the C Pickler that was preventing the
|
||
garbage collection of deleted, pickled objects.
|
||
|
||
- bpo-39453: Fixed a possible crash in :meth:`list.__contains__` when a list
|
||
is changed during comparing items. Patch by Dong-hee Na.
|
||
|
||
- bpo-39434: :term:`floor division` of float operation now has a better
|
||
performance. Also the message of :exc:`ZeroDivisionError` for this
|
||
operation is updated. Patch by Dong-hee Na.
|
||
|
||
- bpo-1635741: Port _codecs extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-1635741: Port _bz2 extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-1635741: Port _abc extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-39320: Replace two complex bytecodes for building dicts with two
|
||
simpler ones. The new bytecodes ``DICT_MERGE`` and ``DICT_UPDATE`` have
|
||
been added The old bytecodes ``BUILD_MAP_UNPACK`` and
|
||
``BUILD_MAP_UNPACK_WITH_CALL`` have been removed.
|
||
|
||
- bpo-39219: Syntax errors raised in the tokenizer now always set correct
|
||
"text" and "offset" attributes.
|
||
|
||
- bpo-36051: Drop the GIL during large ``bytes.join`` operations. Patch by
|
||
Bruce Merry.
|
||
|
||
- bpo-38960: Fix DTrace build issues on FreeBSD. Patch by David Carlier.
|
||
|
||
- bpo-37207: Speed up calls to ``range()`` by about 30%, by using the PEP
|
||
590 ``vectorcall`` calling convention. Patch by Mark Shannon.
|
||
|
||
- bpo-36144: :class:`dict` (and :class:`collections.UserDict`) objects now
|
||
support PEP 584's merge (``|``) and update (``|=``) operators. Patch by
|
||
Brandt Bucher.
|
||
|
||
- bpo-32856: Optimized the idiom for assignment a temporary variable in
|
||
comprehensions. Now ``for y in [expr]`` in comprehensions is as fast as a
|
||
simple assignment ``y = expr``.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-30566: Fix :exc:`IndexError` when trying to decode an invalid string
|
||
with punycode codec.
|
||
|
||
- bpo-39649: Remove obsolete check for `__args__` in
|
||
bdb.Bdb.format_stack_entry.
|
||
|
||
- bpo-39648: Expanded :func:`math.gcd` and :func:`math.lcm` to handle
|
||
multiple arguments.
|
||
|
||
- bpo-39681: Fix a regression where the C pickle module wouldn't allow
|
||
unpickling from a file-like object that doesn't expose a readinto()
|
||
method.
|
||
|
||
- bpo-35950: Raise :exc:`io.UnsupportedOperation` in
|
||
:meth:`io.BufferedReader.truncate` when it is called on a read-only
|
||
:class:`io.BufferedReader` instance.
|
||
|
||
- bpo-39479: Add :func:`math.lcm` function: least common multiple.
|
||
|
||
- bpo-39674: Revert "Do not expose abstract collection classes in the
|
||
collections module" change (bpo-25988). Aliases to ABC like
|
||
collections.Mapping are kept in Python 3.9 to ease transition from Python
|
||
2.7, but will be removed in Python 3.10.
|
||
|
||
- bpo-39104: Fix hanging ProcessPoolExcutor on ``shutdown(wait=False)`` when
|
||
a task has failed pickling.
|
||
|
||
- bpo-39627: Fixed TypedDict totality check for inherited keys.
|
||
|
||
- bpo-39474: Fixed starting position of AST for expressions like ``(a)(b)``,
|
||
``(a)[b]`` and ``(a).b``.
|
||
|
||
- bpo-21016: The :mod:`pydoc` and :mod:`trace` modules now use the
|
||
:mod:`sysconfig` module to get the path to the Python standard library, to
|
||
support uncommon installation path like ``/usr/lib64/python3.9/`` on
|
||
Fedora. Patch by Jan Matějek.
|
||
|
||
- bpo-39590: Collections.deque now holds strong references during
|
||
deque.__contains__ and deque.count, fixing crashes.
|
||
|
||
- bpo-39586: The distutils ``bdist_msi`` command is deprecated in Python
|
||
3.9, use ``bdist_wheel`` (wheel packages) instead.
|
||
|
||
- bpo-39595: Improved performance of zipfile.Path for files with a large
|
||
number of entries. Also improved performance and fixed minor issue as
|
||
published with `importlib_metadata 1.5
|
||
<https://importlib-metadata.readthedocs.io/en/latest/changelog%20(links).html#v1-5-0>`_.
|
||
|
||
- bpo-39350: Fix regression in :class:`fractions.Fraction` if the numerator
|
||
and/or the denominator is an :class:`int` subclass. The :func:`math.gcd`
|
||
function is now used to normalize the *numerator* and *denominator*.
|
||
:func:`math.gcd` always return a :class:`int` type. Previously, the GCD
|
||
type depended on *numerator* and *denominator*.
|
||
|
||
- bpo-39567: Added audit for :func:`os.walk`, :func:`os.fwalk`,
|
||
:meth:`pathlib.Path.glob` and :meth:`pathlib.Path.rglob`.
|
||
|
||
- bpo-39559: Remove unused, undocumented argument ``getters`` from
|
||
:func:`uuid.getnode`
|
||
|
||
- bpo-38149: :func:`sys.audit` is now called only once per call of
|
||
:func:`glob.glob` and :func:`glob.iglob`.
|
||
|
||
- bpo-39546: Fix a regression in :class:`~argparse.ArgumentParser` where
|
||
``allow_abbrev=False`` was ignored for long options that used a prefix
|
||
character other than "-".
|
||
|
||
- bpo-39450: Striped whitespace from docstring before returning it from
|
||
:func:`unittest.case.shortDescription`.
|
||
|
||
- bpo-12915: A new function ``resolve_name`` has been added to the
|
||
``pkgutil`` module. This resolves a string of the form ``'a.b.c.d'`` or
|
||
``'a.b:c.d'`` to an object. In the example, ``a.b`` is a package/module
|
||
and ``c.d`` is an object within that package/module reached via recursive
|
||
attribute access.
|
||
|
||
- bpo-39353: The :func:`binascii.crc_hqx` function is no longer deprecated.
|
||
|
||
- bpo-39493: Mark ``typing.IO.closed`` as a property
|
||
|
||
- bpo-39491: Add :data:`typing.Annotated` and ``include_extras`` parameter
|
||
to :func:`typing.get_type_hints` as part of :pep:`593`. Patch by Till
|
||
Varoquaux, documentation by Till Varoquaux and Konstantin Kashin.
|
||
|
||
- bpo-39485: Fix a bug in :func:`unittest.mock.create_autospec` that would
|
||
complain about the wrong number of arguments for custom descriptors
|
||
defined in an extension module returning functions.
|
||
|
||
- bpo-38932: Mock fully resets child objects on reset_mock(). Patch by
|
||
Vegard Stikbakke
|
||
|
||
- bpo-39082: Allow AsyncMock to correctly patch static/class methods
|
||
|
||
- bpo-39432: Implement PEP-489 algorithm for non-ascii "PyInit\_..." symbol
|
||
names in distutils to make it export the correct init symbol also on
|
||
Windows.
|
||
|
||
- bpo-18819: Omit ``devmajor`` and ``devminor`` fields for non-device files
|
||
in :mod:`tarfile` archives, enabling bit-for-bit compatibility with GNU
|
||
``tar(1)``.
|
||
|
||
- bpo-39349: Added a new *cancel_futures* parameter to
|
||
:meth:`concurrent.futures.Executor.shutdown` that cancels all pending
|
||
futures which have not started running, instead of waiting for them to
|
||
complete before shutting down the executor.
|
||
|
||
- bpo-39274: ``bool(fraction.Fraction)`` now returns a boolean even if
|
||
(numerator != 0) does not return a boolean (ex: numpy number).
|
||
|
||
- bpo-34793: Remove support for ``with (await asyncio.lock):`` and ``with
|
||
(yield from asyncio.lock):``. The same is correct for
|
||
``asyncio.Condition`` and ``asyncio.Semaphore``.
|
||
|
||
- bpo-25597: Ensure, if ``wraps`` is supplied to
|
||
:class:`unittest.mock.MagicMock`, it is used to calculate return values
|
||
for the magic methods instead of using the default return values. Patch by
|
||
Karthikeyan Singaravelan.
|
||
|
||
- bpo-36350: `inspect.Signature.parameters` and
|
||
`inspect.BoundArguments.arguments` are now dicts instead of OrderedDicts.
|
||
Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-35727: Fix sys.exit() and sys.exit(None) exit code propagation when
|
||
used in multiprocessing.Process.
|
||
|
||
- bpo-32173: * Add `lazycache` function to `__all__`. * Use `dict.clear` to
|
||
clear the cache. * Refactoring `getline` function and `checkcache`
|
||
function.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-17422: The language reference now specifies restrictions on class
|
||
namespaces. Adapted from a patch by Ethan Furman.
|
||
|
||
- bpo-39572: Updated documentation of ``total`` flag of ``TypedDict``.
|
||
|
||
- bpo-39654: In pyclbr doc, update 'class' to 'module' where appropriate and
|
||
add readmodule comment. Patch by Hakan Çelik.
|
||
|
||
- bpo-39153: Clarify refcounting semantics for the following functions: -
|
||
PyObject_SetItem - PyMapping_SetItemString - PyDict_SetItem -
|
||
PyDict_SetItemString
|
||
|
||
- bpo-39392: Explain that when filling with turtle, overlap regions may be
|
||
left unfilled.
|
||
|
||
- bpo-39369: Update mmap readline method description. The fact that the
|
||
readline method does update the file position should not be ignored since
|
||
this might give the impression for the programmer that it doesn't update
|
||
it.
|
||
|
||
- bpo-9056: Include subsection in TOC for PDF version of docs.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-38325: Skip tests on non-BMP characters of test_winconsoleio.
|
||
|
||
- bpo-39502: Skip test_zipfile.test_add_file_after_2107() if
|
||
:func:`time.localtime` fails with :exc:`OverflowError`. It is the case on
|
||
AIX 6.1 for example.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-39489: Remove ``COUNT_ALLOCS`` special build.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-39553: Delete unused code related to SxS manifests.
|
||
|
||
- bpo-39439: Honor the Python path when a virtualenv is active on Windows.
|
||
|
||
- bpo-39393: Improve the error message when attempting to load a DLL with
|
||
unresolved dependencies.
|
||
|
||
- bpo-38883: :meth:`~pathlib.Path.home()` and
|
||
:meth:`~pathlib.Path.expanduser()` on Windows now prefer
|
||
:envvar:`USERPROFILE` and no longer use :envvar:`HOME`, which is not
|
||
normally set for regular user accounts. This makes them again behave like
|
||
:func:`os.path.expanduser`, which was changed to ignore :envvar:`HOME` in
|
||
3.8, see :issue:`36264`.
|
||
|
||
- bpo-39185: The build.bat script has additional options for very-quiet
|
||
output (-q) and very-verbose output (-vv)
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-39663: Add tests for pyparse find_good_parse_start().
|
||
|
||
- bpo-39600: In the font configuration window, remove duplicated font names.
|
||
|
||
- bpo-30780: Add remaining configdialog tests for buttons and highlights and
|
||
keys tabs.
|
||
|
||
- bpo-39388: IDLE Settings Cancel button now cancels pending changes
|
||
|
||
- bpo-38792: Close an IDLE shell calltip if a :exc:`KeyboardInterrupt` or
|
||
shell restart occurs. Patch by Zackery Spytz.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-35081: Move the ``bytes_methods.h`` header file to the internal C API
|
||
as ``pycore_bytes_methods.h``: it only contains private symbols (prefixed
|
||
by ``_Py``), except of the ``PyDoc_STRVAR_shared()`` macro.
|
||
|
||
- bpo-35081: Move the ``dtoa.h`` header file to the internal C API as
|
||
``pycore_dtoa.h``: it only contains private functions (prefixed by
|
||
``_Py``). The :mod:`math` and :mod:`cmath` modules must now be compiled
|
||
with the ``Py_BUILD_CORE`` macro defined.
|
||
|
||
- bpo-39573: Add :c:func:`Py_SET_SIZE` function to set the size of an
|
||
object.
|
||
|
||
- bpo-39500: :c:func:`PyUnicode_IsIdentifier` does not call
|
||
:c:func:`Py_FatalError` anymore if the string is not ready.
|
||
|
||
- bpo-39573: Add :c:func:`Py_SET_TYPE` function to set the type of an
|
||
object.
|
||
|
||
- bpo-39573: Add a :c:func:`Py_SET_REFCNT` function to set the reference
|
||
counter of an object.
|
||
|
||
- bpo-39542: Convert :c:func:`PyType_HasFeature`, :c:func:`PyType_Check` and
|
||
:c:func:`PyType_CheckExact` macros to static inline functions.
|
||
|
||
- bpo-39542: In the limited C API, ``PyObject_INIT()`` and
|
||
``PyObject_INIT_VAR()`` are now defined as aliases to
|
||
:c:func:`PyObject_Init` and :c:func:`PyObject_InitVar` to make their
|
||
implementation opaque. It avoids to leak implementation details in the
|
||
limited C API. Exclude the following functions from the limited C API:
|
||
``_Py_NewReference()``, ``_Py_ForgetReference()``,
|
||
``_PyTraceMalloc_NewReference()`` and ``_Py_GetRefTotal()``.
|
||
|
||
- bpo-39542: Exclude trashcan mechanism from the limited C API: it requires
|
||
access to PyTypeObject and PyThreadState structure fields, whereas these
|
||
structures are opaque in the limited C API.
|
||
|
||
- bpo-39511: The :c:func:`PyThreadState_Clear` function now calls the
|
||
:c:member:`PyThreadState.on_delete` callback. Previously, that happened in
|
||
:c:func:`PyThreadState_Delete`.
|
||
|
||
- bpo-38076: Fix to clear the interpreter state only after clearing module
|
||
globals to guarantee module state access from C Extensions during runtime
|
||
destruction
|
||
|
||
- bpo-39245: The Vectorcall API (PEP 590) was made public, adding the
|
||
functions ``PyObject_Vectorcall``, ``PyObject_VectorcallMethod``,
|
||
``PyVectorcall_Function``, ``PyObject_CallOneArg``,
|
||
``PyObject_CallMethodNoArgs``, ``PyObject_CallMethodOneArg``,
|
||
``PyObject_FastCallDict``, and the flag ``Py_TPFLAGS_HAVE_VECTORCALL``.
|
||
|
||
|
||
What's New in Python 3.9.0 alpha 3?
|
||
===================================
|
||
|
||
*Release date: 2020-01-24*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-39427: Document all possibilities for the ``-X`` options in the
|
||
command line help section. Patch by Pablo Galindo.
|
||
|
||
- bpo-39421: Fix possible crashes when operating with the functions in the
|
||
:mod:`heapq` module and custom comparison operators.
|
||
|
||
- bpo-39386: Prevent double awaiting of async iterator.
|
||
|
||
- bpo-17005: Add :class:`functools.TopologicalSorter` to the
|
||
:mod:`functools` module to offers functionality to perform topological
|
||
sorting of graphs. Patch by Pablo Galindo, Tim Peters and Larry Hastings.
|
||
|
||
- bpo-39320: Replace four complex bytecodes for building sequences with
|
||
three simpler ones.
|
||
|
||
The following four bytecodes have been removed:
|
||
|
||
* BUILD_LIST_UNPACK
|
||
* BUILD_TUPLE_UNPACK
|
||
* BUILD_SET_UNPACK
|
||
* BUILD_TUPLE_UNPACK_WITH_CALL
|
||
|
||
The following three bytecodes have been added:
|
||
|
||
* LIST_TO_TUPLE
|
||
* LIST_EXTEND
|
||
* SET_UPDATE
|
||
|
||
- bpo-39336: Import loaders which publish immutable module objects can now
|
||
publish immutable packages in addition to individual modules.
|
||
|
||
- bpo-39322: Added a new function :func:`gc.is_finalized` to check if an
|
||
object has been finalized by the garbage collector. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-39048: Improve the displayed error message when incorrect types are
|
||
passed to ``async with`` statements by looking up the :meth:`__aenter__`
|
||
special method before the :meth:`__aexit__` special method when entering
|
||
an asynchronous context manager. Patch by Géry Ogam.
|
||
|
||
- bpo-39235: Fix AST end location for lone generator expression in function
|
||
call, e.g. f(i for i in a).
|
||
|
||
- bpo-39209: Correctly handle multi-line tokens in interactive mode. Patch
|
||
by Pablo Galindo.
|
||
|
||
- bpo-1635741: Port _json extension module to multiphase initialization
|
||
(:pep:`489`).
|
||
|
||
- bpo-39216: Fix constant folding optimization for positional only arguments
|
||
- by Anthony Sottile.
|
||
|
||
- bpo-39215: Fix ``SystemError`` when nested function has annotation on
|
||
positional-only argument - by Anthony Sottile.
|
||
|
||
- bpo-39200: Correct the error message when calling the :func:`min` or
|
||
:func:`max` with no arguments. Patch by Dong-hee Na.
|
||
|
||
- bpo-39200: Correct the error message when trying to construct
|
||
:class:`range` objects with no arguments. Patch by Pablo Galindo.
|
||
|
||
- bpo-39166: Fix incorrect line execution reporting in trace functions when
|
||
tracing the last iteration of asynchronous for loops. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-39114: Fix incorrect line execution reporting in trace functions when
|
||
tracing exception handlers with name binding. Patch by Pablo Galindo.
|
||
|
||
- bpo-39156: Split the COMPARE_OP bytecode instruction into four distinct
|
||
instructions.
|
||
|
||
* COMPARE_OP for rich comparisons
|
||
* IS_OP for 'is' and 'is not' tests
|
||
* CONTAINS_OP for 'in' and 'is not' tests
|
||
* JUMP_IF_NOT_EXC_MATCH for checking exceptions in 'try-except' statements.
|
||
|
||
This improves the clarity of the interpreter and should provide a modest
|
||
speedup.
|
||
|
||
- bpo-38588: Fix possible crashes in dict and list when calling
|
||
:c:func:`PyObject_RichCompareBool`.
|
||
|
||
- bpo-13601: By default, ``sys.stderr`` is line-buffered now, even if
|
||
``stderr`` is redirected to a file. You can still make ``sys.stderr``
|
||
unbuffered by passing the :option:`-u` command-line option or setting the
|
||
:envvar:`PYTHONUNBUFFERED` environment variable.
|
||
|
||
(Contributed by Jendrik Seipp in bpo-13601.)
|
||
|
||
- bpo-38610: Fix possible crashes in several list methods by holding strong
|
||
references to list elements when calling
|
||
:c:func:`PyObject_RichCompareBool`.
|
||
|
||
- bpo-32021: Include brotli .br encoding in mimetypes encodings_map
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-39430: Fixed race condition in lazy imports in :mod:`tarfile`.
|
||
|
||
- bpo-39413: The :func:`os.unsetenv` function is now also available on
|
||
Windows.
|
||
|
||
- bpo-39390: Fixed a regression with the `ignore` callback of
|
||
:func:`shutil.copytree`. The argument types are now str and List[str]
|
||
again.
|
||
|
||
- bpo-39395: The :func:`os.putenv` and :func:`os.unsetenv` functions are now
|
||
always available.
|
||
|
||
- bpo-39406: If ``setenv()`` C function is available, :func:`os.putenv` is
|
||
now implemented with ``setenv()`` instead of ``putenv()``, so Python
|
||
doesn't have to handle the environment variable memory.
|
||
|
||
- bpo-39396: Fix ``math.nextafter(-0.0, +0.0)`` on AIX 7.1.
|
||
|
||
- bpo-29435: Allow :func:`tarfile.is_tarfile` to be used with file and
|
||
file-like objects, like :func:`zipfile.is_zipfile`. Patch by William
|
||
Woodruff.
|
||
|
||
- bpo-39377: Removed ``encoding`` option from :func:`json.loads`. It has
|
||
been deprecated since Python 3.1.
|
||
|
||
- bpo-39389: Write accurate compression level metadata in :mod:`gzip`
|
||
archives, rather than always signaling maximum compression.
|
||
|
||
- bpo-39366: The previously deprecated ``xpath()`` and ``xgtitle()`` methods
|
||
of :class:`nntplib.NNTP` have been removed.
|
||
|
||
- bpo-39357: Remove the *buffering* parameter of :class:`bz2.BZ2File`. Since
|
||
Python 3.0, it was ignored and using it was emitting
|
||
:exc:`DeprecationWarning`. Pass an open file object, to control how the
|
||
file is opened. The *compresslevel* parameter becomes keyword-only.
|
||
|
||
- bpo-39353: Deprecate binhex4 and hexbin4 standards. Deprecate the
|
||
:mod:`binhex` module and the following :mod:`binascii` functions:
|
||
:func:`~binascii.b2a_hqx`, :func:`~binascii.a2b_hqx`,
|
||
:func:`~binascii.rlecode_hqx`, :func:`~binascii.rledecode_hqx`,
|
||
:func:`~binascii.crc_hqx`.
|
||
|
||
- bpo-39351: Remove ``base64.encodestring()`` and ``base64.decodestring()``,
|
||
aliases deprecated since Python 3.1: use :func:`base64.encodebytes` and
|
||
:func:`base64.decodebytes` instead.
|
||
|
||
- bpo-39350: Remove ``fractions.gcd()`` function, deprecated since Python
|
||
3.5 (:issue:`22486`): use :func:`math.gcd` instead.
|
||
|
||
- bpo-39329: :class:`~smtplib.LMTP` constructor now has an optional
|
||
*timeout* parameter. Patch by Dong-hee Na.
|
||
|
||
- bpo-39313: Add a new ``exec_function`` option (*--exec-function* in the
|
||
CLI) to ``RefactoringTool`` for making ``exec`` a function. Patch by
|
||
Batuhan Taskaya.
|
||
|
||
- bpo-39259: :class:`~ftplib.FTP_TLS` and :class:`~ftplib.FTP_TLS` now raise
|
||
a :class:`ValueError` if the given timeout for their constructor is zero
|
||
to prevent the creation of a non-blocking socket. Patch by Dong-hee Na.
|
||
|
||
- bpo-39259: :class:`~smtplib.SMTP` and :class:`~smtplib.SMTP_SSL` now raise
|
||
a :class:`ValueError` if the given timeout for their constructor is zero
|
||
to prevent the creation of a non-blocking socket. Patch by Dong-hee Na.
|
||
|
||
- bpo-39310: Add :func:`math.ulp`: return the value of the least significant
|
||
bit of a float.
|
||
|
||
- bpo-39297: Improved performance of importlib.metadata distribution
|
||
discovery and resilients to inaccessible sys.path entries
|
||
(importlib_metadata v1.4.0).
|
||
|
||
- bpo-39259: :class:`~nntplib.NNTP` and :class:`~nntplib.NNTP_SSL` now raise
|
||
a :class:`ValueError` if the given timeout for their constructor is zero
|
||
to prevent the creation of a non-blocking socket. Patch by Dong-hee Na.
|
||
|
||
- bpo-38901: When you specify prompt='.' or equivalently python -m venv
|
||
--prompt . ... the basename of the current directory is used to set the
|
||
created venv's prompt when it's activated.
|
||
|
||
- bpo-39288: Add :func:`math.nextafter`: return the next floating-point
|
||
value after *x* towards *y*.
|
||
|
||
- bpo-39259: :class:`~poplib.POP3` and :class:`~poplib.POP3_SSL` now raise a
|
||
:class:`ValueError` if the given timeout for their constructor is zero to
|
||
prevent the creation of a non-blocking socket. Patch by Dong-hee Na.
|
||
|
||
- bpo-39242: Updated the Gmane domain from news.gmane.org to news.gmane.io
|
||
which is used for examples of :class:`~nntplib.NNTP` news reader server
|
||
and nntplib tests.
|
||
|
||
- bpo-35292: Proxy the `SimpleHTTPRequestHandler.guess_type` to
|
||
`mimetypes.guess_type` so the `mimetypes.init` is called lazily to avoid
|
||
unnecessary costs when :mod:`http.server` module is imported.
|
||
|
||
- bpo-39239: The :meth:`select.epoll.unregister` method no longer ignores
|
||
the :data:`~errno.EBADF` error.
|
||
|
||
- bpo-38907: In http.server script, restore binding to IPv4 on Windows.
|
||
|
||
- bpo-39152: Fix ttk.Scale.configure([name]) to return configuration tuple
|
||
for name or all options. Giovanni Lombardo contributed part of the patch.
|
||
|
||
- bpo-39198: If an exception were to be thrown in `Logger.isEnabledFor`
|
||
(say, by asyncio timeouts or stopit) , the `logging` global lock may not
|
||
be released appropriately, resulting in deadlock. This change wraps that
|
||
block of code with `try...finally` to ensure the lock is released.
|
||
|
||
- bpo-39191: Perform a check for running loop before starting a new task in
|
||
``loop.run_until_complete()`` to fail fast; it prevents the side effect of
|
||
new task spawning before exception raising.
|
||
|
||
- bpo-38871: Correctly parenthesize filter-based statements that contain
|
||
lambda expressions in mod:`lib2to3`. Patch by Dong-hee Na.
|
||
|
||
- bpo-39142: A change was made to logging.config.dictConfig to avoid
|
||
converting instances of named tuples to ConvertingTuple. It's assumed that
|
||
named tuples are too specialised to be treated like ordinary tuples; if a
|
||
user of named tuples requires ConvertingTuple functionality, they will
|
||
have to implement that themselves in their named tuple class.
|
||
|
||
- bpo-39158: ast.literal_eval() now supports empty sets.
|
||
|
||
- bpo-39129: Fix import path for ``asyncio.TimeoutError``
|
||
|
||
- bpo-39057: :func:`urllib.request.proxy_bypass_environment` now ignores
|
||
leading dots and no longer ignores a trailing newline.
|
||
|
||
- bpo-39056: Fixed handling invalid warning category in the -W option. No
|
||
longer import the re module if it is not needed.
|
||
|
||
- bpo-39055: :func:`base64.b64decode` with ``validate=True`` raises now a
|
||
binascii.Error if the input ends with a single ``\n``.
|
||
|
||
- bpo-21600: Fix :func:`mock.patch.stopall` to stop active patches that were
|
||
created with :func:`mock.patch.dict`.
|
||
|
||
- bpo-39019: Implement dummy ``__class_getitem__`` for
|
||
:class:`tempfile.SpooledTemporaryFile`.
|
||
|
||
- bpo-39019: Implement dummy ``__class_getitem__`` for ``subprocess.Popen``,
|
||
``subprocess.CompletedProcess``
|
||
|
||
- bpo-38914: Adjusted the wording of the warning issued by distutils'
|
||
``check`` command when the ``author`` and ``maintainer`` fields are
|
||
supplied but no corresponding e-mail field (``author_email`` or
|
||
``maintainer_email``) is found. The wording now reflects the fact that
|
||
these fields are suggested, but not required. Patch by Juergen Gmach.
|
||
|
||
- bpo-38878: Fixed __subclasshook__ of :class:`os.PathLike` to return a
|
||
correct result upon inheritance. Patch by Bar Harel.
|
||
|
||
- bpo-38615: :class:`~imaplib.IMAP4` and :class:`~imaplib.IMAP4_SSL` now
|
||
have an optional *timeout* parameter for their constructors. Also, the
|
||
:meth:`~imaplib.IMAP4.open` method now has an optional *timeout* parameter
|
||
with this change. The overridden methods of :class:`~imaplib.IMAP4_SSL`
|
||
and :class:`~imaplib.IMAP4_stream` were applied to this change. Patch by
|
||
Dong-hee Na.
|
||
|
||
- bpo-35182: Fixed :func:`Popen.communicate` subsequent call crash when the
|
||
child process has already closed any piped standard stream, but still
|
||
continues to be running. Patch by Andriy Maletsky.
|
||
|
||
- bpo-38630: On Unix, :meth:`subprocess.Popen.send_signal` now polls the
|
||
process status. Polling reduces the risk of sending a signal to the wrong
|
||
process if the process completed, the :attr:`subprocess.Popen.returncode`
|
||
attribute is still ``None``, and the pid has been reassigned (recycled) to
|
||
a new different process.
|
||
|
||
- bpo-38536: Removes trailing space in formatted currency with
|
||
`international=True` and a locale with symbol following value. E.g.
|
||
`locale.currency(12.34, international=True)` returned `'12,34 EUR '`
|
||
instead of `'12,34 EUR'`.
|
||
|
||
- bpo-38473: Use signature from inner mock for autospecced methods attached
|
||
with :func:`unittest.mock.attach_mock`. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-38361: Fixed an issue where ``ident`` could include a leading path
|
||
separator when :func:`syslog.openlog` was called without arguments.
|
||
|
||
- bpo-38293: Add :func:`copy.copy` and :func:`copy.deepcopy` support to
|
||
:func:`property` objects.
|
||
|
||
- bpo-37958: Added the pstats.Stats.get_profile_dict() method to return the
|
||
profile data as a StatsProfile instance.
|
||
|
||
- bpo-28367: Termios magic constants for the following baud rates: -
|
||
B500000 - B576000 - B921600 - B1000000 - B1152000 - B1500000 -
|
||
B2000000 - B2500000 - B3000000 - B3500000 - B4000000 Patch by
|
||
Andrey Smirnov
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-39381: Mention in docs that :func:`asyncio.get_event_loop` implicitly
|
||
creates new event loop only if called from the main thread.
|
||
|
||
- bpo-38918: Add an entry for ``__module__`` in the "function" & "method"
|
||
sections of the :mod:`inspect` docs' :ref:`inspect-types` table.
|
||
|
||
- bpo-3530: In the :mod:`ast` module documentation, fix a misleading
|
||
``NodeTransformer`` example and add advice on when to use the
|
||
``fix_missing_locations`` function.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-39395: On non-Windows platforms, the :c:func:`setenv` and
|
||
:c:func:`unsetenv` functions are now required to build Python.
|
||
|
||
- bpo-39160: Updated the documentation in `./configure --help` to show
|
||
default values, reference documentation where required and add additional
|
||
explanation where needed.
|
||
|
||
- bpo-39144: The ctags and etags build targets both include Modules/_ctypes
|
||
and Python standard library source files.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-39050: Make IDLE Settings dialog Help button work again.
|
||
|
||
- bpo-34118: Tag memoryview, range, and tuple as classes, the same as list,
|
||
etcetera, in the library manual built-in functions list.
|
||
|
||
- bpo-32989: Add tests for editor newline_and_indent_event method. Remove
|
||
dead code from pyparse find_good_parse_start method.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-39372: Clean header files of interfaces defined but with no
|
||
implementation. The public API symbols being removed are:
|
||
``_PyBytes_InsertThousandsGroupingLocale``,
|
||
``_PyBytes_InsertThousandsGrouping``, ``_Py_InitializeFromArgs``,
|
||
``_Py_InitializeFromWideArgs``, ``_PyFloat_Repr``, ``_PyFloat_Digits``,
|
||
``_PyFloat_DigitsInit``, ``PyFrame_ExtendStack``,
|
||
``_PyAIterWrapper_Type``, ``PyNullImporter_Type``, ``PyCmpWrapper_Type``,
|
||
``PySortWrapper_Type``, ``PyNoArgsFunction``.
|
||
|
||
- bpo-39164: Add a private ``_PyErr_GetExcInfo()`` function to retrieve
|
||
exception information of the specified Python thread state.
|
||
|
||
|
||
What's New in Python 3.9.0 alpha 2?
|
||
===================================
|
||
|
||
*Release date: 2019-12-18*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-38945: Newline characters have been escaped when performing uu
|
||
encoding to prevent them from overflowing into to content section of the
|
||
encoded file. This prevents malicious or accidental modification of data
|
||
during the decoding process.
|
||
|
||
- bpo-37228: Due to significant security concerns, the *reuse_address*
|
||
parameter of :meth:`asyncio.loop.create_datagram_endpoint` is no longer
|
||
supported. This is because of the behavior of ``SO_REUSEADDR`` in UDP. For
|
||
more details, see the documentation for
|
||
``loop.create_datagram_endpoint()``. (Contributed by Kyle Stanley, Antoine
|
||
Pitrou, and Yury Selivanov in :issue:`37228`.)
|
||
|
||
- bpo-38804: Fixes a ReDoS vulnerability in :mod:`http.cookiejar`. Patch by
|
||
Ben Caller.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-39028: Slightly improve the speed of keyword argument parsing with
|
||
many kwargs by strengthening the assumption that kwargs are interned
|
||
strings.
|
||
|
||
- bpo-39080: Fix the value of *end_col_offset* for Starred Expression AST
|
||
nodes when they are among the elements in the *args* attribute of Call AST
|
||
nodes.
|
||
|
||
- bpo-39031: When parsing an "elif" node, lineno and col_offset of the node
|
||
now point to the "elif" keyword and not to its condition, making it
|
||
consistent with the "if" node. Patch by Lysandros Nikolaou.
|
||
|
||
- bpo-20443: In Python 3.9.0a1, sys.argv[0] was made an absolute path if a
|
||
filename was specified on the command line. Revert this change, since most
|
||
users expect sys.argv to be unmodified.
|
||
|
||
- bpo-39008: :c:func:`PySys_Audit` now requires ``Py_ssize_t`` to be used
|
||
for size arguments in the format string, regardless of whether
|
||
``PY_SSIZE_T_CLEAN`` was defined at include time.
|
||
|
||
- bpo-38673: In REPL mode, don't switch to PS2 if the line starts with
|
||
comment or whitespace. Based on work by Batuhan Taşkaya.
|
||
|
||
- bpo-38922: Calling ``replace`` on a code object now raises the
|
||
``code.__new__`` audit event.
|
||
|
||
- bpo-38920: Add audit hooks for when :func:`sys.excepthook` and
|
||
:func:`sys.unraisablehook` are invoked.
|
||
|
||
- bpo-38892: Improve documentation for audit events table and functions.
|
||
|
||
- bpo-38852: Set the thread stack size to 8 Mb for debug builds on android
|
||
platforms.
|
||
|
||
- bpo-38858: Each Python subinterpreter now has its own "small integer
|
||
singletons": numbers in [-5; 257] range. It is no longer possible to
|
||
change the number of small integers at build time by overriding
|
||
``NSMALLNEGINTS`` and ``NSMALLPOSINTS`` macros: macros should now be
|
||
modified manually in ``pycore_pystate.h`` header file.
|
||
|
||
- bpo-36854: The garbage collector state becomes per interpreter
|
||
(``PyInterpreterState.gc``), rather than being global
|
||
(``_PyRuntimeState.gc``).
|
||
|
||
- bpo-38835: The ``PyFPE_START_PROTECT()`` and ``PyFPE_END_PROTECT()``
|
||
macros are empty: they have been doing nothing for the last year, so stop
|
||
using them.
|
||
|
||
- bpo-38328: Sped up the creation time of constant :class:`list` and
|
||
:class:`set` displays. Patch by Brandt Bucher.
|
||
|
||
- bpo-38707: ``MainThread.native_id`` is now correctly reset in child
|
||
processes spawned using :class:`multiprocessing.Process`, instead of
|
||
retaining the parent's value.
|
||
|
||
- bpo-38629: Added ``__floor__`` and ``__ceil__`` methods to float object.
|
||
Patch by Batuhan Taşkaya.
|
||
|
||
- bpo-27145: int + int and int - int operators can now return small integer
|
||
singletons. Patch by hongweipeng.
|
||
|
||
- bpo-38021: Provide a platform tag for AIX that is sufficient for PEP425
|
||
binary distribution identification. Patch by Michael Felt.
|
||
|
||
- bpo-35409: Ignore GeneratorExit exceptions when throwing an exception into
|
||
the aclose coroutine of an asynchronous generator.
|
||
|
||
- bpo-33387: Removed WITH_CLEANUP_START, WITH_CLEANUP_FINISH, BEGIN_FINALLY,
|
||
END_FINALLY, CALL_FINALLY and POP_FINALLY bytecodes. Replaced with RERAISE
|
||
and WITH_EXCEPT_START bytecodes. The compiler now generates different code
|
||
for exceptional and non-exceptional branches for 'with' and 'try-except'
|
||
statements. For 'try-finally' statements the 'finally' block is replicated
|
||
for each exit from the 'try' body.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-39033: Fix :exc:`NameError` in :mod:`zipimport`. Patch by Karthikeyan
|
||
Singaravelan.
|
||
|
||
- bpo-39022: Update importlib.metadata to include improvements from
|
||
importlib_metadata 1.3 including better serialization of EntryPoints and
|
||
improved documentation for custom finders.
|
||
|
||
- bpo-39006: Fix asyncio when the ssl module is missing: only check for
|
||
ssl.SSLSocket instance if the ssl module is available.
|
||
|
||
- bpo-38708: Fix a potential IndexError in email parser when parsing an
|
||
empty msg-id.
|
||
|
||
- bpo-38698: Add a new ``InvalidMessageID`` token to email parser to
|
||
represent invalid Message-ID headers. Also, add defects when there is
|
||
remaining value after parsing the header.
|
||
|
||
- bpo-38994: Implement ``__class_getitem__`` for ``os.PathLike``,
|
||
``pathlib.Path``.
|
||
|
||
- bpo-38979: Return class from ``ContextVar.__class_getitem__`` to simplify
|
||
subclassing.
|
||
|
||
- bpo-38978: Implement ``__class_getitem__`` on asyncio objects (Future,
|
||
Task, Queue). Patch by Batuhan Taskaya.
|
||
|
||
- bpo-38916: :class:`array.array`: Remove ``tostring()`` and
|
||
``fromstring()`` methods. They were aliases to ``tobytes()`` and
|
||
``frombytes()``, deprecated since Python 3.2.
|
||
|
||
- bpo-38986: Make repr of C accelerated TaskWakeupMethWrapper the same as of
|
||
pure Python version.
|
||
|
||
- bpo-38982: Fix asyncio ``PidfdChildWatcher``: handle ``waitpid()`` error.
|
||
If ``waitpid()`` is called elsewhere, ``waitpid()`` call fails with
|
||
:exc:`ChildProcessError`: use return code 255 in this case, and log a
|
||
warning. It ensures that the pidfd file descriptor is closed if this error
|
||
occurs.
|
||
|
||
- bpo-38529: Drop too noisy asyncio warning about deletion of a stream
|
||
without explicit ``.close()`` call.
|
||
|
||
- bpo-27413: Added ability to pass through ``ensure_ascii`` options to
|
||
json.dumps in the ``json.tool`` command-line interface.
|
||
|
||
- bpo-38634: The :mod:`readline` module now detects if Python is linked to
|
||
libedit at runtime on all platforms. Previously, the check was only done
|
||
on macOS.
|
||
|
||
- bpo-33684: Fix ``json.tool`` failed to read a JSON file with non-ASCII
|
||
characters when locale encoding is not UTF-8.
|
||
|
||
- bpo-38698: Prevent UnboundLocalError to pop up in parse_message_id.
|
||
|
||
parse_message_id() was improperly using a token defined inside an
|
||
exception handler, which was raising `UnboundLocalError` on parsing an
|
||
invalid value. Patch by Claudiu Popa.
|
||
|
||
- bpo-38927: Use ``python -m pip`` instead of ``pip`` to upgrade
|
||
dependencies in venv.
|
||
|
||
- bpo-26730: Fix ``SpooledTemporaryFile.rollover()`` might corrupt the file
|
||
when it is in text mode. Patch by Serhiy Storchaka.
|
||
|
||
- bpo-38881: random.choices() now raises a ValueError when all the weights
|
||
are zero.
|
||
|
||
- bpo-38876: Raise pickle.UnpicklingError when loading an item from memo for
|
||
invalid input.
|
||
|
||
The previous code was raising a `KeyError` for both the Python and C
|
||
implementation. This was caused by the specified index of an invalid input
|
||
which did not exist in the memo structure, where the pickle stores what
|
||
objects it has seen. The malformed input would have caused either a
|
||
`BINGET` or `LONG_BINGET` load from the memo, leading to a `KeyError` as
|
||
the determined index was bogus. Patch by Claudiu Popa
|
||
|
||
- bpo-38688: Calling func:`shutil.copytree` to copy a directory tree from
|
||
one directory to another subdirectory resulted in an endless loop and a
|
||
RecursionError. A fix was added to consume an iterator and create the list
|
||
of the entries to be copied, avoiding the recursion for newly created
|
||
directories. Patch by Bruno P. Kinoshita.
|
||
|
||
- bpo-38863: Improve :func:`is_cgi` function in :mod:`http.server`, which
|
||
enables processing the case that cgi directory is a child of another
|
||
directory other than root.
|
||
|
||
- bpo-37838: :meth:`typing.get_type_hints` properly handles functions
|
||
decorated with :meth:`functools.wraps`.
|
||
|
||
- bpo-38870: Expose :func:`ast.unparse` as a function of the :mod:`ast`
|
||
module that can be used to unparse an :class:`ast.AST` object and produce
|
||
a string with code that would produce an equivalent :class:`ast.AST`
|
||
object when parsed. Patch by Pablo Galindo and Batuhan Taskaya.
|
||
|
||
- bpo-38859: AsyncMock now returns StopAsyncIteration on the exhaustion of a
|
||
side_effects iterable. Since PEP-479 its Impossible to raise a
|
||
StopIteration exception from a coroutine.
|
||
|
||
- bpo-38857: AsyncMock fix for return values that are awaitable types. This
|
||
also covers side_effect iterable values that happened to be awaitable, and
|
||
wraps callables that return an awaitable type. Before these awaitables
|
||
were being awaited instead of being returned as is.
|
||
|
||
- bpo-38834: :class:`typing.TypedDict` subclasses now track which keys are
|
||
optional using the ``__required_keys__`` and ``__optional_keys__``
|
||
attributes, to enable runtime validation by downstream projects. Patch by
|
||
Zac Hatfield-Dodds.
|
||
|
||
- bpo-38821: Fix unhandled exceptions in :mod:`argparse` when
|
||
internationalizing error messages for arguments with ``nargs`` set to
|
||
special (non-integer) values. Patch by Federico Bond.
|
||
|
||
- bpo-38820: Make Python compatible with OpenSSL 3.0.0.
|
||
:func:`ssl.SSLSocket.getpeercert` no longer returns IPv6 addresses with a
|
||
trailing new line.
|
||
|
||
- bpo-38811: Fix an unhandled exception in :mod:`pathlib` when
|
||
:meth:`os.link` is missing. Patch by Toke Høiland-Jørgensen.
|
||
|
||
- bpo-38686: Added support for multiple ``qop`` values in
|
||
:class:`urllib.request.AbstractDigestAuthHandler`.
|
||
|
||
- bpo-38712: Add the Linux-specific :func:`signal.pidfd_send_signal`
|
||
function, which allows sending a signal to a process identified by a file
|
||
descriptor rather than a pid.
|
||
|
||
- bpo-38348: Add ``-i`` and ``--indent`` (indentation level), and
|
||
``--no-type-comments`` (type comments) command line options to ast parsing
|
||
tool.
|
||
|
||
- bpo-37523: Change :class:`zipfile.ZipExtFile` to raise ``ValueError`` when
|
||
trying to access the underlying file object after it has been closed. This
|
||
new behavior is consistent with how accessing closed files is handled in
|
||
other parts of Python.
|
||
|
||
- bpo-38045: Improve the performance of :func:`enum._decompose` in
|
||
:mod:`enum`. Patch by hongweipeng.
|
||
|
||
- bpo-36820: Break cycle generated when saving an exception in socket.py,
|
||
codeop.py and dyld.py as they keep alive not only the exception but user
|
||
objects through the ``__traceback__`` attribute. Patch by Mario Corchero.
|
||
|
||
- bpo-36406: Handle namespace packages in :mod:`doctest`. Patch by
|
||
Karthikeyan Singaravelan.
|
||
|
||
- bpo-34776: Fix dataclasses to support forward references in type
|
||
annotations
|
||
|
||
- bpo-20928: ElementTree supports recursive XInclude processing. Patch by
|
||
Stefan Behnel.
|
||
|
||
- bpo-29636: Add whitespace options for formatting JSON with the
|
||
``json.tool`` CLI. The following mutually exclusive options are now
|
||
supported: ``--indent`` for setting the indent level in spaces; ``--tab``
|
||
for indenting with tabs; ``--no-indent`` for suppressing newlines; and
|
||
``--compact`` for suppressing all whitespace. The default behavior remains
|
||
the same as ``--indent=4``.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-38928: Correct when venv's ``upgrade_dependencies()`` and
|
||
``--upgrade-deps`` are added.
|
||
|
||
- bpo-38899: Update documentation to state that to activate virtual
|
||
environments under fish one should use `source`, not `.` as documented at
|
||
https://fishshell.com/docs/current/commands.html#source.
|
||
|
||
- bpo-22377: Improves documentation of the values that
|
||
:meth:`datetime.datetime.strptime` accepts for ``%Z``. Patch by Karl
|
||
Dubost.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-38546: Fix test_ressources_gced_in_workers() of
|
||
test_concurrent_futures: explicitly stop the manager to prevent leaking a
|
||
child process running in the background after the test completes.
|
||
|
||
- bpo-38546: Multiprocessing and concurrent.futures tests now stop the
|
||
resource tracker process when tests complete.
|
||
|
||
- bpo-38614: Replace hardcoded timeout constants in tests with new
|
||
:mod:`test.support` constants: :data:`~test.support.LOOPBACK_TIMEOUT`,
|
||
:data:`~test.support.INTERNET_TIMEOUT`,
|
||
:data:`~test.support.SHORT_TIMEOUT` and
|
||
:data:`~test.support.LONG_TIMEOUT`. It becomes easier to adjust these four
|
||
timeout constants for all tests at once, rather than having to adjust
|
||
every single test file.
|
||
|
||
- bpo-38547: Fix test_pty: if the process is the session leader, closing the
|
||
master file descriptor raises a SIGHUP signal: simply ignore SIGHUP when
|
||
running the tests.
|
||
|
||
- bpo-38992: Fix a test for :func:`math.fsum` that was failing due to
|
||
constant folding.
|
||
|
||
- bpo-38991: :mod:`test.support`:
|
||
:func:`~test.support.run_python_until_end`,
|
||
:func:`~test.support.assert_python_ok` and
|
||
:func:`~test.support.assert_python_failure` functions no longer strip
|
||
whitespaces from stderr. Remove ``test.support.strip_python_stderr()``
|
||
function.
|
||
|
||
- bpo-38965: Fix test_faulthandler on GCC 10. Use the "volatile" keyword in
|
||
``faulthandler._stack_overflow()`` to prevent tail call optimization on
|
||
any compiler, rather than relying on compiler specific pragma.
|
||
|
||
- bpo-38875: test_capi: trashcan tests now require the test "cpu" resource.
|
||
|
||
- bpo-38841: Skip asyncio test_create_datagram_endpoint_existing_sock_unix
|
||
on platforms lacking a functional bind() for named unix domain sockets.
|
||
|
||
- bpo-38692: Skip the test_posix.test_pidfd_open() test if
|
||
``os.pidfd_open()`` fails with a :exc:`PermissionError`. This situation
|
||
can happen in a Linux sandbox using a syscall whitelist which doesn't
|
||
allow the ``pidfd_open()`` syscall yet.
|
||
|
||
- bpo-38839: Fix some unused functions in tests. Patch by Adam Johnson.
|
||
|
||
- bpo-38669: Raise :exc:`TypeError` when passing target as a string with
|
||
:meth:`unittest.mock.patch.object`.
|
||
|
||
- bpo-37957: test.regrtest now can receive a list of test patterns to ignore
|
||
(using the -i/--ignore argument) or a file with a list of patterns to
|
||
ignore (using the --ignore-file argument). Patch by Pablo Galindo.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-37404: :mod:`asyncio` now raises :exc:`TyperError` when calling
|
||
incompatible methods with an :class:`ssl.SSLSocket` socket. Patch by Ido
|
||
Michael.
|
||
|
||
- bpo-36500: Added an optional "regen" project to the Visual Studio solution
|
||
that will regenerate all grammar, tokens, and opcodes.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-39007: Add auditing events to functions in :mod:`winreg`.
|
||
|
||
- bpo-33125: Add support for building and releasing Windows ARM64 packages.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-37931: Fixed a crash on OSX dynamic builds that occurred when
|
||
re-initializing the posix module after a Py_Finalize if the environment
|
||
had changed since the previous `import posix`. Patch by Benoît Hudson.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-38944: Escape key now closes IDLE completion windows. Patch by Johnny
|
||
Najera.
|
||
|
||
- bpo-38943: Fix IDLE autocomplete windows not always appearing on some
|
||
systems. Patch by Johnny Najera.
|
||
|
||
- bpo-38862: 'Strip Trailing Whitespace' on the Format menu removes extra
|
||
newlines at the end of non-shell files.
|
||
|
||
- bpo-38636: Fix IDLE Format menu tab toggle and file indent width. These
|
||
functions (default shortcuts Alt-T and Alt-U) were mistakenly disabled in
|
||
3.7.5 and 3.8.0.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-38896: Remove ``PyUnicode_ClearFreeList()`` function: the Unicode free
|
||
list has been removed in Python 3.3.
|
||
|
||
- bpo-37340: Remove ``PyMethod_ClearFreeList()`` and
|
||
``PyCFunction_ClearFreeList()`` functions: the free lists of bound method
|
||
objects have been removed.
|
||
|
||
- bpo-38835: Exclude ``PyFPE_START_PROTECT()`` and ``PyFPE_END_PROTECT()``
|
||
macros of ``pyfpe.h`` from ``Py_LIMITED_API`` (stable API).
|
||
|
||
|
||
What's New in Python 3.9.0 alpha 1?
|
||
===================================
|
||
|
||
*Release date: 2019-11-19*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-38722: :mod:`runpy` now uses :meth:`io.open_code` to open code files.
|
||
Patch by Jason Killen.
|
||
|
||
- bpo-38622: Add additional audit events for the :mod:`ctypes` module.
|
||
|
||
- bpo-38418: Fixes audit event for :func:`os.system` to be named
|
||
``os.system``.
|
||
|
||
- bpo-38243: Escape the server title of
|
||
:class:`xmlrpc.server.DocXMLRPCServer` when rendering the document page as
|
||
HTML. (Contributed by Dong-hee Na in :issue:`38243`.)
|
||
|
||
- bpo-38174: Update vendorized expat library version to 2.2.8, which
|
||
resolves CVE-2019-15903.
|
||
|
||
- bpo-37764: Fixes email._header_value_parser.get_unstructured going into an
|
||
infinite loop for a specific case in which the email header does not have
|
||
trailing whitespace, and the case in which it contains an invalid encoded
|
||
word. Patch by Ashwin Ramaswami.
|
||
|
||
- bpo-37461: Fix an infinite loop when parsing specially crafted email
|
||
headers. Patch by Abhilash Raj.
|
||
|
||
- bpo-37363: Adds audit events for the range of supported run commands (see
|
||
:ref:`using-on-general`).
|
||
|
||
- bpo-37463: ssl.match_hostname() no longer accepts IPv4 addresses with
|
||
additional text after the address and only quad-dotted notation without
|
||
trailing whitespaces. Some inet_aton() implementations ignore whitespace
|
||
and all data after whitespace, e.g. '127.0.0.1 whatever'.
|
||
|
||
- bpo-37363: Adds audit events for :mod:`ensurepip`, :mod:`ftplib`,
|
||
:mod:`glob`, :mod:`imaplib`, :mod:`nntplib`, :mod:`pdb`, :mod:`poplib`,
|
||
:mod:`shutil`, :mod:`smtplib`, :mod:`sqlite3`, :mod:`subprocess`,
|
||
:mod:`telnetlib`, :mod:`tempfile` and :mod:`webbrowser`, as well as
|
||
:func:`os.listdir`, :func:`os.scandir` and :func:`breakpoint`.
|
||
|
||
- bpo-37364: :func:`io.open_code` is now used when reading :file:`.pth`
|
||
files.
|
||
|
||
- bpo-34631: Updated OpenSSL to 1.1.1c in Windows installer
|
||
|
||
- bpo-34155: Fix parsing of invalid email addresses with more than one ``@``
|
||
(e.g. a@b@c.com.) to not return the part before 2nd ``@`` as valid email
|
||
address. Patch by maxking & jpic.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-38631: Replace ``Py_FatalError()`` call with a regular
|
||
:exc:`RuntimeError` exception in :meth:`float.__getformat__`.
|
||
|
||
- bpo-38639: Optimized :func:`math.floor()`, :func:`math.ceil()` and
|
||
:func:`math.trunc()` for floats.
|
||
|
||
- bpo-38640: Fixed a bug in the compiler that was causing to raise in the
|
||
presence of break statements and continue statements inside always false
|
||
while loops. Patch by Pablo Galindo.
|
||
|
||
- bpo-38613: Optimized some set operations (e.g. ``|``, ``^``, and ``-``) of
|
||
``dict_keys``. ``d.keys() | other`` was slower than ``set(d) | other`` but
|
||
they are almost same performance for now.
|
||
|
||
- bpo-28029: ``"".replace("", s, n)`` now returns ``s`` instead of an empty
|
||
string for all non-zero ``n``. There are similar changes for
|
||
:class:`bytes` and :class:`bytearray` objects.
|
||
|
||
- bpo-38535: Fixed line numbers and column offsets for AST nodes for calls
|
||
without arguments in decorators.
|
||
|
||
- bpo-38525: Fix a segmentation fault when using reverse iterators of empty
|
||
``dict`` objects. Patch by Dong-hee Na and Inada Naoki.
|
||
|
||
- bpo-38465: :class:`bytearray`, :class:`~array.array` and
|
||
:class:`~mmap.mmap` objects allow now to export more than ``2**31``
|
||
buffers at a time.
|
||
|
||
- bpo-38469: Fixed a bug where the scope of named expressions was not being
|
||
resolved correctly in the presence of the *global* keyword. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-38437: Activate the ``GC_DEBUG`` macro for debug builds of the
|
||
interpreter (when ``Py_DEBUG`` is set). Patch by Pablo Galindo.
|
||
|
||
- bpo-38379: When the garbage collector makes a collection in which some
|
||
objects resurrect (they are reachable from outside the isolated cycles
|
||
after the finalizers have been executed), do not block the collection of
|
||
all objects that are still unreachable. Patch by Pablo Galindo and Tim
|
||
Peters.
|
||
|
||
- bpo-38379: When cyclic garbage collection (gc) runs finalizers that
|
||
resurrect unreachable objects, the current gc run ends, without collecting
|
||
any cyclic trash. However, the statistics reported by ``collect()`` and
|
||
``get_stats()`` claimed that all cyclic trash found was collected, and
|
||
that the resurrected objects were collected. Changed the stats to report
|
||
that none were collected.
|
||
|
||
- bpo-38392: In debug mode, :c:func:`PyObject_GC_Track` now calls
|
||
``tp_traverse()`` of the object type to ensure that the object is valid:
|
||
test that objects visited by ``tp_traverse()`` are valid.
|
||
|
||
- bpo-38210: Remove unnecessary intersection and update set operation in
|
||
dictview with empty set. (Contributed by Dong-hee Na in :issue:`38210`.)
|
||
|
||
- bpo-38402: Check the error from the system's underlying ``crypt`` or
|
||
``crypt_r``.
|
||
|
||
- bpo-37474: On FreeBSD, Python no longer calls ``fedisableexcept()`` at
|
||
startup to control the floating point control mode. The call became
|
||
useless since FreeBSD 6: it became the default mode.
|
||
|
||
- bpo-38006: Fix a bug due to the interaction of weakrefs and the cyclic
|
||
garbage collector. We must clear any weakrefs in garbage in order to
|
||
prevent their callbacks from executing and causing a crash.
|
||
|
||
- bpo-38317: Fix warnings options priority: ``PyConfig.warnoptions`` has the
|
||
highest priority, as stated in the :pep:`587`.
|
||
|
||
- bpo-38310: Predict ``BUILD_MAP_UNPACK_WITH_CALL`` -> ``CALL_FUNCTION_EX``
|
||
opcode pairs in the main interpreter loop. Patch by Brandt Bucher.
|
||
|
||
- bpo-36871: Improve error handling for the assert_has_calls and
|
||
assert_has_awaits methods of mocks. Fixed a bug where any errors
|
||
encountered while binding the expected calls to the mock's spec were
|
||
silently swallowed, leading to misleading error output.
|
||
|
||
- bpo-11410: Better control over symbol visibility is provided through use
|
||
of the visibility attributes available in gcc >= 4.0, provided in a
|
||
uniform way across POSIX and Windows. The POSIX build files have been
|
||
updated to compile with -fvisibility=hidden, minimising exported symbols.
|
||
|
||
- bpo-38219: Optimized the :class:`dict` constructor and the
|
||
:meth:`~dict.update` method for the case when the argument is a dict.
|
||
|
||
- bpo-38236: Python now dumps path configuration if it fails to import the
|
||
Python codecs of the filesystem and stdio encodings.
|
||
|
||
- bpo-38013: Allow to call ``async_generator_athrow().throw(...)`` even for
|
||
non-started async generator helper. It fixes annoying warning at the end
|
||
of :func:`asyncio.run` call.
|
||
|
||
- bpo-38124: Fix an off-by-one error in PyState_AddModule that could cause
|
||
out-of-bounds memory access.
|
||
|
||
- bpo-38116: The select module is now PEP-384 compliant and no longer has
|
||
static state
|
||
|
||
- bpo-38113: ast module updated to PEP-384 and all statics removed
|
||
|
||
- bpo-38076: The struct module is now PEP-384 compatible
|
||
|
||
- bpo-38075: The random module is now PEP-384 compatible
|
||
|
||
- bpo-38074: zlib module made PEP-384 compatible
|
||
|
||
- bpo-38073: Make pwd extension module PEP-384 compatible
|
||
|
||
- bpo-38072: grp module made PEP-384 compatible
|
||
|
||
- bpo-38069: Make _posixsubprocess PEP-384 compatible
|
||
|
||
- bpo-38071: Make termios extension module PEP-384 compatible
|
||
|
||
- bpo-38005: Fixed comparing and creating of InterpreterID and ChannelID.
|
||
|
||
- bpo-36946: Fix possible signed integer overflow when handling slices.
|
||
Patch by hongweipeng.
|
||
|
||
- bpo-37994: Fixed silencing arbitrary errors if an attribute lookup fails
|
||
in several sites. Only AttributeError should be silenced.
|
||
|
||
- bpo-8425: Optimize set difference_update for the case when the other set
|
||
is much larger than the base set. (Suggested by Evgeny Kapun with code
|
||
contributed by Michele Orrù).
|
||
|
||
- bpo-37966: The implementation of :func:`~unicodedata.is_normalized` has
|
||
been greatly sped up on strings that aren't normalized, by implementing
|
||
the full normalization-quick-check algorithm from the Unicode standard.
|
||
|
||
- bpo-37947: Adjust correctly the recursion level in the symtable generation
|
||
for named expressions. Patch by Pablo Galindo.
|
||
|
||
- bpo-37812: The ``CHECK_SMALL_INT`` macro used inside
|
||
:file:`Object/longobject.c` has been replaced with an explicit ``return``
|
||
at each call site.
|
||
|
||
- bpo-37751: Fix :func:`codecs.lookup` to normalize the encoding name the
|
||
same way than :func:`encodings.normalize_encoding`, except that
|
||
:func:`codecs.lookup` also converts the name to lower case.
|
||
|
||
- bpo-37830: Fixed compilation of :keyword:`break` and :keyword:`continue`
|
||
in the :keyword:`finally` block when the corresponding :keyword:`try`
|
||
block contains :keyword:`return` with a non-constant value.
|
||
|
||
- bpo-20490: Improve import error message for partially initialized module
|
||
on circular ``from`` imports - by Anthony Sottile.
|
||
|
||
- bpo-37840: Fix handling of negative indices in
|
||
:c:member:`~PySequenceMethods.sq_item` of :class:`bytearray`. Patch by
|
||
Sergey Fedoseev.
|
||
|
||
- bpo-37802: Slightly improve performance of
|
||
:c:func:`PyLong_FromUnsignedLong`, :c:func:`PyLong_FromUnsignedLongLong`
|
||
and :c:func:`PyLong_FromSize_t`. Patch by Sergey Fedoseev.
|
||
|
||
- bpo-37409: Ensure explicit relative imports from interactive sessions and
|
||
scripts (having no parent package) always raise ImportError, rather than
|
||
treating the current module as the package. Patch by Ben Lewis.
|
||
|
||
- bpo-32912: Reverted :issue:`32912`: emitting :exc:`SyntaxWarning` instead
|
||
of :exc:`DeprecationWarning` for invalid escape sequences in string and
|
||
bytes literals.
|
||
|
||
- bpo-37757: :pep:`572`: As described in the PEP, assignment expressions now
|
||
raise :exc:`SyntaxError` when their interaction with comprehension scoping
|
||
results in an ambiguous target scope.
|
||
|
||
The ``TargetScopeError`` subclass originally proposed by the PEP has been
|
||
removed in favour of just raising regular syntax errors for the disallowed
|
||
cases.
|
||
|
||
- bpo-36279: Fix potential use of uninitialized memory in :func:`os.wait3`.
|
||
|
||
- bpo-36311: Decoding bytes objects larger than 2GiB is faster and no longer
|
||
fails when a multibyte characters spans a chunk boundary.
|
||
|
||
- bpo-34880: The :keyword:`assert` statement now works properly if the
|
||
:exc:`AssertionError` exception is being shadowed. Patch by Zackery Spytz.
|
||
|
||
- bpo-37340: Removed object cache (``free_list``) for bound method objects.
|
||
Temporary bound method objects are less used than before thanks to the
|
||
``LOAD_METHOD`` opcode and the ``_PyObject_VectorcallMethod`` C API.
|
||
|
||
- bpo-37648: Fixed minor inconsistency in :meth:`list.__contains__`,
|
||
:meth:`tuple.__contains__` and a few other places. The collection's item
|
||
is now always at the left and the needle is on the right of ``==``.
|
||
|
||
- bpo-37444: Update differing exception between :meth:`builtins.__import__`
|
||
and :meth:`importlib.__import__`.
|
||
|
||
- bpo-37619: When adding a wrapper descriptor from one class to a different
|
||
class (for example, setting ``__add__ = str.__add__`` on an ``int``
|
||
subclass), an exception is correctly raised when the operator is called.
|
||
|
||
- bpo-37593: Swap the positions of the *posonlyargs* and *args* parameters
|
||
in the constructor of :class:`ast.parameters` nodes.
|
||
|
||
- bpo-37543: Optimized pymalloc for non PGO build.
|
||
|
||
- bpo-37537: Compute allocated pymalloc blocks inside
|
||
_Py_GetAllocatedBlocks(). This slows down _Py_GetAllocatedBlocks() but
|
||
gives a small speedup to _PyObject_Malloc() and _PyObject_Free().
|
||
|
||
- bpo-37467: Fix :func:`sys.excepthook` and :c:func:`PyErr_Display` if a
|
||
filename is a bytes string. For example, for a SyntaxError exception where
|
||
the filename attribute is a bytes string.
|
||
|
||
- bpo-37433: Fix ``SyntaxError`` indicator printing too many spaces for
|
||
multi-line strings - by Anthony Sottile.
|
||
|
||
- bpo-37417: :meth:`bytearray.extend` now correctly handles errors that
|
||
arise during iteration. Patch by Brandt Bucher.
|
||
|
||
- bpo-37414: The undocumented ``sys.callstats()`` function has been removed.
|
||
Since Python 3.7, it was deprecated and always returned ``None``. It
|
||
required a special build option ``CALL_PROFILE`` which was already removed
|
||
in Python 3.7.
|
||
|
||
- bpo-37392: Remove ``sys.getcheckinterval()`` and
|
||
``sys.setcheckinterval()`` functions. They were deprecated since Python
|
||
3.2. Use :func:`sys.getswitchinterval` and :func:`sys.setswitchinterval`
|
||
instead. Remove also ``check_interval`` field of the
|
||
``PyInterpreterState`` structure.
|
||
|
||
- bpo-37388: In development mode and in debug build, *encoding* and *errors*
|
||
arguments are now checked on string encoding and decoding operations.
|
||
Examples: :func:`open`, :meth:`str.encode` and :meth:`bytes.decode`.
|
||
|
||
By default, for best performances, the *errors* argument is only checked
|
||
at the first encoding/decoding error, and the *encoding* argument is
|
||
sometimes ignored for empty strings.
|
||
|
||
- bpo-37348: Optimized decoding short ASCII string with UTF-8 and ascii
|
||
codecs. ``b"foo".decode()`` is about 15% faster. Patch by Inada Naoki.
|
||
|
||
- bpo-24214: Improved support of the surrogatepass error handler in the
|
||
UTF-8 and UTF-16 incremental decoders.
|
||
|
||
- bpo-37330: :func:`open`, :func:`io.open`, :func:`codecs.open` and
|
||
:class:`fileinput.FileInput` no longer accept ``'U'`` ("universal
|
||
newline") in the file mode. This flag was deprecated since Python 3.3.
|
||
|
||
- bpo-35224: Reverse evaluation order of key: value in dict comprehensions
|
||
as proposed in PEP 572. I.e. in ``{k: v for ...}``, ``k`` will be
|
||
evaluated before ``v``.
|
||
|
||
- bpo-37316: Fix the :c:func:`PySys_Audit` call in :class:`mmap.mmap`.
|
||
|
||
- bpo-37300: Remove an unnecessary Py_XINCREF in classobject.c.
|
||
|
||
- bpo-37269: Fix a bug in the peephole optimizer that was not treating
|
||
correctly constant conditions with binary operators. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-20443: Python now gets the absolute path of the script filename
|
||
specified on the command line (ex: "python3 script.py"): the __file__
|
||
attribute of the __main__ module and sys.path[0] become an absolute path,
|
||
rather than a relative path.
|
||
|
||
- bpo-37257: Python's small object allocator (``obmalloc.c``) now allows (no
|
||
more than) one empty arena to remain available for immediate reuse,
|
||
without returning it to the OS. This prevents thrashing in simple loops
|
||
where an arena could be created and destroyed anew on each iteration.
|
||
|
||
- bpo-37231: The dispatching of type slots to special methods (for example
|
||
calling ``__mul__`` when doing ``x * y``) has been made faster.
|
||
|
||
- bpo-36974: Implemented separate vectorcall functions for every calling
|
||
convention of builtin functions and methods. This improves performance for
|
||
calls.
|
||
|
||
- bpo-37213: Handle correctly negative line offsets in the peephole
|
||
optimizer. Patch by Pablo Galindo.
|
||
|
||
- bpo-37219: Remove erroneous optimization for empty set differences.
|
||
|
||
- bpo-15913: Implement :c:func:`PyBuffer_SizeFromFormat()` function
|
||
(previously documented but not implemented): call :func:`struct.calcsize`.
|
||
Patch by Joannah Nanjekye.
|
||
|
||
- bpo-36922: Slot functions optimize any callable with
|
||
``Py_TPFLAGS_METHOD_DESCRIPTOR`` instead of only instances of
|
||
``function``.
|
||
|
||
- bpo-36974: The slot ``tp_vectorcall_offset`` is inherited unconditionally
|
||
to support ``super().__call__()`` when the base class uses vectorcall.
|
||
|
||
- bpo-37160: :func:`threading.get_native_id` now also supports NetBSD.
|
||
|
||
- bpo-37077: Add :func:`threading.get_native_id` support for AIX. Patch by
|
||
M. Felt
|
||
|
||
- bpo-36781: :func:`sum` has been optimized for boolean values.
|
||
|
||
- bpo-34556: Add ``--upgrade-deps`` to venv module. Patch by Cooper Ry Lees
|
||
|
||
- bpo-20523: ``pdb.Pdb`` supports ~/.pdbrc in Windows 7. Patch by Tim Hopper
|
||
and Dan Lidral-Porter.
|
||
|
||
- bpo-35551: Updated encodings: - Removed the "tis260" encoding, which was
|
||
an alias for the nonexistent "tactis" codec. - Added "mac_centeuro" as an
|
||
alias for the mac_latin2 encoding.
|
||
|
||
- bpo-19072: The :class:`classmethod` decorator can now wrap other
|
||
descriptors such as property objects. Adapted from a patch written by
|
||
Graham Dumpleton.
|
||
|
||
- bpo-27575: Improve speed of dictview intersection by directly using set
|
||
intersection logic. Patch by David Su.
|
||
|
||
- bpo-30773: Prohibit parallel running of aclose() / asend() / athrow(). Fix
|
||
ag_running to reflect the actual running status of the AG.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-36589: The :func:`curses.update_lines_cols` function now returns
|
||
``None`` instead of ``1`` on success.
|
||
|
||
- bpo-38807: Update :exc:`TypeError` messages for :meth:`os.path.join` to
|
||
include :class:`os.PathLike` objects as acceptable input types.
|
||
|
||
- bpo-38724: Add a repr for ``subprocess.Popen`` objects. Patch by Andrey
|
||
Doroschenko.
|
||
|
||
- bpo-38786: pydoc now recognizes and parses HTTPS URLs. Patch by python273.
|
||
|
||
- bpo-38785: Prevent asyncio from crashing if parent ``__init__`` is not
|
||
called from a constructor of object derived from ``asyncio.Future``.
|
||
|
||
- bpo-38723: :mod:`pdb` now uses :meth:`io.open_code` to trigger auditing
|
||
events.
|
||
|
||
- bpo-27805: Allow opening pipes and other non-seekable files in append mode
|
||
with :func:`open`.
|
||
|
||
- bpo-38438: Simplify the :mod:`argparse` usage message for ``nargs="*"``.
|
||
|
||
- bpo-38761: WeakSet is now registered as a collections.abc.MutableSet.
|
||
|
||
- bpo-38716: logging: change RotatingHandler namer and rotator to
|
||
class-level attributes. This stops __init__ from setting them to None in
|
||
the case where a subclass defines them with eponymous methods.
|
||
|
||
- bpo-38713: Add :data:`os.P_PIDFD` constant, which may be passed to
|
||
:func:`os.waitid` to wait on a Linux process file descriptor.
|
||
|
||
- bpo-38692: Add :class:`asyncio.PidfdChildWatcher`, a Linux-specific child
|
||
watcher implementation that polls process file descriptors.
|
||
|
||
- bpo-38692: Expose the Linux ``pidfd_open`` syscall as
|
||
:func:`os.pidfd_open`.
|
||
|
||
- bpo-38602: Added constants :data:`~fcntl.F_OFD_GETLK`,
|
||
:data:`~fcntl.F_OFD_SETLK` and :data:`~fcntl.F_OFD_SETLKW` to the
|
||
:mod:`fcntl` module. Patch by Dong-hee Na.
|
||
|
||
- bpo-38334: Fixed seeking backward on an encrypted
|
||
:class:`zipfile.ZipExtFile`.
|
||
|
||
- bpo-38312: Add :func:`curses.get_escdelay`, :func:`curses.set_escdelay`,
|
||
:func:`curses.get_tabsize`, and :func:`curses.set_tabsize` functions - by
|
||
Anthony Sottile.
|
||
|
||
- bpo-38586: Now :func:`~logging.config.fileConfig` correctly sets the .name
|
||
of handlers loaded.
|
||
|
||
- bpo-38565: Add new cache_parameters() method for functools.lru_cache() to
|
||
better support pickling.
|
||
|
||
- bpo-34679: asynci.ProactorEventLoop.close() now only calls
|
||
signal.set_wakeup_fd() in the main thread.
|
||
|
||
- bpo-31202: The case the result of :func:`pathlib.WindowsPath.glob` matches
|
||
now the case of the pattern for literal parts.
|
||
|
||
- bpo-36321: Remove misspelled attribute. The 3.8 changelog noted that this
|
||
would be removed in 3.9.
|
||
|
||
- bpo-38521: Fixed erroneous equality comparison in statistics.NormalDist().
|
||
|
||
- bpo-38493: Added :data:`~os.CLD_KILLED` and :data:`~os.CLD_STOPPED` for
|
||
:attr:`si_code`. Patch by Dong-hee Na.
|
||
|
||
- bpo-38478: Fixed a bug in :meth:`inspect.signature.bind` that was causing
|
||
it to fail when handling a keyword argument with same name as
|
||
positional-only parameter. Patch by Pablo Galindo.
|
||
|
||
- bpo-33604: Fixed `hmac.new` and `hmac.HMAC` to raise TypeError instead of
|
||
ValueError when the digestmod parameter, now required in 3.8, is omitted.
|
||
Also clarified the hmac module documentation and docstrings.
|
||
|
||
- bpo-38378: Parameters *out* and *in* of :func:`os.sendfile` was renamed to
|
||
*out_fd* and *in_fd*.
|
||
|
||
- bpo-38417: Added support for setting the umask in the child process to the
|
||
subprocess module on POSIX systems.
|
||
|
||
- bpo-38449: Revert PR 15522, which introduces a regression in
|
||
:meth:`mimetypes.guess_type` due to improper handling of filenames as
|
||
urls.
|
||
|
||
- bpo-38431: Fix ``__repr__`` method for :class:`dataclasses.InitVar` to
|
||
support typing objects, patch by Samuel Colvin.
|
||
|
||
- bpo-38109: Add missing :data:`stat.S_IFDOOR`, :data:`stat.S_IFPORT`,
|
||
:data:`stat.S_IFWHT`, :func:`stat.S_ISDOOR`, :func:`stat.S_ISPORT`, and
|
||
:func:`stat.S_ISWHT` values to the Python implementation of :mod:`stat`.
|
||
|
||
- bpo-38422: Clarify docstrings of pathlib suffix(es)
|
||
|
||
- bpo-38405: Nested subclasses of :class:`typing.NamedTuple` are now
|
||
pickleable.
|
||
|
||
- bpo-38332: Prevent :exc:`KeyError` thrown by :func:`_encoded_words.decode`
|
||
when given an encoded-word with invalid content-type encoding from
|
||
propagating all the way to :func:`email.message.get`.
|
||
|
||
- bpo-38371: Deprecated the ``split()`` method in
|
||
:class:`_tkinter.TkappType` in favour of the ``splitlist()`` method which
|
||
has more consistent and predicable behavior.
|
||
|
||
- bpo-38341: Add :exc:`smtplib.SMTPNotSupportedError` to the :mod:`smtplib`
|
||
exported names.
|
||
|
||
- bpo-38319: sendfile() used in socket and shutil modules was raising
|
||
OverflowError for files >= 2GiB on 32-bit architectures. (patch by
|
||
Giampaolo Rodola)
|
||
|
||
- bpo-38242: Revert the new asyncio Streams API
|
||
|
||
- bpo-13153: OS native encoding is now used for converting between Python
|
||
strings and Tcl objects. This allows to display, copy and paste to
|
||
clipboard emoji and other non-BMP characters. Converting strings from Tcl
|
||
to Python and back now never fails (except MemoryError).
|
||
|
||
- bpo-38019: Correctly handle pause/resume reading of closed asyncio unix
|
||
pipe.
|
||
|
||
- bpo-38163: Child mocks will now detect their type as either synchronous or
|
||
asynchronous, asynchronous child mocks will be AsyncMocks and synchronous
|
||
child mocks will be either MagicMock or Mock (depending on their parent
|
||
type).
|
||
|
||
- bpo-38161: Removes _AwaitEvent from AsyncMock.
|
||
|
||
- bpo-38216: Allow the rare code that wants to send invalid http requests
|
||
from the `http.client` library a way to do so. The fixes for bpo-30458
|
||
led to breakage for some projects that were relying on this ability to
|
||
test their own behavior in the face of bad requests.
|
||
|
||
- bpo-28286: Deprecate opening :class:`~gzip.GzipFile` for writing
|
||
implicitly. Always specify the *mode* argument for writing.
|
||
|
||
- bpo-38108: Any synchronous magic methods on an AsyncMock now return a
|
||
MagicMock. Any asynchronous magic methods on a MagicMock now return an
|
||
AsyncMock.
|
||
|
||
- bpo-38265: Update the *length* parameter of :func:`os.pread` to accept
|
||
:c:type:`Py_ssize_t` instead of :c:expr:`int`.
|
||
|
||
- bpo-38112: :mod:`compileall` has a higher default recursion limit and new
|
||
command-line arguments for path manipulation, symlinks handling, and
|
||
multiple optimization levels.
|
||
|
||
- bpo-38248: asyncio: Fix inconsistent immediate Task cancellation
|
||
|
||
- bpo-38237: The arguments for the builtin pow function are more
|
||
descriptive. They can now also be passed in as keywords.
|
||
|
||
- bpo-34002: Improve efficiency in parts of email package by changing
|
||
while-pop to a for loop, using isdisjoint instead of set intersections.
|
||
|
||
- bpo-38191: Constructors of :class:`~typing.NamedTuple` and
|
||
:class:`~typing.TypedDict` types now accept arbitrary keyword argument
|
||
names, including "cls", "self", "typename", "_typename", "fields" and
|
||
"_fields".
|
||
|
||
- bpo-38155: Add ``__all__`` to :mod:`datetime`. Patch by Tahia Khan.
|
||
|
||
- bpo-38185: Fixed case-insensitive string comparison in
|
||
:class:`sqlite3.Row` indexing.
|
||
|
||
- bpo-38136: Changes AsyncMock call count and await count to be two
|
||
different counters. Now await count only counts when a coroutine has been
|
||
awaited, not when it has been called, and vice-versa. Update the
|
||
documentation around this.
|
||
|
||
- bpo-37828: Fix default mock name in
|
||
:meth:`unittest.mock.Mock.assert_called` exceptions. Patch by Abraham
|
||
Toriz Cruz.
|
||
|
||
- bpo-38175: Fix a memory leak in comparison of :class:`sqlite3.Row`
|
||
objects.
|
||
|
||
- bpo-33936: _hashlib no longer calls obsolete OpenSSL initialization
|
||
function with OpenSSL 1.1.0+.
|
||
|
||
- bpo-34706: Preserve subclassing in inspect.Signature.from_callable.
|
||
|
||
- bpo-38153: Names of hashing algorithms from OpenSSL are now normalized to
|
||
follow Python's naming conventions. For example OpenSSL uses sha3-512
|
||
instead of sha3_512 or blake2b512 instead of blake2b.
|
||
|
||
- bpo-38115: Fix a bug in dis.findlinestarts() where it would return invalid
|
||
bytecode offsets. Document that a code object's co_lnotab can contain
|
||
invalid bytecode offsets.
|
||
|
||
- bpo-38148: Add slots to :mod:`asyncio` transport classes, which can reduce
|
||
memory usage.
|
||
|
||
- bpo-38142: The _hashlib OpenSSL wrapper extension module is now PEP-384
|
||
compliant.
|
||
|
||
- bpo-9216: hashlib constructors now support usedforsecurity flag to signal
|
||
that a hashing algorithm is not used in a security context.
|
||
|
||
- bpo-36991: Fixes a potential incorrect AttributeError exception escaping
|
||
ZipFile.extract() in some unsupported input error situations.
|
||
|
||
- bpo-38134: Remove obsolete copy of PBKDF2_HMAC_fast. All supported OpenSSL
|
||
versions contain a fast implementation.
|
||
|
||
- bpo-38132: The OpenSSL hashlib wrapper uses a simpler implementation.
|
||
Several Macros and pointless caches are gone. The hash name now comes from
|
||
OpenSSL's EVP. The algorithm name stays the same, except it is now always
|
||
lower case.
|
||
|
||
- bpo-38008: Fix parent class check in protocols to correctly identify the
|
||
module that provides a builtin protocol, instead of assuming they all come
|
||
from the :mod:`collections.abc` module
|
||
|
||
- bpo-34037: For :mod:`asyncio`, add a new coroutine
|
||
:meth:`loop.shutdown_default_executor`. The new coroutine provides an API
|
||
to schedule an executor shutdown that waits on the threadpool to finish
|
||
closing. Also, :func:`asyncio.run` has been updated to utilize the new
|
||
coroutine. Patch by Kyle Stanley.
|
||
|
||
- bpo-37405: Fixed regression bug for socket.getsockname() for non-CAN_ISOTP
|
||
AF_CAN address family sockets by returning a 1-tuple instead of string.
|
||
|
||
- bpo-38121: Update parameter names on functions in importlib.metadata
|
||
matching the changes in the 0.22 release of importlib_metadata.
|
||
|
||
- bpo-38110: The os.closewalk() implementation now uses the libc fdwalk()
|
||
API on platforms where it is available.
|
||
|
||
- bpo-38093: Fixes AsyncMock so it doesn't crash when used with
|
||
AsyncContextManagers or AsyncIterators.
|
||
|
||
- bpo-37488: Add warning to :meth:`datetime.utctimetuple`,
|
||
:meth:`datetime.utcnow` and :meth:`datetime.utcfromtimestamp` .
|
||
|
||
- bpo-35640: Allow passing a :term:`path-like object` as ``directory``
|
||
argument to the :class:`http.server.SimpleHTTPRequestHandler` class. Patch
|
||
by Géry Ogam.
|
||
|
||
- bpo-38086: Update importlib.metadata with changes from `importlib_metadata
|
||
0.21
|
||
<https://gitlab.com/python-devs/importlib_metadata/blob/0.21/importlib_metadata/docs/changelog.rst>`_.
|
||
|
||
- bpo-37251: Remove `__code__` check in AsyncMock that incorrectly evaluated
|
||
function specs as async objects but failed to evaluate classes with
|
||
`__await__` but no `__code__` attribute defined as async objects.
|
||
|
||
- bpo-38037: Fix reference counters in the :mod:`signal` module.
|
||
|
||
- bpo-38066: Hide internal asyncio.Stream methods: feed_eof(), feed_data(),
|
||
set_exception() and set_transport().
|
||
|
||
- bpo-38059: inspect.py now uses sys.exit() instead of exit()
|
||
|
||
- bpo-38049: Added command-line interface for the :mod:`ast` module.
|
||
|
||
- bpo-37953: In :mod:`typing`, improved the ``__hash__`` and ``__eq__``
|
||
methods for :class:`ForwardReferences`.
|
||
|
||
- bpo-38026: Fixed :func:`inspect.getattr_static` used ``isinstance`` while
|
||
it should avoid dynamic lookup.
|
||
|
||
- bpo-35923: Update :class:`importlib.machinery.BuiltinImporter` to use
|
||
``loader._ORIGIN`` instead of a hardcoded value. Patch by Dong-hee Na.
|
||
|
||
- bpo-38010: In ``importlib.metadata`` sync with ``importlib_metadata``
|
||
0.20, clarifying behavior of ``files()`` and fixing issue where only one
|
||
requirement was returned for ``requires()`` on ``dist-info`` packages.
|
||
|
||
- bpo-38006: weakref.WeakValueDictionary defines a local remove() function
|
||
used as callback for weak references. This function was created with a
|
||
closure. Modify the implementation to avoid the closure.
|
||
|
||
- bpo-37995: Added the *indent* option to :func:`ast.dump` which allows it
|
||
to produce a multiline indented output.
|
||
|
||
- bpo-34410: Fixed a crash in the :func:`tee` iterator when re-enter it.
|
||
RuntimeError is now raised in this case.
|
||
|
||
- bpo-37140: Fix a ctypes regression of Python 3.8. When a ctypes.Structure
|
||
is passed by copy to a function, ctypes internals created a temporary
|
||
object which had the side effect of calling the structure finalizer
|
||
(__del__) twice. The Python semantics requires a finalizer to be called
|
||
exactly once. Fix ctypes internals to no longer call the finalizer twice.
|
||
|
||
- bpo-37587: ``_json.scanstring`` is now up to 3x faster when there are many
|
||
backslash escaped characters in the JSON string.
|
||
|
||
- bpo-37834: Prevent shutil.rmtree exception when built on non-Windows
|
||
system without fd system call support, like older versions of macOS.
|
||
|
||
- bpo-10978: Semaphores and BoundedSemaphores can now release more than one
|
||
waiting thread at a time.
|
||
|
||
- bpo-37972: Subscripts to the `unittest.mock.call` objects now receive the
|
||
same chaining mechanism as any other custom attributes, so that the
|
||
following usage no longer raises a `TypeError`:
|
||
|
||
call().foo().__getitem__('bar')
|
||
|
||
Patch by blhsing
|
||
|
||
- bpo-37965: Fix C compiler warning caused by
|
||
distutils.ccompiler.CCompiler.has_function.
|
||
|
||
- bpo-37964: Add ``F_GETPATH`` command to :mod:`fcntl`.
|
||
|
||
- bpo-37960: ``repr()`` of buffered and text streams now silences only
|
||
expected exceptions when get the value of "name" and "mode" attributes.
|
||
|
||
- bpo-37961: Add a ``total_nframe`` field to the traces collected by the
|
||
tracemalloc module. This field indicates the original number of frames
|
||
before it was truncated.
|
||
|
||
- bpo-37951: Most features of the subprocess module now work again in
|
||
subinterpreters. Only *preexec_fn* is restricted in subinterpreters.
|
||
|
||
- bpo-36205: Fix the rusage implementation of time.process_time() to
|
||
correctly report the sum of the system and user CPU time.
|
||
|
||
- bpo-37950: Fix :func:`ast.dump` when call with incompletely initialized
|
||
node.
|
||
|
||
- bpo-34679: Restores instantiation of Windows IOCP event loops from the
|
||
non-main thread.
|
||
|
||
- bpo-36917: Add default implementation of the
|
||
:meth:`ast.NodeVisitor.visit_Constant` method which emits a deprecation
|
||
warning and calls corresponding methody ``visit_Num()``, ``visit_Str()``,
|
||
etc.
|
||
|
||
- bpo-37798: Update test_statistics.py to verify that the statistics module
|
||
works well for both C and Python implementations. Patch by Dong-hee Na
|
||
|
||
- bpo-26589: Added a new status code to the http module: 451
|
||
UNAVAILABLE_FOR_LEGAL_REASONS
|
||
|
||
- bpo-37915: Fix a segmentation fault that appeared when comparing instances
|
||
of ``datetime.timezone`` and ``datetime.tzinfo`` objects. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-32554: Deprecate having random.seed() call hash on arbitrary types.
|
||
|
||
- bpo-9938: Add optional keyword argument ``exit_on_error`` for
|
||
:class:`ArgumentParser`.
|
||
|
||
- bpo-37851: The :mod:`faulthandler` module no longer allocates its
|
||
alternative stack at Python startup. Now the stack is only allocated at
|
||
the first faulthandler usage.
|
||
|
||
- bpo-32793: Fix a duplicated debug message when
|
||
:meth:`smtplib.SMTP.connect` is called.
|
||
|
||
- bpo-37885: venv: Don't generate unset variable warning on deactivate.
|
||
|
||
- bpo-37868: Fix dataclasses.is_dataclass when given an instance that never
|
||
raises AttributeError in __getattr__. That is, an object that returns
|
||
something for __dataclass_fields__ even if it's not a dataclass.
|
||
|
||
- bpo-37811: Fix ``socket`` module's ``socket.connect(address)`` function
|
||
being unable to establish connection in case of interrupted system call.
|
||
The problem was observed on all OSes which ``poll(2)`` system call can
|
||
take only non-negative integers and -1 as a timeout value.
|
||
|
||
- bpo-37863: Optimizations for Fraction.__hash__ suggested by Tim Peters.
|
||
|
||
- bpo-21131: Fix ``faulthandler.register(chain=True)`` stack. faulthandler
|
||
now allocates a dedicated stack of ``SIGSTKSZ*2`` bytes, instead of just
|
||
``SIGSTKSZ`` bytes. Calling the previous signal handler in faulthandler
|
||
signal handler uses more than ``SIGSTKSZ`` bytes of stack memory on some
|
||
platforms.
|
||
|
||
- bpo-37798: Add C fastpath for statistics.NormalDist.inv_cdf() Patch by
|
||
Dong-hee Na
|
||
|
||
- bpo-37804: Remove the deprecated method `threading.Thread.isAlive()`.
|
||
Patch by Dong-hee Na.
|
||
|
||
- bpo-37819: Add Fraction.as_integer_ratio() to match the corresponding
|
||
methods in bool, int, float, and decimal.
|
||
|
||
- bpo-14465: Add an xml.etree.ElementTree.indent() function for
|
||
pretty-printing XML trees. Contributed by Stefan Behnel.
|
||
|
||
- bpo-37810: Fix :mod:`difflib` ``?`` hint in diff output when dealing with
|
||
tabs. Patch by Anthony Sottile.
|
||
|
||
- bpo-37772: In ``zipfile.Path``, when adding implicit dirs, ensure that
|
||
ancestral directories are added and that duplicates are excluded.
|
||
|
||
- bpo-18578: Renamed and documented `test.bytecode_helper` as
|
||
`test.support.bytecode_helper`. Patch by Joannah Nanjekye.
|
||
|
||
- bpo-37785: Fix xgettext warnings in :mod:`argparse`.
|
||
|
||
- bpo-34488: :meth:`writelines` method of :class:`io.BytesIO` is now
|
||
slightly faster when many small lines are passed. Patch by Sergey
|
||
Fedoseev.
|
||
|
||
- bpo-37449: `ensurepip` now uses `importlib.resources.read_binary()` to
|
||
read data instead of `pkgutil.get_data()`. Patch by Joannah Nanjekye.
|
||
|
||
- bpo-28292: Mark calendar.py helper functions as being private. The
|
||
follows PEP 8 guidance to maintain the style conventions in the module and
|
||
it addresses a known case of user confusion.
|
||
|
||
- bpo-18049: Add definition of THREAD_STACK_SIZE for AIX in
|
||
Python/thread_pthread.h The default thread stacksize caused crashes with
|
||
the default recursion limit Patch by M Felt
|
||
|
||
- bpo-37742: The logging.getLogger() API now returns the root logger when
|
||
passed the name 'root', whereas previously it returned a non-root logger
|
||
named 'root'. This could affect cases where user code explicitly wants a
|
||
non-root logger named 'root', or instantiates a logger using
|
||
logging.getLogger(__name__) in some top-level module called 'root.py'.
|
||
|
||
- bpo-37738: Fix the implementation of curses ``addch(str, color_pair)``:
|
||
pass the color pair to ``setcchar()``, instead of always passing 0 as the
|
||
color pair.
|
||
|
||
- bpo-37723: Fix performance regression on regular expression parsing with
|
||
huge character sets. Patch by Yann Vaginay.
|
||
|
||
- bpo-35943: The function :c:func:`PyImport_GetModule` now ensures any
|
||
module it returns is fully initialized. Patch by Joannah Nanjekye.
|
||
|
||
- bpo-32178: Fix IndexError in :mod:`email` package when trying to parse
|
||
invalid address fields starting with ``:``.
|
||
|
||
- bpo-37268: The :mod:`parser` module is deprecated and will be removed in
|
||
future versions of Python.
|
||
|
||
- bpo-11953: Completing WSA* error codes in :mod:`socket`.
|
||
|
||
- bpo-37685: Fixed comparisons of :class:`datetime.timedelta` and
|
||
:class:`datetime.timezone`.
|
||
|
||
- bpo-37697: Synchronize ``importlib.metadata`` with `importlib_metadata
|
||
0.19
|
||
<https://gitlab.com/python-devs/importlib_metadata/-/milestones/20>`_,
|
||
improving handling of EGG-INFO files and fixing a crash when entry point
|
||
names contained colons.
|
||
|
||
- bpo-37695: Correct :func:`curses.unget_wch` error message. Patch by
|
||
Anthony Sottile.
|
||
|
||
- bpo-37689: Add :meth:`is_relative_to` in :class:`PurePath` to determine
|
||
whether or not one path is relative to another.
|
||
|
||
- bpo-29553: Fixed :meth:`argparse.ArgumentParser.format_usage` for mutually
|
||
exclusive groups. Patch by Andrew Nester.
|
||
|
||
- bpo-37691: Let math.dist() accept coordinates as sequences (or iterables)
|
||
rather than just tuples.
|
||
|
||
- bpo-37685: Fixed ``__eq__``, ``__lt__`` etc implementations in some
|
||
classes. They now return :data:`NotImplemented` for unsupported type of
|
||
the other operand. This allows the other operand to play role (for example
|
||
the equality comparison with :data:`~unittest.mock.ANY` will return
|
||
``True``).
|
||
|
||
- bpo-37354: Make Activate.ps1 Powershell script static to allow for signing
|
||
it.
|
||
|
||
- bpo-37664: Update wheels bundled with ensurepip (pip 19.2.3 and setuptools
|
||
41.2.0)
|
||
|
||
- bpo-37663: Bring consistency to venv shell activation scripts by always
|
||
using __VENV_PROMPT__.
|
||
|
||
- bpo-37642: Allowed the pure Python implementation of
|
||
:class:`datetime.timezone` to represent sub-minute offsets close to
|
||
minimum and maximum boundaries, specifically in the ranges (23:59, 24:00)
|
||
and (-23:59, 24:00). Patch by Ngalim Siregar
|
||
|
||
- bpo-36161: In :mod:`posix`, use ``ttyname_r`` instead of ``ttyname`` for
|
||
thread safety.
|
||
|
||
- bpo-36324: Make internal attributes for statistics.NormalDist() private.
|
||
|
||
- bpo-37555: Fix `NonCallableMock._call_matcher` returning tuple instead of
|
||
`_Call` object when `self._spec_signature` exists. Patch by Elizabeth
|
||
Uselton
|
||
|
||
- bpo-29446: Make `from tkinter import *` import only the expected objects.
|
||
|
||
- bpo-16970: Adding a value error when an invalid value in passed to nargs
|
||
Patch by Robert Leenders
|
||
|
||
- bpo-34443: Exceptions from :mod:`enum` now use the ``__qualname`` of the
|
||
enum class in the exception message instead of the ``__name__``.
|
||
|
||
- bpo-37491: Fix ``IndexError`` when parsing email headers with unexpectedly
|
||
ending bare-quoted string value. Patch by Abhilash Raj.
|
||
|
||
- bpo-37587: Make json.loads faster for long strings. (Patch by Marco
|
||
Paolini)
|
||
|
||
- bpo-18378: Recognize "UTF-8" as a valid value for LC_CTYPE in
|
||
locale._parse_localename.
|
||
|
||
- bpo-37579: Return :exc:`NotImplemented` in Python implementation of
|
||
``__eq__`` for :class:`~datetime.timedelta` and :class:`~datetime.time`
|
||
when the other object being compared is not of the same type to match C
|
||
implementation. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-21478: Record calls to parent when autospecced object is attached to a
|
||
mock using :func:`unittest.mock.attach_mock`. Patch by Karthikeyan
|
||
Singaravelan.
|
||
|
||
- bpo-37531: "python3 -m test -jN --timeout=TIMEOUT" now kills a worker
|
||
process if it runs longer than *TIMEOUT* seconds.
|
||
|
||
- bpo-37482: Fix serialization of display name in originator or destination
|
||
address fields with both encoded words and special chars.
|
||
|
||
- bpo-36993: Improve error reporting for corrupt zip files with bad zip64
|
||
extra data. Patch by Daniel Hillier.
|
||
|
||
- bpo-37502: pickle.loads() no longer raises TypeError when the buffers
|
||
argument is set to None
|
||
|
||
- bpo-37520: Correct behavior for zipfile.Path.parent when the path object
|
||
identifies a subdirectory.
|
||
|
||
- bpo-18374: Fix the ``.col_offset`` attribute of nested :class:`ast.BinOp`
|
||
instances which had a too large value in some situations.
|
||
|
||
- bpo-37424: Fixes a possible hang when using a timeout on
|
||
`subprocess.run()` while capturing output. If the child process spawned
|
||
its own children or otherwise connected its stdout or stderr handles with
|
||
another process, we could hang after the timeout was reached and our child
|
||
was killed when attempting to read final output from the pipes.
|
||
|
||
- bpo-37421: Fix :func:`multiprocessing.util.get_temp_dir` finalizer: clear
|
||
also the 'tempdir' configuration of the current process, so next call to
|
||
``get_temp_dir()`` will create a new temporary directory, rather than
|
||
reusing the removed temporary directory.
|
||
|
||
- bpo-37481: The distutils ``bdist_wininst`` command is deprecated in Python
|
||
3.8, use ``bdist_wheel`` (wheel packages) instead.
|
||
|
||
- bpo-37479: When `Enum.__str__` is overridden in a derived class, the
|
||
override will be used by `Enum.__format__` regardless of whether mixin
|
||
classes are present.
|
||
|
||
- bpo-37440: http.client now enables TLS 1.3 post-handshake authentication
|
||
for default context or if a cert_file is passed to HTTPSConnection.
|
||
|
||
- bpo-37437: Update vendorized expat version to 2.2.7.
|
||
|
||
- bpo-37428: SSLContext.post_handshake_auth = True no longer sets
|
||
SSL_VERIFY_POST_HANDSHAKE verify flag for client connections. Although the
|
||
option is documented as ignored for clients, OpenSSL implicitly enables
|
||
cert chain validation when the flag is set.
|
||
|
||
- bpo-37420: :func:`os.sched_setaffinity` now correctly handles errors that
|
||
arise during iteration over its ``mask`` argument. Patch by Brandt Bucher.
|
||
|
||
- bpo-37412: The :func:`os.getcwdb` function now uses the UTF-8 encoding on
|
||
Windows, rather than the ANSI code page: see :pep:`529` for the rationale.
|
||
The function is no longer deprecated on Windows.
|
||
|
||
- bpo-37406: The sqlite3 module now raises TypeError, rather than
|
||
ValueError, if operation argument type is not str: execute(),
|
||
executemany() and calling a connection.
|
||
|
||
- bpo-29412: Fix IndexError in parsing a header value ending unexpectedly.
|
||
Patch by Abhilash Raj.
|
||
|
||
- bpo-36546: The *dist* argument for statistics.quantiles() is now
|
||
positional only. The current name doesn't reflect that the argument can be
|
||
either a dataset or a distribution. Marking the parameter as positional
|
||
avoids confusion and makes it possible to change the name later.
|
||
|
||
- bpo-37394: Fix a bug that was causing the :mod:`queue` module to fail if
|
||
the accelerator module was not available. Patch by Pablo Galindo.
|
||
|
||
- bpo-37376: :mod:`pprint` now has support for
|
||
:class:`types.SimpleNamespace`. Patch by Carl Bordum Hansen.
|
||
|
||
- bpo-26967: An :class:`~argparse.ArgumentParser` with
|
||
``allow_abbrev=False`` no longer disables grouping of short flags, such as
|
||
``-vv``, but only disables abbreviation of long flags as documented. Patch
|
||
by Zac Hatfield-Dodds.
|
||
|
||
- bpo-37212: :func:`unittest.mock.call` now preserves the order of keyword
|
||
arguments in repr output. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-37372: Fix error unpickling datetime.time objects from Python 2 with
|
||
seconds>=24. Patch by Justin Blanchard.
|
||
|
||
- bpo-37345: Add formal support for UDPLITE sockets. Support was present
|
||
before, but it is now easier to detect support with ``hasattr(socket,
|
||
'IPPROTO_UDPLITE')`` and there are constants defined for each of the
|
||
values needed: :py:obj:`socket.IPPROTO_UDPLITE`,
|
||
:py:obj:`UDPLITE_SEND_CSCOV`, and :py:obj:`UDPLITE_RECV_CSCOV`. Patch by
|
||
Gabe Appleton.
|
||
|
||
- bpo-37358: Optimized ``functools.partial`` by using vectorcall.
|
||
|
||
- bpo-37347: :meth:`sqlite3.Connection.create_aggregate`,
|
||
:meth:`sqlite3.Connection.create_function`,
|
||
:meth:`sqlite3.Connection.set_authorizer`,
|
||
:meth:`sqlite3.Connection.set_progress_handler`
|
||
:meth:`sqlite3.Connection.set_trace_callback` methods lead to segfaults if
|
||
some of these methods are called twice with an equal object but not the
|
||
same. Now callbacks are stored more carefully. Patch by Aleksandr Balezin.
|
||
|
||
- bpo-37163: The *obj* argument of :func:`dataclasses.replace` is
|
||
positional-only now.
|
||
|
||
- bpo-37085: Add the optional Linux SocketCAN Broadcast Manager constants,
|
||
used as flags to configure the BCM behaviour, in the socket module. Patch
|
||
by Karl Ding.
|
||
|
||
- bpo-37328: ``HTMLParser.unescape`` is removed. It was undocumented and
|
||
deprecated since Python 3.4.
|
||
|
||
- bpo-37305: Add .webmanifest -> application/manifest+json to list of
|
||
recognized file types and content type headers
|
||
|
||
- bpo-37320: ``aifc.openfp()`` alias to ``aifc.open()``, ``sunau.openfp()``
|
||
alias to ``sunau.open()``, and ``wave.openfp()`` alias to ``wave.open()``
|
||
have been removed. They were deprecated since Python 3.7.
|
||
|
||
- bpo-37315: Deprecated accepting floats with integral value (like ``5.0``)
|
||
in :func:`math.factorial`.
|
||
|
||
- bpo-37312: ``_dummy_thread`` and ``dummy_threading`` modules have been
|
||
removed. These modules were deprecated since Python 3.7 which requires
|
||
threading support.
|
||
|
||
- bpo-33972: Email with single part but content-type set to ``multipart/*``
|
||
doesn't raise AttributeError anymore.
|
||
|
||
- bpo-37280: Use threadpool for reading from file for sendfile fallback
|
||
mode.
|
||
|
||
- bpo-37279: Fix asyncio sendfile support when sendfile sends extra data in
|
||
fallback mode.
|
||
|
||
- bpo-19865: :func:`ctypes.create_unicode_buffer()` now also supports
|
||
non-BMP characters on platforms with 16-bit :c:type:`wchar_t` (for
|
||
example, Windows and AIX).
|
||
|
||
- bpo-37266: In a subinterpreter, spawning a daemon thread now raises an
|
||
exception. Daemon threads were never supported in subinterpreters.
|
||
Previously, the subinterpreter finalization crashed with a Python fatal
|
||
error if a daemon thread was still running.
|
||
|
||
- bpo-37210: Allow pure Python implementation of :mod:`pickle` to work even
|
||
when the C :mod:`_pickle` module is unavailable.
|
||
|
||
- bpo-21872: Fix :mod:`lzma`: module decompresses data incompletely. When
|
||
decompressing a FORMAT_ALONE format file, and it doesn't have the end
|
||
marker, sometimes the last one to dozens bytes can't be output. Patch by
|
||
Ma Lin.
|
||
|
||
- bpo-35922: Fix :meth:`RobotFileParser.crawl_delay` and
|
||
:meth:`RobotFileParser.request_rate` to return ``None`` rather than raise
|
||
:exc:`AttributeError` when no relevant rule is defined in the robots.txt
|
||
file. Patch by Rémi Lapeyre.
|
||
|
||
- bpo-35766: Change the format of feature_version to be a (major, minor)
|
||
tuple.
|
||
|
||
- bpo-36607: Eliminate :exc:`RuntimeError` raised by
|
||
:func:`asyncio.all_tasks()` if internal tasks weak set is changed by
|
||
another thread during iteration.
|
||
|
||
- bpo-18748: :class:`_pyio.IOBase` destructor now does nothing if getting
|
||
the ``closed`` attribute fails to better mimic :class:`_io.IOBase`
|
||
finalizer.
|
||
|
||
- bpo-36402: Fix a race condition at Python shutdown when waiting for
|
||
threads. Wait until the Python thread state of all non-daemon threads get
|
||
deleted (join all non-daemon threads), rather than just wait until
|
||
non-daemon Python threads complete.
|
||
|
||
- bpo-37206: Default values which cannot be represented as Python objects no
|
||
longer improperly represented as ``None`` in function signatures.
|
||
|
||
- bpo-37111: Added ``encoding`` and ``errors`` keyword parameters to
|
||
``logging.basicConfig``.
|
||
|
||
- bpo-12144: Ensure cookies with ``expires`` attribute are handled in
|
||
:meth:`CookieJar.make_cookies`.
|
||
|
||
- bpo-34886: Fix an unintended ValueError from :func:`subprocess.run` when
|
||
checking for conflicting `input` and `stdin` or `capture_output` and
|
||
`stdout` or `stderr` args when they were explicitly provided but with
|
||
`None` values within a passed in `**kwargs` dict rather than as passed
|
||
directly by name. Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-37173: The exception message for ``inspect.getfile()`` now correctly
|
||
reports the passed class rather than the builtins module.
|
||
|
||
- bpo-37178: Give math.perm() a one argument form that means the same as
|
||
math.factorial().
|
||
|
||
- bpo-37178: For math.perm(n, k), let k default to n, giving the same result
|
||
as factorial.
|
||
|
||
- bpo-37165: Converted _collections._count_elements to use the Argument
|
||
Clinic.
|
||
|
||
- bpo-34767: Do not always create a :class:`collections.deque` in
|
||
:class:`asyncio.Lock`.
|
||
|
||
- bpo-37158: Speed-up statistics.fmean() by switching from a function to a
|
||
generator.
|
||
|
||
- bpo-34282: Remove ``Enum._convert`` method, deprecated in 3.8.
|
||
|
||
- bpo-37150: `argparse._ActionsContainer.add_argument` now throws error, if
|
||
someone accidentally pass FileType class object instead of instance of
|
||
FileType as `type` argument
|
||
|
||
- bpo-28724: The socket module now has the :func:`socket.send_fds` and
|
||
:func:`socket.recv.fds` methods. Contributed by Joannah Nanjekye, Shinya
|
||
Okano and Victor Stinner.
|
||
|
||
- bpo-35621: Support running asyncio subprocesses when execution event loop
|
||
in a thread on UNIX.
|
||
|
||
- bpo-36520: Lengthy email headers with UTF-8 characters are now properly
|
||
encoded when they are folded. Patch by Jeffrey Kintscher.
|
||
|
||
- bpo-30835: Fixed a bug in email parsing where a message with invalid bytes
|
||
in content-transfer-encoding of a multipart message can cause an
|
||
AttributeError. Patch by Andrew Donnellan.
|
||
|
||
- bpo-31163: pathlib.Path instance's rename and replace methods now return
|
||
the new Path instance.
|
||
|
||
- bpo-25068: :class:`urllib.request.ProxyHandler` now lowercases the keys of
|
||
the passed dictionary.
|
||
|
||
- bpo-26185: Fix :func:`repr` on empty :class:`ZipInfo` object. Patch by
|
||
Mickaël Schoentgen.
|
||
|
||
- bpo-21315: Email headers containing RFC2047 encoded words are parsed
|
||
despite the missing whitespace, and a defect registered. Also missing
|
||
trailing whitespace after encoded words is now registered as a defect.
|
||
|
||
- bpo-31904: Port test_datetime to VxWorks: skip zoneinfo tests on VxWorks
|
||
|
||
- bpo-35805: Add parser for Message-ID header and add it to default
|
||
HeaderRegistry. This should prevent folding of Message-ID using RFC 2048
|
||
encoded words.
|
||
|
||
- bpo-36871: Ensure method signature is used instead of constructor
|
||
signature of a class while asserting mock object against method calls.
|
||
Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-35070: posix.getgrouplist() now works correctly when the user belongs
|
||
to NGROUPS_MAX supplemental groups. Patch by Jeffrey Kintscher.
|
||
|
||
- bpo-31783: Fix race condition in ThreadPoolExecutor when worker threads
|
||
are created during interpreter shutdown.
|
||
|
||
- bpo-36582: Fix ``UserString.encode()`` to correctly return ``bytes``
|
||
rather than a ``UserString`` instance.
|
||
|
||
- bpo-32424: Deprecate xml.etree.ElementTree.Element.copy() in favor of
|
||
copy.copy().
|
||
|
||
Patch by Gordon P. Hemsley
|
||
|
||
- bpo-36564: Fix infinite loop in email header folding logic that would be
|
||
triggered when an email policy's max_line_length is not long enough to
|
||
include the required markup and any values in the message. Patch by Paul
|
||
Ganssle
|
||
|
||
- bpo-36543: Removed methods Element.getchildren(), Element.getiterator()
|
||
and ElementTree.getiterator() and the xml.etree.cElementTree module.
|
||
|
||
- bpo-36409: Remove the old plistlib API deprecated in Python 3.4
|
||
|
||
- bpo-36302: distutils sorts source file lists so that Extension .so files
|
||
build more reproducibly by default
|
||
|
||
- bpo-36250: Ignore ``ValueError`` from ``signal`` with ``interaction`` in
|
||
non-main thread.
|
||
|
||
- bpo-36046: Added ``user``, ``group`` and ``extra_groups`` parameters to
|
||
the subprocess.Popen constructor. Patch by Patrick McLean.
|
||
|
||
- bpo-32627: Fix compile error when ``_uuid`` headers conflicting included.
|
||
|
||
- bpo-35800: Deprecate ``smtpd.MailmanProxy`` ready for future removal.
|
||
|
||
- bpo-35168: :attr:`shlex.shlex.punctuation_chars` is now a read-only
|
||
property.
|
||
|
||
- bpo-8538: Add support for boolean actions like ``--foo`` and ``--no-foo``
|
||
to argparse. Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-20504: Fixes a bug in :mod:`cgi` module when a multipart/form-data
|
||
request has no `Content-Length` header.
|
||
|
||
- bpo-25988: The abstract base classes in :mod:`collections.abc` no longer
|
||
are exposed in the regular :mod:`collections` module.
|
||
|
||
- bpo-11122: Distutils won't check for rpmbuild in specified paths only.
|
||
|
||
- bpo-34775: Division handling of PurePath now returns NotImplemented
|
||
instead of raising a TypeError when passed something other than an
|
||
instance of str or PurePath. Patch by Roger Aiudi.
|
||
|
||
- bpo-34749: :func:`binascii.a2b_base64` is now up to 2 times faster. Patch
|
||
by Sergey Fedoseev.
|
||
|
||
- bpo-34519: Add additional aliases for HP Roman 8. Patch by Michael Osipov.
|
||
|
||
- bpo-28009: Fix uuid.getnode() on platforms with '.' as MAC Addr delimiter
|
||
as well fix for MAC Addr format that omits a leading 0 in MAC Addr values.
|
||
Currently, AIX is the only know platform with these settings. Patch by
|
||
Michael Felt.
|
||
|
||
- bpo-30618: Add :meth:`~pathlib.Path.readlink`. Patch by Girts Folkmanis.
|
||
|
||
- bpo-32498: Made :func:`urllib.parse.unquote()` accept bytes in addition to
|
||
strings. Patch by Stein Karlsen.
|
||
|
||
- bpo-33348: lib2to3 now recognizes expressions after ``*`` and `**` like in
|
||
``f(*[] or [])``.
|
||
|
||
- bpo-32689: Update :func:`shutil.move` function to allow for Path objects
|
||
to be used as source argument. Patch by Emily Morehouse and Maxwell
|
||
"5.13b" McKinnon.
|
||
|
||
- bpo-32820: Added __format__ to IPv4 and IPv6 classes. Always outputs a
|
||
fully zero- padded string. Supports b/x/n modifiers (bin/hex/native
|
||
format). Native format for IPv4 is bin, native format for IPv6 is hex.
|
||
Also supports '#' and '_' modifiers.
|
||
|
||
- bpo-27657: Fix urllib.parse.urlparse() with numeric paths. A string like
|
||
"path:80" is no longer parsed as a path but as a scheme ("path") and a
|
||
path ("80").
|
||
|
||
- bpo-4963: Fixed non-deterministic behavior related to mimetypes extension
|
||
mapping and module reinitialization.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-21767: Explicitly mention abc support in functools.singledispatch
|
||
|
||
- bpo-38816: Provides more details about the interaction between
|
||
:c:func:`fork` and CPython's runtime, focusing just on the C-API. This
|
||
includes cautions about where :c:func:`fork` should and shouldn't be
|
||
called.
|
||
|
||
- bpo-38351: Modernize :mod:`email` examples from %-formatting to f-strings.
|
||
|
||
- bpo-38778: Document the fact that :exc:`RuntimeError` is raised if
|
||
:meth:`os.fork` is called in a subinterpreter.
|
||
|
||
- bpo-38592: Add Brazilian Portuguese to the language switcher at Python
|
||
Documentation website.
|
||
|
||
- bpo-38294: Add list of no-longer-escaped chars to re.escape documentation
|
||
|
||
- bpo-38053: Modernized the plistlib documentation
|
||
|
||
- bpo-26868: Fix example usage of :c:func:`PyModule_AddObject` to properly
|
||
handle errors.
|
||
|
||
- bpo-36797: Fix a dead link in the distutils API Reference.
|
||
|
||
- bpo-37977: Warn more strongly and clearly about pickle insecurity
|
||
|
||
- bpo-37979: Added a link to dateutil.parser.isoparse in the
|
||
datetime.fromisoformat documentation. Patch by Paul Ganssle
|
||
|
||
- bpo-12707: Deprecate info(), geturl(), getcode() methods in favor of the
|
||
headers, url, and status properties, respectively, for HTTPResponse and
|
||
addinfourl. Also deprecate the code attribute of addinfourl in favor of
|
||
the status attribute. Patch by Ashwin Ramaswami
|
||
|
||
- bpo-37937: Mention ``frame.f_trace`` in :func:`sys.settrace` docs.
|
||
|
||
- bpo-37878: Make :c:func:`PyThreadState_DeleteCurrent` Internal.
|
||
|
||
- bpo-37759: Beginning edits to Whatsnew 3.8
|
||
|
||
- bpo-37726: Stop recommending getopt in the tutorial for command line
|
||
argument parsing and promote argparse.
|
||
|
||
- bpo-32910: Remove implementation-specific behaviour of how venv's
|
||
Deactivate works.
|
||
|
||
- bpo-37256: Fix wording of arguments for :class:`Request` in
|
||
:mod:`urllib.request`
|
||
|
||
- bpo-37284: Add a brief note to indicate that any new
|
||
``sys.implementation`` required attributes must go through the PEP
|
||
process.
|
||
|
||
- bpo-30088: Documented that :class:`mailbox.Maildir` constructor doesn't
|
||
attempt to verify the maildir folder layout correctness. Patch by
|
||
Sviatoslav Sydorenko.
|
||
|
||
- bpo-37521: Fix `importlib` examples to insert any newly created modules
|
||
via importlib.util.module_from_spec() immediately into sys.modules instead
|
||
of after calling loader.exec_module().
|
||
|
||
Thanks to Benjamin Mintz for finding the bug.
|
||
|
||
- bpo-37456: Slash ('/') is now part of syntax.
|
||
|
||
- bpo-37487: Fix PyList_GetItem index description to include 0.
|
||
|
||
- bpo-37149: Replace the dead link to the Tkinter 8.5 reference by John
|
||
Shipman, New Mexico Tech, with a link to the archive.org copy.
|
||
|
||
- bpo-37478: Added possible exceptions to the description of os.chdir().
|
||
|
||
- bpo-34903: Documented that in :meth:`datetime.datetime.strptime()`, the
|
||
leading zero in some two-digit formats is optional. Patch by Mike Gleen.
|
||
|
||
- bpo-36260: Add decompression pitfalls to zipfile module documentation.
|
||
|
||
- bpo-37004: In the documentation for difflib, a note was added explicitly
|
||
warning that the results of SequenceMatcher's ratio method may depend on
|
||
the order of the input strings.
|
||
|
||
- bpo-36960: Restructured the :mod:`datetime` docs in the interest of making
|
||
them more user-friendly and improving readability. Patch by Brad Solomon.
|
||
|
||
- bpo-36487: Make C-API docs clear about what the "main" interpreter is.
|
||
|
||
- bpo-23460: The documentation for decimal string formatting using the `:g`
|
||
specifier has been updated to reflect the correct exponential notation
|
||
cutoff point. Original patch contributed by Tuomas Suutari.
|
||
|
||
- bpo-35803: Document and test that ``tempfile`` functions may accept a
|
||
:term:`path-like object` for the ``dir`` argument. Patch by Anthony
|
||
Sottile.
|
||
|
||
- bpo-33944: Added a note about the intended use of code in .pth files.
|
||
|
||
- bpo-34293: Fix the Doc/Makefile regarding PAPER environment variable and
|
||
PDF builds
|
||
|
||
- bpo-25237: Add documentation for tkinter modules
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-38614: Fix test_communicate() of test_asyncio.test_subprocess: use
|
||
``support.LONG_TIMEOUT`` (5 minutes), instead of just 1 minute.
|
||
|
||
- bpo-38614: Add timeout constants to :mod:`test.support`:
|
||
:data:`~test.support.LOOPBACK_TIMEOUT`,
|
||
:data:`~test.support.INTERNET_TIMEOUT`,
|
||
:data:`~test.support.SHORT_TIMEOUT` and
|
||
:data:`~test.support.LONG_TIMEOUT`.
|
||
|
||
- bpo-38502: test.regrtest now uses process groups in the multiprocessing
|
||
mode (-jN command line option) if process groups are available: if
|
||
:func:`os.setsid` and :func:`os.killpg` functions are available.
|
||
|
||
- bpo-35998: Fix a race condition in test_asyncio.test_start_tls_server_1().
|
||
Previously, there was a race condition between the test main() function
|
||
which replaces the protocol and the test ServerProto protocol which sends
|
||
ANSWER once it gets HELLO. Now, only the test main() function is
|
||
responsible to send data, ServerProto no longer sends data.
|
||
|
||
- bpo-38470: Fix ``test_compileall.test_compile_dir_maxlevels()`` on Windows
|
||
without long path support: only create 3 subdirectories instead of between
|
||
20 and 100 subdirectories.
|
||
|
||
- bpo-37531: On timeout, regrtest no longer attempts to call
|
||
``popen.communicate()`` again: it can hang until all child processes using
|
||
stdout and stderr pipes completes. Kill the worker process and ignores its
|
||
output. Change also the faulthandler timeout of the main process from 1
|
||
minute to 5 minutes, for Python slowest buildbots.
|
||
|
||
- bpo-38239: Fix test_gdb for Link Time Optimization (LTO) builds.
|
||
|
||
- bpo-38275: test_ssl now handles disabled TLS/SSL versions better.
|
||
OpenSSL's crypto policy and run-time settings are recognized and tests for
|
||
disabled versions are skipped. Tests also accept more TLS minimum_versions
|
||
for platforms that override OpenSSL's default with strict settings.
|
||
|
||
- bpo-38271: The private keys for test_ssl were encrypted with 3DES in
|
||
traditional PKCS#5 format. 3DES and the digest algorithm of PKCS#5 are
|
||
blocked by some strict crypto policies. Use PKCS#8 format with AES256
|
||
encryption instead.
|
||
|
||
- bpo-38270: test.support now has a helper function to check for
|
||
availability of a hash digest function. Several tests are refactored avoid
|
||
MD5 and use SHA256 instead. Other tests are marked to use MD5 and skipped
|
||
when MD5 is disabled.
|
||
|
||
- bpo-37123: Multiprocessing test test_mymanager() now also expects
|
||
-SIGTERM, not only exitcode 0. BaseManager._finalize_manager() sends
|
||
SIGTERM to the manager process if it takes longer than 1 second to stop,
|
||
which happens on slow buildbots.
|
||
|
||
- bpo-38212: Multiprocessing tests: increase
|
||
test_queue_feeder_donot_stop_onexc() timeout from 1 to 60 seconds.
|
||
|
||
- bpo-38117: Test with OpenSSL 1.1.1d
|
||
|
||
- bpo-38018: Increase code coverage for multiprocessing.shared_memory.
|
||
|
||
- bpo-37805: Add tests for json.dump(..., skipkeys=True). Patch by Dong-hee
|
||
Na.
|
||
|
||
- bpo-37531: Enhance regrtest multiprocess timeout: write a message when
|
||
killing a worker process, catch popen.kill() and popen.wait() exceptions,
|
||
put a timeout on the second call to popen.communicate().
|
||
|
||
- bpo-37876: Add tests for ROT-13 codec.
|
||
|
||
- bpo-36833: Added tests for PyDateTime_xxx_GET_xxx() macros of the C API of
|
||
the :mod:`datetime` module. Patch by Joannah Nanjekye.
|
||
|
||
- bpo-37558: Fix test_shared_memory_cleaned_after_process_termination name
|
||
handling
|
||
|
||
- bpo-37526: Add :func:`test.support.catch_threading_exception`: context
|
||
manager catching :class:`threading.Thread` exception using
|
||
:func:`threading.excepthook`.
|
||
|
||
- bpo-37421: test_concurrent_futures now explicitly stops the ForkServer
|
||
instance if it's running.
|
||
|
||
- bpo-37421: multiprocessing tests now stop the ForkServer instance if it's
|
||
running: close the "alive" file descriptor to ask the server to stop and
|
||
then remove its UNIX address.
|
||
|
||
- bpo-37421: test_distutils.test_build_ext() is now able to remove the
|
||
temporary directory on Windows: don't import the newly built C extension
|
||
("xx") in the current process, but test it in a separated process.
|
||
|
||
- bpo-37421: test_concurrent_futures now cleans up multiprocessing to remove
|
||
immediately temporary directories created by
|
||
multiprocessing.util.get_temp_dir().
|
||
|
||
- bpo-37421: test_winconsoleio doesn't leak a temporary file anymore: use
|
||
tempfile.TemporaryFile() to remove it when the test completes.
|
||
|
||
- bpo-37421: multiprocessing tests now explicitly call ``_run_finalizers()``
|
||
to immediately remove temporary directories created by tests.
|
||
|
||
- bpo-37421: urllib.request tests now call
|
||
:func:`~urllib.request.urlcleanup` to remove temporary files created by
|
||
``urlretrieve()`` tests and to clear the ``_opener`` global variable set
|
||
by ``urlopen()`` and functions calling indirectly ``urlopen()``.
|
||
|
||
- bpo-37472: Remove ``Lib/test/outstanding_bugs.py``.
|
||
|
||
- bpo-37199: Fix test failures when IPv6 is unavailable or disabled.
|
||
|
||
- bpo-19696: Replace deprecated method "random.choose" with "random.choice"
|
||
in "test_pkg_import.py".
|
||
|
||
- bpo-37335: Remove no longer necessary code from c locale coercion tests
|
||
|
||
- bpo-37421: Fix test_shutil to no longer leak temporary files.
|
||
|
||
- bpo-37411: Fix test_wsgiref.testEnviron() to no longer depend on the
|
||
environment variables (don't fail if "X" variable is set).
|
||
|
||
- bpo-37400: Fix test_os.test_chown(): use os.getgroups() rather than
|
||
grp.getgrall() to get groups. Rename also the test to test_chown_gid().
|
||
|
||
- bpo-37359: Add --cleanup option to python3 -m test to remove
|
||
``test_python_*`` directories of previous failed jobs. Add "make
|
||
cleantest" to run ``python3 -m test --cleanup``.
|
||
|
||
- bpo-37362: test_gdb no longer fails if it gets an "unexpected" message on
|
||
stderr: it now ignores stderr. The purpose of test_gdb is to test that
|
||
python-gdb.py commands work as expected, not to test gdb.
|
||
|
||
- bpo-35998: Avoid TimeoutError in test_asyncio: test_start_tls_server_1()
|
||
|
||
- bpo-37278: Fix test_asyncio ProactorLoopCtrlC: join the thread to prevent
|
||
leaking a running thread and leaking a reference.
|
||
|
||
- bpo-37261: Fix :func:`test.support.catch_unraisable_exception`: its
|
||
__exit__() method now ignores unraisable exception raised when clearing
|
||
its ``unraisable`` attribute.
|
||
|
||
- bpo-37069: regrtest now uses :func:`sys.unraisablehook` to mark a test as
|
||
"environment altered" (ENV_CHANGED) if it emits an "unraisable exception".
|
||
Moreover, regrtest logs a warning in this case.
|
||
|
||
Use ``python3 -m test --fail-env-changed`` to catch unraisable exceptions
|
||
in tests.
|
||
|
||
- bpo-37252: Fix assertions in ``test_close`` and
|
||
``test_events_mask_overflow`` devpoll tests.
|
||
|
||
- bpo-37169: Rewrite ``_PyObject_IsFreed()`` unit tests.
|
||
|
||
- bpo-37153: ``test_venv.test_multiprocessing()`` now explicitly calls
|
||
``pool.terminate()`` to wait until the pool completes.
|
||
|
||
- bpo-34001: Make test_ssl pass with LibreSSL. LibreSSL handles minimum and
|
||
maximum TLS version differently than OpenSSL.
|
||
|
||
- bpo-36919: Make ``test_source_encoding.test_issue2301`` implementation
|
||
independent. The test will work now for both CPython and IronPython.
|
||
|
||
- bpo-30202: Update ``test.test_importlib.test_abc`` to test
|
||
``find_spec()``.
|
||
|
||
- bpo-28009: Modify the test_uuid logic to test when a program is available
|
||
AND can be used to obtain a MACADDR as basis for an UUID. Patch by M. Felt
|
||
|
||
- bpo-34596: Fallback to a default reason when :func:`unittest.skip` is
|
||
uncalled. Patch by Naitree Zhu.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-38809: On Windows, build scripts will now recognize and use python.exe
|
||
from an active virtual env.
|
||
|
||
- bpo-38684: Fix _hashlib build when Blake2 is disabled, but OpenSSL
|
||
supports it.
|
||
|
||
- bpo-38468: Misc/python-config.in now uses `getvar()` for all still
|
||
existing `sysconfig.get_config_var()` calls. Patch by Joannah Nanjekye.
|
||
|
||
- bpo-37415: Fix stdatomic.h header check for ICC compiler: the ICC
|
||
implementation lacks atomic_uintptr_t type which is needed by Python.
|
||
|
||
- bpo-38301: In Solaris family, we must be sure to use ``-D_REENTRANT``.
|
||
Patch by Jesús Cea Avión.
|
||
|
||
- bpo-36002: Locate ``llvm-profdata`` and ``llvm-ar`` binaries using
|
||
``AC_PATH_TOOL`` rather than ``AC_PATH_TARGET_TOOL``.
|
||
|
||
- bpo-37936: The :file:`.gitignore` file systematically keeps "rooted", with
|
||
a non-trailing slash, all the rules that are meant to apply to files in a
|
||
specific place in the repo. Previously, when the intended file to ignore
|
||
happened to be at the root of the repo, we'd most often accidentally also
|
||
ignore files and directories with the same name anywhere in the tree.
|
||
|
||
- bpo-37760: The :file:`Tools/unicode/makeunicodedata.py` script, which is
|
||
used for converting information from the Unicode Character Database into
|
||
generated code and data used by the methods of :class:`str` and by the
|
||
:mod:`unicodedata` module, now handles each character's data as a
|
||
``dataclass`` with named attributes, rather than a length-18 list of
|
||
different fields.
|
||
|
||
- bpo-37936: The :file:`.gitignore` file no longer applies to any files that
|
||
are in fact tracked in the Git repository. Patch by Greg Price.
|
||
|
||
- bpo-37725: Change "clean" makefile target to also clean the program guided
|
||
optimization (PGO) data. Previously you would have to use "make clean"
|
||
and "make profile-removal", or "make clobber".
|
||
|
||
- bpo-37707: Mark some individual tests to skip when --pgo is used. The
|
||
tests marked increase the PGO task time significantly and likely don't
|
||
help improve optimization of the final executable.
|
||
|
||
- bpo-36044: Reduce the number of unit tests run for the PGO generation
|
||
task. This speeds up the task by a factor of about 15x. Running the full
|
||
unit test suite is slow. This change may result in a slightly less
|
||
optimized build since not as many code branches will be executed. If you
|
||
are willing to wait for the much slower build, the old behavior can be
|
||
restored using './configure [..] PROFILE_TASK="-m test --pgo-extended"'.
|
||
We make no guarantees as to which PGO task set produces a faster build.
|
||
Users who care should run their own relevant benchmarks as results can
|
||
depend on the environment, workload, and compiler tool chain.
|
||
|
||
- bpo-37468: ``make install`` no longer installs ``wininst-*.exe`` files
|
||
used by distutils bdist_wininst: bdist_wininst only works on Windows.
|
||
|
||
- bpo-37189: Many ``PyRun_XXX()`` functions like :c:func:`PyRun_String` were
|
||
no longer exported in ``libpython38.dll`` by mistake. Export them again to
|
||
fix the ABI compatibility.
|
||
|
||
- bpo-25361: Enables use of SSE2 instructions in Windows 32-bit build.
|
||
|
||
- bpo-36210: Update optional extension module detection for AIX. ossaudiodev
|
||
and spwd are not applicable for AIX, and are no longer reported as
|
||
missing. 3rd-party packaging of ncurses (with ASIS support) conflicts with
|
||
officially supported AIX curses library, so configure AIX to use
|
||
libcurses.a. However, skip trying to build _curses_panel.
|
||
|
||
patch by M Felt
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-38589: Fixes HTML Help shortcut when Windows is not installed to C
|
||
drive
|
||
|
||
- bpo-38453: Ensure ntpath.realpath() correctly resolves relative paths.
|
||
|
||
- bpo-38519: Restores the internal C headers that were missing from the
|
||
nuget.org and Microsoft Store packages.
|
||
|
||
- bpo-38492: Remove ``pythonw.exe`` dependency on the Microsoft C++ runtime.
|
||
|
||
- bpo-38344: Fix error message in activate.bat
|
||
|
||
- bpo-38359: Ensures ``pyw.exe`` launcher reads correct registry key.
|
||
|
||
- bpo-38355: Fixes ``ntpath.realpath`` failing on ``sys.executable``.
|
||
|
||
- bpo-38117: Update bundled OpenSSL to 1.1.1d
|
||
|
||
- bpo-38092: Reduce overhead when using multiprocessing in a Windows virtual
|
||
environment.
|
||
|
||
- bpo-38133: Allow py.exe launcher to locate installations from the
|
||
Microsoft Store and improve display of active virtual environments.
|
||
|
||
- bpo-38114: The ``pip.ini`` is no longer included in the Nuget package.
|
||
|
||
- bpo-32592: Set Windows 8 as the minimum required version for API support
|
||
|
||
- bpo-36634: :func:`os.cpu_count` now returns active processors rather than
|
||
maximum processors.
|
||
|
||
- bpo-36634: venv activate.bat now works when the existing variables contain
|
||
double quote characters.
|
||
|
||
- bpo-38081: Prevent error calling :func:`os.path.realpath` on ``'NUL'``.
|
||
|
||
- bpo-38087: Fix case sensitivity in test_pathlib and test_ntpath.
|
||
|
||
- bpo-38088: Fixes distutils not finding vcruntime140.dll with only the v142
|
||
toolset installed.
|
||
|
||
- bpo-37283: Ensure command-line and unattend.xml setting override
|
||
previously detected states in Windows installer.
|
||
|
||
- bpo-38030: Fixes :func:`os.stat` failing for block devices on Windows
|
||
|
||
- bpo-38020: Fixes potential crash when calling :func:`os.readlink` (or
|
||
indirectly through :func:`~os.path.realpath`) on a file that is not a
|
||
supported link.
|
||
|
||
- bpo-37705: Improve the implementation of ``winerror_to_errno()``.
|
||
|
||
- bpo-37549: :func:`os.dup` no longer fails for standard streams on Windows
|
||
7.
|
||
|
||
- bpo-1311: The ``nul`` file on Windows now returns True from
|
||
:func:`~os.path.exists` and a valid result from :func:`os.stat` with
|
||
``S_IFCHR`` set.
|
||
|
||
- bpo-9949: Enable support for following symlinks in :func:`os.realpath`.
|
||
|
||
- bpo-37834: Treat all name surrogate reparse points on Windows in
|
||
:func:`os.lstat` and other reparse points as regular files in
|
||
:func:`os.stat`.
|
||
|
||
- bpo-36266: Add the module name in the formatted error message when DLL
|
||
load fail happens during module import in
|
||
``_PyImport_FindSharedFuncptrWindows()``. Patch by Srinivas Nyayapati.
|
||
|
||
- bpo-25172: Trying to import the :mod:`crypt` module on Windows will result
|
||
in an :exc:`ImportError` with a message explaining that the module isn't
|
||
supported on Windows. On other platforms, if the underlying ``_crypt``
|
||
module is not available, the ImportError will include a message explaining
|
||
the problem.
|
||
|
||
- bpo-37778: Fixes the icons used for file associations to the Microsoft
|
||
Store package.
|
||
|
||
- bpo-37734: Fix use of registry values to launch Python from Microsoft
|
||
Store app.
|
||
|
||
- bpo-37702: Fix memory leak on Windows in creating an SSLContext object or
|
||
running urllib.request.urlopen('https://...').
|
||
|
||
- bpo-37672: Switch Windows Store package's pip to use bundled
|
||
:file:`pip.ini` instead of :envvar:`PIP_USER` variable.
|
||
|
||
- bpo-10945: Officially drop support for creating bdist_wininst installers
|
||
on non-Windows systems.
|
||
|
||
- bpo-37445: Include the ``FORMAT_MESSAGE_IGNORE_INSERTS`` flag in
|
||
``FormatMessageW()`` calls.
|
||
|
||
- bpo-37369: Fixes path for :data:`sys.executable` when running from the
|
||
Microsoft Store.
|
||
|
||
- bpo-37380: Don't collect unfinished processes with ``subprocess._active``
|
||
on Windows to cleanup later. Patch by Ruslan Kuprieiev.
|
||
|
||
- bpo-37351: Removes libpython38.a from standard Windows distribution.
|
||
|
||
- bpo-35360: Update Windows builds to use SQLite 3.28.0.
|
||
|
||
- bpo-37267: On Windows, :func:`os.dup` no longer creates an inheritable fd
|
||
when handling a character file.
|
||
|
||
- bpo-36779: Ensure ``time.tzname`` is correct on Windows when the active
|
||
code page is set to CP_UTF7 or CP_UTF8.
|
||
|
||
- bpo-32587: Make :data:`winreg.REG_MULTI_SZ` support zero-length strings.
|
||
|
||
- bpo-28269: Replace use of :c:func:`strcasecmp` for the system function
|
||
:c:func:`_stricmp`. Patch by Minmin Gong.
|
||
|
||
- bpo-36590: Add native Bluetooth RFCOMM support to socket module.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-38117: Updated OpenSSL to 1.1.1d in macOS installer.
|
||
|
||
- bpo-38089: Move Azure Pipelines to latest VM versions and make macOS tests
|
||
optional
|
||
|
||
- bpo-18049: Increase the default stack size of threads from 5MB to 16MB on
|
||
macOS, to match the stack size of the main thread. This avoids crashes on
|
||
deep recursion in threads.
|
||
|
||
- bpo-34602: Avoid test suite failures on macOS by no longer calling
|
||
resource.setrlimit to increase the process stack size limit at runtime.
|
||
The runtime change is no longer needed since the interpreter is being
|
||
built with a larger default stack size.
|
||
|
||
- bpo-35360: Update macOS installer to use SQLite 3.28.0.
|
||
|
||
- bpo-34631: Updated OpenSSL to 1.1.1c in macOS installer.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-26353: Stop adding newline when saving an IDLE shell window.
|
||
|
||
- bpo-4630: Add an option to toggle IDLE's cursor blink for shell, editor,
|
||
and output windows. See Settings, General, Window Preferences, Cursor
|
||
Blink. Patch by Zackery Spytz.
|
||
|
||
- bpo-38598: Do not try to compile IDLE shell or output windows
|
||
|
||
- bpo-36698: IDLE no longer fails when write non-encodable characters to
|
||
stderr. It now escapes them with a backslash, as the regular Python
|
||
interpreter. Added the ``errors`` field to the standard streams.
|
||
|
||
- bpo-35379: When exiting IDLE, catch any AttributeError. One happens when
|
||
EditorWindow.close is called twice. Printing a traceback, when IDLE is
|
||
run from a terminal, is useless and annoying.
|
||
|
||
- bpo-38183: To avoid problems, test_idle ignores the user config directory.
|
||
It no longer tries to create or access .idlerc or any files within. Users
|
||
must run IDLE to discover problems with saving settings.
|
||
|
||
- bpo-38077: IDLE no longer adds 'argv' to the user namespace when
|
||
initializing it. This bug only affected 3.7.4 and 3.8.0b2 to 3.8.0b4.
|
||
|
||
- bpo-38041: Shell restart lines now fill the window width, always start
|
||
with '=', and avoid wrapping unnecessarily. The line will still wrap if
|
||
the included file name is long relative to the width.
|
||
|
||
- bpo-35771: To avoid occasional spurious test_idle failures on slower
|
||
machines, increase the ``hover_delay`` in test_tooltip.
|
||
|
||
- bpo-37824: Properly handle user input warnings in IDLE shell. Cease
|
||
turning SyntaxWarnings into SyntaxErrors.
|
||
|
||
- bpo-37929: IDLE Settings dialog now closes properly when there is no shell
|
||
window.
|
||
|
||
- bpo-37902: Add mousewheel scrolling for IDLE module, path, and stack
|
||
browsers. Patch by George Zhang.
|
||
|
||
- bpo-37849: Fixed completions list appearing too high or low when shown
|
||
above the current line.
|
||
|
||
- bpo-36419: Refactor IDLE autocomplete and improve testing.
|
||
|
||
- bpo-37748: Reorder the Run menu. Put the most common choice, Run Module,
|
||
at the top.
|
||
|
||
- bpo-37692: Improve highlight config sample with example shell interaction
|
||
and better labels for shell elements.
|
||
|
||
- bpo-37628: Settings dialog no longer expands with font size.
|
||
|
||
- bpo-37627: Initialize the Customize Run dialog with the command line
|
||
arguments most recently entered before. The user can optionally edit
|
||
before submitting them.
|
||
|
||
- bpo-33610: Fix code context not showing the correct context when first
|
||
toggled on.
|
||
|
||
- bpo-37530: Optimize code context to reduce unneeded background activity.
|
||
Font and highlight changes now occur along with text changes instead of
|
||
after a random delay.
|
||
|
||
- bpo-27452: Cleanup ``config.py`` by inlining ``RemoveFile`` and
|
||
simplifying the handling of ``file`` in ``CreateConfigHandlers``.
|
||
|
||
- bpo-37325: Fix tab focus traversal order for help source and custom run
|
||
dialogs.
|
||
|
||
- bpo-37321: Both subprocess connection error messages now refer to the
|
||
'Startup failure' section of the IDLE doc.
|
||
|
||
- bpo-17535: Add optional line numbers for IDLE editor windows. Windows
|
||
open without line numbers unless set otherwise in the General tab of the
|
||
configuration dialog.
|
||
|
||
- bpo-26806: To compensate for stack frames added by IDLE and avoid possible
|
||
problems with low recursion limits, add 30 to limits in the user code
|
||
execution process. Subtract 30 when reporting recursion limits to make
|
||
this addition mostly transparent.
|
||
|
||
- bpo-37177: Properly 'attach' search dialogs to their main window so that
|
||
they behave like other dialogs and do not get hidden behind their main
|
||
window.
|
||
|
||
- bpo-37039: Adjust "Zoom Height" to individual screens by momentarily
|
||
maximizing the window on first use with a particular screen. Changing
|
||
screen settings may invalidate the saved height. While a window is
|
||
maximized, "Zoom Height" has no effect.
|
||
|
||
- bpo-35763: Make calltip reminder about '/' meaning positional-only less
|
||
obtrusive by only adding it when there is room on the first line.
|
||
|
||
- bpo-5680: Add 'Run... Customized' to the Run menu to run a module with
|
||
customized settings. Any 'command line arguments' entered are added to
|
||
sys.argv. One can suppress the normal Shell main module restart.
|
||
|
||
- bpo-36390: Gather Format menu functions into format.py. Combine
|
||
paragraph.py, rstrip.py, and format methods from editor.py.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-38118: Update Valgrind suppression file to ignore a false alarm in
|
||
:c:func:`PyUnicode_Decode` when using GCC builtin strcmp().
|
||
|
||
- bpo-38347: pathfix.py: Assume all files that end on '.py' are Python
|
||
scripts when working recursively.
|
||
|
||
- bpo-37803: pdb's ``--help`` and ``--version`` long options now work.
|
||
|
||
- bpo-37942: Improve ArgumentClinic converter for floats.
|
||
|
||
- bpo-37704: Remove ``Tools/scripts/h2py.py``: use cffi to access a C API in
|
||
Python.
|
||
|
||
- bpo-37675: 2to3 now works when run from a zipped standard library.
|
||
|
||
- bpo-37034: Argument Clinic now uses the argument name on errors with
|
||
keyword-only argument instead of their position. Patch contributed by Rémi
|
||
Lapeyre.
|
||
|
||
- bpo-37064: Add option -k to pathscript.py script: preserve shebang flags.
|
||
Add option -a to pathscript.py script: add flags.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-37633: Re-export some function compatibility wrappers for macros in
|
||
``pythonrun.h``.
|
||
|
||
- bpo-38644: Provide :c:func:`Py_EnterRecursiveCall` and
|
||
:c:func:`Py_LeaveRecursiveCall` as regular functions for the limited API.
|
||
Previously, there were defined as macros, but these macros didn't work
|
||
with the limited API which cannot access ``PyThreadState.recursion_depth``
|
||
field. Remove ``_Py_CheckRecursionLimit`` from the stable ABI.
|
||
|
||
- bpo-38650: The global variable :c:data:`PyStructSequence_UnnamedField` is
|
||
now a constant and refers to a constant string.
|
||
|
||
- bpo-38540: Fixed possible leak in :c:func:`PyArg_Parse` and similar
|
||
functions for format units ``"es#"`` and ``"et#"`` when the macro
|
||
:c:macro:`PY_SSIZE_T_CLEAN` is not defined.
|
||
|
||
- bpo-38395: Fix a crash in :class:`weakref.proxy` objects due to incorrect
|
||
lifetime management when calling some associated methods that may delete
|
||
the last reference to object being referenced by the proxy. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-36389: The ``_PyObject_CheckConsistency()`` function is now also
|
||
available in release mode. For example, it can be used to debug a crash in
|
||
the ``visit_decref()`` function of the GC.
|
||
|
||
- bpo-38266: Revert the removal of PyThreadState_DeleteCurrent() with
|
||
documentation.
|
||
|
||
- bpo-38303: Update audioop extension module to use the stable ABI
|
||
(PEP-384). Patch by Tyler Kieft.
|
||
|
||
- bpo-38234: :c:func:`Py_SetPath` now sets :data:`sys.executable` to the
|
||
program full path (:c:func:`Py_GetProgramFullPath`) rather than to the
|
||
program name (:c:func:`Py_GetProgramName`).
|
||
|
||
- bpo-38234: Python ignored arguments passed to :c:func:`Py_SetPath`,
|
||
:c:func:`Py_SetPythonHome` and :c:func:`Py_SetProgramName`: fix Python
|
||
initialization to use specified arguments.
|
||
|
||
- bpo-38205: The :c:func:`Py_UNREACHABLE` macro now calls
|
||
:c:func:`Py_FatalError`.
|
||
|
||
- bpo-38140: Make dict and weakref offsets opaque for C heap types by
|
||
passing the offsets through PyMemberDef
|
||
|
||
- bpo-15088: The C function ``PyGen_NeedsFinalizing`` has been removed. It
|
||
was not documented, tested or used anywhere within CPython after the
|
||
implementation of :pep:`442`. Patch by Joannah Nanjekye. (Patch by Joannah
|
||
Nanjekye)
|
||
|
||
- bpo-36763: Options added by ``PySys_AddXOption()`` are now handled the
|
||
same way than ``PyConfig.xoptions`` and command line ``-X`` options.
|
||
|
||
- bpo-37926: Fix a crash in ``PySys_SetArgvEx(0, NULL, 0)``.
|
||
|
||
- bpo-37879: Fix subtype_dealloc to suppress the type decref when the base
|
||
type is a C heap type
|
||
|
||
- bpo-37645: Add :c:func:`_PyObject_FunctionStr` to get a user-friendly
|
||
string representation of a function-like object. Patch by Jeroen Demeyer.
|
||
|
||
- bpo-29548: The functions ``PyEval_CallObject``, ``PyEval_CallFunction``,
|
||
``PyEval_CallMethod`` and ``PyEval_CallObjectWithKeywords`` are
|
||
deprecated. Use :c:func:`PyObject_Call` and its variants instead.
|
||
|
||
- bpo-37151: ``PyCFunction_Call`` is now a deprecated alias of
|
||
:c:func:`PyObject_Call`.
|
||
|
||
- bpo-37540: The vectorcall protocol now requires that the caller passes
|
||
only strings as keyword names.
|
||
|
||
- bpo-37207: The vectorcall protocol is now enabled for ``type`` objects:
|
||
set ``tp_vectorcall`` to a vectorcall function to be used instead of
|
||
``tp_new`` and ``tp_init`` when calling the class itself.
|
||
|
||
- bpo-21120: Exclude Python-ast.h, ast.h and asdl.h from the limited API.
|
||
|
||
- bpo-37483: Add new function ``_PyObject_CallOneArg`` for calling an object
|
||
with one positional argument.
|
||
|
||
- bpo-36763: Add :func:`PyConfig_SetWideStringList` function.
|
||
|
||
- bpo-37337: Add fast functions for calling methods:
|
||
:c:func:`_PyObject_VectorcallMethod`, :c:func:`_PyObject_CallMethodNoArgs`
|
||
and :c:func:`_PyObject_CallMethodOneArg`.
|
||
|
||
- bpo-28805: The :const:`METH_FASTCALL` calling convention has been
|
||
documented.
|
||
|
||
- bpo-37221: The new function :c:func:`PyCode_NewWithPosOnlyArgs` allows to
|
||
create code objects like :c:func:`PyCode_New`, but with an extra
|
||
*posonlyargcount* parameter for indicating the number of positonal-only
|
||
arguments.
|
||
|
||
- bpo-37215: Fix dtrace issue introduce by bpo-36842
|
||
|
||
- bpo-37194: Add a new public :c:func:`PyObject_CallNoArgs` function to the
|
||
C API: call a callable Python object without any arguments. It is the most
|
||
efficient way to call a callback without any argument. On x86-64, for
|
||
example, ``PyObject_CallFunctionObjArgs(func, NULL)`` allocates 960 bytes
|
||
on the stack per call, whereas ``PyObject_CallNoArgs(func)`` only
|
||
allocates 624 bytes per call.
|
||
|
||
- bpo-37170: Fix the cast on error in
|
||
:c:func:`PyLong_AsUnsignedLongLongMask()`.
|
||
|
||
- bpo-35381: Convert posixmodule.c statically allocated types
|
||
``DirEntryType`` and ``ScandirIteratorType`` to heap-allocated types.
|
||
|
||
- bpo-34331: Use singular/plural noun in error message when instantiating an
|
||
abstract class with non-overriden abstract method(s).
|
||
|
||
|
||
What's New in Python 3.8.0 beta 1?
|
||
==================================
|
||
|
||
*Release date: 2019-06-04*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-35907: CVE-2019-9948: Avoid file reading by disallowing
|
||
``local-file://`` and ``local_file://`` URL schemes in
|
||
``URLopener().open()`` and ``URLopener().retrieve()`` of
|
||
:mod:`urllib.request`.
|
||
|
||
- bpo-33529: Prevent fold function used in email header encoding from
|
||
entering infinite loop when there are too many non-ASCII characters in a
|
||
header.
|
||
|
||
- bpo-33164: Updated blake2 implementation which uses secure memset
|
||
implementation provided by platform.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-35814: Allow unpacking in the right hand side of annotated
|
||
assignments. In particular, ``t: Tuple[int, ...] = x, y, *z`` is now
|
||
allowed.
|
||
|
||
- bpo-37126: All structseq objects are now tracked by the garbage collector.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-37122: Make the *co_argcount* attribute of code objects represent the
|
||
total number of positional arguments (including positional-only
|
||
arguments). The value of *co_posonlyargcount* can be used to distinguish
|
||
which arguments are positional only, and the difference (*co_argcount* -
|
||
*co_posonlyargcount*) is the number of positional-or-keyword arguments.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-20092: Constructors of :class:`int`, :class:`float` and
|
||
:class:`complex` will now use the :meth:`~object.__index__` special
|
||
method, if available and the corresponding method :meth:`~object.__int__`,
|
||
:meth:`~object.__float__` or :meth:`~object.__complex__` is not available.
|
||
|
||
- bpo-37087: Add native thread ID (TID) support to OpenBSD.
|
||
|
||
- bpo-26219: Implemented per opcode cache mechanism and ``LOAD_GLOBAL``
|
||
instruction use it. ``LOAD_GLOBAL`` is now about 40% faster. Contributed
|
||
by Yury Selivanov, and Inada Naoki.
|
||
|
||
- bpo-37072: Fix crash in PyAST_FromNodeObject() when flags is NULL.
|
||
|
||
- bpo-37029: Freeing a great many small objects could take time quadratic in
|
||
the number of arenas, due to using linear search to keep ``obmalloc.c``'s
|
||
list of usable arenas sorted by order of number of free memory pools.
|
||
This is accomplished without search now, leaving the worst-case time
|
||
linear in the number of arenas. For programs where this quite visibly
|
||
matters (typically with more than 100 thousand small objects alive
|
||
simultaneously), this can greatly reduce the time needed to release their
|
||
memory.
|
||
|
||
- bpo-26423: Fix possible overflow in ``wrap_lenfunc()`` when ``sizeof(long)
|
||
< sizeof(Py_ssize_t)`` (e.g., 64-bit Windows).
|
||
|
||
- bpo-37050: Improve the AST for "debug" f-strings, which use '=' to print
|
||
out the source of the expression being evaluated. Delete expr_text from
|
||
the FormattedValue node, and instead use a Constant string node (possibly
|
||
merged with adjacent constant expressions inside the f-string).
|
||
|
||
- bpo-22385: The `bytes.hex`, `bytearray.hex`, and `memoryview.hex` methods
|
||
as well as the `binascii.hexlify` and `b2a_hex` functions now have the
|
||
ability to include an optional separator between hex bytes. This
|
||
functionality was inspired by MicroPython's hexlify implementation.
|
||
|
||
- bpo-26836: Add :func:`os.memfd_create`.
|
||
|
||
- bpo-37032: Added new ``replace()`` method to the code type
|
||
(:class:`types.CodeType`).
|
||
|
||
- bpo-37007: Implement :func:`socket.if_nameindex()`,
|
||
:func:`socket.if_nametoindex()`, and :func:`socket.if_indextoname()` on
|
||
Windows.
|
||
|
||
- bpo-36829: :c:func:`PyErr_WriteUnraisable` now creates a traceback object
|
||
if there is no current traceback. Moreover, call
|
||
:c:func:`PyErr_NormalizeException` and :c:func:`PyException_SetTraceback`
|
||
to normalize the exception value. Ignore any error.
|
||
|
||
- bpo-36878: Only accept text after `# type: ignore` if the first character
|
||
is ASCII. This is to disallow things like `# type: ignoreé`.
|
||
|
||
- bpo-36878: Store text appearing after a `# type: ignore` comment in the
|
||
AST. For example a type ignore like `# type: ignore[E1000]` will have the
|
||
string `"[E1000]"` stored in its AST node.
|
||
|
||
- bpo-2180: Treat line continuation at EOF as a ``SyntaxError`` by Anthony
|
||
Sottile.
|
||
|
||
- bpo-36907: Fix a crash when calling a C function with a keyword dict
|
||
(``f(**kwargs)``) and changing the dict ``kwargs`` while that function is
|
||
running.
|
||
|
||
- bpo-36946: Fix possible signed integer overflow when handling slices.
|
||
|
||
- bpo-36826: Add NamedExpression kind support to ast_unparse.c
|
||
|
||
- bpo-1875: A :exc:`SyntaxError` is now raised if a code blocks that will be
|
||
optimized away (e.g. if conditions that are always false) contains syntax
|
||
errors. Patch by Pablo Galindo.
|
||
|
||
- bpo-36027: Allow computation of modular inverses via three-argument
|
||
``pow``: the second argument is now permitted to be negative in the case
|
||
where the first and third arguments are relatively prime.
|
||
|
||
- bpo-36861: Update the Unicode database to version 12.1.0.
|
||
|
||
- bpo-28866: Avoid caching attributes of classes which type defines mro() to
|
||
avoid a hard cache invalidation problem.
|
||
|
||
- bpo-36851: The ``FrameType`` stack is now correctly cleaned up if the
|
||
execution ends with a return and the stack is not empty.
|
||
|
||
- bpo-34616: The ``compile()`` builtin functions now support the
|
||
``ast.PyCF_ALLOW_TOP_LEVEL_AWAIT`` flag, which allow to compile sources
|
||
that contains top-level ``await``, ``async with`` or ``async for``. This
|
||
is useful to evaluate async-code from with an already async functions; for
|
||
example in a custom REPL.
|
||
|
||
- bpo-36842: Implement PEP 578, adding sys.audit, io.open_code and related
|
||
APIs.
|
||
|
||
- bpo-27639: Correct return type for UserList slicing operations. Patch by
|
||
Michael Blahay, Erick Cervantes, and vaultah
|
||
|
||
- bpo-36737: Move PyRuntimeState.warnings into per-interpreter state (via
|
||
"module state").
|
||
|
||
- bpo-36793: Removed ``__str__`` implementations from builtin types
|
||
:class:`bool`, :class:`int`, :class:`float`, :class:`complex` and few
|
||
classes from the standard library. They now inherit ``__str__()`` from
|
||
:class:`object`.
|
||
|
||
- bpo-36817: Add a ``=`` feature f-strings for debugging. This can precede
|
||
``!s``, ``!r``, or ``!a``. It produces the text of the expression,
|
||
followed by an equal sign, followed by the repr of the value of the
|
||
expression. So ``f'{3*9+15=}'`` would be equal to the string
|
||
``'3*9+15=42'``. If ``=`` is specified, the default conversion is set to
|
||
``!r``, unless a format spec is given, in which case the formatting
|
||
behavior is unchanged, and __format__ will be used.
|
||
|
||
- bpo-24048: Save the live exception during import.c's ``remove_module()``.
|
||
|
||
- bpo-27987: pymalloc returns memory blocks aligned by 16 bytes, instead of
|
||
8 bytes, on 64-bit platforms to conform x86-64 ABI. Recent compilers
|
||
assume this alignment more often. Patch by Inada Naoki.
|
||
|
||
- bpo-36601: A long-since-meaningless check for ``getpid() == main_pid`` was
|
||
removed from Python's internal C signal handler.
|
||
|
||
- bpo-36594: Fix incorrect use of ``%p`` in format strings. Patch by Zackery
|
||
Spytz.
|
||
|
||
- bpo-36045: builtins.help() now prefixes `async` for async functions
|
||
|
||
- bpo-36084: Add native thread ID (TID) to threading.Thread objects
|
||
(supported platforms: Windows, FreeBSD, Linux, macOS)
|
||
|
||
- bpo-36035: Added fix for broken symlinks in combination with pathlib
|
||
|
||
- bpo-35983: Added new trashcan macros to deal with a double deallocation
|
||
that could occur when the `tp_dealloc` of a subclass calls the
|
||
`tp_dealloc` of a base class and that base class uses the trashcan
|
||
mechanism. Patch by Jeroen Demeyer.
|
||
|
||
- bpo-20602: Do not clear :data:`sys.flags` and :data:`sys.float_info`
|
||
during shutdown. Patch by Zackery Spytz.
|
||
|
||
- bpo-26826: Expose :func:`copy_file_range` as a low level API in the
|
||
:mod:`os` module.
|
||
|
||
- bpo-32388: Remove cross-version binary compatibility requirement in
|
||
tp_flags.
|
||
|
||
- bpo-31862: Port binascii to PEP 489 multiphase initialization. Patch by
|
||
Marcel Plch.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-37128: Added :func:`math.perm`.
|
||
|
||
- bpo-37120: Add SSLContext.num_tickets to control the number of TLSv1.3
|
||
session tickets.
|
||
|
||
- bpo-12202: Fix the error handling in
|
||
:meth:`msilib.SummaryInformation.GetProperty`. Patch by Zackery Spytz.
|
||
|
||
- bpo-26835: The fcntl module now contains file sealing constants for
|
||
sealing of memfds.
|
||
|
||
- bpo-29262: Add ``get_origin()`` and ``get_args()`` introspection helpers
|
||
to ``typing`` module.
|
||
|
||
- bpo-12639: :meth:`msilib.Directory.start_component()` no longer fails if
|
||
*keyfile* is not ``None``.
|
||
|
||
- bpo-36999: Add the ``asyncio.Task.get_coro()`` method to publicly expose
|
||
the tasks's coroutine object.
|
||
|
||
- bpo-35246: Make :func:`asyncio.create_subprocess_exec` accept path-like
|
||
arguments.
|
||
|
||
- bpo-35279: Change default *max_workers* of ``ThreadPoolExecutor`` from
|
||
``cpu_count() * 5`` to ``min(32, cpu_count() + 4)``. Previous value was
|
||
unreasonably large on many cores machines.
|
||
|
||
- bpo-37076: :func:`_thread.start_new_thread` now logs uncaught exception
|
||
raised by the function using :func:`sys.unraisablehook`, rather than
|
||
:func:`sys.excepthook`, so the hook gets access to the function which
|
||
raised the exception.
|
||
|
||
- bpo-33725: On macOS, the :mod:`multiprocessing` module now uses *spawn*
|
||
start method by default.
|
||
|
||
- bpo-37054: Fix destructor :class:`_pyio.BytesIO` and
|
||
:class:`_pyio.TextIOWrapper`: initialize their ``_buffer`` attribute as
|
||
soon as possible (in the class body), because it's used by ``__del__()``
|
||
which calls ``close()``.
|
||
|
||
- bpo-37058: PEP 544: Add ``Protocol`` and ``@runtime_checkable`` to the
|
||
``typing`` module.
|
||
|
||
- bpo-36933: The functions ``sys.set_coroutine_wrapper`` and
|
||
``sys.get_coroutine_wrapper`` that were deprecated and marked for removal
|
||
in 3.8 have been removed.
|
||
|
||
- bpo-37047: Handle late binding and attribute access in
|
||
:class:`unittest.mock.AsyncMock` setup for autospeccing. Document newly
|
||
implemented async methods in :class:`unittest.mock.MagicMock`.
|
||
|
||
- bpo-37049: PEP 589: Add ``TypedDict`` to the ``typing`` module.
|
||
|
||
- bpo-37046: PEP 586: Add ``Literal`` to the ``typing`` module.
|
||
|
||
- bpo-37045: PEP 591: Add ``Final`` qualifier and ``@final`` decorator to
|
||
the ``typing`` module.
|
||
|
||
- bpo-37035: Don't log OSError based exceptions if a fatal error has
|
||
occurred in asyncio transport. Peer can generate almost any OSError, user
|
||
cannot avoid these exceptions by fixing own code. Errors are still
|
||
propagated to user code, it's just logging them is pointless and pollute
|
||
asyncio logs.
|
||
|
||
- bpo-37001: :func:`symtable.symtable` now accepts the same input types for
|
||
source code as the built-in :func:`compile` function. Patch by Dino
|
||
Viehland.
|
||
|
||
- bpo-37028: Implement asyncio REPL
|
||
|
||
- bpo-37027: Return safe to use proxy socket object from
|
||
transport.get_extra_info('socket')
|
||
|
||
- bpo-32528: Make asyncio.CancelledError a BaseException.
|
||
|
||
This will address the common mistake many asyncio users make: an "except
|
||
Exception" clause breaking Tasks cancellation.
|
||
|
||
In addition to this change, we stop inheriting asyncio.TimeoutError and
|
||
asyncio.InvalidStateError from their concurrent.futures.* counterparts.
|
||
There's no point for these exceptions to share the inheritance chain.
|
||
|
||
- bpo-1230540: Add a new :func:`threading.excepthook` function which handles
|
||
uncaught :meth:`threading.Thread.run` exception. It can be overridden to
|
||
control how uncaught :meth:`threading.Thread.run` exceptions are handled.
|
||
|
||
- bpo-36996: Handle :func:`unittest.mock.patch` used as a decorator on async
|
||
functions.
|
||
|
||
- bpo-37008: Add support for calling :func:`next` with the mock resulting
|
||
from :func:`unittest.mock.mock_open`
|
||
|
||
- bpo-27737: Allow whitespace only header encoding in ``email.header`` - by
|
||
Batuhan Taskaya
|
||
|
||
- bpo-36969: PDB command `args` now display positional only arguments.
|
||
Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-36969: PDB command `args` now display keyword only arguments. Patch
|
||
contributed by Rémi Lapeyre.
|
||
|
||
- bpo-36983: Add missing names to ``typing.__all__``: ``ChainMap``,
|
||
``ForwardRef``, ``OrderedDict`` - by Anthony Sottile.
|
||
|
||
- bpo-36972: Add SupportsIndex protocol to the typing module to allow type
|
||
checking to detect classes that can be passed to `hex()`, `oct()` and
|
||
`bin()`.
|
||
|
||
- bpo-32972: Implement ``unittest.IsolatedAsyncioTestCase`` to help testing
|
||
asyncio-based code.
|
||
|
||
- bpo-36952: :func:`fileinput.input` and :class:`fileinput.FileInput`
|
||
**bufsize** argument has been removed (was deprecated and ignored since
|
||
Python 3.6), and as a result the **mode** and **openhook** arguments have
|
||
been made keyword-only.
|
||
|
||
- bpo-36952: Starting with Python 3.3, importing ABCs from
|
||
:mod:`collections` is deprecated, and import should be done from
|
||
:mod:`collections.abc`. Still being able to import from :mod:`collections`
|
||
was marked for removal in 3.8, but has been delayed to 3.9; documentation
|
||
and ``DeprecationWarning`` clarified.
|
||
|
||
- bpo-36949: Implement __repr__ for WeakSet objects.
|
||
|
||
- bpo-36948: Fix :exc:`NameError` in
|
||
:meth:`urllib.request.URLopener.retrieve`. Patch by Karthikeyan
|
||
Singaravelan.
|
||
|
||
- bpo-33524: Fix the folding of email header when the max_line_length is 0
|
||
or None and the header contains non-ascii characters. Contributed by
|
||
Licht Takeuchi (@Licht-T).
|
||
|
||
- bpo-24564: :func:`shutil.copystat` now ignores :const:`errno.EINVAL` on
|
||
:func:`os.setxattr` which may occur when copying files on filesystems
|
||
without extended attributes support.
|
||
|
||
Original patch by Giampaolo Rodola, updated by Ying Wang.
|
||
|
||
- bpo-36888: Python child processes can now access the status of their
|
||
parent process using multiprocessing.process.parent_process
|
||
|
||
- bpo-36921: Deprecate ``@coroutine`` for sake of ``async def``.
|
||
|
||
- bpo-25652: Fix bug in ``__rmod__`` of ``UserString`` - by Batuhan Taskaya.
|
||
|
||
- bpo-36916: Remove a message about an unhandled exception in a task when
|
||
writer.write() is used without await and writer.drain() fails with an
|
||
exception.
|
||
|
||
- bpo-36889: Introduce :class:`asyncio.Stream` class that merges
|
||
:class:`asyncio.StreamReader` and :class:`asyncio.StreamWriter`
|
||
functionality. :class:`asyncio.Stream` can work in readonly, writeonly and
|
||
readwrite modes. Provide :func:`asyncio.connect`,
|
||
:func:`asyncio.connect_unix`, :func:`asyncio.connect_read_pipe` and
|
||
:func:`asyncio.connect_write_pipe` factories to open
|
||
:class:`asyncio.Stream` connections. Provide :class:`asyncio.StreamServer`
|
||
and :class:`UnixStreamServer` to serve servers with asyncio.Stream API.
|
||
Modify :func:`asyncio.create_subprocess_shell` and
|
||
:func:`asyncio.create_subprocess_exec` to use :class:`asyncio.Stream`
|
||
instead of deprecated :class:`StreamReader` and :class:`StreamWriter`.
|
||
Deprecate :class:`asyncio.StreamReader` and :class:`asyncio.StreamWriter`.
|
||
Deprecate usage of private classes, e.g.
|
||
:class:`asyncio.FlowControlMixing` and
|
||
:class:`asyncio.StreamReaderProtocol` outside of asyncio package.
|
||
|
||
- bpo-36845: Added validation of integer prefixes to the construction of IP
|
||
networks and interfaces in the ipaddress module.
|
||
|
||
- bpo-23378: Add an extend action to argparser.
|
||
|
||
- bpo-36867: Fix a bug making a SharedMemoryManager instance and its parent
|
||
process use two separate resource_tracker processes.
|
||
|
||
- bpo-23896: Adds a grammar to lib2to3.pygram that contains exec as a
|
||
function not as statement.
|
||
|
||
- bpo-36895: The function ``time.clock()`` was deprecated in 3.3 in favor of
|
||
``time.perf_counter()`` and marked for removal in 3.8, it has removed.
|
||
|
||
- bpo-35545: Fix asyncio discarding IPv6 scopes when ensuring hostname
|
||
resolutions internally
|
||
|
||
- bpo-36887: Add new function :func:`math.isqrt` to compute integer square
|
||
roots.
|
||
|
||
- bpo-34632: Introduce the ``importlib.metadata`` module with (provisional)
|
||
support for reading metadata from third-party packages.
|
||
|
||
- bpo-36878: When using `type_comments=True` in `ast.parse`, treat `# type:
|
||
ignore` followed by a non-alphanumeric character and then arbitrary text
|
||
as a type ignore, instead of requiring nothing but whitespace or another
|
||
comment. This is to permit formations such as `# type: ignore[E1000]`.
|
||
|
||
- bpo-36778: ``cp65001`` encoding (Windows code page 65001) becomes an alias
|
||
to ``utf_8`` encoding.
|
||
|
||
- bpo-36867: The multiprocessing.resource_tracker replaces the
|
||
multiprocessing.semaphore_tracker module. Other than semaphores,
|
||
resource_tracker also tracks shared_memory segments.
|
||
|
||
- bpo-30262: The ``Cache`` and ``Statement`` objects of the :mod:`sqlite3`
|
||
module are not exposed to the user. Patch by Aviv Palivoda.
|
||
|
||
- bpo-24538: In `shutil.copystat()`, first copy extended file attributes and
|
||
then file permissions, since extended attributes can only be set on the
|
||
destination while it is still writeable.
|
||
|
||
- bpo-36829: Add new :func:`sys.unraisablehook` function which can be
|
||
overridden to control how "unraisable exceptions" are handled. It is
|
||
called when an exception has occurred but there is no way for Python to
|
||
handle it. For example, when a destructor raises an exception or during
|
||
garbage collection (:func:`gc.collect`).
|
||
|
||
- bpo-36832: Introducing ``zipfile.Path``, a pathlib-compatible wrapper for
|
||
traversing zip files.
|
||
|
||
- bpo-36814: Fix an issue where os.posix_spawnp() would incorrectly raise a
|
||
TypeError when file_actions is None.
|
||
|
||
- bpo-33110: Handle exceptions raised by functions added by
|
||
concurrent.futures add_done_callback correctly when the Future has already
|
||
completed.
|
||
|
||
- bpo-26903: Limit `max_workers` in `ProcessPoolExecutor` to 61 to work
|
||
around a WaitForMultipleObjects limitation.
|
||
|
||
- bpo-36813: Fix :class:`~logging.handlers.QueueListener` to call
|
||
``queue.task_done()`` upon stopping. Patch by Bar Harel.
|
||
|
||
- bpo-36806: Forbid creation of asyncio stream objects like StreamReader,
|
||
StreamWriter, Process, and their protocols outside of asyncio package.
|
||
|
||
- bpo-36802: Provide both sync and async calls for StreamWriter.write() and
|
||
StreamWriter.close()
|
||
|
||
- bpo-36801: Properly handle SSL connection closing in asyncio
|
||
StreamWriter.drain() call.
|
||
|
||
- bpo-36785: Implement PEP 574 (pickle protocol 5 with out-of-band buffers).
|
||
|
||
- bpo-36772: functools.lru_cache() can now be used as a straight decorator
|
||
in addition to its existing usage as a function that returns a decorator.
|
||
|
||
- bpo-6584: Add a :exc:`~gzip.BadGzipFile` exception to the :mod:`gzip`
|
||
module.
|
||
|
||
- bpo-36748: Optimized write buffering in C implementation of
|
||
``TextIOWrapper``. Writing ASCII string to ``TextIOWrapper`` with ascii,
|
||
latin1, or utf-8 encoding is about 20% faster. Patch by Inada Naoki.
|
||
|
||
- bpo-8138: Don't mark ``wsgiref.simple_server.SimpleServer`` as
|
||
multi-threaded since ``wsgiref.simple_server.WSGIServer`` is
|
||
single-threaded.
|
||
|
||
- bpo-22640: :func:`py_compile.compile` now supports silent mode. Patch by
|
||
Joannah Nanjekye
|
||
|
||
- bpo-29183: Fix double exceptions in :class:`wsgiref.handlers.BaseHandler`
|
||
by calling its :meth:`~wsgiref.handlers.BaseHandler.close` method only
|
||
when no exception is raised.
|
||
|
||
- bpo-36548: Improved the repr of regular expression flags.
|
||
|
||
- bpo-36542: The signature of Python functions can now be overridden by
|
||
specifying the ``__text_signature__`` attribute.
|
||
|
||
- bpo-36533: Reinitialize logging.Handler locks in forked child processes
|
||
instead of attempting to acquire them all in the parent before forking
|
||
only to be released in the child process. The acquire/release pattern was
|
||
leading to deadlocks in code that has implemented any form of chained
|
||
logging handlers that depend upon one another as the lock acquisition
|
||
order cannot be guaranteed.
|
||
|
||
- bpo-35252: Throw a TypeError instead of an AssertionError when using an
|
||
invalid type annotation with singledispatch.
|
||
|
||
- bpo-35900: Allow reduction methods to return a 6-item tuple where the 6th
|
||
item specifies a custom state-setting method that's called instead of the
|
||
regular ``__setstate__`` method.
|
||
|
||
- bpo-35900: enable custom reduction callback registration for functions and
|
||
classes in _pickle.c, using the new Pickler's attribute
|
||
``reducer_override``
|
||
|
||
- bpo-36368: Fix a bug crashing SharedMemoryManager instances in interactive
|
||
sessions after a ctrl-c (KeyboardInterrupt) was sent
|
||
|
||
- bpo-31904: Fix mmap fail for VxWorks
|
||
|
||
- bpo-27497: :meth:`csv.DictWriter.writeheader` now returns the return value
|
||
of the underlying :meth:`csv.Writer.writerow` method. Patch contributed by
|
||
Ashish Nitin Patil.
|
||
|
||
- bpo-36239: Parsing .mo files now ignores comments starting and ending with
|
||
#-#-#-#-#.
|
||
|
||
- bpo-26707: Enable plistlib to read and write binary plist files that were
|
||
created as a KeyedArchive file. Specifically, this allows the plistlib to
|
||
process 0x80 tokens as UID objects.
|
||
|
||
- bpo-31904: Add posix module support for VxWorks.
|
||
|
||
- bpo-35125: Asyncio: Remove inner callback on outer cancellation in shield
|
||
|
||
- bpo-35721: Fix :meth:`asyncio.SelectorEventLoop.subprocess_exec()` leaks
|
||
file descriptors if ``Popen`` fails and called with
|
||
``stdin=subprocess.PIPE``. Patch by Niklas Fiekas.
|
||
|
||
- bpo-31855: :func:`unittest.mock.mock_open` results now respects the
|
||
argument of read([size]). Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-35431: Implement :func:`math.comb` that returns binomial coefficient,
|
||
that computes the number of ways to choose k items from n items without
|
||
repetition and without order. Patch by Yash Aggarwal and Keller Fuchs.
|
||
|
||
- bpo-26660: Fixed permission errors in
|
||
:class:`~tempfile.TemporaryDirectory` clean up. Previously
|
||
``TemporaryDirectory.cleanup()`` failed when non-writeable or
|
||
non-searchable files or directories were created inside a temporary
|
||
directory.
|
||
|
||
- bpo-34271: Add debugging helpers to ssl module. It's now possible to dump
|
||
key material and to trace TLS protocol. The default and stdlib contexts
|
||
also support SSLKEYLOGFILE env var.
|
||
|
||
- bpo-26467: Added AsyncMock to support using unittest to mock asyncio
|
||
coroutines. Patch by Lisa Roach.
|
||
|
||
- bpo-33569: dataclasses.InitVar: Exposes the type used to create the init
|
||
var.
|
||
|
||
- bpo-34424: Fix serialization of messages containing encoded strings when
|
||
the policy.linesep is set to a multi-character string. Patch by Jens
|
||
Troeger.
|
||
|
||
- bpo-34303: Performance of :func:`functools.reduce` is slightly improved.
|
||
Patch by Sergey Fedoseev.
|
||
|
||
- bpo-33361: Fix a bug in :class:`codecs.StreamRecoder` where seeking might
|
||
leave old data in a buffer and break subsequent read calls. Patch by Ammar
|
||
Askar.
|
||
|
||
- bpo-22454: The :mod:`shlex` module now exposes :func:`shlex.join`, the
|
||
inverse of :func:`shlex.split`. Patch by Bo Bayles.
|
||
|
||
- bpo-31922: :meth:`asyncio.AbstractEventLoop.create_datagram_endpoint`: Do
|
||
not connect UDP socket when broadcast is allowed. This allows to receive
|
||
replies after a UDP broadcast.
|
||
|
||
- bpo-24882: Change ThreadPoolExecutor to use existing idle threads before
|
||
spinning up new ones.
|
||
|
||
- bpo-31961: Added support for bytes and path-like objects in
|
||
:func:`subprocess.Popen` on Windows. The *args* parameter now accepts a
|
||
:term:`path-like object` if *shell* is ``False`` and a sequence containing
|
||
bytes and path-like objects. The *executable* parameter now accepts a
|
||
bytes and :term:`path-like object`. The *cwd* parameter now accepts a
|
||
bytes object. Based on patch by Anders Lorentsen.
|
||
|
||
- bpo-33123: :class:`pathlib.Path.unlink` now accepts a *missing_ok*
|
||
parameter to avoid a :exc:`FileNotFoundError` from being raised. Patch by
|
||
Robert Buchholz.
|
||
|
||
- bpo-32941: Allow :class:`mmap.mmap` objects to access the madvise() system
|
||
call (through :meth:`mmap.mmap.madvise`).
|
||
|
||
- bpo-22102: Added support for ZIP files with disks set to 0. Such files are
|
||
commonly created by builtin tools on Windows when use ZIP64 extension.
|
||
Patch by Francisco Facioni.
|
||
|
||
- bpo-32515: trace.py can now run modules via python3 -m trace -t --module
|
||
module_name
|
||
|
||
- bpo-32299: Changed :func:`unittest.mock.patch.dict` to return the patched
|
||
dictionary when used as context manager. Patch by Vadim Tsander.
|
||
|
||
- bpo-27141: Added a ``__copy__()`` to ``collections.UserList`` and
|
||
``collections.UserDict`` in order to correctly implement shallow copying
|
||
of the objects. Patch by Bar Harel.
|
||
|
||
- bpo-31829: ``\r``, ``\0`` and ``\x1a`` (end-of-file on Windows) are now
|
||
escaped in protocol 0 pickles of Unicode strings. This allows to load them
|
||
without loss from files open in text mode in Python 2.
|
||
|
||
- bpo-23395: ``_thread.interrupt_main()`` now avoids setting the Python
|
||
error status if the ``SIGINT`` signal is ignored or not handled by Python.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-36896: Clarify that some types have unstable constructor signature
|
||
between Python versions.
|
||
|
||
- bpo-36686: Improve documentation of the stdin, stdout, and stderr
|
||
arguments of the ``asyncio.subprocess_exec`` function to specify which
|
||
values are supported. Also mention that decoding as text is not supported.
|
||
|
||
Add a few tests to verify that the various values passed to the std*
|
||
arguments actually work.
|
||
|
||
- bpo-36984: Improve version added references in ``typing`` module - by
|
||
Anthony Sottile.
|
||
|
||
- bpo-36868: What's new now mentions SSLContext.hostname_checks_common_name
|
||
instead of SSLContext.host_flags.
|
||
|
||
- bpo-35924: Add a note to the ``curses.addstr()`` documentation to warn
|
||
that multiline strings can cause segfaults because of an ncurses bug.
|
||
|
||
- bpo-36783: Added C API Documentation for Time_FromTimeAndFold and
|
||
PyDateTime_FromDateAndTimeAndFold as per PEP 495. Patch by Edison
|
||
Abahurire.
|
||
|
||
- bpo-36797: More of the legacy distutils documentation has been either
|
||
pruned, or else more clearly marked as being retained solely until the
|
||
setuptools documentation covers it independently.
|
||
|
||
- bpo-22865: Add detail to the documentation on the `pty.spawn` function.
|
||
|
||
- bpo-35397: Remove deprecation and document urllib.parse.unwrap(). Patch
|
||
contributed by Rémi Lapeyre.
|
||
|
||
- bpo-32995: Added the context variable in glossary.
|
||
|
||
- bpo-33519: Clarify that `copy()` is not part of the `MutableSequence` ABC.
|
||
|
||
- bpo-33482: Make `codecs.StreamRecoder.writelines` take a list of bytes.
|
||
|
||
- bpo-25735: Added documentation for func factorial to indicate that returns
|
||
integer values
|
||
|
||
- bpo-20285: Expand object.__doc__ (docstring) to make it clearer. Modify
|
||
pydoc.py so that help(object) lists object methods (for other classes,
|
||
help omits methods of the object base class.)
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-37069: Modify test_coroutines, test_cprofile, test_generators,
|
||
test_raise, test_ssl and test_yield_from to use
|
||
:func:`test.support.catch_unraisable_exception` rather than
|
||
:func:`test.support.captured_stderr`.
|
||
|
||
- bpo-37098: Fix test_memfd_create on older Linux Kernels.
|
||
|
||
- bpo-37081: Test with OpenSSL 1.1.1c
|
||
|
||
- bpo-36829: Add :func:`test.support.catch_unraisable_exception`: context
|
||
manager catching unraisable exception using :func:`sys.unraisablehook`.
|
||
|
||
- bpo-36915: The main regrtest process now always removes all temporary
|
||
directories of worker processes even if they crash or if they are killed
|
||
on KeyboardInterrupt (CTRL+c).
|
||
|
||
- bpo-36719: "python3 -m test -jN ..." now continues the execution of next
|
||
tests when a worker process crash (CHILD_ERROR state). Previously, the
|
||
test suite stopped immediately. Use --failfast to stop at the first error.
|
||
|
||
- bpo-36816: Update Lib/test/selfsigned_pythontestdotnet.pem to match
|
||
self-signed.pythontest.net's new TLS certificate.
|
||
|
||
- bpo-35925: Skip httplib and nntplib networking tests when they would
|
||
otherwise fail due to a modern OS or distro with a default OpenSSL policy
|
||
of rejecting connections to servers with weak certificates.
|
||
|
||
- bpo-36782: Add tests for several C API functions in the :mod:`datetime`
|
||
module. Patch by Edison Abahurire.
|
||
|
||
- bpo-36342: Fix test_multiprocessing in test_venv if platform lacks
|
||
functioning sem_open.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-36721: To embed Python into an application, a new ``--embed`` option
|
||
must be passed to ``python3-config --libs --embed`` to get ``-lpython3.8``
|
||
(link the application to libpython). To support both 3.8 and older, try
|
||
``python3-config --libs --embed`` first and fallback to ``python3-config
|
||
--libs`` (without ``--embed``) if the previous command fails.
|
||
|
||
Add a pkg-config ``python-3.8-embed`` module to embed Python into an
|
||
application: ``pkg-config python-3.8-embed --libs`` includes
|
||
``-lpython3.8``. To support both 3.8 and older, try ``pkg-config
|
||
python-X.Y-embed --libs`` first and fallback to ``pkg-config python-X.Y
|
||
--libs`` (without ``--embed``) if the previous command fails (replace
|
||
``X.Y`` with the Python version).
|
||
|
||
On the other hand, ``pkg-config python3.8 --libs`` no longer contains
|
||
``-lpython3.8``. C extensions must not be linked to libpython (except on
|
||
Android, case handled by the script); this change is backward incompatible
|
||
on purpose.
|
||
|
||
- bpo-36786: "make install" now runs compileall in parallel.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-36965: include of STATUS_CONTROL_C_EXIT without depending on MSC
|
||
compiler
|
||
|
||
- bpo-35926: Update to OpenSSL 1.1.1b for Windows.
|
||
|
||
- bpo-29883: Add Windows support for UDP transports for the Proactor Event
|
||
Loop. Patch by Adam Meily.
|
||
|
||
- bpo-33407: The :c:macro:`Py_DEPRECATED()` macro has been implemented for
|
||
MSVC.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-36231: Support building Python on macOS without /usr/include
|
||
installed. As of macOS 10.14, system header files are only available
|
||
within an SDK provided by either the Command Line Tools or the Xcode app.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-35610: Replace now redundant .context_use_ps1 with .prompt_last_line.
|
||
This finishes change started in bpo-31858.
|
||
|
||
- bpo-37038: Make idlelib.run runnable; add test clause.
|
||
|
||
- bpo-36958: Print any argument other than None or int passed to SystemExit
|
||
or sys.exit().
|
||
|
||
- bpo-36807: When saving a file, call os.fsync() so bits are flushed to e.g.
|
||
USB drive.
|
||
|
||
- bpo-32411: In browser.py, remove extraneous sorting by line number since
|
||
dictionary was created in line number order.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-37053: Handle strings like u"bar" correctly in
|
||
Tools/parser/unparse.py. Patch by Chih-Hsuan Yen.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-36763: Implement the :pep:`587` "Python Initialization Configuration".
|
||
|
||
- bpo-36379: Fix crashes when attempting to use the *modulo* parameter when
|
||
``__ipow__`` is implemented in C.
|
||
|
||
- bpo-37107: Update :c:func:`PyObject_CallMethodObjArgs` and
|
||
``_PyObject_CallMethodIdObjArgs`` to use ``_PyObject_GetMethod`` to avoid
|
||
creating a bound method object in many cases. Patch by Michael J.
|
||
Sullivan.
|
||
|
||
- bpo-36974: Implement :pep:`590`: Vectorcall: a fast calling protocol for
|
||
CPython. This is a new protocol to optimize calls of custom callable
|
||
objects.
|
||
|
||
- bpo-36763: ``Py_Main()`` now returns the exitcode rather than calling
|
||
``Py_Exit(exitcode)`` when calling ``PyErr_Print()`` if the current
|
||
exception type is ``SystemExit``.
|
||
|
||
- bpo-36922: Add new type flag ``Py_TPFLAGS_METHOD_DESCRIPTOR`` for objects
|
||
behaving like unbound methods. These are objects supporting the
|
||
optimization given by the ``LOAD_METHOD``/``CALL_METHOD`` opcodes. See PEP
|
||
590.
|
||
|
||
- bpo-36728: The :c:func:`PyEval_ReInitThreads` function has been removed
|
||
from the C API. It should not be called explicitly: use
|
||
:c:func:`PyOS_AfterFork_Child` instead.
|
||
|
||
|
||
What's New in Python 3.8.0 alpha 4?
|
||
===================================
|
||
|
||
*Release date: 2019-05-06*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-36742: Fixes mishandling of pre-normalization characters in
|
||
urlsplit().
|
||
|
||
- bpo-30458: Address CVE-2019-9740 by disallowing URL paths with embedded
|
||
whitespace or control characters through into the underlying http client
|
||
request. Such potentially malicious header injection URLs now cause an
|
||
http.client.InvalidURL exception to be raised.
|
||
|
||
- bpo-35755: :func:`shutil.which` now uses ``os.confstr("CS_PATH")`` if
|
||
available and if the :envvar:`PATH` environment variable is not set.
|
||
Remove also the current directory from :data:`posixpath.defpath`. On Unix,
|
||
:func:`shutil.which` and the :mod:`subprocess` module no longer search the
|
||
executable in the current directory if the :envvar:`PATH` environment
|
||
variable is not set.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-36722: In debug build, import now also looks for C extensions compiled
|
||
in release mode and for C extensions compiled in the stable ABI.
|
||
|
||
- bpo-32849: Fix Python Initialization code on FreeBSD to detect properly
|
||
when stdin file descriptor (fd 0) is invalid.
|
||
|
||
- bpo-36623: Remove parser headers and related function declarations that
|
||
lack implementations after the removal of pgen.
|
||
|
||
- bpo-20180: ``dict.pop()`` is now up to 33% faster thanks to Argument
|
||
Clinic. Patch by Inada Naoki.
|
||
|
||
- bpo-36611: Debug memory allocators: disable serialno field by default from
|
||
debug hooks on Python memory allocators to reduce the memory footprint by
|
||
5%. Enable :mod:`tracemalloc` to get the traceback where a memory block
|
||
has been allocated when a fatal memory error is logged to decide where to
|
||
put a breakpoint. Compile Python with ``PYMEM_DEBUG_SERIALNO`` defined to
|
||
get back the field.
|
||
|
||
- bpo-36588: On AIX, :attr:`sys.platform` doesn't contain the major version
|
||
anymore. Always return ``'aix'``, instead of ``'aix3'`` .. ``'aix7'``.
|
||
Since older Python versions include the version number, it is recommended
|
||
to always use ``sys.platform.startswith('aix')``. Contributed by M. Felt.
|
||
|
||
- bpo-36549: Change str.capitalize to use titlecase for the first character
|
||
instead of uppercase.
|
||
|
||
- bpo-36540: Implement :pep:`570` (Python positional-only parameters). Patch
|
||
by Pablo Galindo.
|
||
|
||
- bpo-36475: :c:func:`PyEval_AcquireLock` and :c:func:`PyEval_AcquireThread`
|
||
now terminate the current thread if called while the interpreter is
|
||
finalizing, making them consistent with :c:func:`PyEval_RestoreThread`,
|
||
:c:func:`Py_END_ALLOW_THREADS`, and :c:func:`PyGILState_Ensure`.
|
||
|
||
- bpo-36504: Fix signed integer overflow in _ctypes.c's
|
||
``PyCArrayType_new()``.
|
||
|
||
- bpo-20844: Fix running script with encoding cookie and LF line ending may
|
||
fail on Windows.
|
||
|
||
- bpo-24214: Fixed support of the surrogatepass error handler in the UTF-8
|
||
incremental decoder.
|
||
|
||
- bpo-36452: Changing ``dict`` keys during iteration of the dict itself,
|
||
``keys()``, ``values()``, or ``items()`` will now be detected in certain
|
||
corner cases where keys are deleted/added so that the number of keys isn't
|
||
changed. A `RuntimeError` will be raised after ``len(dict)`` iterations.
|
||
Contributed by Thomas Perl.
|
||
|
||
- bpo-36459: Fix a possible double ``PyMem_FREE()`` due to tokenizer.c's
|
||
``tok_nextc()``.
|
||
|
||
- bpo-36433: Fixed TypeError message in classmethoddescr_call.
|
||
|
||
- bpo-36430: Fix a possible reference leak in :func:`itertools.count`.
|
||
|
||
- bpo-36440: Include node names in ``ParserError`` messages, instead of
|
||
numeric IDs. Patch by A. Skrobov.
|
||
|
||
- bpo-36143: Regenerate :mod:`keyword` from the Grammar and Tokens file
|
||
using pgen. Patch by Pablo Galindo.
|
||
|
||
- bpo-18372: Add missing :c:func:`PyObject_GC_Track` calls in the
|
||
:mod:`pickle` module. Patch by Zackery Spytz.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-35952: Fix pythoninfo when the compiler is missing.
|
||
|
||
- bpo-28238: The ``.find*()`` methods of xml.etree.ElementTree can now
|
||
search for wildcards like ``{*}tag`` and ``{ns}*`` that match a tag in any
|
||
namespace or all tags in a namespace. Patch by Stefan Behnel.
|
||
|
||
- bpo-26978: `pathlib.path.link_to()` is now implemented. It creates a hard
|
||
link pointing to a path.
|
||
|
||
- bpo-1613500: :class:`fileinput.FileInput` now uses the input file mode to
|
||
correctly set the output file mode (previously it was hardcoded to
|
||
``'w'``) when ``inplace=True`` is passed to its constructor.
|
||
|
||
- bpo-36734: Fix compilation of ``faulthandler.c`` on HP-UX. Initialize
|
||
``stack_t current_stack`` to zero using ``memset()``.
|
||
|
||
- bpo-13611: The xml.etree.ElementTree packages gained support for C14N 2.0
|
||
serialisation. Patch by Stefan Behnel.
|
||
|
||
- bpo-36669: Add missing matrix multiplication operator support to
|
||
weakref.proxy.
|
||
|
||
- bpo-36676: The XMLParser() in xml.etree.ElementTree provides namespace
|
||
prefix context to the parser target if it defines the callback methods
|
||
"start_ns()" and/or "end_ns()". Patch by Stefan Behnel.
|
||
|
||
- bpo-36673: The TreeBuilder and XMLPullParser in xml.etree.ElementTree
|
||
gained support for parsing comments and processing instructions. Patch by
|
||
Stefan Behnel.
|
||
|
||
- bpo-36650: The C version of functools.lru_cache() was treating calls with
|
||
an empty ``**kwargs`` dictionary as being distinct from calls with no
|
||
keywords at all. This did not result in an incorrect answer, but it did
|
||
trigger an unexpected cache miss.
|
||
|
||
- bpo-28552: Fix :mod:`distutils.sysconfig` if :data:`sys.executable` is
|
||
``None`` or an empty string: use :func:`os.getcwd` to initialize
|
||
``project_base``. Fix also the distutils build command: don't use
|
||
:data:`sys.executable` if it is ``None`` or an empty string.
|
||
|
||
- bpo-35755: :func:`shutil.which` and
|
||
:func:`distutils.spawn.find_executable` now use ``os.confstr("CS_PATH")``
|
||
if available instead of :data:`os.defpath`, if the ``PATH`` environment
|
||
variable is not set. Moreover, don't use ``os.confstr("CS_PATH")`` nor
|
||
:data:`os.defpath` if the ``PATH`` environment variable is set to an empty
|
||
string.
|
||
|
||
- bpo-25430: improve performance of ``IPNetwork.__contains__()``
|
||
|
||
- bpo-30485: Path expressions in xml.etree.ElementTree can now avoid
|
||
explicit namespace prefixes for tags (or the "{namespace}tag" notation) by
|
||
passing a default namespace with an empty string prefix.
|
||
|
||
- bpo-36613: Fix :mod:`asyncio` wait() not removing callback if exception
|
||
|
||
- bpo-36598: Fix ``isinstance`` check for Mock objects with spec when the
|
||
code is executed under tracing. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-18748: In development mode (:option:`-X` ``dev``) and in debug build,
|
||
the :class:`io.IOBase` destructor now logs ``close()`` exceptions. These
|
||
exceptions are silent by default in release mode.
|
||
|
||
- bpo-36575: The ``_lsprof`` module now uses internal timer same to
|
||
``time.perf_counter()`` by default. ``gettimeofday(2)`` was used on Unix.
|
||
New timer has better resolution on most Unix platforms and timings are no
|
||
longer impacted by system clock updates since ``perf_counter()`` is
|
||
monotonic. Patch by Inada Naoki.
|
||
|
||
- bpo-33461: ``json.loads`` now emits ``DeprecationWarning`` when
|
||
``encoding`` option is specified. Patch by Matthias Bussonnier.
|
||
|
||
- bpo-36559: The random module now prefers the lean internal _sha512 module
|
||
over hashlib for seed(version=2) to optimize import time.
|
||
|
||
- bpo-17561: Set backlog=None as the default for socket.create_server.
|
||
|
||
- bpo-34373: Fix :func:`time.mktime` error handling on AIX for year before
|
||
1970.
|
||
|
||
- bpo-36232: Improve error message when trying to open existing DBM database
|
||
that actually doesn't exist. Patch by Marco Rougeth.
|
||
|
||
- bpo-36546: Add statistics.quantiles()
|
||
|
||
- bpo-36050: Optimized ``http.client.HTTPResponse.read()`` for large
|
||
response. Patch by Inada Naoki.
|
||
|
||
- bpo-36522: If *debuglevel* is set to >0 in :mod:`http.client`, print all
|
||
values for headers with multiple values for the same header name. Patch by
|
||
Matt Houglum.
|
||
|
||
- bpo-36492: Deprecated passing required arguments like *func* as keyword
|
||
arguments in functions which should accept arbitrary keyword arguments and
|
||
pass them to other function. Arbitrary keyword arguments (even with names
|
||
"self" and "func") can now be passed to these functions if the required
|
||
arguments are passed as positional arguments.
|
||
|
||
- bpo-27181: Add statistics.geometric_mean().
|
||
|
||
- bpo-30427: ``os.path.normcase()`` relies on ``os.fspath()`` to check the
|
||
type of its argument. Redundant checks have been removed from its
|
||
``posixpath.normcase()`` and ``ntpath.normcase()`` implementations. Patch
|
||
by Wolfgang Maier.
|
||
|
||
- bpo-36385: Stop rejecting IPv4 octets for being ambiguously octal. Leading
|
||
zeros are ignored, and no longer are assumed to specify octal octets.
|
||
Octets are always decimal numbers. Octets must still be no more than three
|
||
digits, including leading zeroes.
|
||
|
||
- bpo-36434: Errors during writing to a ZIP file no longer prevent to
|
||
properly close it.
|
||
|
||
- bpo-36407: Fixed wrong indentation writing for CDATA section in
|
||
xml.dom.minidom. Patch by Vladimir Surjaninov.
|
||
|
||
- bpo-36326: inspect.getdoc() can now find docstrings for member objects
|
||
when __slots__ is a dictionary.
|
||
|
||
- bpo-36366: Calling ``stop()`` on an unstarted or stopped
|
||
:func:`unittest.mock.patch` object will now return `None` instead of
|
||
raising :exc:`RuntimeError`, making the method idempotent. Patch by
|
||
Karthikeyan Singaravelan.
|
||
|
||
- bpo-36348: The :meth:`imap.IMAP4.logout` method no longer ignores silently
|
||
arbitrary exceptions.
|
||
|
||
- bpo-31904: Add time module support and fix test_time faiures for VxWorks.
|
||
|
||
- bpo-36227: Added support for keyword arguments `default_namespace` and
|
||
`xml_declaration` in functions ElementTree.tostring() and
|
||
ElementTree.tostringlist().
|
||
|
||
- bpo-36004: Added new alternate constructors
|
||
:meth:`datetime.date.fromisocalendar` and
|
||
:meth:`datetime.datetime.fromisocalendar`, which construct date objects
|
||
from ISO year, week number and weekday; these are the inverse of each
|
||
class's ``isocalendar`` method. Patch by Paul Ganssle.
|
||
|
||
- bpo-35936: :mod:`modulefinder` no longer depends on the deprecated
|
||
:mod:`imp` module, and the initializer for
|
||
:class:`modulefinder.ModuleFinder` now has immutable default arguments.
|
||
Patch by Brandt Bucher.
|
||
|
||
- bpo-35376: :mod:`modulefinder` correctly handles modules that have the
|
||
same name as a bad package. Patch by Brandt Bucher.
|
||
|
||
- bpo-17396: :mod:`modulefinder` no longer crashes when encountering syntax
|
||
errors in followed imports. Patch by Brandt Bucher.
|
||
|
||
- bpo-35934: Added :meth:`~socket.create_server()` and
|
||
:meth:`~socket.has_dualstack_ipv6()` convenience functions to automate the
|
||
necessary tasks usually involved when creating a server socket, including
|
||
accepting both IPv4 and IPv6 connections on the same socket. (Contributed
|
||
by Giampaolo Rodola in :issue:`17561`.)
|
||
|
||
- bpo-23078: Add support for :func:`classmethod` and :func:`staticmethod` to
|
||
:func:`unittest.mock.create_autospec`. Initial patch by Felipe Ochoa.
|
||
|
||
- bpo-35416: Fix potential resource warnings in distutils. Patch by Mickaël
|
||
Schoentgen.
|
||
|
||
- bpo-25451: Add transparency methods to :class:`tkinter.PhotoImage`. Patch
|
||
by Zackery Spytz.
|
||
|
||
- bpo-35082: Don't return deleted attributes when calling dir on a
|
||
:class:`unittest.mock.Mock`.
|
||
|
||
- bpo-34547: :class:`wsgiref.handlers.BaseHandler` now handles abrupt client
|
||
connection terminations gracefully. Patch by Petter Strandmark.
|
||
|
||
- bpo-31658: :func:`xml.sax.parse` now supports :term:`path-like <path-like
|
||
object>`. Patch by Mickaël Schoentgen.
|
||
|
||
- bpo-34139: Remove stale unix datagram socket before binding
|
||
|
||
- bpo-33530: Implemented Happy Eyeballs in `asyncio.create_connection()`.
|
||
Added two new arguments, *happy_eyeballs_delay* and *interleave*, to
|
||
specify Happy Eyeballs behavior.
|
||
|
||
- bpo-33291: Do not raise AttributeError when calling the inspect functions
|
||
isgeneratorfunction, iscoroutinefunction, isasyncgenfunction on a method
|
||
created from an arbitrary callable. Instead, return False.
|
||
|
||
- bpo-31310: Fix the multiprocessing.semaphore_tracker so it is reused by
|
||
child processes
|
||
|
||
- bpo-31292: Fix ``setup.py check --restructuredtext`` for files containing
|
||
``include`` directives.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-36625: Remove obsolete comments from docstrings in fractions.Fraction
|
||
|
||
- bpo-30840: Document relative imports
|
||
|
||
- bpo-36523: Add docstring for io.IOBase.writelines().
|
||
|
||
- bpo-36425: New documentation translation: `Simplified Chinese
|
||
<https://docs.python.org/zh-cn/>`_.
|
||
|
||
- bpo-36345: Avoid the duplication of code from ``Tools/scripts/serve.py``
|
||
in using the :rst:dir:`literalinclude` directive for the basic
|
||
wsgiref-based web server in the documentation of :mod:`wsgiref`.
|
||
Contributed by Stéphane Wirtel.
|
||
|
||
- bpo-36345: Using the code of the ``Tools/scripts/serve.py`` script as an
|
||
example in the :mod:`wsgiref` documentation. Contributed by Stéphane
|
||
Wirtel.
|
||
|
||
- bpo-36157: Added Documention for PyInterpreterState_Main().
|
||
|
||
- bpo-33043: Updates the docs.python.org page with the addition of a
|
||
'Contributing to Docs' link at the end of the page (between 'Reporting
|
||
Bugs' and 'About Documentation'). Updates the 'Found a Bug' page with
|
||
additional links and information in the Documentation Bugs section.
|
||
|
||
- bpo-35581: @typing.type_check_only now allows type stubs to mark functions
|
||
and classes not available during runtime.
|
||
|
||
- bpo-33832: Add glossary entry for 'magic method'.
|
||
|
||
- bpo-32913: Added re.Match.groupdict example to regex HOWTO.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-36719: regrtest now always detects uncollectable objects. Previously,
|
||
the check was only enabled by ``--findleaks``. The check now also works
|
||
with ``-jN/--multiprocess N``. ``--findleaks`` becomes a deprecated alias
|
||
to ``--fail-env-changed``.
|
||
|
||
- bpo-36725: When using multiprocessing mode (-jN), regrtest now better
|
||
reports errors if a worker process fails, and it exits immediately on a
|
||
worker thread failure or when interrupted.
|
||
|
||
- bpo-36454: Change test_time.test_monotonic() to test only the lower bound
|
||
of elapsed time after a sleep command rather than the upper bound. This
|
||
prevents unnecessary test failures on slow buildbots. Patch by Victor
|
||
Stinner.
|
||
|
||
- bpo-32424: Improve test coverage for xml.etree.ElementTree. Patch by
|
||
Gordon P. Hemsley.
|
||
|
||
- bpo-32424: Fix typo in test_cyclic_gc() test for xml.etree.ElementTree.
|
||
Patch by Gordon P. Hemsley.
|
||
|
||
- bpo-36635: Add a new :mod:`_testinternalcapi` module to test the internal
|
||
C API.
|
||
|
||
- bpo-36629: Fix ``test_imap4_host_default_value()`` of ``test_imaplib``:
|
||
catch also :data:`errno.ENETUNREACH` error.
|
||
|
||
- bpo-36611: Fix ``test_sys.test_getallocatedblocks()`` when
|
||
:mod:`tracemalloc` is enabled.
|
||
|
||
- bpo-36560: Fix reference leak hunting in regrtest: compute also deltas (of
|
||
reference count, allocated memory blocks, file descriptor count) during
|
||
warmup, to ensure that everything is initialized before starting to hunt
|
||
reference leaks.
|
||
|
||
- bpo-36565: Fix reference hunting (``python3 -m test -R 3:3``) when Python
|
||
has no built-in abc module.
|
||
|
||
- bpo-31904: Port test_resource to VxWorks: skip tests cases setting
|
||
RLIMIT_FSIZE and RLIMIT_CPU.
|
||
|
||
- bpo-31904: Fix test_tabnanny on VxWorks: adjust ENOENT error message.
|
||
|
||
- bpo-36436: Fix ``_testcapi.pymem_buffer_overflow()``: handle memory
|
||
allocation failure.
|
||
|
||
- bpo-31904: Fix test_utf8_mode on VxWorks: Python always use UTF-8 on
|
||
VxWorks.
|
||
|
||
- bpo-36341: Fix tests that may fail with PermissionError upon calling
|
||
bind() on AF_UNIX sockets.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-36747: Remove the stale scriptsinstall Makefile target.
|
||
|
||
- bpo-21536: On Unix, C extensions are no longer linked to libpython except
|
||
on Android and Cygwin.
|
||
|
||
It is now possible for a statically linked Python to load a C extension
|
||
built using a shared library Python.
|
||
|
||
When Python is embedded, ``libpython`` must not be loaded with
|
||
``RTLD_LOCAL``, but ``RTLD_GLOBAL`` instead. Previously, using
|
||
``RTLD_LOCAL``, it was already not possible to load C extensions which
|
||
were not linked to ``libpython``, such as C extensions of the standard
|
||
library built by the ``*shared*`` section of ``Modules/Setup``.
|
||
|
||
distutils, python-config and python-config.py have been modified.
|
||
|
||
- bpo-36707: ``./configure --with-pymalloc`` no longer adds the ``m`` flag
|
||
to SOABI (sys.implementation.cache_tag). Enabling or disabling pymalloc
|
||
has no impact on the ABI.
|
||
|
||
- bpo-36635: Change ``PyAPI_FUNC(type)``, ``PyAPI_DATA(type)`` and
|
||
``PyMODINIT_FUNC`` macros of ``pyport.h`` when ``Py_BUILD_CORE_MODULE`` is
|
||
defined. The ``Py_BUILD_CORE_MODULE`` define must be now be used to build
|
||
a C extension as a dynamic library accessing Python internals: export the
|
||
PyInit_xxx() function in DLL exports on Windows.
|
||
|
||
- bpo-31904: Don't build the ``_crypt`` extension on VxWorks.
|
||
|
||
- bpo-36618: Add ``-fmax-type-align=8`` to CFLAGS when clang compiler is
|
||
detected. The pymalloc memory allocator aligns memory on 8 bytes. On
|
||
x86-64, clang expects alignment on 16 bytes by default and so uses MOVAPS
|
||
instruction which can lead to segmentation fault. Instruct clang that
|
||
Python is limited to alignment on 8 bytes to use MOVUPS instruction
|
||
instead: slower but don't trigger a SIGSEGV if the memory is not aligned
|
||
on 16 bytes. Sadly, the flag must be added to ``CFLAGS`` and not just
|
||
``CFLAGS_NODIST``, since third party C extensions can have the same issue.
|
||
|
||
- bpo-36605: ``make tags`` and ``make TAGS`` now also parse
|
||
``Modules/_io/*.c`` and ``Modules/_io/*.h``.
|
||
|
||
- bpo-36465: Release builds and debug builds are now ABI compatible:
|
||
defining the ``Py_DEBUG`` macro no longer implies the ``Py_TRACE_REFS``
|
||
macro, which introduces the only ABI incompatibility. The
|
||
``Py_TRACE_REFS`` macro, which adds the :func:`sys.getobjects` function
|
||
and the :envvar:`PYTHONDUMPREFS` environment variable, can be set using
|
||
the new ``./configure --with-trace-refs`` build option.
|
||
|
||
- bpo-36577: setup.py now correctly reports missing OpenSSL headers and
|
||
libraries again.
|
||
|
||
- bpo-36544: Fix regression introduced in bpo-36146 refactoring setup.py
|
||
|
||
- bpo-36508: ``python-config --ldflags`` no longer includes flags of the
|
||
``LINKFORSHARED`` variable. The ``LINKFORSHARED`` variable must only be
|
||
used to build executables.
|
||
|
||
- bpo-36503: Remove references to "aix3" and "aix4". Patch by M. Felt.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-35920: Added platform.win32_edition() and platform.win32_is_iot().
|
||
Added support for cross-compiling packages for Windows ARM32. Skip tests
|
||
that are not expected to work on Windows IoT Core ARM32.
|
||
|
||
- bpo-36649: Remove trailing spaces for registry keys when installed via the
|
||
Store.
|
||
|
||
- bpo-34144: Fixed activate.bat to correctly update codepage when chcp.com
|
||
returns dots in output. Patch by Lorenz Mende.
|
||
|
||
- bpo-36509: Added preset-iot layout for Windows IoT ARM containers. This
|
||
layout doesn't contain UI components like tkinter or IDLE. It also doesn't
|
||
contain files to support on-target builds since Windows ARM32 builds must
|
||
be cross-compiled when using MSVC.
|
||
|
||
- bpo-35941: enum_certificates function of the ssl module now returns
|
||
certificates from all available certificate stores inside windows in a
|
||
query instead of returning only certificates from the system wide
|
||
certificate store. This includes certificates from these certificate
|
||
stores: local machine, local machine enterprise, local machine group
|
||
policy, current user, current user group policy, services, users.
|
||
ssl.enum_crls() function is changed in the same way to return all
|
||
certificate revocation lists inside the windows certificate revocation
|
||
list stores.
|
||
|
||
- bpo-36441: Fixes creating a venv when debug binaries are installed.
|
||
|
||
- bpo-36085: Enable better DLL resolution on Windows by using safe DLL
|
||
search paths and adding :func:`os.add_dll_directory`.
|
||
|
||
- bpo-36010: Add the venv standard library module to the nuget distribution
|
||
for Windows.
|
||
|
||
- bpo-29515: Add the following socket module constants on Windows:
|
||
IPPROTO_AH IPPROTO_CBT IPPROTO_DSTOPTS IPPROTO_EGP IPPROTO_ESP
|
||
IPPROTO_FRAGMENT IPPROTO_GGP IPPROTO_HOPOPTS IPPROTO_ICLFXBM
|
||
IPPROTO_ICMPV6 IPPROTO_IDP IPPROTO_IGMP IPPROTO_IGP IPPROTO_IPV4
|
||
IPPROTO_IPV6 IPPROTO_L2TP IPPROTO_MAX IPPROTO_ND IPPROTO_NONE IPPROTO_PGM
|
||
IPPROTO_PIM IPPROTO_PUP IPPROTO_RDP IPPROTO_ROUTING IPPROTO_SCTP
|
||
IPPROTO_ST
|
||
|
||
- bpo-35947: Added current version of libffi to cpython-source-deps. Change
|
||
_ctypes to use current version of libffi on Windows.
|
||
|
||
- bpo-34060: Report system load when running test suite on Windows. Patch by
|
||
Ammar Askar. Based on prior work by Jeremy Kloth.
|
||
|
||
- bpo-31512: With the Windows 10 Creators Update, non-elevated users can now
|
||
create symlinks as long as the computer has Developer Mode enabled.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-34602: Avoid failures setting macOS stack resource limit with
|
||
resource.setrlimit. This reverts an earlier fix for bpo-18075 which forced
|
||
a non-default stack size when building the interpreter executable on
|
||
macOS.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-36429: Fix starting IDLE with pyshell. Add idlelib.pyshell alias at
|
||
top; remove pyshell alias at bottom. Remove obsolete __name__=='__main__'
|
||
command.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-14546: Fix the argument handling in Tools/scripts/lll.py.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-36763: Fix memory leak in :c:func:`Py_SetStandardStreamEncoding`:
|
||
release memory if the function is called twice.
|
||
|
||
- bpo-36641: :c:expr:`PyDoc_VAR(name)` and :c:expr:`PyDoc_STRVAR(name,str)`
|
||
now create ``static const char name[]`` instead of ``static char name[]``.
|
||
Patch by Inada Naoki.
|
||
|
||
- bpo-36389: Change the value of ``CLEANBYTE``, ``DEADDYTE`` and
|
||
``FORBIDDENBYTE`` internal constants used by debug hooks on Python memory
|
||
allocators (:c:func:`PyMem_SetupDebugHooks` function). Byte patterns
|
||
``0xCB``, ``0xDB`` and ``0xFB`` have been replaced with ``0xCD``, ``0xDD``
|
||
and ``0xFD`` to use the same values than Windows CRT debug ``malloc()``
|
||
and ``free()``.
|
||
|
||
- bpo-36443: Since Python 3.7.0, calling :c:func:`Py_DecodeLocale` before
|
||
:c:func:`Py_Initialize` produces mojibake if the ``LC_CTYPE`` locale is
|
||
coerced and/or if the UTF-8 Mode is enabled by the user configuration. The
|
||
LC_CTYPE coercion and UTF-8 Mode are now disabled by default to fix the
|
||
mojibake issue. They must now be enabled explicitly (opt-in) using the new
|
||
:c:func:`_Py_PreInitialize` API with ``_PyPreConfig``.
|
||
|
||
- bpo-36025: Fixed an accidental change to the datetime C API where the
|
||
arguments to the :c:func:`PyDate_FromTimestamp` function were incorrectly
|
||
interpreted as a single timestamp rather than an arguments tuple, which
|
||
causes existing code to start raising :exc:`TypeError`. The
|
||
backwards-incompatible change was only present in alpha releases of Python
|
||
3.8. Patch by Paul Ganssle.
|
||
|
||
- bpo-35810: Modify ``PyObject_Init`` to correctly increase the refcount of
|
||
heap- allocated Type objects. Also fix the refcounts of the heap-allocated
|
||
types that were either doing this manually or not decreasing the type's
|
||
refcount in tp_dealloc
|
||
|
||
|
||
What's New in Python 3.8.0 alpha 3?
|
||
===================================
|
||
|
||
*Release date: 2019-03-25*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-36216: Changes urlsplit() to raise ValueError when the URL contains
|
||
characters that decompose under IDNA encoding (NFKC-normalization) into
|
||
characters that affect how the URL is parsed.
|
||
|
||
- bpo-35121: Don't send cookies of domain A without Domain attribute to
|
||
domain B when domain A is a suffix match of domain B while using a
|
||
cookiejar with :class:`http.cookiejar.DefaultCookiePolicy` policy. Patch
|
||
by Karthikeyan Singaravelan.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-36421: Fix a possible double decref in _ctypes.c's
|
||
``PyCArrayType_new()``.
|
||
|
||
- bpo-36412: Fix a possible crash when creating a new dictionary.
|
||
|
||
- bpo-36398: Fix a possible crash in ``structseq_repr()``.
|
||
|
||
- bpo-36256: Fix bug in parsermodule when parsing a state in a DFA that has
|
||
two or more arcs with labels of the same type. Patch by Pablo Galindo.
|
||
|
||
- bpo-36365: repr(structseq) is no longer limited to 512 bytes.
|
||
|
||
- bpo-36374: Fix a possible null pointer dereference in
|
||
``merge_consts_recursive()``. Patch by Zackery Spytz.
|
||
|
||
- bpo-36236: At Python initialization, the current directory is no longer
|
||
prepended to :data:`sys.path` if it has been removed.
|
||
|
||
- bpo-36352: Python initialization now fails with an error, rather than
|
||
silently truncating paths, if a path is too long.
|
||
|
||
- bpo-36301: Python initialization now fails if decoding ``pybuilddir.txt``
|
||
configuration file fails at startup.
|
||
|
||
- bpo-36333: Fix leak in _PyRuntimeState_Fini. Contributed by Stéphane
|
||
Wirtel.
|
||
|
||
- bpo-36332: The builtin :func:`compile` can now handle AST objects that
|
||
contain assignment expressions. Patch by Pablo Galindo.
|
||
|
||
- bpo-36282: Improved error message for too much positional arguments in
|
||
some builtin functions.
|
||
|
||
- bpo-30040: New empty dict uses fewer memory for now. It used more memory
|
||
than empty dict created by ``dict.clear()``. And empty dict creation and
|
||
deletion is about 2x faster. Patch by Inada Naoki.
|
||
|
||
- bpo-36262: Fix an unlikely memory leak on conversion from string to float
|
||
in the function ``_Py_dg_strtod()`` used by ``float(str)``,
|
||
``complex(str)``, :func:`pickle.load`, :func:`marshal.load`, etc.
|
||
|
||
- bpo-36252: Update Unicode databases to version 12.0.0.
|
||
|
||
- bpo-36218: Fix a segfault occurring when sorting a list of heterogeneous
|
||
values. Patch contributed by Rémi Lapeyre and Elliot Gorokhovsky.
|
||
|
||
- bpo-36188: Cleaned up left-over vestiges of Python 2 unbound method
|
||
handling in method objects and documentation. Patch by Martijn Pieters
|
||
|
||
- bpo-36124: Add a new interpreter-specific dict and expose it in the C-API
|
||
via PyInterpreterState_GetDict(). This parallels PyThreadState_GetDict().
|
||
However, extension modules should continue using PyModule_GetState() for
|
||
their own internal per-interpreter state.
|
||
|
||
- bpo-35975: Add a ``feature_version`` flag to ``ast.parse()`` (documented)
|
||
and ``compile()`` (hidden) that allows tweaking the parser to support
|
||
older versions of the grammar. In particular, if ``feature_version`` is 5
|
||
or 6, the hacks for the ``async`` and ``await`` keyword from PEP 492 are
|
||
reinstated. (For 7 or higher, these are unconditionally treated as
|
||
keywords, but they are still special tokens rather than ``NAME`` tokens
|
||
that the parser driver recognizes.)
|
||
|
||
- bpo-31904: Use UTF-8 as the system encoding on VxWorks.
|
||
|
||
- bpo-36048: The :meth:`~object.__index__` special method will be used
|
||
instead of :meth:`~object.__int__` for implicit conversion of Python
|
||
numbers to C integers. Using the ``__int__()`` method in implicit
|
||
conversions has been deprecated.
|
||
|
||
- bpo-35808: Retire pgen and use a modified version of pgen2 to generate the
|
||
parser. Patch by Pablo Galindo.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-36401: The class documentation created by pydoc now has a separate
|
||
section for readonly properties.
|
||
|
||
- bpo-36320: The typing.NamedTuple() class has deprecated the _field_types
|
||
attribute in favor of the __annotations__ attribute which carried the same
|
||
information. Also, both attributes were converted from OrderedDict to a
|
||
regular dict.
|
||
|
||
- bpo-34745: Fix :mod:`asyncio` ssl memory issues caused by circular
|
||
references
|
||
|
||
- bpo-36324: Add method to statistics.NormalDist for computing the inverse
|
||
cumulative normal distribution.
|
||
|
||
- bpo-36321: collections.namedtuple() misspelled the name of an attribute.
|
||
To be consistent with typing.NamedTuple, the attribute name should have
|
||
been "_field_defaults" instead of "_fields_defaults". For backwards
|
||
compatibility, both spellings are now created. The misspelled version may
|
||
be removed in the future.
|
||
|
||
- bpo-36297: "unicode_internal" codec is removed. It was deprecated since
|
||
Python 3.3. Patch by Inada Naoki.
|
||
|
||
- bpo-36298: Raise ModuleNotFoundError in pyclbr when a module can't be
|
||
found. Thanks to 'mental' for the bug report.
|
||
|
||
- bpo-36268: Switch the default format used for writing tars with
|
||
mod:`tarfile` to the modern POSIX.1-2001 pax standard, from the
|
||
vendor-specific GNU. Contributed by C.A.M. Gerlach.
|
||
|
||
- bpo-36285: Fix integer overflows in the array module. Patch by Stephan
|
||
Hohe.
|
||
|
||
- bpo-31904: Add _signal module support for VxWorks.
|
||
|
||
- bpo-36272: :mod:`logging` does not silently ignore RecursionError anymore.
|
||
Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-36280: Add a kind field to ast.Constant. It is 'u' if the literal has
|
||
a 'u' prefix (i.e. a Python 2 style unicode literal), else None.
|
||
|
||
- bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles all
|
||
exceptions.
|
||
|
||
- bpo-36251: Fix format strings used for stderrprinter and re.Match reprs.
|
||
Patch by Stephan Hohe.
|
||
|
||
- bpo-36235: Fix ``CFLAGS`` in ``customize_compiler()`` of
|
||
``distutils.sysconfig``: when the ``CFLAGS`` environment variable is
|
||
defined, don't override ``CFLAGS`` variable with the ``OPT`` variable
|
||
anymore. Initial patch written by David Malcolm.
|
||
|
||
- bpo-35807: Update ensurepip to install pip 19.0.3 and setuptools 40.8.0.
|
||
|
||
- bpo-36139: Release GIL when closing :class:`~mmap.mmap` objects.
|
||
|
||
- bpo-36179: Fix two unlikely reference leaks in _hashopenssl. The leaks
|
||
only occur in out-of-memory cases.
|
||
|
||
- bpo-36169: Add overlap() method to statistics.NormalDist. Computes the
|
||
overlapping coefficient for two normal distributions.
|
||
|
||
- bpo-36103: Default buffer size used by ``shutil.copyfileobj()`` is changed
|
||
from 16 KiB to 64 KiB on non-Windows platform to reduce system call
|
||
overhead. Contributed by Inada Naoki.
|
||
|
||
- bpo-36130: Fix ``pdb`` with ``skip=...`` when stepping into a frame
|
||
without a ``__name__`` global. Patch by Anthony Sottile.
|
||
|
||
- bpo-35652: shutil.copytree(copy_function=...) erroneously pass DirEntry
|
||
instead of a path string.
|
||
|
||
- bpo-35178: Ensure custom :func:`warnings.formatwarning` function can
|
||
receive `line` as positional argument. Based on patch by Tashrif Billah.
|
||
|
||
- bpo-36106: Resolve potential name clash with libm's sinpi(). Patch by
|
||
Dmitrii Pasechnik.
|
||
|
||
- bpo-36091: Clean up reference to async generator in Lib/types. Patch by
|
||
Henry Chen.
|
||
|
||
- bpo-36043: :class:`FileCookieJar` supports :term:`path-like object`.
|
||
Contributed by Stéphane Wirtel
|
||
|
||
- bpo-35899: Enum has been fixed to correctly handle empty strings and
|
||
strings with non-Latin characters (ie. 'α', 'א') without crashing.
|
||
Original patch contributed by Maxwell. Assisted by Stéphane Wirtel.
|
||
|
||
- bpo-21269: Add ``args`` and ``kwargs`` properties to mock call objects.
|
||
Contributed by Kumar Akshay.
|
||
|
||
- bpo-30670: `pprint.pp` has been added to pretty-print objects with
|
||
dictionary keys being sorted with their insertion order by default.
|
||
Parameter *sort_dicts* has been added to `pprint.pprint`, `pprint.pformat`
|
||
and `pprint.PrettyPrinter`. Contributed by Rémi Lapeyre.
|
||
|
||
- bpo-35843: Implement ``__getitem__`` for ``_NamespacePath``. Patch by
|
||
Anthony Sottile.
|
||
|
||
- bpo-35802: Clean up code which checked presence of ``os.stat`` /
|
||
``os.lstat`` / ``os.chmod`` which are always present. Patch by Anthony
|
||
Sottile.
|
||
|
||
- bpo-35715: Librates the return value of a ProcessPoolExecutor
|
||
_process_worker after it's no longer needed to free memory
|
||
|
||
- bpo-35493: Use :func:`multiprocessing.connection.wait` instead of polling
|
||
each 0.2 seconds for worker updates in :class:`multiprocessing.Pool`.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-35661: Store the venv prompt in pyvenv.cfg.
|
||
|
||
- bpo-35121: Don't set cookie for a request when the request path is a
|
||
prefix match of the cookie's path attribute but doesn't end with "/".
|
||
Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-21478: Calls to a child function created with
|
||
:func:`unittest.mock.create_autospec` should propagate to the parent.
|
||
Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-35198: Fix C++ extension compilation on AIX
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-36329: Declare the path of the Python binary for the usage of
|
||
``Tools/scripts/serve.py`` when executing ``make -C Doc/ serve``.
|
||
Contributed by Stéphane Wirtel
|
||
|
||
- bpo-36138: Improve documentation about converting datetime.timedelta to
|
||
scalars.
|
||
|
||
- bpo-21314: A new entry was added to the Core Language Section of the
|
||
Programming FAQ, which explaines the usage of slash(/) in the signature of
|
||
a function. Patch by Lysandros Nikolaou
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-36234: test_posix.PosixUidGidTests: add tests for invalid uid/gid type
|
||
(str). Initial patch written by David Malcolm.
|
||
|
||
- bpo-29571: Fix ``test_re.test_locale_flag()``: use
|
||
``locale.getpreferredencoding()`` rather than ``locale.getlocale()`` to
|
||
get the locale encoding. With some locales, ``locale.getlocale()`` returns
|
||
the wrong encoding.
|
||
|
||
- bpo-36123: Fix race condition in test_socket.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-36356: Fix leaks that led to build failure when configured with
|
||
address sanitizer.
|
||
|
||
- bpo-36146: Add ``TEST_EXTENSIONS`` constant to ``setup.py`` to allow to
|
||
not build test extensions like ``_testcapi``.
|
||
|
||
- bpo-36146: Fix setup.py on macOS: only add ``/usr/include/ffi`` to include
|
||
directories of _ctypes, not for all extensions.
|
||
|
||
- bpo-31904: Enable build system to cross-build for VxWorks RTOS.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-36312: Fixed decoders for the following code pages: 50220, 50221,
|
||
50222, 50225, 50227, 50229, 57002 through 57011, 65000 and 42.
|
||
|
||
- bpo-36264: Don't honor POSIX ``HOME`` in ``os.path.expanduser`` on
|
||
windows. Patch by Anthony Sottile.
|
||
|
||
- bpo-24643: Fix name collisions due to ``#define timezone _timezone`` in
|
||
PC/pyconfig.h.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-36405: Use dict unpacking in idlelib.
|
||
|
||
- bpo-36396: Remove fgBg param of idlelib.config.GetHighlight(). This param
|
||
was only used twice and changed the return type.
|
||
|
||
- bpo-36176: Fix IDLE autocomplete & calltip popup colors. Prevent conflicts
|
||
with Linux dark themes (and slightly darken calltip background).
|
||
|
||
- bpo-23205: For the grep module, add tests for findfiles, refactor
|
||
findfiles to be a module-level function, and refactor findfiles to use
|
||
os.walk.
|
||
|
||
- bpo-23216: Add docstrings to IDLE search modules.
|
||
|
||
- bpo-36152: Remove colorizer.ColorDelegator.close_when_done and the
|
||
corresponding argument of .close(). In IDLE, both have always been None
|
||
or False since 2007.
|
||
|
||
- bpo-32129: Avoid blurry IDLE application icon on macOS with Tk 8.6. Patch
|
||
by Kevin Walzer.
|
||
|
||
- bpo-36096: Refactor class variables to instance variables in colorizer.
|
||
|
||
- bpo-30348: Increase test coverage of idlelib.autocomplete by 30%. Patch by
|
||
Louie Lu
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-35132: Fix py-list and py-bt commands of python-gdb.py on gdb7.
|
||
|
||
- bpo-32217: Fix freeze script on Windows.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-36381: Raise ``DeprecationWarning`` when '#' formats are used for
|
||
building or parsing values without ``PY_SSIZE_T_CLEAN``.
|
||
|
||
- bpo-36142: The whole coreconfig.h header is now excluded from
|
||
Py_LIMITED_API. Move functions definitions into a new internal
|
||
pycore_coreconfig.h header.
|
||
|
||
|
||
What's New in Python 3.8.0 alpha 2?
|
||
===================================
|
||
|
||
*Release date: 2019-02-25*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-36052: Raise a :exc:`SyntaxError` when assigning a value to
|
||
`__debug__` with the Assignment Operator. Contributed by Stéphane Wirtel
|
||
and Pablo Galindo.
|
||
|
||
- bpo-36012: Doubled the speed of class variable writes. When a non-dunder
|
||
attribute was updated, there was an unnecessary call to update slots.
|
||
|
||
- bpo-35942: The error message emitted when returning invalid types from
|
||
``__fspath__`` in interfaces that allow passing :class:`~os.PathLike`
|
||
objects has been improved and now it does explain the origin of the error.
|
||
|
||
- bpo-36016: ``gc.get_objects`` can now receive an optional parameter
|
||
indicating a generation to get objects from. Patch by Pablo Galindo.
|
||
|
||
- bpo-1054041: When the main interpreter exits due to an uncaught
|
||
KeyboardInterrupt, the process now exits in the appropriate manner for its
|
||
parent process to detect that a SIGINT or ^C terminated the process. This
|
||
allows shells and batch scripts to understand that the user has asked them
|
||
to stop.
|
||
|
||
- bpo-35992: Fix ``__class_getitem__()`` not being called on a class with a
|
||
custom non-subscriptable metaclass.
|
||
|
||
- bpo-35993: Fix a crash on fork when using subinterpreters. Contributed by
|
||
Stéphane Wirtel
|
||
|
||
- bpo-35991: Fix a potential double free in Modules/_randommodule.c.
|
||
|
||
- bpo-35961: Fix a crash in slice_richcompare(): use strong references
|
||
rather than stolen references for the two temporary internal tuples.
|
||
|
||
- bpo-35911: Enable the creation of cell objects by adding a
|
||
``cell.__new__`` method, and expose the type ``cell`` in ``Lib/types.py``
|
||
under the name CellType. Patch by Pierre Glaser.
|
||
|
||
- bpo-12822: Use monotonic clock for ``pthread_cond_timedwait`` when
|
||
``pthread_condattr_setclock`` and ``CLOCK_MONOTONIC`` are available.
|
||
|
||
- bpo-15248: The compiler emits now syntax warnings in the case when a comma
|
||
is likely missed before tuple or list.
|
||
|
||
- bpo-35886: The implementation of PyInterpreterState has been moved into
|
||
the internal header files (guarded by Py_BUILD_CORE).
|
||
|
||
- bpo-31506: Clarify the errors reported when ``object.__new__`` and
|
||
``object.__init__`` receive more than one argument. Contributed by Sanyam
|
||
Khurana.
|
||
|
||
- bpo-35724: Signal-handling is now guaranteed to happen relative to the
|
||
main interpreter.
|
||
|
||
- bpo-33608: We added a new internal _Py_AddPendingCall() that operates
|
||
relative to the provided interpreter. This allows us to use the existing
|
||
implementation to ask another interpreter to do work that cannot be done
|
||
in the current interpreter, like decref an object the other interpreter
|
||
owns. The existing Py_AddPendingCall() only operates relative to the main
|
||
interpreter.
|
||
|
||
- bpo-33989: Fix a possible crash in :meth:`list.sort` when sorting objects
|
||
with ``ob_type->tp_richcompare == NULL``. Patch by Zackery Spytz.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-35512: :func:`unittest.mock.patch.dict` used as a decorator with
|
||
string target resolves the target during function call instead of during
|
||
decorator construction. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-36018: Add statistics.NormalDist, a tool for creating and manipulating
|
||
normal distributions of random variable. Features a composite class that
|
||
treats the mean and standard deviation of measurement data as single
|
||
entity.
|
||
|
||
- bpo-35904: Added statistics.fmean() as a faster, floating point variant of
|
||
the existing mean() function.
|
||
|
||
- bpo-35918: Removed broken ``has_key`` method from
|
||
multiprocessing.managers.SyncManager.dict. Contributed by Rémi Lapeyre.
|
||
|
||
- bpo-18283: Add support for bytes to :func:`shutil.which`.
|
||
|
||
- bpo-35960: Fix :func:`dataclasses.field` throwing away empty mapping
|
||
objects passed as metadata.
|
||
|
||
- bpo-35500: Write expected and actual call parameters on separate lines in
|
||
:meth:`unittest.mock.Mock.assert_called_with` assertion errors.
|
||
Contributed by Susan Su.
|
||
|
||
- bpo-35931: The :mod:`pdb` ``debug`` command now gracefully handles syntax
|
||
errors.
|
||
|
||
- bpo-24209: In http.server script, rely on getaddrinfo to bind to preferred
|
||
address based on the bind parameter. Now default bind or binding to a name
|
||
may bind to IPv6 or dual-stack, depending on the environment.
|
||
|
||
- bpo-35321: Set ``__spec__.origin`` of ``_frozen_importlib`` to frozen so
|
||
that it matches the behavior of ``_frozen_importlib_external``. Patch by
|
||
Nina Zakharenko.
|
||
|
||
- bpo-35378: Fix a reference issue inside :class:`multiprocessing.Pool` that
|
||
caused the pool to remain alive if it was deleted without being closed or
|
||
terminated explicitly. A new strong reference is added to the pool
|
||
iterators to link the lifetime of the pool to the lifetime of its
|
||
iterators so the pool does not get destroyed if a pool iterator is still
|
||
alive.
|
||
|
||
- bpo-34294: re module, fix wrong capturing groups in rare cases.
|
||
:func:`re.search`, :func:`re.findall`, :func:`re.sub` and other functions
|
||
that scan through string looking for a match, should reset capturing
|
||
groups between two match attempts. Patch by Ma Lin.
|
||
|
||
- bpo-35615: :mod:`weakref`: Fix a RuntimeError when copying a
|
||
WeakKeyDictionary or a WeakValueDictionary, due to some keys or values
|
||
disappearing while iterating.
|
||
|
||
- bpo-35606: Implement :func:`math.prod` as analogous function to
|
||
:func:`sum` that returns the product of a 'start' value (default: 1) times
|
||
an iterable of numbers. Patch by Pablo Galindo.
|
||
|
||
- bpo-32417: Performing arithmetic between :class:`datetime.datetime`
|
||
subclasses and :class:`datetime.timedelta` now returns an object of the
|
||
same type as the :class:`datetime.datetime` subclass. As a result,
|
||
:meth:`datetime.datetime.astimezone` and alternate constructors like
|
||
:meth:`datetime.datetime.now` and :meth:`datetime.fromtimestamp` called
|
||
with a ``tz`` argument now *also* retain their subclass.
|
||
|
||
- bpo-35153: Add *headers* optional keyword-only parameter to
|
||
:class:`xmlrpc.client.ServerProxy`, :class:`xmlrpc.client.Transport` and
|
||
:class:`xmlrpc.client.SafeTransport`. Patch by Cédric Krier.
|
||
|
||
- bpo-34572: Fix C implementation of pickle.loads to use importlib's locking
|
||
mechanisms, and thereby avoid using partially loaded modules. Patch by Tim
|
||
Burgess.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-36083: Fix formatting of --check-hash-based-pycs options in the
|
||
manpage Synopsis.
|
||
|
||
- bpo-36007: Bump minimum sphinx version to 1.8. Patch by Anthony Sottile.
|
||
|
||
- bpo-22062: Update documentation and docstrings for pathlib. Original patch
|
||
by Mike Short.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-27313: Avoid test_ttk_guionly ComboboxTest failure with macOS Cocoa
|
||
Tk.
|
||
|
||
- bpo-36019: Add test.support.TEST_HTTP_URL and replace references of
|
||
http://www.example.com by this new constant. Contributed by Stéphane
|
||
Wirtel.
|
||
|
||
- bpo-36037: Fix test_ssl for strict OpenSSL configuration like RHEL8 strict
|
||
crypto policy. Use older TLS version for minimum TLS version of the server
|
||
SSL context if needed, to test TLS version older than default minimum TLS
|
||
version.
|
||
|
||
- bpo-35798: Added :func:`test.support.check_syntax_warning`.
|
||
|
||
- bpo-35505: Make test_imap4_host_default_value independent on whether the
|
||
local IMAP server is running.
|
||
|
||
- bpo-35917: multiprocessing: provide unit tests for SyncManager and
|
||
SharedMemoryManager classes + all the shareable types which are supposed
|
||
to be supported by them. (patch by Giampaolo Rodola)
|
||
|
||
- bpo-35704: Skip ``test_shutil.test_unpack_archive_xztar`` to prevent a
|
||
MemoryError on 32-bit AIX when MAXDATA setting is less than 0x20000000.
|
||
|
||
Patch by Michael Felt (aixtools)
|
||
|
||
- bpo-34720: Assert m_state != NULL to mimic GC traversal functions that do
|
||
not correctly handle module creation when the module state has not been
|
||
created.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-35976: Added ARM build support to Windows build files in PCBuild.
|
||
|
||
- bpo-35692: ``pathlib`` no longer raises when checking file and directory
|
||
existence on drives that are not ready
|
||
|
||
- bpo-35872: Uses the base Python executable when invoking venv in a virtual
|
||
environment
|
||
|
||
- bpo-35873: Prevents venv paths being inherited by child processes
|
||
|
||
- bpo-35299: Fix sysconfig detection of the source directory and distutils
|
||
handling of pyconfig.h during PGO profiling
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-24310: IDLE -- Document settings dialog font tab sample.
|
||
|
||
- bpo-35833: Revise IDLE doc for control codes sent to Shell. Add a code
|
||
example block.
|
||
|
||
- bpo-35689: Add docstrings and unittests for colorizer.py.
|
||
|
||
|
||
What's New in Python 3.8.0 alpha 1?
|
||
===================================
|
||
|
||
*Release date: 2019-02-03*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-35746: [CVE-2019-5010] Fix a NULL pointer deref in ssl module. The
|
||
cert parser did not handle CRL distribution points with empty DP or URI
|
||
correctly. A malicious or buggy certificate can result into segfault.
|
||
Vulnerability (TALOS-2018-0758) reported by Colin Read and Nicolas Edet of
|
||
Cisco.
|
||
|
||
- bpo-34812: The :option:`-I` command line option (run Python in isolated
|
||
mode) is now also copied by the :mod:`multiprocessing` and
|
||
:mod:`distutils` modules when spawning child processes. Previously, only
|
||
:option:`-E` and :option:`-s` options (enabled by :option:`-I`) were
|
||
copied.
|
||
|
||
- bpo-34791: The xml.sax and xml.dom.domreg no longer use environment
|
||
variables to override parser implementations when
|
||
sys.flags.ignore_environment is set by -E or -I arguments.
|
||
|
||
- bpo-17239: The xml.sax and xml.dom.minidom parsers no longer processes
|
||
external entities by default. External DTD and ENTITY declarations no
|
||
longer load files or create network connections.
|
||
|
||
- bpo-34623: CVE-2018-14647: The C accelerated _elementtree module now
|
||
initializes hash randomization salt from _Py_HashSecret instead of
|
||
libexpat's default CSPRNG.
|
||
|
||
- bpo-34405: Updated to OpenSSL 1.1.0i for Windows builds.
|
||
|
||
- bpo-33871: Fixed sending the part of the file in :func:`os.sendfile` on
|
||
macOS. Using the *trailers* argument could cause sending more bytes from
|
||
the input file than was specified.
|
||
|
||
- bpo-32533: Fixed thread-safety of error handling in _ssl.
|
||
|
||
- bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970.
|
||
X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new
|
||
test ensures that NULL bytes are not allowed.
|
||
|
||
- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows
|
||
|
||
- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic
|
||
backtracking. These regexes formed potential DOS vectors (REDOS). They
|
||
have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch
|
||
by Jamie Davis.
|
||
|
||
- bpo-28414: The ssl module now allows users to perform their own IDN
|
||
en/decoding when using SNI.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-35877: Make parenthesis optional for named expressions in while
|
||
statement. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-35814: Allow same right hand side expressions in annotated assignments
|
||
as in normal ones. In particular, ``x: Tuple[int, int] = 1, 2`` (without
|
||
parentheses on the right) is now allowed.
|
||
|
||
- bpo-35766: Add the option to parse PEP 484 type comments in the ast
|
||
module. (Off by default.) This is merging the key functionality of the
|
||
third party fork thereof,
|
||
[typed_ast](https://github.com/python/typed_ast).
|
||
|
||
- bpo-35713: Reorganize Python initialization to get working exceptions and
|
||
sys.stderr earlier.
|
||
|
||
- bpo-33416: Add end line and end column position information to the Python
|
||
AST nodes. This is a C-level backwards incompatible change.
|
||
|
||
- bpo-35720: Fixed a minor memory leak in pymain_parse_cmdline_impl function
|
||
in Modules/main.c
|
||
|
||
- bpo-35634: ``func(**kwargs)`` will now raise an error when ``kwargs`` is a
|
||
mapping containing multiple entries with the same key. An error was
|
||
already raised when other keyword arguments are passed before ``**kwargs``
|
||
since Python 3.6.
|
||
|
||
- bpo-35623: Fix a crash when sorting very long lists. Patch by Stephan
|
||
Hohe.
|
||
|
||
- bpo-35214: clang Memory Sanitizer build instrumentation was added to work
|
||
around false positives from posix, socket, time, test_io, and
|
||
test_faulthandler.
|
||
|
||
- bpo-35560: Fix an assertion error in :func:`format` in debug build for
|
||
floating point formatting with "n" format, zero padding and small width.
|
||
Release build is not impacted. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-35552: Format characters ``%s`` and ``%V`` in
|
||
:c:func:`PyUnicode_FromFormat` and ``%s`` in :c:func:`PyBytes_FromFormat`
|
||
no longer read memory past the limit if *precision* is specified.
|
||
|
||
- bpo-35504: Fix segfaults and :exc:`SystemError`\ s when deleting certain
|
||
attributes. Patch by Zackery Spytz.
|
||
|
||
- bpo-35504: Fixed a SystemError when delete the characters_written
|
||
attribute of an OSError.
|
||
|
||
- bpo-35494: Improved syntax error messages for unbalanced parentheses in
|
||
f-string.
|
||
|
||
- bpo-35444: Fixed error handling in pickling methods when fail to look up
|
||
builtin "getattr". Sped up pickling iterators.
|
||
|
||
- bpo-35436: Fix various issues with memory allocation error handling.
|
||
Patch by Zackery Spytz.
|
||
|
||
- bpo-35423: Separate the signal handling trigger in the eval loop from the
|
||
"pending calls" machinery. There is no semantic change and the difference
|
||
in performance is insignificant.
|
||
|
||
- bpo-35357: Internal attributes' names of unittest.mock._Call and
|
||
unittest.mock.MagicProxy (name, parent & from_kall) are now prefixed with
|
||
_mock_ in order to prevent clashes with widely used object attributes.
|
||
Fixed minor typo in test function name.
|
||
|
||
- bpo-35372: Fixed the code page decoder for input longer than 2 GiB
|
||
containing undecodable bytes.
|
||
|
||
- bpo-35336: Fix PYTHONCOERCECLOCALE=1 environment variable: only coerce the
|
||
C locale if the LC_CTYPE locale is "C".
|
||
|
||
- bpo-31241: The *lineno* and *col_offset* attributes of AST nodes for list
|
||
comprehensions, generator expressions and tuples are now point to the
|
||
opening parenthesis or square brace. For tuples without parenthesis they
|
||
point to the position of the first item.
|
||
|
||
- bpo-33954: For :meth:`str.format`, :meth:`float.__format__` and
|
||
:meth:`complex.__format__` methods for non-ASCII decimal point when using
|
||
the "n" formatter.
|
||
|
||
- bpo-35269: Fix a possible segfault involving a newly created coroutine.
|
||
Patch by Zackery Spytz.
|
||
|
||
- bpo-35224: Implement :pep:`572` (assignment expressions). Patch by Emily
|
||
Morehouse.
|
||
|
||
- bpo-32492: Speed up :class:`namedtuple` attribute access by 1.6x using a C
|
||
fast-path for the name descriptors. Patch by Pablo Galindo.
|
||
|
||
- bpo-35214: Fixed an out of bounds memory access when parsing a truncated
|
||
unicode escape sequence at the end of a string such as ``'\N'``. It would
|
||
read one byte beyond the end of the memory allocation.
|
||
|
||
- bpo-35214: The interpreter and extension modules have had annotations
|
||
added so that they work properly under clang's Memory Sanitizer. A new
|
||
configure flag --with-memory-sanitizer has been added to make test builds
|
||
of this nature easier to perform.
|
||
|
||
- bpo-35193: Fix an off by one error in the bytecode peephole optimizer
|
||
where it could read bytes beyond the end of bounds of an array when
|
||
removing unreachable code. This bug was present in every release of Python
|
||
3.6 and 3.7 until now.
|
||
|
||
- bpo-35169: Improved error messages for forbidden assignments.
|
||
|
||
- bpo-34022: Fix handling of hash-based bytecode files in :mod:`zipimport`.
|
||
Patch by Elvis Pranskevichus.
|
||
|
||
- bpo-28401: Debug builds will no longer to attempt to import extension
|
||
modules built for the ABI as they were never compatible to begin with.
|
||
Patch by Stefano Rivera.
|
||
|
||
- bpo-29341: Clarify in the docstrings of :mod:`os` methods that path-like
|
||
objects are also accepted as input parameters.
|
||
|
||
- bpo-35050: :mod:`socket`: Fix off-by-one bug in length check for
|
||
``AF_ALG`` name and type.
|
||
|
||
- bpo-29743: Raise :exc:`ValueError` instead of :exc:`OverflowError` in case
|
||
of a negative ``_length_`` in a :class:`ctypes.Array` subclass. Also
|
||
raise :exc:`TypeError` instead of :exc:`AttributeError` for non-integer
|
||
``_length_``. Original patch by Oren Milman.
|
||
|
||
- bpo-16806: Fix ``lineno`` and ``col_offset`` for multi-line string tokens.
|
||
|
||
- bpo-35029: :exc:`SyntaxWarning` raised as an exception at code generation
|
||
time will be now replaced with a :exc:`SyntaxError` for better error
|
||
reporting.
|
||
|
||
- bpo-34983: Expose :meth:`symtable.Symbol.is_nonlocal` in the symtable
|
||
module. Patch by Pablo Galindo.
|
||
|
||
- bpo-34974: :class:`bytes` and :class:`bytearray` constructors no longer
|
||
convert unexpected exceptions (e.g. :exc:`MemoryError` and
|
||
:exc:`KeyboardInterrupt`) to :exc:`TypeError`.
|
||
|
||
- bpo-34939: Allow annotated names in module namespace that are declared
|
||
global before the annotation happens. Patch by Pablo Galindo.
|
||
|
||
- bpo-34973: Fixed crash in :func:`bytes` when the :class:`list` argument is
|
||
mutated while it is iterated.
|
||
|
||
- bpo-34876: The *lineno* and *col_offset* attributes of the AST for
|
||
decorated function and class refer now to the position of the
|
||
corresponding ``def``, ``async def`` and ``class`` instead of the position
|
||
of the first decorator. This leads to more correct line reporting in
|
||
tracing. This is the only case when the position of child AST nodes can
|
||
precede the position of the parent AST node.
|
||
|
||
- bpo-34879: Fix a possible null pointer dereference in bytesobject.c.
|
||
Patch by Zackery Spytz.
|
||
|
||
- bpo-34784: Fix the implementation of PyStructSequence_NewType in order to
|
||
create heap allocated StructSequences.
|
||
|
||
- bpo-32912: A :exc:`SyntaxWarning` is now emitted instead of a
|
||
:exc:`DeprecationWarning` for invalid escape sequences in string and bytes
|
||
literals.
|
||
|
||
- bpo-34854: Fixed a crash in compiling string annotations containing a
|
||
lambda with a keyword-only argument that doesn't have a default value.
|
||
|
||
- bpo-34850: The compiler now produces a :exc:`SyntaxWarning` when identity
|
||
checks (``is`` and ``is not``) are used with certain types of literals
|
||
(e.g. strings, ints). These can often work by accident in CPython, but
|
||
are not guaranteed by the language spec. The warning advises users to use
|
||
equality tests (``==`` and ``!=``) instead.
|
||
|
||
- bpo-34824: Fix a possible null pointer dereference in Modules/_ssl.c.
|
||
Patch by Zackery Spytz.
|
||
|
||
- bpo-30156: The C function ``property_descr_get()`` uses a "cached" tuple
|
||
to optimize function calls. But this tuple can be discovered in debug mode
|
||
with :func:`sys.getobjects()`. Remove the optimization, it's not really
|
||
worth it and it causes 3 different crashes last years.
|
||
|
||
- bpo-34762: Fix contextvars C API to use PyObject* pointer types.
|
||
|
||
- bpo-34751: The hash function for tuples is now based on xxHash which gives
|
||
better collision results on (formerly) pathological cases. Additionally,
|
||
on 64-bit systems it improves tuple hashes in general. Patch by Jeroen
|
||
Demeyer with substantial contributions by Tim Peters.
|
||
|
||
- bpo-34735: Fix a memory leak in Modules/timemodule.c. Patch by Zackery
|
||
Spytz.
|
||
|
||
- bpo-34683: Fixed a bug where some SyntaxError error pointed to locations
|
||
that were off-by-one.
|
||
|
||
- bpo-34651: Only allow the main interpreter to fork. The avoids the
|
||
possibility of affecting the main interpreter, which is critical to
|
||
operation of the runtime.
|
||
|
||
- bpo-34653: Remove unused function PyParser_SimpleParseStringFilename.
|
||
|
||
- bpo-32236: Warn that line buffering is not supported if :func:`open` is
|
||
called with binary mode and ``buffering=1``.
|
||
|
||
- bpo-34641: Further restrict the syntax of the left-hand side of keyword
|
||
arguments in function calls. In particular, ``f((keyword)=arg)`` is now
|
||
disallowed.
|
||
|
||
- bpo-34637: Make the *start* argument to *sum()* visible as a keyword
|
||
argument.
|
||
|
||
- bpo-1621: Do not assume signed integer overflow behavior (C undefined
|
||
behavior) when performing set hash table resizing.
|
||
|
||
- bpo-34588: Fix an off-by-one in the recursive call pruning feature of
|
||
traceback formatting.
|
||
|
||
- bpo-34485: On Windows, the LC_CTYPE is now set to the user preferred
|
||
locale at startup. Previously, the LC_CTYPE locale was "C" at startup, but
|
||
changed when calling setlocale(LC_CTYPE, "") or setlocale(LC_ALL, "").
|
||
|
||
- bpo-34485: Standard streams like sys.stdout now use the "surrogateescape"
|
||
error handler, instead of "strict", on the POSIX locale (when the C locale
|
||
is not coerced and the UTF-8 Mode is disabled).
|
||
|
||
- bpo-34485: Fix the error handler of standard streams like sys.stdout:
|
||
PYTHONIOENCODING=":" is now ignored instead of setting the error handler
|
||
to "strict".
|
||
|
||
- bpo-34485: Python now gets the locale encoding with C code to initialize
|
||
the encoding of standard streams like sys.stdout. Moreover, the encoding
|
||
is now initialized to the Python codec name to get a normalized encoding
|
||
name and to ensure that the codec is loaded. The change avoids importing
|
||
_bootlocale and _locale modules at startup by default.
|
||
|
||
- bpo-34527: On FreeBSD, Py_DecodeLocale() and Py_EncodeLocale() now also
|
||
forces the ASCII encoding if the LC_CTYPE locale is "POSIX", not only if
|
||
the LC_CTYPE locale is "C".
|
||
|
||
- bpo-34527: The UTF-8 Mode is now also enabled by the "POSIX" locale, not
|
||
only by the "C" locale.
|
||
|
||
- bpo-34403: On HP-UX with C or POSIX locale, sys.getfilesystemencoding()
|
||
now returns "ascii" instead of "roman8" (when the UTF-8 Mode is disabled
|
||
and the C locale is not coerced).
|
||
|
||
- bpo-34523: The Python filesystem encoding is now read earlier during the
|
||
Python initialization.
|
||
|
||
- bpo-12458: Tracebacks show now correct line number for subexpressions in
|
||
multiline expressions. Tracebacks show now the line number of the first
|
||
line for multiline expressions instead of the line number of the last
|
||
subexpression.
|
||
|
||
- bpo-34408: Prevent a null pointer dereference and resource leakage in
|
||
``PyInterpreterState_New()``.
|
||
|
||
- bpo-34400: Fix undefined behavior in parsetok.c. Patch by Zackery Spytz.
|
||
|
||
- bpo-33073: Added as_integer_ratio to ints to make them more interoperable
|
||
with floats.
|
||
|
||
- bpo-34377: Update valgrind suppression list to use
|
||
``_PyObject_Free``/``_PyObject_Realloc`` instead of
|
||
``PyObject_Free``/``PyObject_Realloc``.
|
||
|
||
- bpo-34353: Added the "socket" option in the `stat.filemode()` Python
|
||
implementation to match the C implementation.
|
||
|
||
- bpo-34320: Fix ``dict(od)`` didn't copy iteration order of OrderedDict.
|
||
|
||
- bpo-34113: Fixed crash on debug builds when opcode stack was adjusted with
|
||
negative numbers. Patch by Constantin Petrisor.
|
||
|
||
- bpo-34100: Compiler now merges constants in tuples and frozensets
|
||
recursively. Code attributes like ``co_names`` are merged too.
|
||
|
||
- bpo-34151: Performance of list concatenation, repetition and slicing
|
||
operations is slightly improved. Patch by Sergey Fedoseev.
|
||
|
||
- bpo-34170: -X dev: it is now possible to override the memory allocator
|
||
using PYTHONMALLOC even if the developer mode is enabled.
|
||
|
||
- bpo-33237: Improved :exc:`AttributeError` message for partially
|
||
initialized module.
|
||
|
||
- bpo-34149: Fix min and max functions to get default behavior when key is
|
||
None.
|
||
|
||
- bpo-34125: Profiling of unbound built-in methods now works when
|
||
``**kwargs`` is given.
|
||
|
||
- bpo-34141: Optimized pickling atomic types (None, bool, int, float, bytes,
|
||
str).
|
||
|
||
- bpo-34126: Fix crashes when profiling certain invalid calls of unbound
|
||
methods. Patch by Jeroen Demeyer.
|
||
|
||
- bpo-24618: Fixed reading invalid memory when create the code object with
|
||
too small varnames tuple or too large argument counts.
|
||
|
||
- bpo-34068: In :meth:`io.IOBase.close`, ensure that the
|
||
:attr:`~io.IOBase.closed` attribute is not set with a live exception.
|
||
Patch by Zackery Spytz and Serhiy Storchaka.
|
||
|
||
- bpo-34087: Fix buffer overflow while converting unicode to numeric values.
|
||
|
||
- bpo-34080: Fixed a memory leak in the compiler when it raised some
|
||
uncommon errors during tokenizing.
|
||
|
||
- bpo-34066: Disabled interruption by Ctrl-C between calling ``open()`` and
|
||
entering a **with** block in ``with open()``.
|
||
|
||
- bpo-34042: Fix dict.copy() to maintain correct total refcount (as reported
|
||
by sys.gettotalrefcount()).
|
||
|
||
- bpo-33418: Fix potential memory leak in function object when it creates
|
||
reference cycle.
|
||
|
||
- bpo-33985: Implement contextvars.ContextVar.name attribute.
|
||
|
||
- bpo-33956: Update vendored Expat library copy to version 2.2.5.
|
||
|
||
- bpo-24596: Decref the module object in :c:func:`PyRun_SimpleFileExFlags`
|
||
before calling :c:func:`PyErr_Print()`. Patch by Zackery Spytz.
|
||
|
||
- bpo-33451: Close directly executed pyc files before calling
|
||
``PyEval_EvalCode()``.
|
||
|
||
- bpo-1617161: The hash of :class:`BuiltinMethodType` instances (methods of
|
||
built-in classes) now depends on the hash of the identity of *__self__*
|
||
instead of its value. The hash and equality of :class:`ModuleType` and
|
||
:class:`MethodWrapperType` instances (methods of user-defined classes and
|
||
some methods of built-in classes like ``str.__add__``) now depend on the
|
||
hash and equality of the identity of *__self__* instead of its value.
|
||
:class:`MethodWrapperType` instances no longer support ordering.
|
||
|
||
- bpo-33824: Fix "LC_ALL=C python3.7 -V": reset properly the command line
|
||
parser when the encoding changes after reading the Python configuration.
|
||
|
||
- bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an
|
||
object that hadn't all of its fields set to NULL.
|
||
|
||
- bpo-33738: Seven macro incompatibilities with the Limited API were fixed,
|
||
and the macros :c:func:`PyIter_Check`, :c:func:`PyIndex_Check` and
|
||
:c:func:`PyExceptionClass_Name` were added as functions. A script for
|
||
automatic macro checks was added.
|
||
|
||
- bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow()
|
||
correctly
|
||
|
||
- bpo-30167: ``PyRun_SimpleFileExFlags`` removes ``__cached__`` from module
|
||
in addition to ``__file__``.
|
||
|
||
- bpo-33706: Fix a crash in Python initialization when parsing the command
|
||
line options. Thanks Christoph Gohlke for the bug report and the fix!
|
||
|
||
- bpo-33597: Reduce ``PyGC_Head`` size from 3 words to 2 words.
|
||
|
||
- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter
|
||
shutdown even when there was a custom handler set previously. Patch by
|
||
Philipp Kerling.
|
||
|
||
- bpo-33622: Fixed a leak when the garbage collector fails to add an object
|
||
with the ``__del__`` method or referenced by it into the
|
||
:data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
|
||
exception is set and preserves it.
|
||
|
||
- bpo-33462: Make dict and dict views reversible. Patch by Rémi Lapeyre.
|
||
|
||
- bpo-23722: A :exc:`RuntimeError` is now raised when the custom metaclass
|
||
doesn't provide the ``__classcell__`` entry in the namespace passed to
|
||
``type.__new__``. A :exc:`DeprecationWarning` was emitted in Python
|
||
3.6--3.7.
|
||
|
||
- bpo-33499: Add :envvar:`PYTHONPYCACHEPREFIX` environment variable and
|
||
:option:`-X` ``pycache_prefix`` command-line option to set an alternate
|
||
root directory for writing module bytecode cache files.
|
||
|
||
- bpo-25711: The :mod:`zipimport` module has been rewritten in pure Python.
|
||
|
||
- bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't
|
||
crash if module_globals is not a dict.
|
||
|
||
- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c.
|
||
|
||
- bpo-33475: Fixed miscellaneous bugs in converting annotations to strings
|
||
and optimized parentheses in the string representation.
|
||
|
||
- bpo-20104: Added support for the `setpgroup`, `resetids`, `setsigmask`,
|
||
`setsigdef` and `scheduler` parameters of `posix_spawn`. Patch by Pablo
|
||
Galindo.
|
||
|
||
- bpo-33391: Fix a leak in set_symmetric_difference().
|
||
|
||
- bpo-33363: Raise a SyntaxError for ``async with`` and ``async for``
|
||
statements outside of async functions.
|
||
|
||
- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer.
|
||
|
||
- bpo-33128: Fix a bug that causes PathFinder to appear twice on
|
||
sys.meta_path. Patch by Pablo Galindo Salgado.
|
||
|
||
- bpo-33331: Modules imported last are now cleared first at interpreter
|
||
shutdown.
|
||
|
||
- bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in
|
||
dictobject.c by adjusting how the internal struct _dictkeysobject shared
|
||
keys structure is declared.
|
||
|
||
- bpo-33305: Improved syntax error messages for invalid numerical literals.
|
||
|
||
- bpo-33306: Improved syntax error messages for unbalanced parentheses.
|
||
|
||
- bpo-33234: The list constructor will pre-size and not over-allocate when
|
||
the input length is known.
|
||
|
||
- bpo-33270: Intern the names for all anonymous code objects. Patch by
|
||
Zackery Spytz.
|
||
|
||
- bpo-30455: The C and Python code and the documentation related to tokens
|
||
are now generated from a single source file :file:`Grammar/Tokens`.
|
||
|
||
- bpo-33176: Add a ``toreadonly()`` method to memoryviews.
|
||
|
||
- bpo-33231: Fix potential memory leak in ``normalizestring()``.
|
||
|
||
- bpo-33205: Change dict growth function from
|
||
``round_up_to_power_2(used*2+hashtable_size/2)`` to
|
||
``round_up_to_power_2(used*3)``. Previously, dict is shrinked only when
|
||
``used == 0``. Now dict has more chance to be shrinked.
|
||
|
||
- bpo-29922: Improved error messages in 'async with' when ``__aenter__()``
|
||
or ``__aexit__()`` return non-awaitable object.
|
||
|
||
- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized
|
||
when copying from key-sharing dict.
|
||
|
||
- bpo-33053: When using the -m switch, sys.path[0] is now explicitly
|
||
expanded as the *starting* working directory, rather than being left as
|
||
the empty path (which allows imports from the current working directory at
|
||
the time of the import)
|
||
|
||
- bpo-33138: Changed standard error message for non-pickleable and
|
||
non-copyable types. It now says "cannot pickle" instead of "can't pickle"
|
||
or "cannot serialize".
|
||
|
||
- bpo-33018: Improve consistency of errors raised by ``issubclass()`` when
|
||
called with a non-class and an abstract base class as the first and second
|
||
arguments, respectively. Patch by Josh Bronson.
|
||
|
||
- bpo-33083: ``math.factorial`` no longer accepts arguments that are not
|
||
int-like. Patch by Pablo Galindo.
|
||
|
||
- bpo-33041: Added new opcode :opcode:`END_ASYNC_FOR` and fixes the
|
||
following issues:
|
||
|
||
* Setting global :exc:`StopAsyncIteration` no longer breaks ``async for``
|
||
loops.
|
||
* Jumping into an ``async for`` loop is now disabled.
|
||
* Jumping out of an ``async for`` loop no longer corrupts the stack.
|
||
|
||
- bpo-25750: Fix rare Python crash due to bad refcounting in
|
||
``type_getattro()`` if a descriptor deletes itself from the class. Patch
|
||
by Jeroen Demeyer.
|
||
|
||
- bpo-33041: Fixed bytecode generation for "async for" with a complex
|
||
target. A StopAsyncIteration raised on assigning or unpacking will be now
|
||
propagated instead of stopping the iteration.
|
||
|
||
- bpo-33026: Fixed jumping out of "with" block by setting f_lineno.
|
||
|
||
- bpo-33005: Fix a crash on fork when using a custom memory allocator (ex:
|
||
using PYTHONMALLOC env var). _PyGILState_Reinit() and
|
||
_PyInterpreterState_Enable() now use the default RAW memory allocator to
|
||
allocate a new interpreters mutex on fork.
|
||
|
||
- bpo-32911: Due to unexpected compatibility issues discovered during
|
||
downstream beta testing, reverted :issue:`29463`. ``docstring`` field is
|
||
removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes
|
||
which was added in 3.7a1. Docstring expression is restored as a first
|
||
statement in their body. Based on patch by Inada Naoki.
|
||
|
||
- bpo-17288: Prevent jumps from 'return' and 'exception' trace events.
|
||
|
||
- bpo-32946: Importing names from already imported module with "from ...
|
||
import ..." is now 30% faster if the module is not a package.
|
||
|
||
- bpo-32932: Make error message more revealing when there are non-str
|
||
objects in ``__all__``.
|
||
|
||
- bpo-32925: Optimized iterating and containing test for literal lists
|
||
consisting of non-constants: ``x in [a, b]`` and ``for x in [a, b]``. The
|
||
case of all constant elements already was optimized.
|
||
|
||
- bpo-32889: Update Valgrind suppression list to account for the rename of
|
||
``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
|
||
|
||
- bpo-32836: Don't use temporary variables in cases of list/dict/set
|
||
comprehensions
|
||
|
||
- bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled()
|
||
context manager).
|
||
|
||
- bpo-32305: For namespace packages, ensure that both ``__file__`` and
|
||
``__spec__.origin`` are set to None.
|
||
|
||
- bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for
|
||
namespace packages.
|
||
|
||
- bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by
|
||
Stéphane Wirtel
|
||
|
||
- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by
|
||
write out-of-bound errors when using customized decode error handlers.
|
||
|
||
- bpo-32489: A :keyword:`continue` statement is now allowed in the
|
||
:keyword:`finally` clause.
|
||
|
||
- bpo-17611: Simplified the interpreter loop by moving the logic of
|
||
unrolling the stack of blocks into the compiler. The compiler emits now
|
||
explicit instructions for adjusting the stack of values and calling the
|
||
cleaning up code for :keyword:`break`, :keyword:`continue` and
|
||
:keyword:`return`.
|
||
|
||
Removed opcodes :opcode:`BREAK_LOOP`, :opcode:`CONTINUE_LOOP`,
|
||
:opcode:`SETUP_LOOP` and :opcode:`SETUP_EXCEPT`. Added new opcodes
|
||
:opcode:`ROT_FOUR`, :opcode:`BEGIN_FINALLY` and :opcode:`CALL_FINALLY` and
|
||
:opcode:`POP_FINALLY`. Changed the behavior of :opcode:`END_FINALLY` and
|
||
:opcode:`WITH_CLEANUP_START`.
|
||
|
||
- bpo-32285: New function unicodedata.is_normalized, which can check whether
|
||
a string is in a specific normal form.
|
||
|
||
- bpo-10544: Yield expressions are now disallowed in comprehensions and
|
||
generator expressions except the expression for the outermost iterable.
|
||
|
||
- bpo-32117: Iterable unpacking is now allowed without parentheses in yield
|
||
and return statements, e.g. ``yield 1, 2, 3, *rest``. Thanks to David
|
||
Cuthbert for the change and Jordan Chapman for added tests.
|
||
|
||
- bpo-31902: Fix the ``col_offset`` attribute for ast nodes
|
||
``ast.AsyncFor``, ``ast.AsyncFunctionDef``, and ``ast.AsyncWith``.
|
||
Previously, ``col_offset`` pointed to the keyword after ``async``.
|
||
|
||
- bpo-25862: Fix assertion failures in the ``tell()`` method of
|
||
``io.TextIOWrapper``. Patch by Zackery Spytz.
|
||
|
||
- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a
|
||
ctypes structured data type. Patch by Eryk Sun and Oren Milman.
|
||
|
||
- bpo-31577: Fix a crash in `os.utime()` in case of a bad ns argument. Patch
|
||
by Oren Milman.
|
||
|
||
- bpo-29832: Remove references to 'getsockaddrarg' from various socket error
|
||
messages. Patch by Oren Milman.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-35845: Add 'order' parameter to memoryview.tobytes().
|
||
|
||
- bpo-35864: The _asdict() method for collections.namedtuple now returns a
|
||
regular dict instead of an OrderedDict.
|
||
|
||
- bpo-35537: An ExitStack is now used internally within subprocess.Popen to
|
||
clean up pipe file handles. No behavior change in normal operation. But if
|
||
closing one handle were ever to cause an exception, the others will now be
|
||
closed instead of leaked. (patch by Giampaolo Rodola)
|
||
|
||
- bpo-35847: RISC-V needed the CTYPES_PASS_BY_REF_HACK. Fixes ctypes
|
||
Structure test_pass_by_value.
|
||
|
||
- bpo-35813: Shared memory submodule added to multiprocessing to avoid need
|
||
for serialization between processes
|
||
|
||
- bpo-35780: Fix lru_cache() errors arising in recursive, reentrant, or
|
||
multi-threaded code. These errors could result in orphan links and in the
|
||
cache being trapped in a state with fewer than the specified maximum
|
||
number of links. Fix handling of negative maxsize which should have been
|
||
treated as zero. Fix errors in toggling the "full" status flag. Fix
|
||
misordering of links when errors are encountered. Sync-up the C code and
|
||
pure Python code for the space saving path in functions with a single
|
||
positional argument. In this common case, the space overhead of an lru
|
||
cache entry is reduced by almost half. Fix counting of cache misses. In
|
||
error cases, the miss count was out of sync with the actual number of
|
||
times the underlying user function was called.
|
||
|
||
- bpo-35537: :func:`os.posix_spawn` and :func:`os.posix_spawnp` now have a
|
||
*setsid* parameter.
|
||
|
||
- bpo-23846: :class:`asyncio.ProactorEventLoop` now catches and logs send
|
||
errors when the self-pipe is full.
|
||
|
||
- bpo-34323: :mod:`asyncio`: Enhance ``IocpProactor.close()`` log: wait 1
|
||
second before the first log, then log every second. Log also the number of
|
||
seconds since ``close()`` was called.
|
||
|
||
- bpo-35674: Add a new :func:`os.posix_spawnp` function. Patch by Joannah
|
||
Nanjekye.
|
||
|
||
- bpo-35733: ``ast.Constant(boolean)`` no longer an instance of
|
||
:class:`ast.Num`. Patch by Anthony Sottile.
|
||
|
||
- bpo-35726: QueueHandler.prepare() now makes a copy of the record before
|
||
modifying and enqueueing it, to avoid affecting other handlers in the
|
||
chain.
|
||
|
||
- bpo-35719: Sped up multi-argument :mod:`math` functions atan2(),
|
||
copysign(), remainder() and hypot() by 1.3--2.5 times.
|
||
|
||
- bpo-35717: Fix KeyError exception raised when using enums and compile.
|
||
Patch contributed by Rémi Lapeyre.
|
||
|
||
- bpo-35699: Fixed detection of Visual Studio Build Tools 2017 in distutils
|
||
|
||
- bpo-32710: Fix memory leaks in asyncio ProactorEventLoop on overlapped
|
||
operation failure.
|
||
|
||
- bpo-35702: The :data:`time.CLOCK_UPTIME_RAW` constant is now available for
|
||
macOS 10.12.
|
||
|
||
- bpo-32710: Fix a memory leak in asyncio in the ProactorEventLoop when
|
||
``ReadFile()`` or ``WSASend()`` overlapped operation fail immediately:
|
||
release the internal buffer.
|
||
|
||
- bpo-35682: Fix ``asyncio.ProactorEventLoop.sendfile()``: don't attempt to
|
||
set the result of an internal future if it's already done.
|
||
|
||
- bpo-35283: Add a deprecated warning for the
|
||
:meth:`threading.Thread.isAlive` method. Patch by Dong-hee Na.
|
||
|
||
- bpo-35664: Improve operator.itemgetter() performance by 33% with optimized
|
||
argument handling and with adding a fast path for the common case of a
|
||
single non-negative integer index into a tuple (which is the typical use
|
||
case in the standard library).
|
||
|
||
- bpo-35643: Fixed a SyntaxWarning: invalid escape sequence in
|
||
Modules/_sha3/cleanup.py. Patch by Mickaël Schoentgen.
|
||
|
||
- bpo-35619: Improved support of custom data descriptors in :func:`help` and
|
||
:mod:`pydoc`.
|
||
|
||
- bpo-28503: The `crypt` module now internally uses the `crypt_r()` library
|
||
function instead of `crypt()` when available.
|
||
|
||
- bpo-35614: Fixed help() on metaclasses. Patch by Sanyam Khurana.
|
||
|
||
- bpo-35568: Expose ``raise(signum)`` as `raise_signal`
|
||
|
||
- bpo-35588: The floor division and modulo operations and the :func:`divmod`
|
||
function on :class:`fractions.Fraction` types are 2--4x faster. Patch by
|
||
Stefan Behnel.
|
||
|
||
- bpo-35585: Speed-up building enums by value, e.g. http.HTTPStatus(200).
|
||
|
||
- bpo-30561: random.gammavariate(1.0, beta) now computes the same result as
|
||
random.expovariate(1.0 / beta). This synchronizes the two algorithms and
|
||
eliminates some idiosyncrasies in the old implementation. It does however
|
||
produce a difference stream of random variables than it used to.
|
||
|
||
- bpo-35537: The :mod:`subprocess` module can now use the
|
||
:func:`os.posix_spawn` function in some cases for better performance.
|
||
|
||
- bpo-35526: Delaying the 'joke' of barry_as_FLUFL.mandatory to Python
|
||
version 4.0
|
||
|
||
- bpo-35523: Remove :mod:`ctypes` callback workaround: no longer create a
|
||
callback at startup. Avoid SELinux alert on ``import ctypes`` and ``import
|
||
uuid``.
|
||
|
||
- bpo-31784: :func:`uuid.uuid1` now calls :func:`time.time_ns` rather than
|
||
``int(time.time() * 1e9)``.
|
||
|
||
- bpo-35513: :class:`~unittest.runner.TextTestRunner` of
|
||
:mod:`unittest.runner` now uses :func:`time.perf_counter` rather than
|
||
:func:`time.time` to measure the execution time of a test:
|
||
:func:`time.time` can go backwards, whereas :func:`time.perf_counter` is
|
||
monotonic.
|
||
|
||
- bpo-35502: Fixed reference leaks in
|
||
:class:`xml.etree.ElementTree.TreeBuilder` in case of unfinished building
|
||
of the tree (in particular when an error was raised during parsing XML).
|
||
|
||
- bpo-35348: Make :func:`platform.architecture` parsing of ``file`` command
|
||
output more reliable: add the ``-b`` option to the ``file`` command to
|
||
omit the filename, force the usage of the C locale, and search also the
|
||
"shared object" pattern.
|
||
|
||
- bpo-35491: :mod:`multiprocessing`: Add ``Pool.__repr__()`` and enhance
|
||
``BaseProcess.__repr__()`` (add pid and parent pid) to ease debugging.
|
||
Pool state constant values are now strings instead of integers, for
|
||
example ``RUN`` value becomes ``'RUN'`` instead of ``0``.
|
||
|
||
- bpo-35477: :meth:`multiprocessing.Pool.__enter__` now fails if the pool is
|
||
not running: ``with pool:`` fails if used more than once.
|
||
|
||
- bpo-31446: Copy command line that was passed to CreateProcessW since this
|
||
function can change the content of the input buffer.
|
||
|
||
- bpo-35471: Python 2.4 dropped MacOS 9 support. The macpath module was
|
||
deprecated in Python 3.7. The module is now removed.
|
||
|
||
- bpo-23057: Unblock Proactor event loop when keyboard interrupt is received
|
||
on Windows
|
||
|
||
- bpo-35052: Fix xml.dom.minidom cloneNode() on a document with an entity:
|
||
pass the correct arguments to the user data handler of an entity.
|
||
|
||
- bpo-20239: Allow repeated assignment deletion of
|
||
:class:`unittest.mock.Mock` attributes. Patch by Pablo Galindo.
|
||
|
||
- bpo-17185: Set ``__signature__`` on mock for :mod:`inspect` to get
|
||
signature. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-35445: Memory errors during creating posix.environ no longer ignored.
|
||
|
||
- bpo-35415: Validate fileno= argument to socket.socket().
|
||
|
||
- bpo-35424: :class:`multiprocessing.Pool` destructor now emits
|
||
:exc:`ResourceWarning` if the pool is still running.
|
||
|
||
- bpo-35330: When a :class:`Mock` instance was used to wrap an object, if
|
||
`side_effect` is used in one of the mocks of it methods, don't call the
|
||
original implementation and return the result of using the side effect the
|
||
same way that it is done with return_value.
|
||
|
||
- bpo-35346: Drop Mac OS 9 and Rhapsody support from the :mod:`platform`
|
||
module. Rhapsody last release was in 2000. Mac OS 9 last release was in
|
||
2001.
|
||
|
||
- bpo-10496: :func:`~distutils.utils.check_environ` of
|
||
:mod:`distutils.utils` now catches :exc:`KeyError` on calling
|
||
:func:`pwd.getpwuid`: don't create the ``HOME`` environment variable in
|
||
this case.
|
||
|
||
- bpo-10496: :func:`posixpath.expanduser` now returns the input *path*
|
||
unchanged if the ``HOME`` environment variable is not set and the current
|
||
user has no home directory (if the current user identifier doesn't exist
|
||
in the password database). This change fix the :mod:`site` module if the
|
||
current user doesn't exist in the password database (if the user has no
|
||
home directory).
|
||
|
||
- bpo-35389: :func:`platform.libc_ver` now uses
|
||
``os.confstr('CS_GNU_LIBC_VERSION')`` if available and the *executable*
|
||
parameter is not set.
|
||
|
||
- bpo-35394: Add empty slots to asyncio abstract protocols.
|
||
|
||
- bpo-35310: Fix a bug in :func:`select.select` where, in some cases, the
|
||
file descriptor sequences were returned unmodified after a signal
|
||
interruption, even though the file descriptors might not be ready yet.
|
||
:func:`select.select` will now always return empty lists if a timeout has
|
||
occurred. Patch by Oran Avraham.
|
||
|
||
- bpo-35380: Enable TCP_NODELAY on Windows for proactor asyncio event loop.
|
||
|
||
- bpo-35341: Add generic version of ``collections.OrderedDict`` to the
|
||
``typing`` module. Patch by Ismo Toijala.
|
||
|
||
- bpo-35371: Fixed possible crash in ``os.utime()`` on Windows when pass
|
||
incorrect arguments.
|
||
|
||
- bpo-35346: :func:`platform.uname` now redirects ``stderr`` to
|
||
:data:`os.devnull` when running external programs like ``cmd /c ver``.
|
||
|
||
- bpo-35066: Previously, calling the strftime() method on a datetime object
|
||
with a trailing '%' in the format string would result in an exception.
|
||
However, this only occurred when the datetime C module was being used; the
|
||
python implementation did not match this behavior. Datetime is now PEP-399
|
||
compliant, and will not throw an exception on a trailing '%'.
|
||
|
||
- bpo-35345: The function `platform.popen` has been removed, it was
|
||
deprecated since Python 3.3: use :func:`os.popen` instead.
|
||
|
||
- bpo-35344: On macOS, :func:`platform.platform` now uses
|
||
:func:`platform.mac_ver`, if it returns a non-empty release string, to get
|
||
the macOS version rather than the darwin version.
|
||
|
||
- bpo-35312: Make ``lib2to3.pgen2.parse.ParseError`` round-trip pickle-able.
|
||
Patch by Anthony Sottile.
|
||
|
||
- bpo-35308: Fix regression in ``webbrowser`` where default browsers may be
|
||
preferred over browsers in the ``BROWSER`` environment variable.
|
||
|
||
- bpo-24746: Avoid stripping trailing whitespace in doctest fancy diff.
|
||
Original patch by R. David Murray & Jairo Trad. Enhanced by Sanyam
|
||
Khurana.
|
||
|
||
- bpo-28604: :func:`locale.localeconv` now sets temporarily the ``LC_CTYPE``
|
||
locale to the ``LC_MONETARY`` locale if the two locales are different and
|
||
monetary strings are non-ASCII. This temporary change affects other
|
||
threads.
|
||
|
||
- bpo-35277: Update ensurepip to install pip 18.1 and setuptools 40.6.2.
|
||
|
||
- bpo-24209: Adds IPv6 support when invoking http.server directly.
|
||
|
||
- bpo-35226: Recursively check arguments when testing for equality of
|
||
:class:`unittest.mock.call` objects and add note that tracking of
|
||
parameters used to create ancestors of mocks in ``mock_calls`` is not
|
||
possible.
|
||
|
||
- bpo-29564: The warnings module now suggests to enable tracemalloc if the
|
||
source is specified, the tracemalloc module is available, but tracemalloc
|
||
is not tracing memory allocations.
|
||
|
||
- bpo-35189: Modify the following fnctl function to retry if interrupted by
|
||
a signal (EINTR): flock, lockf, fnctl
|
||
|
||
- bpo-30064: Use add_done_callback() in sock_* asyncio API to unsubscribe
|
||
reader/writer early on calcellation.
|
||
|
||
- bpo-35186: Removed the "built with" comment added when ``setup.py upload``
|
||
is used with either ``bdist_rpm`` or ``bdist_dumb``.
|
||
|
||
- bpo-35152: Allow sending more than 2 GB at once on a multiprocessing
|
||
connection on non-Windows systems.
|
||
|
||
- bpo-35062: Fix incorrect parsing of
|
||
:class:`_io.IncrementalNewlineDecoder`'s *translate* argument.
|
||
|
||
- bpo-35065: Remove `StreamReaderProtocol._untrack_reader`. The call to
|
||
`_untrack_reader` is currently performed too soon, causing the protocol to
|
||
forget about the reader before `connection_lost` can run and feed the EOF
|
||
to the reader.
|
||
|
||
- bpo-34160: ElementTree and minidom now preserve the attribute order
|
||
specified by the user.
|
||
|
||
- bpo-35079: Improve difflib.SequenceManager.get_matching_blocks doc by
|
||
adding 'non-overlapping' and changing '!=' to '<'.
|
||
|
||
- bpo-33710: Deprecated ``l*gettext()`` functions and methods in the
|
||
:mod:`gettext` module. They return encoded bytes instead of Unicode
|
||
strings and are artifacts from Python 2 times. Also deprecated functions
|
||
and methods related to setting the charset for ``l*gettext()`` functions
|
||
and methods.
|
||
|
||
- bpo-35017: :meth:`socketserver.BaseServer.serve_forever` now exits
|
||
immediately if it's :meth:`~socketserver.BaseServer.shutdown` method is
|
||
called while it is polling for new events.
|
||
|
||
- bpo-35024: `importlib` no longer logs `wrote <bytecode path>` redundantly
|
||
after `(created|could not create) <bytecode path>` is already logged.
|
||
Patch by Quentin Agren.
|
||
|
||
- bpo-35047: ``unittest.mock`` now includes mock calls in exception messages
|
||
if ``assert_not_called``, ``assert_called_once``, or
|
||
``assert_called_once_with`` fails. Patch by Petter Strandmark.
|
||
|
||
- bpo-31047: Fix ``ntpath.abspath`` regression where it didn't remove a
|
||
trailing separator on Windows. Patch by Tim Graham.
|
||
|
||
- bpo-35053: tracemalloc now tries to update the traceback when an object is
|
||
reused from a "free list" (optimization for faster object creation, used
|
||
by the builtin list type for example).
|
||
|
||
- bpo-31553: Add the --json-lines option to json.tool. Patch by hongweipeng.
|
||
|
||
- bpo-34794: Fixed a leak in Tkinter when pass the Python wrapper around
|
||
Tcl_Obj back to Tcl/Tk.
|
||
|
||
- bpo-34909: Enum: fix grandchildren subclassing when parent mixed with
|
||
concrete data types.
|
||
|
||
- bpo-35022: :class:`unittest.mock.MagicMock` now supports the
|
||
``__fspath__`` method (from :class:`os.PathLike`).
|
||
|
||
- bpo-35008: Fixed references leaks when call the ``__setstate__()`` method
|
||
of :class:`xml.etree.ElementTree.Element` in the C implementation for
|
||
already initialized element.
|
||
|
||
- bpo-23420: Verify the value for the parameter '-s' of the cProfile CLI.
|
||
Patch by Robert Kuska
|
||
|
||
- bpo-33947: dataclasses now handle recursive reprs without raising
|
||
RecursionError.
|
||
|
||
- bpo-34890: Make :func:`inspect.iscoroutinefunction`,
|
||
:func:`inspect.isgeneratorfunction` and :func:`inspect.isasyncgenfunction`
|
||
work with :func:`functools.partial`. Patch by Pablo Galindo.
|
||
|
||
- bpo-34521: Use :func:`socket.CMSG_SPACE` to calculate ancillary data size
|
||
instead of :func:`socket.CMSG_LEN` in
|
||
:func:`multiprocessing.reduction.recvfds` as :rfc:`3542` requires the use
|
||
of the former for portable applications.
|
||
|
||
- bpo-31522: The `mailbox.mbox.get_string` function *from_* parameter can
|
||
now successfully be set to a non-default value.
|
||
|
||
- bpo-34970: Protect tasks weak set manipulation in ``asyncio.all_tasks()``
|
||
|
||
- bpo-34969: gzip: Add --fast, --best on the gzip CLI, these parameters will
|
||
be used for the fast compression method (quick) or the best method
|
||
compress (slower, but smaller file). Also, change the default compression
|
||
level to 6 (tradeoff).
|
||
|
||
- bpo-16965: The :term:`2to3` :2to3fixer:`execfile` fixer now opens the file
|
||
with mode ``'rb'``. Patch by Zackery Spytz.
|
||
|
||
- bpo-34966: :mod:`pydoc` now supports aliases not only to methods defined
|
||
in the end class, but also to inherited methods. The docstring is not
|
||
duplicated for aliases.
|
||
|
||
- bpo-34926: :meth:`mimetypes.MimeTypes.guess_type` now accepts
|
||
:term:`path-like object` in addition to url strings. Patch by Mayank
|
||
Asthana.
|
||
|
||
- bpo-23831: Add ``moveto()`` method to the ``tkinter.Canvas`` widget. Patch
|
||
by Juliette Monsel.
|
||
|
||
- bpo-34941: Methods ``find()``, ``findtext()`` and ``findall()`` of the
|
||
``Element`` class in the :mod:`xml.etree.ElementTree` module are now able
|
||
to find children which are instances of ``Element`` subclasses.
|
||
|
||
- bpo-32680: :class:`smtplib.SMTP` objects now always have a `sock`
|
||
attribute present
|
||
|
||
- bpo-34769: Fix for async generators not finalizing when event loop is in
|
||
debug mode and garbage collector runs in another thread.
|
||
|
||
- bpo-34936: Fix ``TclError`` in ``tkinter.Spinbox.selection_element()``.
|
||
Patch by Juliette Monsel.
|
||
|
||
- bpo-34829: Add methods ``selection_from``, ``selection_range``,
|
||
``selection_present`` and ``selection_to`` to the ``tkinter.Spinbox`` for
|
||
consistency with the ``tkinter.Entry`` widget. Patch by Juliette Monsel.
|
||
|
||
- bpo-34911: Added *secure_protocols* argument to
|
||
*http.cookiejar.DefaultCookiePolicy* to allow for tweaking of protocols
|
||
and also to add support by default for *wss*, the secure websocket
|
||
protocol.
|
||
|
||
- bpo-34922: Fixed integer overflow in the :meth:`~hashlib.shake.digest()`
|
||
and :meth:`~hashlib.shake.hexdigest()` methods for the SHAKE algorithm in
|
||
the :mod:`hashlib` module.
|
||
|
||
- bpo-34925: 25% speedup in argument parsing for the functions in the bisect
|
||
module.
|
||
|
||
- bpo-34900: Fixed :meth:`unittest.TestCase.debug` when used to call test
|
||
methods with subtests. Patch by Bruno Oliveira.
|
||
|
||
- bpo-34844: logging.Formatter enhancement - Ensure styles and fmt matches
|
||
in logging.Formatter - Added validate method in each format style class:
|
||
StrFormatStyle, PercentStyle, StringTemplateStyle. - This method is called
|
||
in the constructor of logging.Formatter class - Also re-raise the KeyError
|
||
in the format method of each style class, so it would a bit clear that
|
||
it's an error with the invalid format fields.
|
||
|
||
- bpo-34897: Adjust test.support.missing_compiler_executable check so that a
|
||
nominal command name of "" is ignored. Patch by Michael Felt.
|
||
|
||
- bpo-34871: Fix inspect module polluted ``sys.modules`` when parsing
|
||
``__text_signature__`` of callable.
|
||
|
||
- bpo-34898: Add `mtime` argument to `gzip.compress` for reproducible
|
||
output. Patch by Guo Ci Teo.
|
||
|
||
- bpo-28441: On Cygwin and MinGW, ensure that ``sys.executable`` always
|
||
includes the full filename in the path, including the ``.exe`` suffix
|
||
(unless it is a symbolic link).
|
||
|
||
- bpo-34866: Adding ``max_num_fields`` to ``cgi.FieldStorage`` to make DOS
|
||
attacks harder by limiting the number of ``MiniFieldStorage`` objects
|
||
created by ``FieldStorage``.
|
||
|
||
- bpo-34711: http.server ensures it reports HTTPStatus.NOT_FOUND when the
|
||
local path ends with "/" and is not a directory, even if the underlying OS
|
||
(e.g. AIX) accepts such paths as a valid file reference. Patch by Michael
|
||
Felt.
|
||
|
||
- bpo-34872: Fix self-cancellation in C implementation of asyncio.Task
|
||
|
||
- bpo-34849: Don't log waiting for ``selector.select`` in asyncio loop
|
||
iteration. The waiting is pretty normal for any asyncio program, logging
|
||
its time just adds a noise to logs without any useful information
|
||
provided.
|
||
|
||
- bpo-34022: The :envvar:`SOURCE_DATE_EPOCH` environment variable no longer
|
||
overrides the value of the *invalidation_mode* argument to
|
||
:func:`py_compile.compile`, and determines its default value instead.
|
||
|
||
- bpo-34819: Use a monotonic clock to compute timeouts in
|
||
:meth:`Executor.map` and :func:`as_completed`, in order to prevent
|
||
timeouts from deviating when the system clock is adjusted.
|
||
|
||
- bpo-34758: Add .wasm -> application/wasm to list of recognized file types
|
||
and content type headers
|
||
|
||
- bpo-34789: :func:`xml.sax.make_parser` now accepts any iterable as its
|
||
*parser_list* argument. Patch by Andrés Delfino.
|
||
|
||
- bpo-34334: In :class:`QueueHandler`, clear `exc_text` from
|
||
:class:`LogRecord` to prevent traceback from being written twice.
|
||
|
||
- bpo-34687: On Windows, asyncio now uses ProactorEventLoop, instead of
|
||
SelectorEventLoop, by default.
|
||
|
||
- bpo-5950: Support reading zip files with archive comments in
|
||
:mod:`zipimport`.
|
||
|
||
- bpo-32892: The parser now represents all constants as
|
||
:class:`ast.Constant` instead of using specific constant AST types
|
||
(``Num``, ``Str``, ``Bytes``, ``NameConstant`` and ``Ellipsis``). These
|
||
classes are considered deprecated and will be removed in future Python
|
||
versions.
|
||
|
||
- bpo-34728: Add deprecation warning when `loop` is used in methods:
|
||
`asyncio.sleep`, `asyncio.wait` and `asyncio.wait_for`.
|
||
|
||
- bpo-34738: ZIP files created by :mod:`distutils` will now include entries
|
||
for directories.
|
||
|
||
- bpo-34659: Add an optional *initial* argument to itertools.accumulate().
|
||
|
||
- bpo-29577: Support multiple mixin classes when creating Enums.
|
||
|
||
- bpo-34670: Add SSLContext.post_handshake_auth and
|
||
SSLSocket.verify_client_post_handshake for TLS 1.3's post handshake
|
||
authentication feature.
|
||
|
||
- bpo-32718: The Activate.ps1 script from venv works with PowerShell Core
|
||
6.1 and is now available under all operating systems.
|
||
|
||
- bpo-31177: Fix bug that prevented using :meth:`reset_mock
|
||
<unittest.mock.Mock.reset_mock>` on mock instances with deleted attributes
|
||
|
||
- bpo-34672: Add a workaround, so the ``'Z'`` :func:`time.strftime`
|
||
specifier on the musl C library can work in some cases.
|
||
|
||
- bpo-34666: Implement ``asyncio.StreamWriter.awrite`` and
|
||
``asyncio.StreamWriter.aclose()`` coroutines. Methods are needed for
|
||
providing a consistent stream API with control flow switched on by
|
||
default.
|
||
|
||
- bpo-6721: Acquire the logging module's commonly used internal locks while
|
||
fork()ing to avoid deadlocks in the child process.
|
||
|
||
- bpo-34658: Fix a rare interpreter unhandled exception state SystemError
|
||
only seen when using subprocess with a preexec_fn while an after_parent
|
||
handler has been registered with os.register_at_fork and the fork system
|
||
call fails.
|
||
|
||
- bpo-34652: Ensure :func:`os.lchmod` is never defined on Linux.
|
||
|
||
- bpo-34638: Store a weak reference to stream reader to break strong
|
||
references loop between reader and protocol. It allows to detect and
|
||
close the socket if the stream is deleted (garbage collected) without
|
||
``close()`` call.
|
||
|
||
- bpo-34536: `Enum._missing_`: raise `ValueError` if None returned and
|
||
`TypeError` if non-member is returned.
|
||
|
||
- bpo-34636: Speed up re scanning of many non-matching characters for \s \w
|
||
and \d within bytes objects. (microoptimization)
|
||
|
||
- bpo-24412: Add :func:`~unittest.addModuleCleanup()` and
|
||
:meth:`~unittest.TestCase.addClassCleanup()` to unittest to support
|
||
cleanups for :func:`~unittest.setUpModule()` and
|
||
:meth:`~unittest.TestCase.setUpClass()`. Patch by Lisa Roach.
|
||
|
||
- bpo-34630: Don't log SSL certificate errors in asyncio code (connection
|
||
error logging is skipped already).
|
||
|
||
- bpo-32490: Prevent filename duplication in :mod:`subprocess` exception
|
||
messages. Patch by Zackery Spytz.
|
||
|
||
- bpo-34363: dataclasses.asdict() and .astuple() now handle namedtuples
|
||
correctly.
|
||
|
||
- bpo-34625: Update vendorized expat library version to 2.2.6.
|
||
|
||
- bpo-32270: The subprocess module no longer mistakenly closes redirected
|
||
fds even when they were in pass_fds when outside of the default {0, 1, 2}
|
||
set.
|
||
|
||
- bpo-34622: Create a dedicated ``asyncio.CancelledError``,
|
||
``asyncio.InvalidStateError`` and ``asyncio.TimeoutError`` exception
|
||
classes. Inherit them from corresponding exceptions from
|
||
``concurrent.futures`` package. Extract ``asyncio`` exceptions into a
|
||
separate file.
|
||
|
||
- bpo-34610: Fixed iterator of :class:`multiprocessing.managers.DictProxy`.
|
||
|
||
- bpo-34421: Fix distutils logging for non-ASCII strings. This caused
|
||
installation issues on Windows.
|
||
|
||
- bpo-34604: Fix possible mojibake in the error message of `pwd.getpwnam`
|
||
and `grp.getgrnam` using string representation because of invisible
|
||
characters or trailing whitespaces. Patch by William Grzybowski.
|
||
|
||
- bpo-30977: Make uuid.UUID use ``__slots__`` to reduce its memory
|
||
footprint. Based on original patch by Wouter Bolsterlee.
|
||
|
||
- bpo-34574: OrderedDict iterators are not exhausted during pickling
|
||
anymore. Patch by Sergey Fedoseev.
|
||
|
||
- bpo-8110: Refactored :mod:`subprocess` to check for Windows-specific
|
||
modules rather than ``sys.platform == 'win32'``.
|
||
|
||
- bpo-34530: ``distutils.spawn.find_executable()`` now falls back on
|
||
:data:`os.defpath` if the ``PATH`` environment variable is not set.
|
||
|
||
- bpo-34563: On Windows, fix multiprocessing.Connection for very large read:
|
||
fix _winapi.PeekNamedPipe() and _winapi.ReadFile() for read larger than
|
||
INT_MAX (usually ``2**31-1``).
|
||
|
||
- bpo-34558: Correct typo in Lib/ctypes/_aix.py
|
||
|
||
- bpo-34282: Move ``Enum._convert`` to ``EnumMeta._convert_`` and fix enum
|
||
members getting shadowed by parent attributes.
|
||
|
||
- bpo-22872: When the queue is closed, :exc:`ValueError` is now raised by
|
||
:meth:`multiprocessing.Queue.put` and :meth:`multiprocessing.Queue.get`
|
||
instead of :exc:`AssertionError` and :exc:`OSError`, respectively. Patch
|
||
by Zackery Spytz.
|
||
|
||
- bpo-34515: Fix parsing non-ASCII identifiers in
|
||
:mod:`lib2to3.pgen2.tokenize` (PEP 3131).
|
||
|
||
- bpo-13312: Avoids a possible integer underflow (undefined behavior) in the
|
||
time module's year handling code when passed a very low negative year
|
||
value.
|
||
|
||
- bpo-34472: Improved compatibility for streamed files in :mod:`zipfile`.
|
||
Previously an optional signature was not being written and certain ZIP
|
||
applications were not supported. Patch by Silas Sewell.
|
||
|
||
- bpo-34454: Fix the .fromisoformat() methods of datetime types crashing
|
||
when given unicode with non-UTF-8-encodable code points. Specifically,
|
||
datetime.fromisoformat() now accepts surrogate unicode code points used as
|
||
the separator. Report and tests by Alexey Izbyshev, patch by Paul Ganssle.
|
||
|
||
- bpo-6700: Fix inspect.getsourcelines for module level frames/tracebacks.
|
||
Patch by Vladimir Matveev.
|
||
|
||
- bpo-34171: Running the :mod:`trace` module no longer creates the
|
||
``trace.cover`` file.
|
||
|
||
- bpo-34441: Fix crash when an ``ABC``-derived class with invalid
|
||
``__subclasses__`` is passed as the second argument to
|
||
:func:`issubclass()`. Patch by Alexey Izbyshev.
|
||
|
||
- bpo-34427: Fix infinite loop in ``a.extend(a)`` for ``MutableSequence``
|
||
subclasses.
|
||
|
||
- bpo-34412: Make :func:`signal.strsignal` work on HP-UX. Patch by Michael
|
||
Osipov.
|
||
|
||
- bpo-20849: shutil.copytree now accepts a new ``dirs_exist_ok`` keyword
|
||
argument. Patch by Josh Bronson.
|
||
|
||
- bpo-31715: Associate ``.mjs`` file extension with
|
||
``application/javascript`` MIME Type.
|
||
|
||
- bpo-34384: :func:`os.readlink` now accepts :term:`path-like <path-like
|
||
object>` and :class:`bytes` objects on Windows.
|
||
|
||
- bpo-22602: The UTF-7 decoder now raises :exc:`UnicodeDecodeError` for
|
||
ill-formed sequences starting with "+" (as specified in RFC 2152). Patch
|
||
by Zackery Spytz.
|
||
|
||
- bpo-2122: The :meth:`mmap.flush() <mmap.mmap.flush>` method now returns
|
||
``None`` on success, raises an exception on error under all platforms.
|
||
|
||
- bpo-34341: Appending to the ZIP archive with the ZIP64 extension no longer
|
||
grows the size of extra fields of existing entries.
|
||
|
||
- bpo-34333: Fix %-formatting in :meth:`pathlib.PurePath.with_suffix` when
|
||
formatting an error message.
|
||
|
||
- bpo-18540: The :class:`imaplib.IMAP4` and :class:`imaplib.IMAP4_SSL`
|
||
classes now resolve to the local host IP correctly when the default value
|
||
of *host* parameter (``''``) is used.
|
||
|
||
- bpo-26502: Implement ``traceback.FrameSummary.__len__()`` method to
|
||
preserve compatibility with the old tuple API.
|
||
|
||
- bpo-34318: :func:`~unittest.TestCase.assertRaises`,
|
||
:func:`~unittest.TestCase.assertRaisesRegex`,
|
||
:func:`~unittest.TestCase.assertWarns` and
|
||
:func:`~unittest.TestCase.assertWarnsRegex` no longer success if the
|
||
passed callable is None. They no longer ignore unknown keyword arguments
|
||
in the context manager mode. A DeprecationWarning was raised in these
|
||
cases since Python 3.5.
|
||
|
||
- bpo-9372: Deprecate :meth:`__getitem__` methods of
|
||
:class:`xml.dom.pulldom.DOMEventStream`, :class:`wsgiref.util.FileWrapper`
|
||
and :class:`fileinput.FileInput`.
|
||
|
||
- bpo-33613: Fix a race condition in ``multiprocessing.semaphore_tracker``
|
||
when the tracker receives SIGINT before it can register signal handlers
|
||
for ignoring it.
|
||
|
||
- bpo-34248: Report filename in the exception raised when the database file
|
||
cannot be opened by :func:`dbm.gnu.open` and :func:`dbm.ndbm.open` due to
|
||
OS-related error. Patch by Zsolt Cserna.
|
||
|
||
- bpo-33089: Add math.dist() to compute the Euclidean distance between two
|
||
points.
|
||
|
||
- bpo-34246: :meth:`smtplib.SMTP.send_message` no longer modifies the
|
||
content of the *mail_options* argument. Patch by Pablo S. Blum de Aguiar.
|
||
|
||
- bpo-31047: Fix ``ntpath.abspath`` for invalid paths on windows. Patch by
|
||
Franz Woellert.
|
||
|
||
- bpo-32321: Add pure Python fallback for functools.reduce. Patch by Robert
|
||
Wright.
|
||
|
||
- bpo-34270: The default asyncio task class now always has a name which can
|
||
be get or set using two new methods (:meth:`~asyncio.Task.get_name()` and
|
||
:meth:`~asyncio.Task.set_name`) and is visible in the :func:`repr` output.
|
||
An initial name can also be set using the new ``name`` keyword argument to
|
||
:func:`asyncio.create_task` or the
|
||
:meth:`~asyncio.AbstractEventLoop.create_task` method of the event loop.
|
||
If no initial name is set, the default Task implementation generates a
|
||
name like ``Task-1`` using a monotonic counter.
|
||
|
||
- bpo-34263: asyncio's event loop will not pass timeouts longer than one day
|
||
to epoll/select etc.
|
||
|
||
- bpo-34035: Fix several AttributeError in zipfile seek() methods. Patch by
|
||
Mickaël Schoentgen.
|
||
|
||
- bpo-32215: Fix performance regression in :mod:`sqlite3` when a DML
|
||
statement appeared in a different line than the rest of the SQL query.
|
||
|
||
- bpo-34075: Deprecate passing non-ThreadPoolExecutor instances to
|
||
:meth:`AbstractEventLoop.set_default_executor`.
|
||
|
||
- bpo-34251: Restore ``msilib.Win64`` to preserve backwards compatibility
|
||
since it's already used by :mod:`distutils`' ``bdist_msi`` command.
|
||
|
||
- bpo-19891: Ignore errors caused by missing / non-writable homedir while
|
||
writing history during exit of an interactive session. Patch by Anthony
|
||
Sottile.
|
||
|
||
- bpo-33089: Enhanced math.hypot() to support more than two dimensions.
|
||
|
||
- bpo-34228: tracemalloc: PYTHONTRACEMALLOC=0 environment variable and -X
|
||
tracemalloc=0 command line option are now allowed to disable explicitly
|
||
tracemalloc at startup.
|
||
|
||
- bpo-13041: Use :func:`shutil.get_terminal_size` to calculate the terminal
|
||
width correctly in the ``argparse.HelpFormatter`` class. Initial patch by
|
||
Zbyszek Jędrzejewski-Szmek.
|
||
|
||
- bpo-34213: Allow frozen dataclasses to have a field named "object".
|
||
Previously this conflicted with an internal use of "object".
|
||
|
||
- bpo-34052: :meth:`sqlite3.Connection.create_aggregate`,
|
||
:meth:`sqlite3.Connection.create_function`,
|
||
:meth:`sqlite3.Connection.set_authorizer`,
|
||
:meth:`sqlite3.Connection.set_progress_handler` methods raises TypeError
|
||
when unhashable objects are passed as callable. These methods now don't
|
||
pass such objects to SQLite API. Previous behavior could lead to
|
||
segfaults. Patch by Sergey Fedoseev.
|
||
|
||
- bpo-34197: Attributes *skipinitialspace*, *doublequote* and *strict* of
|
||
the *dialect* attribute of the :mod:`csv` reader are now :class:`bool`
|
||
instances instead of integers 0 or 1.
|
||
|
||
- bpo-32788: Errors other than :exc:`TypeError` raised in methods
|
||
``__adapt__()`` and ``__conform__()`` in the :mod:`sqlite3` module are now
|
||
propagated to the user.
|
||
|
||
- bpo-21446: The :2to3fixer:`reload` fixer now uses :func:`importlib.reload`
|
||
instead of deprecated :func:`imp.reload`.
|
||
|
||
- bpo-940286: pydoc's ``Helper.showtopic()`` method now prints the cross
|
||
references of a topic correctly.
|
||
|
||
- bpo-34164: :func:`base64.b32decode` could raise UnboundLocalError or
|
||
OverflowError for incorrect padding. Now it always raises
|
||
:exc:`base64.Error` in these cases.
|
||
|
||
- bpo-33729: Fixed issues with arguments parsing in :mod:`hashlib`.
|
||
|
||
- bpo-34097: ZipFile can zip files older than 1980-01-01 and newer than
|
||
2107-12-31 using a new ``strict_timestamps`` parameter at the cost of
|
||
setting the timestamp to the limit.
|
||
|
||
- bpo-34108: Remove extraneous CR in 2to3 refactor.
|
||
|
||
- bpo-34070: Make sure to only check if the handle is a tty, when opening a
|
||
file with ``buffering=-1``.
|
||
|
||
- bpo-27494: Reverted :issue:`27494`. 2to3 rejects now a trailing comma in
|
||
generator expressions.
|
||
|
||
- bpo-33967: functools.singledispatch now raises TypeError instead of
|
||
IndexError when no positional arguments are passed.
|
||
|
||
- bpo-34041: Add the parameter *deterministic* to the
|
||
:meth:`sqlite3.Connection.create_function` method. Patch by Sergey
|
||
Fedoseev.
|
||
|
||
- bpo-34056: Ensure the loader shim created by ``imp.load_module`` always
|
||
returns bytes from its ``get_data()`` function. This fixes using
|
||
``imp.load_module`` with :pep:`552` hash-based pycs.
|
||
|
||
- bpo-34054: The multiprocessing module now uses the monotonic clock
|
||
:func:`time.monotonic` instead of the system clock :func:`time.time` to
|
||
implement timeout.
|
||
|
||
- bpo-34043: Optimize tarfile uncompress performance about 15% when gzip is
|
||
used.
|
||
|
||
- bpo-34044: ``subprocess.Popen`` now copies the *startupinfo* argument to
|
||
leave it unchanged: it will modify the copy, so that the same
|
||
``STARTUPINFO`` object can be used multiple times.
|
||
|
||
- bpo-34010: Fixed a performance regression for reading streams with
|
||
tarfile. The buffered read should use a list, instead of appending to a
|
||
bytes object.
|
||
|
||
- bpo-34019: webbrowser: Correct the arguments passed to Opera Browser when
|
||
opening a new URL using the ``webbrowser`` module. Patch by Bumsik Kim.
|
||
|
||
- bpo-34003: csv.DictReader now creates dicts instead of OrderedDicts. Patch
|
||
by Michael Selik.
|
||
|
||
- bpo-33978: Closed existing logging handlers before reconfiguration via
|
||
fileConfig and dictConfig. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-14117: Make minor tweaks to turtledemo. The 'wikipedia' example is now
|
||
'rosette', describing what it draws. The 'penrose' print output is
|
||
reduced. The'1024' output of 'tree' is eliminated.
|
||
|
||
- bpo-33974: Fixed passing lists and tuples of strings containing special
|
||
characters ``"``, ``\``, ``{``, ``}`` and ``\n`` as options to
|
||
:mod:`~tkinter.ttk` widgets.
|
||
|
||
- bpo-27500: Fix getaddrinfo to resolve IPv6 addresses correctly.
|
||
|
||
- bpo-24567: Improve random.choices() to handle subnormal input weights that
|
||
could occasionally trigger an IndexError.
|
||
|
||
- bpo-33871: Fixed integer overflow in :func:`os.readv`, :func:`os.writev`,
|
||
:func:`os.preadv` and :func:`os.pwritev` and in :func:`os.sendfile` with
|
||
*headers* or *trailers* arguments (on BSD-based OSes and macOS).
|
||
|
||
- bpo-25007: Add :func:`copy.copy` and :func:`copy.deepcopy` support to zlib
|
||
compressors and decompressors. Patch by Zackery Spytz.
|
||
|
||
- bpo-33929: multiprocessing: Fix a race condition in Popen of
|
||
multiprocessing.popen_spawn_win32. The child process now duplicates the
|
||
read end of pipe instead of "stealing" it. Previously, the read end of
|
||
pipe was "stolen" by the child process, but it leaked a handle if the
|
||
child process had been terminated before it could steal the handle from
|
||
the parent process.
|
||
|
||
- bpo-33899: Tokenize module now implicitly emits a NEWLINE when provided
|
||
with input that does not have a trailing new line. This behavior now
|
||
matches what the C tokenizer does internally. Contributed by Ammar Askar.
|
||
|
||
- bpo-33897: Added a 'force' keyword argument to logging.basicConfig().
|
||
|
||
- bpo-33695: :func:`shutil.copytree` uses :func:`os.scandir` function and
|
||
all copy functions depending from it use cached :func:`os.stat` values.
|
||
The speedup for copying a directory with 8000 files is around +9% on
|
||
Linux, +20% on Windows and + 30% on a Windows SMB share. Also the number
|
||
of :func:`os.stat` syscalls is reduced by 38% making
|
||
:func:`shutil.copytree` especially faster on network filesystems.
|
||
(Contributed by Giampaolo Rodola' in :issue:`33695`.)
|
||
|
||
- bpo-33916: bz2 and lzma: When Decompressor.__init__() is called twice,
|
||
free the old lock to not leak memory.
|
||
|
||
- bpo-32568: Make select.epoll() and its documentation consistent regarding
|
||
*sizehint* and *flags*.
|
||
|
||
- bpo-33833: Fixed bug in asyncio where ProactorSocketTransport logs
|
||
AssertionError if force closed during write.
|
||
|
||
- bpo-33663: Convert content length to string before putting to header.
|
||
|
||
- bpo-33721: :mod:`os.path` functions that return a boolean result like
|
||
:func:`~os.path.exists`, :func:`~os.path.lexists`, :func:`~os.path.isdir`,
|
||
:func:`~os.path.isfile`, :func:`~os.path.islink`, and
|
||
:func:`~os.path.ismount`, and :mod:`pathlib.Path` methods that return a
|
||
boolean result like :meth:`~pathlib.Path.exists()`,
|
||
:meth:`~pathlib.Path.is_dir()`, :meth:`~pathlib.Path.is_file()`,
|
||
:meth:`~pathlib.Path.is_mount()`, :meth:`~pathlib.Path.is_symlink()`,
|
||
:meth:`~pathlib.Path.is_block_device()`,
|
||
:meth:`~pathlib.Path.is_char_device()`, :meth:`~pathlib.Path.is_fifo()`,
|
||
:meth:`~pathlib.Path.is_socket()` now return ``False`` instead of raising
|
||
:exc:`ValueError` or its subclasses :exc:`UnicodeEncodeError` and
|
||
:exc:`UnicodeDecodeError` for paths that contain characters or bytes
|
||
unrepresentable at the OS level.
|
||
|
||
- bpo-26544: Fixed implementation of :func:`platform.libc_ver`. It almost
|
||
always returned version '2.9' for glibc.
|
||
|
||
- bpo-33843: Remove deprecated ``cgi.escape``, ``cgi.parse_qs`` and
|
||
``cgi.parse_qsl``.
|
||
|
||
- bpo-33842: Remove ``tarfile.filemode`` which is deprecated since Python
|
||
3.3.
|
||
|
||
- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
|
||
Steve Weber.
|
||
|
||
- bpo-33805: Improve error message of dataclasses.replace() when an InitVar
|
||
is not specified
|
||
|
||
- bpo-33687: Fix the call to ``os.chmod()`` for ``uu.decode()`` if a mode is
|
||
given or decoded. Patch by Timo Furrer.
|
||
|
||
- bpo-33812: Datetime instance d with non-None tzinfo, but with
|
||
d.tzinfo.utcoffset(d) returning None is now treated as naive by the
|
||
astimezone() method.
|
||
|
||
- bpo-32108: In configparser, don't clear section when it is assigned to
|
||
itself.
|
||
|
||
- bpo-27397: Make email module properly handle invalid-length base64
|
||
strings.
|
||
|
||
- bpo-33578: Implement multibyte encoder/decoder state methods
|
||
|
||
- bpo-30805: Avoid race condition with debug logging
|
||
|
||
- bpo-33476: Fix _header_value_parser.py when address group is missing final
|
||
';'. Contributed by Enrique Perez-Terron
|
||
|
||
- bpo-33694: asyncio: Fix a race condition causing data loss on
|
||
pause_reading()/resume_reading() when using the ProactorEventLoop.
|
||
|
||
- bpo-32493: Correct test for ``uuid_enc_be`` availability in
|
||
``configure.ac``. Patch by Michael Felt.
|
||
|
||
- bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and
|
||
asyncio.WindowsProactorEventLoopPolicy.
|
||
|
||
- bpo-33274: W3C DOM Level 1 specifies return value of
|
||
Element.removeAttributeNode() as "The Attr node that was removed."
|
||
xml.dom.minidom now complies with this requirement.
|
||
|
||
- bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0.
|
||
|
||
- bpo-33165: Added a stacklevel parameter to logging calls to allow use of
|
||
wrapper/helper functions for logging APIs.
|
||
|
||
- bpo-33770: improve base64 exception message for encoded inputs of invalid
|
||
length
|
||
|
||
- bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case
|
||
of an unhandled error; mark SSLTransport as closed if it is aborted.
|
||
|
||
- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence
|
||
operations now raise :exc:`TypeError` instead of :exc:`SystemError` when
|
||
performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz.
|
||
|
||
- bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake
|
||
timeout
|
||
|
||
- bpo-31014: Fixed creating a controller for :mod:`webbrowser` when a user
|
||
specifies a path to an entry in the BROWSER environment variable. Based
|
||
on patch by John Still.
|
||
|
||
- bpo-2504: Add gettext.pgettext() and variants.
|
||
|
||
- bpo-33197: Add description property for _ParameterKind
|
||
|
||
- bpo-32751: When cancelling the task due to a timeout,
|
||
:meth:`asyncio.wait_for` will now wait until the cancellation is complete.
|
||
|
||
- bpo-32684: Fix gather to propagate cancellation of itself even with
|
||
return_exceptions.
|
||
|
||
- bpo-33654: Support protocol type switching in SSLTransport.set_protocol().
|
||
|
||
- bpo-33674: Pause the transport as early as possible to further reduce the
|
||
risk of data_received() being called before connection_made().
|
||
|
||
- bpo-33671: :func:`shutil.copyfile`, :func:`shutil.copy`,
|
||
:func:`shutil.copy2`, :func:`shutil.copytree` and :func:`shutil.move` use
|
||
platform-specific fast-copy syscalls on Linux and macOS in order to copy
|
||
the file more efficiently. On Windows :func:`shutil.copyfile` uses a
|
||
bigger default buffer size (1 MiB instead of 16 KiB) and a
|
||
:func:`memoryview`-based variant of :func:`shutil.copyfileobj` is used.
|
||
The speedup for copying a 512MiB file is about +26% on Linux, +50% on
|
||
macOS and +40% on Windows. Also, much less CPU cycles are consumed.
|
||
(Contributed by Giampaolo Rodola' in :issue:`25427`.)
|
||
|
||
- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
|
||
asyncio.sslproto: start immediately the handshake instead of using
|
||
call_soon(). Previously, data_received() could be called before the
|
||
handshake started, causing the handshake to hang or fail.
|
||
|
||
- bpo-31647: Fixed bug where calling write_eof() on a
|
||
_SelectorSocketTransport after it's already closed raises AttributeError.
|
||
|
||
- bpo-32610: Make asyncio.all_tasks() return only pending tasks.
|
||
|
||
- bpo-32410: Avoid blocking on file IO in sendfile fallback code
|
||
|
||
- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor
|
||
|
||
- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines
|
||
|
||
- bpo-33654: Fix transport.set_protocol() to support switching between
|
||
asyncio.Protocol and asyncio.BufferedProtocol. Fix loop.start_tls() to
|
||
work with asyncio.BufferedProtocols.
|
||
|
||
- bpo-33652: Pickles of type variables and subscripted generics are now
|
||
future-proof and compatible with older Python versions.
|
||
|
||
- bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD.
|
||
|
||
- bpo-33238: Add ``InvalidStateError`` to :mod:`concurrent.futures`.
|
||
``Future.set_result`` and ``Future.set_exception`` now raise
|
||
``InvalidStateError`` if the futures are not pending or running. Patch by
|
||
Jason Haydaman.
|
||
|
||
- bpo-33618: Finalize and document preliminary and experimental TLS 1.3
|
||
support with OpenSSL 1.1.1
|
||
|
||
- bpo-33625: Release GIL on `grp.getgrnam`, `grp.getgrgid`, `pwd.getpwnam`
|
||
and `pwd.getpwuid` if reentrant variants of these functions are available.
|
||
Patch by William Grzybowski.
|
||
|
||
- bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__
|
||
|
||
- bpo-11874: Use a better regex when breaking usage into wrappable parts.
|
||
Avoids bogus assertion errors from custom metavar strings.
|
||
|
||
- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
|
||
that prevented the cache of parsed strings from clearing after finishing
|
||
the decoding. Based on patch by c-fos.
|
||
|
||
- bpo-33604: Remove HMAC default to md5 marked for removal in 3.8 (removal
|
||
originally planned in 3.6, bump to 3.8 in PR 7062).
|
||
|
||
- bpo-33582: Emit a deprecation warning for inspect.formatargspec
|
||
|
||
- bpo-21145: Add ``functools.cached_property`` decorator, for computed
|
||
properties cached for the life of the instance.
|
||
|
||
- bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with
|
||
OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers
|
||
enabled by default.
|
||
|
||
- bpo-28556: Do not simplify arguments to `typing.Union`. Now
|
||
`Union[Manager, Employee]` is not simplified to `Employee` at runtime.
|
||
Such simplification previously caused several bugs and limited
|
||
possibilities for introspection.
|
||
|
||
- bpo-12486: :func:`tokenize.generate_tokens` is now documented as a public
|
||
API to tokenize unicode strings. It was previously present but
|
||
undocumented.
|
||
|
||
- bpo-33540: Add a new ``block_on_close`` class attribute to
|
||
``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`.
|
||
|
||
- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP
|
||
locations
|
||
|
||
- bpo-33109: argparse subparsers are once again not required by default,
|
||
reverting the change in behavior introduced by bpo-26510 in 3.7.0a2.
|
||
|
||
- bpo-33541: Remove unused private method ``_strptime.LocaleTime.__pad``
|
||
(a.k.a. ``_LocaleTime__pad``).
|
||
|
||
- bpo-33536: dataclasses.make_dataclass now checks for invalid field names
|
||
and duplicate fields. Also, added a check for invalid field
|
||
specifications.
|
||
|
||
- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on
|
||
Windows. Patch by Zvi Effron
|
||
|
||
- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in
|
||
Windows proactor event loop.
|
||
|
||
- Fix failure in `typing.get_type_hints()` when ClassVar was provided as a
|
||
string forward reference.
|
||
|
||
- bpo-33516: :class:`unittest.mock.MagicMock` now supports the ``__round__``
|
||
magic method.
|
||
|
||
- bpo-28612: Added support for Site Maps to urllib's ``RobotFileParser`` as
|
||
:meth:`RobotFileParser.site_maps()
|
||
<urllib.robotparser.RobotFileParser.site_maps>`. Patch by Lady Red, based
|
||
on patch by Peter Wirtz.
|
||
|
||
- bpo-28167: Remove platform.linux_distribution, which was deprecated since
|
||
3.5.
|
||
|
||
- bpo-33504: Switch the default dictionary implementation for
|
||
:mod:`configparser` from :class:`collections.OrderedDict` to the standard
|
||
:class:`dict` type.
|
||
|
||
- bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x
|
||
faster.
|
||
|
||
- bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in
|
||
FieldStorage use the given errors (needed for Twisted). Patch by Amber
|
||
Brown.
|
||
|
||
- bpo-29235: The :class:`cProfile.Profile` class can now be used as a
|
||
context manager. Patch by Scott Sanderson.
|
||
|
||
- bpo-33495: Change dataclasses.Fields repr to use the repr of each of its
|
||
members, instead of str. This makes it more clear what each field
|
||
actually represents. This is especially true for the 'type' member.
|
||
|
||
- bpo-26103: Correct ``inspect.isdatadescriptor`` to look for ``__set__`` or
|
||
``__delete__``. Patch by Aaron Hall.
|
||
|
||
- bpo-29209: Removed the ``doctype()`` method and the *html* parameter of
|
||
the constructor of :class:`~xml.etree.ElementTree.XMLParser`. The
|
||
``doctype()`` method defined in a subclass will no longer be called.
|
||
Deprecated methods ``getchildren()`` and ``getiterator()`` in the
|
||
:mod:`~xml.etree.ElementTree` module emit now a :exc:`DeprecationWarning`
|
||
instead of :exc:`PendingDeprecationWarning`.
|
||
|
||
- bpo-33453: Fix dataclasses to work if using literal string type
|
||
annotations or if using PEP 563 "Postponed Evaluation of Annotations".
|
||
Only specific string prefixes are detected for both ClassVar ("ClassVar"
|
||
and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar").
|
||
|
||
- bpo-28556: Minor fixes in typing module: add annotations to
|
||
``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in
|
||
``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova.
|
||
|
||
- bpo-33365: Print the header values besides the header keys instead just
|
||
the header keys if *debuglevel* is set to >0 in :mod:`http.client`. Patch
|
||
by Marco Strigl.
|
||
|
||
- bpo-20087: Updated alias mapping with glibc 2.27 supported locales.
|
||
|
||
- bpo-33422: Fix trailing quotation marks getting deleted when looking up
|
||
byte/string literals on pydoc. Patch by Andrés Delfino.
|
||
|
||
- bpo-28167: The function ``platform.linux_distribution`` and
|
||
``platform.dist`` now trigger a ``DeprecationWarning`` and have been
|
||
marked for removal in Python 3.8
|
||
|
||
- bpo-33281: Fix ctypes.util.find_library regression on macOS.
|
||
|
||
- bpo-33311: Text and html output generated by cgitb does not display
|
||
parentheses if the current call is done directly in the module. Patch by
|
||
Stéphane Blondon.
|
||
|
||
- bpo-27300: The file classes in *tempfile* now accept an *errors* parameter
|
||
that complements the already existing *encoding*. Patch by Stephan Hohe.
|
||
|
||
- bpo-32933: :func:`unittest.mock.mock_open` now supports iteration over the
|
||
file contents. Patch by Tony Flury.
|
||
|
||
- bpo-33217: Raise :exc:`TypeError` when looking up non-Enum objects in Enum
|
||
classes and Enum members.
|
||
|
||
- bpo-33197: Update error message when constructing invalid
|
||
inspect.Parameters Patch by Dong-hee Na.
|
||
|
||
- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database
|
||
object when it is called with a single argument.
|
||
|
||
- bpo-33375: The warnings module now finds the Python file associated with a
|
||
warning from the code object, rather than the frame's global namespace.
|
||
This is consistent with how tracebacks and pdb find filenames, and should
|
||
work better for dynamically executed code.
|
||
|
||
- bpo-33336: ``imaplib`` now allows ``MOVE`` command in ``IMAP4.uid()`` (RFC
|
||
6851: IMAP MOVE Extension) and potentially as a name of supported method
|
||
of ``IMAP4`` object.
|
||
|
||
- bpo-32455: Added *jump* parameter to :func:`dis.stack_effect`.
|
||
|
||
- bpo-27485: Rename and deprecate undocumented functions in
|
||
:func:`urllib.parse`.
|
||
|
||
- bpo-33332: Add ``signal.valid_signals()`` to expose the POSIX sigfillset()
|
||
functionality.
|
||
|
||
- bpo-33251: `ConfigParser.items()` was fixed so that key-value pairs passed
|
||
in via `vars` are not included in the resulting output.
|
||
|
||
- bpo-33329: Fix multiprocessing regression on newer glibcs
|
||
|
||
- bpo-33334: :func:`dis.stack_effect` now supports all defined opcodes
|
||
including NOP and EXTENDED_ARG.
|
||
|
||
- bpo-991266: Fix quoting of the ``Comment`` attribute of
|
||
:class:`http.cookies.SimpleCookie`.
|
||
|
||
- bpo-33131: Upgrade bundled version of pip to 10.0.1.
|
||
|
||
- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST
|
||
object to a tree of tuples or lists with ``line_info=False`` and
|
||
``col_info=True``.
|
||
|
||
- bpo-23403: lib2to3 now uses pickle protocol 4 for pre-computed grammars.
|
||
|
||
- bpo-33266: lib2to3 now recognizes ``rf'...'`` strings.
|
||
|
||
- bpo-11594: Ensure line-endings are respected when using lib2to3.
|
||
|
||
- bpo-33254: Have :func:`importlib.resources.contents` and
|
||
:meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable`
|
||
instead of an :term:`iterator`.
|
||
|
||
- bpo-33265: ``contextlib.ExitStack`` and ``contextlib.AsyncExitStack`` now
|
||
use a method instead of a wrapper function for exit callbacks.
|
||
|
||
- bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad
|
||
Starostin.
|
||
|
||
- bpo-33256: Fix display of ``<module>`` call in the html produced by
|
||
``cgitb.html()``. Patch by Stéphane Blondon.
|
||
|
||
- bpo-33144: ``random.Random()`` and its subclassing mechanism got optimized
|
||
to check only once at class/subclass instantiation time whether its
|
||
``getrandbits()`` method can be relied on by other methods, including
|
||
``randrange()``, for the generation of arbitrarily large random integers.
|
||
Patch by Wolfgang Maier.
|
||
|
||
- bpo-33185: Fixed regression when running pydoc with the :option:`-m`
|
||
switch. (The regression was introduced in 3.7.0b3 by the resolution of
|
||
:issue:`33053`)
|
||
|
||
This fix also changed pydoc to add ``os.getcwd()`` to :data:`sys.path`
|
||
when necessary, rather than adding ``"."``.
|
||
|
||
- bpo-29613: Added support for the ``SameSite`` cookie flag to the
|
||
``http.cookies`` module.
|
||
|
||
- bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache`
|
||
when :meth:`importlib.machinery.invalidate_caches` is called.
|
||
|
||
- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty
|
||
sequences consistently even when called from subclasses without a
|
||
``getrandbits()`` implementation.
|
||
|
||
- bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught
|
||
StopIteration in a generator into a return-statement.
|
||
|
||
- bpo-33209: End framing at the end of C implementation of
|
||
:func:`pickle.Pickler.dump`.
|
||
|
||
- bpo-32861: The urllib.robotparser's ``__str__`` representation now
|
||
includes wildcard entries and the "Crawl-delay" and "Request-rate" fields.
|
||
Also removes extra newlines that were being appended to the end of the
|
||
string. Patch by Michael Lazar.
|
||
|
||
- bpo-23403: ``DEFAULT_PROTOCOL`` in :mod:`pickle` was bumped to 4. Protocol
|
||
4 is described in :pep:`3154` and available since Python 3.4. It offers
|
||
better performance and smaller size compared to protocol 3 introduced in
|
||
Python 3.0.
|
||
|
||
- bpo-20104: Improved error handling and fixed a reference leak in
|
||
:func:`os.posix_spawn()`.
|
||
|
||
- bpo-33106: Deleting a key from a read-only dbm database raises module
|
||
specific error instead of KeyError.
|
||
|
||
- bpo-33175: In dataclasses, Field.__set_name__ now looks up the
|
||
__set_name__ special method on the class, not the instance, of the default
|
||
value.
|
||
|
||
- bpo-32380: Create functools.singledispatchmethod to support generic single
|
||
dispatch on descriptors and methods.
|
||
|
||
- bpo-33141: Have Field objects pass through __set_name__ to their default
|
||
values, if they have their own __set_name__.
|
||
|
||
- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
|
||
boolean value. Note iid=0 and iid=False would be same. Patch by Garvit
|
||
Khatri.
|
||
|
||
- bpo-32873: Treat type variables and special typing forms as immutable by
|
||
copy and pickle. This fixes several minor issues and inconsistencies, and
|
||
improves backwards compatibility with Python 3.6.
|
||
|
||
- bpo-33134: When computing dataclass's __hash__, use the lookup table to
|
||
contain the function which returns the __hash__ value. This is an
|
||
improvement over looking up a string, and then testing that string to see
|
||
what to do.
|
||
|
||
- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.
|
||
|
||
- bpo-32505: Raise TypeError if a member variable of a dataclass is of type
|
||
Field, but doesn't have a type annotation.
|
||
|
||
- bpo-33078: Fix the failure on OSX caused by the tests relying on
|
||
sem_getvalue
|
||
|
||
- bpo-33116: Add 'Field' to dataclasses.__all__.
|
||
|
||
- bpo-32896: Fix an error where subclassing a dataclass with a field that
|
||
uses a default_factory would generate an incorrect class.
|
||
|
||
- bpo-33100: Dataclasses: If a field has a default value that's a
|
||
MemberDescriptorType, then it's from that field being in __slots__, not an
|
||
actual default value.
|
||
|
||
- bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow
|
||
attributes to be added to the derived class. Only attributes from the
|
||
frozen dataclass cannot be assigned to. Require all dataclasses in a
|
||
hierarchy to be either all frozen or all non-frozen.
|
||
|
||
- bpo-33097: Raise RuntimeError when ``executor.submit`` is called during
|
||
interpreter shutdown.
|
||
|
||
- bpo-32968: Modulo and floor division involving Fraction and float should
|
||
return float.
|
||
|
||
- bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py
|
||
|
||
- bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling
|
||
error occurs.
|
||
|
||
- bpo-33064: lib2to3 now properly supports trailing commas after ``*args``
|
||
and ``**kwargs`` in function signatures.
|
||
|
||
- bpo-33056: FIX properly close leaking fds in
|
||
concurrent.futures.ProcessPoolExecutor.
|
||
|
||
- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
|
||
threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch
|
||
by Nir Soffer.
|
||
|
||
- bpo-31804: Avoid failing in multiprocessing.Process if the standard
|
||
streams are closed or None at exit.
|
||
|
||
- bpo-33034: Providing an explicit error message when casting the port
|
||
property to anything that is not an integer value using ``urlparse()`` and
|
||
``urlsplit()``. Patch by Matt Eaton.
|
||
|
||
- bpo-30249: Improve struct.unpack_from() exception messages for problems
|
||
with the buffer size and offset.
|
||
|
||
- bpo-33037: Skip sending/receiving data after SSL transport closing.
|
||
|
||
- bpo-27683: Fix a regression in :mod:`ipaddress` that result of
|
||
:meth:`hosts` is empty when the network is constructed by a tuple
|
||
containing an integer mask and only 1 bit left for addresses.
|
||
|
||
- bpo-22674: Add the strsignal() function in the signal module that returns
|
||
the system description of the given signal, as returned by strsignal(3).
|
||
|
||
- bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls,
|
||
subclass)`` crashed when ``subclass`` is not a type object.
|
||
|
||
- bpo-33009: Fix inspect.signature() for single-parameter partialmethods.
|
||
|
||
- bpo-32969: Expose several missing constants in zlib and fix corresponding
|
||
documentation.
|
||
|
||
- bpo-32056: Improved exceptions raised for invalid number of channels and
|
||
sample width when read an audio file in modules :mod:`aifc`, :mod:`wave`
|
||
and :mod:`sunau`.
|
||
|
||
- bpo-32970: Improved disassembly of the MAKE_FUNCTION instruction.
|
||
|
||
- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
|
||
subprocess if another low descriptor is closed.
|
||
|
||
- bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen
|
||
classes, and also disallow inheriting non-frozen from frozen classes. This
|
||
restriction will be relaxed at a future date.
|
||
|
||
- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
|
||
by Joffrey Fuhrer.
|
||
|
||
- bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant,
|
||
available with OpenSSL 1.1.0h or 1.1.1.
|
||
|
||
- bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now
|
||
prohibited. The constructors were never documented, tested, or designed as
|
||
public constructors. Users were suppose to use ssl.wrap_socket() or
|
||
SSLContext.
|
||
|
||
- bpo-32929: Remove the tri-state parameter "hash", and add the boolean
|
||
"unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a
|
||
__hash__ exists, raise TypeError. If unsafe_hash is False, add a __hash__
|
||
based on the values of eq= and frozen=. The unsafe_hash=False behavior is
|
||
the same as the old hash=None behavior. unsafe_hash=False is the default,
|
||
just as hash=None used to be.
|
||
|
||
- bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3
|
||
for future compatibility with OpenSSL 1.1.1.
|
||
|
||
- bpo-32146: Document the interaction between frozen executables and the
|
||
spawn and forkserver start methods in multiprocessing.
|
||
|
||
- bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
|
||
|
||
- bpo-32922: dbm.open() now encodes filename with the filesystem encoding
|
||
rather than default encoding.
|
||
|
||
- bpo-32759: Free unused arenas in multiprocessing.heap.
|
||
|
||
- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3``
|
||
syscall exists or not.
|
||
|
||
- bpo-32556: nt._getfinalpathname, nt._getvolumepathname and
|
||
nt._getdiskusage now correctly convert from bytes.
|
||
|
||
- bpo-21060: Rewrite confusing message from setup.py upload from "No dist
|
||
file created in earlier command" to the more helpful "Must create and
|
||
upload files in one command".
|
||
|
||
- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a
|
||
:exc:`ValueError` instead of canceling the first scheduled function.
|
||
Patch by Cheryl Sabella.
|
||
|
||
- bpo-32852: Make sure sys.argv remains as a list when running trace.
|
||
|
||
- bpo-31333: ``_abc`` module is added. It is a speedup module with C
|
||
implementations for various functions and methods in ``abc``. Creating an
|
||
ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC
|
||
subclass are up to 1.5x faster. In addition, this makes Python start-up up
|
||
to 10% faster.
|
||
|
||
Note that the new implementation hides internal registry and caches,
|
||
previously accessible via private attributes ``_abc_registry``,
|
||
``_abc_cache``, and ``_abc_negative_cache``. There are three debugging
|
||
helper methods that can be used instead ``_dump_registry``,
|
||
``_abc_registry_clear``, and ``_abc_caches_clear``.
|
||
|
||
- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored
|
||
cancellation after notifying and cancelling a conditional lock. Patch by
|
||
Bar Harel.
|
||
|
||
- bpo-32819: ssl.match_hostname() has been simplified and no longer depends
|
||
on re and ipaddress module for wildcard and IP addresses. Error reporting
|
||
for invalid wildcards has been improved.
|
||
|
||
- bpo-19675: ``multiprocessing.Pool`` no longer leaks processes if its
|
||
initialization fails.
|
||
|
||
- bpo-32394: socket: Remove
|
||
TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version
|
||
Windows during run-time.
|
||
|
||
- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules.
|
||
(Contributed by Oren Milman)
|
||
|
||
- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
|
||
only the last field is quoted. Patch by Jake Davis.
|
||
|
||
- bpo-30688: Added support of ``\N{name}`` escapes in regular expressions.
|
||
Based on patch by Jonathan Eunice.
|
||
|
||
- bpo-32792: collections.ChainMap() preserves the order of the underlying
|
||
mappings.
|
||
|
||
- bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which
|
||
contain set operations. Sets starting with '[' or containing '--', '&&',
|
||
'~~' or '||' will be interpreted differently in regular expressions in
|
||
future versions. Currently they emit warnings. fnmatch.translate() now
|
||
avoids producing patterns containing such sets by accident.
|
||
|
||
- bpo-32622: Implement native fast sendfile for Windows proactor event loop.
|
||
|
||
- bpo-32777: Fix a rare but potential pre-exec child process deadlock in
|
||
subprocess on POSIX systems when marking file descriptors inheritable on
|
||
exec in the child process. This bug appears to have been introduced in
|
||
3.4.
|
||
|
||
- bpo-32647: The ctypes module used to depend on indirect linking for
|
||
dlopen. The shared extension is now explicitly linked against libdl on
|
||
platforms with dl.
|
||
|
||
- bpo-32749: A :mod:`dbm.dumb` database opened with flags 'r' is now
|
||
read-only. :func:`dbm.dumb.open` with flags 'r' and 'w' no longer creates
|
||
a database if it does not exist.
|
||
|
||
- bpo-32741: Implement ``asyncio.TimerHandle.when()`` method.
|
||
|
||
- bpo-32691: Use mod_spec.parent when running modules with pdb
|
||
|
||
- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring
|
||
and locking the same lock multiple times, without it being free. Patch by
|
||
Bar Harel.
|
||
|
||
- bpo-32727: Do not include name field in SMTP envelope from address. Patch
|
||
by Stéphane Wirtel
|
||
|
||
- bpo-31453: Add TLSVersion constants and SSLContext.maximum_version /
|
||
minimum_version attributes. The new API wraps OpenSSL 1.1
|
||
https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html
|
||
feature.
|
||
|
||
- bpo-24334: Internal implementation details of ssl module were cleaned up.
|
||
The SSLSocket has one less layer of indirection. Owner and session
|
||
information are now handled by the SSLSocket and SSLObject constructor.
|
||
Channel binding implementation has been simplified.
|
||
|
||
- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
|
||
chunk is not found. Patch by Zackery Spytz.
|
||
|
||
- bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`. Patch by Alan D
|
||
Moore.
|
||
|
||
- bpo-32512: :mod:`profile` CLI accepts `-m module_name` as an alternative
|
||
to script path.
|
||
|
||
- bpo-8525: help() on a type now displays builtin subclasses. This is
|
||
intended primarily to help with notification of more specific exception
|
||
subclasses.
|
||
|
||
Patch by Sanyam Khurana.
|
||
|
||
- bpo-31639: http.server now exposes a ThreadingHTTPServer class and uses it
|
||
when the module is run with ``-m`` to cope with web browsers pre-opening
|
||
sockets.
|
||
|
||
- bpo-29877: compileall: import ProcessPoolExecutor only when needed,
|
||
preventing hangs on low resource platforms
|
||
|
||
- bpo-32221: Various functions returning tuple containing IPv6 addresses now
|
||
omit ``%scope`` part since the same information is already encoded in
|
||
*scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom`
|
||
when it receives multicast packet since useless resolving of network
|
||
interface name is omitted.
|
||
|
||
- bpo-32147: :func:`binascii.unhexlify` is now up to 2 times faster. Patch
|
||
by Sergey Fedoseev.
|
||
|
||
- bpo-30693: The TarFile class now recurses directories in a reproducible
|
||
way.
|
||
|
||
- bpo-30693: The ZipFile class now recurses directories in a reproducible
|
||
way.
|
||
|
||
- bpo-31680: Added :data:`curses.ncurses_version`.
|
||
|
||
- bpo-31908: Fix output of cover files for ``trace`` module command-line
|
||
tool. Previously emitted cover files only when ``--missing`` option was
|
||
used. Patch by Michael Selik.
|
||
|
||
- bpo-31608: Raise a ``TypeError`` instead of crashing if a
|
||
``collections.deque`` subclass returns a non-deque from ``__new__``. Patch
|
||
by Oren Milman.
|
||
|
||
- bpo-31425: Add support for sockets of the AF_QIPCRTR address family,
|
||
supported by the Linux kernel. This is used to communicate with services,
|
||
such as GPS or radio, running on Qualcomm devices. Patch by Bjorn
|
||
Andersson.
|
||
|
||
- bpo-22005: Implemented unpickling instances of
|
||
:class:`~datetime.datetime`, :class:`~datetime.date` and
|
||
:class:`~datetime.time` pickled by Python 2. ``encoding='latin1'`` should
|
||
be used for successful decoding.
|
||
|
||
- bpo-27645: :class:`sqlite3.Connection` now exposes a
|
||
:class:`~sqlite3.Connection.backup` method, if the underlying SQLite
|
||
library is at version 3.6.11 or higher. Patch by Lele Gaifax.
|
||
|
||
- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer.
|
||
|
||
- bpo-31508: Removed support of arguments in
|
||
`tkinter.ttk.Treeview.selection`. It was deprecated in 3.6. Use
|
||
specialized methods like `selection_set` for changing the selection.
|
||
|
||
- bpo-29456: Fix bugs in hangul normalization: u1176, u11a7 and u11c3
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-21257: Document :func:`http.client.parse_headers`.
|
||
|
||
- bpo-34764: Improve example of iter() with 2nd sentinel argument.
|
||
|
||
- bpo-35564: Explicitly set master_doc variable in conf.py for compliance
|
||
with Sphinx 2.0
|
||
|
||
- bpo-35511: Specified that profile.Profile class doesn't not support enable
|
||
or disable methods. Also, elaborated that Profile object as a context
|
||
manager is only supported in cProfile module.
|
||
|
||
- bpo-10536: Enhance the gettext docs. Patch by Éric Araujo
|
||
|
||
- bpo-35089: Remove mention of ``typing.io`` and ``typing.re``. Their types
|
||
should be imported from ``typing`` directly.
|
||
|
||
- bpo-35038: Fix the documentation about an unexisting `f_restricted`
|
||
attribute in the frame object. Patch by Stéphane Wirtel
|
||
|
||
- bpo-35042: Replace PEP XYZ by the pep role and allow to use the direct
|
||
links to the PEPs.
|
||
|
||
- bpo-35044: Fix the documentation with the role ``exc`` for the
|
||
appropriated exception. Patch by Stéphane Wirtel
|
||
|
||
- bpo-35035: Rename documentation for :mod:`email.utils` to
|
||
``email.utils.rst``.
|
||
|
||
- bpo-34967: Use app.add_object_type() instead of the deprecated Sphinx
|
||
function app.description_unit()
|
||
|
||
- bpo-34913: Add documentation about the new command line interface of the
|
||
gzip module.
|
||
|
||
- bpo-32174: chm document displays non-ASCII charaters properly on some MBCS
|
||
Windows systems.
|
||
|
||
- bpo-11233: Create availability directive for documentation. Original
|
||
patch by Georg Brandl.
|
||
|
||
- bpo-34790: Document how passing coroutines to asyncio.wait() can be
|
||
confusing.
|
||
|
||
- bpo-34552: Make clear that ``==`` operator sometimes is equivalent to
|
||
`is`. The ``<``, ``<=``, ``>`` and ``>=`` operators are only defined where
|
||
they make sense.
|
||
|
||
- bpo-28617: Fixed info in the stdtypes docs concerning the types that
|
||
support membership tests.
|
||
|
||
- bpo-20177: Migrate datetime.date.fromtimestamp to Argument Clinic. Patch
|
||
by Tim Hoffmann.
|
||
|
||
- bpo-34065: Fix wrongly written basicConfig documentation markup syntax
|
||
|
||
- bpo-33460: replaced ellipsis with correct error codes in tutorial chapter
|
||
3.
|
||
|
||
- bpo-33847: Add '@' operator entry to index.
|
||
|
||
- bpo-33409: Clarified the relationship between :pep:`538`'s
|
||
PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode.
|
||
|
||
- bpo-33197: Add versionadded tag to the documentation of
|
||
ParameterKind.description
|
||
|
||
- bpo-17045: Improve the C-API doc for PyTypeObject. This includes adding
|
||
several quick-reference tables and a lot of missing slot/typedef entries.
|
||
The existing entries were also cleaned up with a slightly more consistent
|
||
format.
|
||
|
||
- bpo-33736: Improve the documentation of :func:`asyncio.open_connection`,
|
||
:func:`asyncio.start_server` and their UNIX socket counterparts.
|
||
|
||
- bpo-23859: Document that `asyncio.wait()` does not cancel its futures on
|
||
timeout.
|
||
|
||
- bpo-32436: Document :pep:`567` changes to asyncio.
|
||
|
||
- bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal
|
||
to 3.8.
|
||
|
||
- bpo-33594: Document ``getargspec``, ``from_function`` and ``from_builtin``
|
||
as deprecated in their respective docstring, and include version since
|
||
deprecation in DeprecationWarning message.
|
||
|
||
- bpo-33503: Fix broken pypi link
|
||
|
||
- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``.
|
||
|
||
- bpo-33487: BZ2file now emit a DeprecationWarning when buffering=None is
|
||
passed, the deprecation message and documentation also now explicitly
|
||
state it is deprecated since 3.0.
|
||
|
||
- bpo-33378: Add Korean language switcher for https://docs.python.org/3/
|
||
|
||
- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be
|
||
just any value.
|
||
|
||
- bpo-33201: Modernize documentation for writing C extension types.
|
||
|
||
- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document.
|
||
``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is
|
||
missed in the document.
|
||
|
||
- bpo-33126: Document PyBuffer_ToContiguous().
|
||
|
||
- bpo-27212: Modify documentation for the :func:`islice` recipe to consume
|
||
initial values up to the start index.
|
||
|
||
- bpo-28247: Update :mod:`zipapp` documentation to describe how to make
|
||
standalone applications.
|
||
|
||
- bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and
|
||
Berker Peksag.
|
||
|
||
- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder``
|
||
implements ``MetaPathFinder``. (Patch by Himanshu Lakhara)
|
||
|
||
- bpo-28124: The ssl module function ssl.wrap_socket() has been
|
||
de-emphasized and deprecated in favor of the more secure and efficient
|
||
SSLContext.wrap_socket() method.
|
||
|
||
- bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy.
|
||
|
||
- bpo-32436: Add documentation for the contextvars module (PEP 567).
|
||
|
||
- bpo-32800: Update link to w3c doc for xml default namespaces.
|
||
|
||
- bpo-11015: Update :mod:`test.support` documentation.
|
||
|
||
- bpo-32613: Update the faq/windows.html to use the py command from PEP 397
|
||
instead of python.
|
||
|
||
- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get`
|
||
method raises :exc:`AttributeError`.
|
||
|
||
- bpo-32614: Modify RE examples in documentation to use raw strings to
|
||
prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight
|
||
the deprecation.
|
||
|
||
- bpo-20709: Remove the paragraph where we explain that os.utime() does not
|
||
support a directory as path under Windows. Patch by Jan-Philip Gehrcke
|
||
|
||
- bpo-32722: Remove the bad example in the tutorial of the Generator
|
||
Expression. Patch by Stéphane Wirtel
|
||
|
||
- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses.
|
||
|
||
- bpo-30607: Use the externalized ``python-docs-theme`` package when
|
||
building the documentation.
|
||
|
||
- bpo-8243: Add a note about curses.addch and curses.addstr exception
|
||
behavior when writing outside a window, or pad.
|
||
|
||
- bpo-32337: Update documentation related with ``dict`` order.
|
||
|
||
- bpo-25041: Document ``AF_PACKET`` in the :mod:`socket` module.
|
||
|
||
- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
|
||
flags for ssl.SSLContext.verify_mode.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-35772: Fix sparse file tests of test_tarfile on ppc64 with the tmpfs
|
||
filesystem. Fix the function testing if the filesystem supports sparse
|
||
files: create a file which contains data and "holes", instead of creating
|
||
a file which contains no data. tmpfs effective block size is a page size
|
||
(tmpfs lives in the page cache). RHEL uses 64 KiB pages on aarch64, ppc64,
|
||
ppc64le, only s390x and x86_64 use 4 KiB pages, whereas the test punch
|
||
holes of 4 KiB.
|
||
|
||
- bpo-35045: Make ssl tests less strict and also accept TLSv1 as system
|
||
default. The changes unbreaks test_min_max_version on Fedora 29.
|
||
|
||
- bpo-32710: ``test_asyncio/test_sendfile.py`` now resets the event loop
|
||
policy using :func:`tearDownModule` as done in other tests, to prevent a
|
||
warning when running tests on Windows.
|
||
|
||
- bpo-33717: test.pythoninfo now logs information of all clocks, not only
|
||
time.time() and time.perf_counter().
|
||
|
||
- bpo-35488: Add a test to pathlib's Path.match() to verify it does not
|
||
support glob-style ** recursive pattern matching.
|
||
|
||
- bpo-31731: Fix a race condition in ``check_interrupted_write()`` of
|
||
test_io: create directly the thread with SIGALRM signal blocked, rather
|
||
than blocking the signal later from the thread. Previously, it was
|
||
possible that the thread gets the signal before the signal is blocked.
|
||
|
||
- bpo-35424: Fix test_multiprocessing_main_handling: use
|
||
:class:`multiprocessing.Pool` with a context manager and then explicitly
|
||
join the pool.
|
||
|
||
- bpo-35519: Rename :mod:`test.bisect` module to :mod:`test.bisect_cmd` to
|
||
avoid conflict with :mod:`bisect` module when running directly a test like
|
||
``./python Lib/test/test_xmlrpc.py``.
|
||
|
||
- bpo-35513: Replace :func:`time.time` with :func:`time.monotonic` in tests
|
||
to measure time delta.
|
||
|
||
- bpo-34279: :func:`test.support.run_unittest` no longer raise
|
||
:exc:`TestDidNotRun` if the test result contains skipped tests. The
|
||
exception is now only raised if no test have been run and no test have
|
||
been skipped.
|
||
|
||
- bpo-35412: Add testcase to ``test_future4``: check unicode literal.
|
||
|
||
- bpo-26704: Added test demonstrating double-patching of an instance method.
|
||
Patch by Anthony Sottile.
|
||
|
||
- bpo-33725: test_multiprocessing_fork may crash on recent versions of
|
||
macOS. Until the issue is resolved, skip the test on macOS.
|
||
|
||
- bpo-35352: Modify test_asyncio to use the certificate set from the test
|
||
directory.
|
||
|
||
- bpo-35317: Fix ``mktime()`` overflow error in ``test_email``: run
|
||
``test_localtime_daylight_true_dst_true()`` and
|
||
``test_localtime_daylight_false_dst_true()`` with a specific timezone.
|
||
|
||
- bpo-21263: After several reports that test_gdb does not work properly on
|
||
macOS and since gdb is not shipped by default anymore, test_gdb is now
|
||
skipped on macOS when LLVM Clang has been used to compile Python. Patch by
|
||
Lysandros Nikolaou
|
||
|
||
- bpo-34279: regrtest issue a warning when no tests have been executed in a
|
||
particular test file. Also, a new final result state is issued if no test
|
||
have been executed across all test files. Patch by Pablo Galindo.
|
||
|
||
- bpo-34962: make docstest in Doc now passes., and is enforced in CI
|
||
|
||
- bpo-23596: Use argparse for the command line of the gzip module. Patch by
|
||
Antony Lee
|
||
|
||
- bpo-34537: Fix ``test_gdb.test_strings()`` when ``LC_ALL=C`` and GDB was
|
||
compiled with Python 3.6 or earlier.
|
||
|
||
- bpo-34587: test_socket: Remove RDSTest.testCongestion(). The test tries to
|
||
fill the receiver's socket buffer and expects an error. But the RDS
|
||
protocol doesn't require that. Moreover, the Linux implementation of RDS
|
||
expects that the producer of the messages reduces its rate, it's not the
|
||
role of the receiver to trigger an error. The test fails on Fedora 28 by
|
||
design, so just remove it.
|
||
|
||
- bpo-34661: Fix test_shutil if unzip doesn't support -t.
|
||
|
||
- bpo-34200: Fixed non-deterministic flakiness of test_pkg by not using the
|
||
scary test.support.module_cleanup() logic to save and restore sys.modules
|
||
contents between test cases.
|
||
|
||
- bpo-34569: The experimental PEP 554 data channels now correctly pass
|
||
negative PyLong objects between subinterpreters on 32-bit systems. Patch
|
||
by Michael Felt.
|
||
|
||
- bpo-34594: Fix usage of hardcoded ``errno`` values in the tests.
|
||
|
||
- bpo-34579: Fix test_embed for AIX Patch by Michael Felt
|
||
|
||
- bpo-34542: Use 3072 RSA keys and SHA-256 signature for test certs and
|
||
keys.
|
||
|
||
- bpo-11193: Remove special condition for AIX in
|
||
`test_subprocess.test_undecodable_env`
|
||
|
||
- bpo-34347: Fix `test_utf8_mode.test_cmd_line` for AIX
|
||
|
||
- bpo-34490: On AIX with AF_UNIX family sockets getsockname() does not
|
||
provide 'sockname', so skip calls to transport.get_extra_info('sockname')
|
||
|
||
- bpo-34391: Fix ftplib test for TLS 1.3 by reading from data socket.
|
||
|
||
- bpo-11192: Fix `test_socket` on AIX 6.1 and later IPv6 zone id supports
|
||
only supported by inet_pton6_zone() Switch to runtime-based
|
||
platform.system() to establish current platform rather than build-time
|
||
based sys.platform()
|
||
|
||
- bpo-34399: Update all RSA keys and DH params to use at least 2048 bits.
|
||
|
||
- bpo-34373: Fix ``test_mktime`` and ``test_pthread_getcpuclickid`` tests
|
||
for AIX Add range checking for ``_PyTime_localtime`` for AIX Patch by
|
||
Michael Felt
|
||
|
||
- bpo-11191: Skip the distutils test 'test_search_cpp' when using XLC as
|
||
compiler patch by aixtools (Michael Felt)
|
||
|
||
- Improved an error message when mock assert_has_calls fails.
|
||
|
||
- bpo-33746: Fix test_unittest when run in verbose mode.
|
||
|
||
- bpo-33901: Fix test_dbm_gnu on macOS with gdbm 1.15: add a larger value to
|
||
make sure that the file size changes.
|
||
|
||
- bpo-33873: Fix a bug in ``regrtest`` that caused an extra test to run if
|
||
--huntrleaks/-R was used. Exit with error in case that invalid parameters
|
||
are specified to --huntrleaks/-R (at least one warmup run and one
|
||
repetition must be used).
|
||
|
||
- bpo-33562: Check that a global asyncio event loop policy is not left
|
||
behind by any tests.
|
||
|
||
- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that
|
||
might be due to running on ZFS.
|
||
|
||
- bpo-32962: Fixed test_gdb when Python is compiled with flags -mcet
|
||
-fcf-protection -O0.
|
||
|
||
- bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when
|
||
the interpreter is built with ``--enable-shared``.
|
||
|
||
- bpo-32872: Avoid regrtest compatibility issue with namespace packages.
|
||
|
||
- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport
|
||
of ``KqueueSelector`` loop was not being closed.
|
||
|
||
- bpo-32663: Making sure the `SMTPUTF8SimTests` class of tests gets run in
|
||
test_smtplib.py.
|
||
|
||
- bpo-27643: Test_C test case needs "signed short" bitfields, but the IBM
|
||
XLC compiler (on AIX) does not support this Skip the code and test when
|
||
AIX and XLC are used
|
||
|
||
Applicable to Python2-2.7 and later
|
||
|
||
- bpo-19417: Add test_bdb.py.
|
||
|
||
- bpo-31809: Add tests to verify connection with secp ECDH curves.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-34691: The _contextvars module is now built into the core Python
|
||
library on Windows.
|
||
|
||
- bpo-35683: Improved Azure Pipelines build steps and now verifying layouts
|
||
correctly
|
||
|
||
- bpo-35642: Remove asynciomodule.c from pythoncore.vcxproj
|
||
|
||
- bpo-35550: Fix incorrect Solaris #ifdef checks to look for __sun && __SVR4
|
||
instead of sun when compiling.
|
||
|
||
- bpo-35499: ``make profile-opt`` no longer replaces ``CFLAGS_NODIST`` with
|
||
``CFLAGS``. It now adds profile-guided optimization (PGO) flags to
|
||
``CFLAGS_NODIST``: existing ``CFLAGS_NODIST`` flags are kept.
|
||
|
||
- bpo-35257: Avoid leaking the linker flags from Link Time Optimizations
|
||
(LTO) into distutils when compiling C extensions.
|
||
|
||
- bpo-35351: When building Python with clang and LTO, LTO flags are no
|
||
longer passed into CFLAGS to build third-party C extensions through
|
||
distutils.
|
||
|
||
- bpo-35139: Fix a compiler error when statically linking `pyexpat` in
|
||
`Modules/Setup`.
|
||
|
||
- bpo-35059: PCbuild: Set InlineFunctionExpansion to OnlyExplicitInline
|
||
("/Ob1" option) in pyproject.props in Debug mode to expand functions
|
||
marked as inline. This change should make Python compiled in Debug mode a
|
||
little bit faster on Windows.
|
||
|
||
- bpo-35011: Restores the use of pyexpatns.h to isolate our embedded copy of
|
||
the expat C library so that its symbols do not conflict at link or dynamic
|
||
loading time with an embedding application or other extension modules with
|
||
their own version of libexpat.
|
||
|
||
- bpo-28015: Have --with-lto works correctly with clang.
|
||
|
||
- bpo-34765: Update the outdated install-sh file to the latest revision from
|
||
automake v1.16.1
|
||
|
||
- bpo-34585: Check for floating-point byte order in configure.ac using
|
||
compilation tests instead of executing code, so that these checks work in
|
||
cross-compiled builds.
|
||
|
||
- bpo-34710: Fixed SSL module build with OpenSSL & pedantic CFLAGS.
|
||
|
||
- bpo-34582: Add JUnit XML output for regression tests and update Azure
|
||
DevOps builds.
|
||
|
||
- bpo-34081: Make Sphinx warnings as errors in the Docs Makefile.
|
||
|
||
- bpo-34555: Fix for case where it was not possible to have both
|
||
``HAVE_LINUX_VM_SOCKETS_H`` and ``HAVE_SOCKADDR_ALG`` be undefined.
|
||
|
||
- bpo-33015: Fix an undefined behaviour in the pthread implementation of
|
||
:c:func:`PyThread_start_new_thread`: add a function wrapper to always
|
||
return ``NULL``.
|
||
|
||
- bpo-34245: The Python shared library is now installed with write
|
||
permission (mode 0755), which is the standard way of installing such
|
||
libraries.
|
||
|
||
- bpo-34121: Fix detection of C11 atomic support on clang.
|
||
|
||
- bpo-32430: Rename Modules/Setup.dist to Modules/Setup, and remove the
|
||
necessity to copy the former manually to the latter when updating the
|
||
local source tree.
|
||
|
||
- bpo-30345: Add -g to LDFLAGS when compiling with LTO to get debug symbols.
|
||
|
||
- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from
|
||
``OPT``. This option emitted annoying warnings when building extension
|
||
modules written in C++.
|
||
|
||
- bpo-33614: Ensures module definition files for the stable ABI on Windows
|
||
are correctly regenerated.
|
||
|
||
- bpo-33648: The --with-c-locale-warning configuration flag has been
|
||
removed. It has had no effect for about a year.
|
||
|
||
- bpo-33522: Enable CI builds on Visual Studio Team Services at
|
||
https://python.visualstudio.com/cpython
|
||
|
||
- bpo-33512: configure's check for "long double" has been simplified
|
||
|
||
- bpo-33483: C compiler is now correctly detected from the standard
|
||
environment variables. --without-gcc and --with-icc options have been
|
||
removed.
|
||
|
||
- bpo-33394: Enable the verbose build for extension modules, when GNU make
|
||
is passed macros on the command line.
|
||
|
||
- bpo-33393: Update config.guess and config.sub files.
|
||
|
||
- bpo-33377: Add new triplets for mips r6 and riscv variants (used in
|
||
extension suffixes).
|
||
|
||
- bpo-32232: By default, modules configured in `Modules/Setup` are no longer
|
||
built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that
|
||
preprocessor definition include it in their individual entries.
|
||
|
||
- bpo-33182: The embedding tests can once again be built with clang 6.0
|
||
|
||
- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1.
|
||
|
||
- bpo-33012: gcc 8 has added a new warning heuristic to detect invalid
|
||
function casts and a stock python build seems to hit that warning quite
|
||
often. The most common is the cast of a METH_NOARGS function (that uses
|
||
just one argument) to a PyCFunction. Fix this by adding a dummy argument
|
||
to all functions that implement METH_NOARGS.
|
||
|
||
- bpo-32898: Fix the python debug build when using COUNT_ALLOCS.
|
||
|
||
- bpo-29442: Replace optparse with argparse in setup.py
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-35890: Fix API calling consistency of GetVersionEx and wcstok.
|
||
|
||
- bpo-32560: The ``py`` launcher now forwards its ``STARTUPINFO`` structure
|
||
to child processes.
|
||
|
||
- bpo-35854: Fix EnvBuilder and --symlinks in venv on Windows
|
||
|
||
- bpo-35811: Avoid propagating venv settings when launching via py.exe
|
||
|
||
- bpo-35797: Fix default executable used by the multiprocessing module
|
||
|
||
- bpo-35758: Allow building on ARM with MSVC.
|
||
|
||
- bpo-29734: Fix handle leaks in os.stat on Windows.
|
||
|
||
- bpo-35596: Use unchecked PYCs for the embeddable distro to avoid zipimport
|
||
restrictions.
|
||
|
||
- bpo-35596: Fix vcruntime140.dll being added to embeddable distro multiple
|
||
times.
|
||
|
||
- bpo-35402: Update Windows build to use Tcl and Tk 8.6.9
|
||
|
||
- bpo-35401: Updates Windows build to OpenSSL 1.1.0j
|
||
|
||
- bpo-34977: venv on Windows will now use a python.exe redirector rather
|
||
than copying the actual binaries from the base environment.
|
||
|
||
- bpo-34977: Adds support for building a Windows App Store package
|
||
|
||
- bpo-35067: Remove _distutils_findvs module and use vswhere.exe instead.
|
||
|
||
- bpo-32557: Allow shutil.disk_usage to take a file path on Windows
|
||
|
||
- bpo-34770: Fix a possible null pointer dereference in pyshellext.cpp.
|
||
|
||
- bpo-34603: Fix returning structs from functions produced by MSVC
|
||
|
||
- bpo-34581: Guard MSVC-specific code in socketmodule.c with ``#ifdef
|
||
_MSC_VER``.
|
||
|
||
- bpo-34532: Fixes exit code of list version arguments for py.exe.
|
||
|
||
- bpo-34062: Fixed the '--list' and '--list-paths' arguments for the py.exe
|
||
launcher
|
||
|
||
- bpo-34225: Ensure INCLUDE and LIB directories do not end with a backslash.
|
||
|
||
- bpo-34011: A suite of code has been changed which copied across DLLs and
|
||
init.tcl from the running Python location into a venv being created. These
|
||
copies are needed only when running from a Python source build, and the
|
||
copying code is now only run when that is the case, rather than whenever a
|
||
venv is created.
|
||
|
||
- bpo-34006: Revert line length limit for Windows help docs. The line-length
|
||
limit is not needed because the pages appear in a separate app rather than
|
||
on a browser tab. It can also interact badly with the DPI setting.
|
||
|
||
- bpo-31546: Restore running PyOS_InputHook while waiting for user input at
|
||
the prompt. The restores integration of interactive GUI windows (such as
|
||
Matplotlib figures) with the prompt on Windows.
|
||
|
||
- bpo-30237: Output error when ReadConsole is canceled by
|
||
CancelSynchronousIo instead of crashing.
|
||
|
||
- bpo-33895: GIL is released while calling functions that acquire Windows
|
||
loader lock.
|
||
|
||
- bpo-33720: Reduces maximum marshal recursion depth on release builds.
|
||
|
||
- bpo-29097: Fix bug where :meth:`datetime.fromtimestamp` erroneously throws
|
||
an :exc:`OSError` on Windows for values between 0 and 86400. Patch by
|
||
Ammar Askar.
|
||
|
||
- bpo-33316: PyThread_release_lock always fails
|
||
|
||
- bpo-33184: Update Windows installer to use OpenSSL 1.1.0h.
|
||
|
||
- bpo-32890: Fix usage of GetLastError() instead of errno in os.execve() and
|
||
os.truncate().
|
||
|
||
- bpo-33016: Fix potential use of uninitialized memory in
|
||
nt._getfinalpathname
|
||
|
||
- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current
|
||
directory is set to a UNC path.
|
||
|
||
- bpo-32901: Update Tcl and Tk versions to 8.6.8
|
||
|
||
- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data.
|
||
|
||
- bpo-32409: Ensures activate.bat can handle Unicode contents.
|
||
|
||
- bpo-32457: Improves handling of denormalized executable path when
|
||
launching Python.
|
||
|
||
- bpo-32370: Use the correct encoding for ipconfig output in the uuid
|
||
module. Patch by Segev Finer.
|
||
|
||
- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly
|
||
treating the ``PrintNameOffset`` field of the reparse data buffer as a
|
||
number of characters instead of bytes. Patch by Craig Holmquist and SSE4.
|
||
|
||
- bpo-1104: Correctly handle string length in
|
||
``msilib.SummaryInfo.GetProperty()`` to prevent it from truncating the
|
||
last character.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-35401: Update macOS installer to use OpenSSL 1.1.0j.
|
||
|
||
- bpo-35025: Properly guard the use of the ``CLOCK_GETTIME`` et al. macros
|
||
in ``timemodule`` on macOS.
|
||
|
||
- bpo-24658: On macOS, fix reading from and writing into a file with a size
|
||
larger than 2 GiB.
|
||
|
||
- bpo-34405: Update to OpenSSL 1.1.0i for macOS installer builds.
|
||
|
||
- bpo-33635: In macOS stat on some file descriptors (/dev/fd/3 f.e) will
|
||
result in bad file descriptor OSError. Guard against this exception was
|
||
added in is_dir, is_file and similar methods. DirEntry.is_dir can also
|
||
throw this exception so _RecursiveWildcardSelector._iterate_directories
|
||
was also extended with the same error ignoring pattern.
|
||
|
||
- bpo-13631: The .editrc file in user's home directory is now processed
|
||
correctly during the readline initialization through editline emulation on
|
||
macOS.
|
||
|
||
- bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h.
|
||
|
||
- bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS
|
||
10.6+ installer. The 10.9+ installer variant already does this. This
|
||
means that the Python 3.7 provided by the python.org macOS installers no
|
||
longer need or use any external versions of Tcl/Tk, either system-provided
|
||
or user-installed, such as ActiveTcl.
|
||
|
||
- bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8.
|
||
|
||
- bpo-31903: In :mod:`_scproxy`, drop the GIL when calling into
|
||
``SystemConfiguration`` to avoid deadlocks.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-35770: IDLE macosx deletes Options => Configure IDLE. It previously
|
||
deleted Window => Zoom Height by mistake. (Zoom Height is now on the
|
||
Options menu). On Mac, the settings dialog is accessed via Preferences on
|
||
the IDLE menu.
|
||
|
||
- bpo-35769: Change IDLE's new file name from 'Untitled' to 'untitled'
|
||
|
||
- bpo-35660: Fix imports in idlelib.window.
|
||
|
||
- bpo-35641: Proper format `calltip` when the function has no docstring.
|
||
|
||
- bpo-33987: Use ttk Frame for ttk widgets.
|
||
|
||
- bpo-34055: Fix erroneous 'smart' indents and newlines in IDLE Shell.
|
||
|
||
- bpo-35591: Find Selection now works when selection not found.
|
||
|
||
- bpo-35196: Speed up squeezer line counting.
|
||
|
||
- bpo-35598: Update config_key: use PEP 8 names and ttk widgets, make some
|
||
objects global, and add tests.
|
||
|
||
- bpo-28097: Add Previous/Next History entries to Shell menu.
|
||
|
||
- bpo-35208: Squeezer now properly counts wrapped lines before newlines.
|
||
|
||
- bpo-35555: Gray out Code Context menu entry when it's not applicable.
|
||
|
||
- bpo-35521: Document the IDLE editor code context feature. Add some
|
||
internal references within the IDLE doc.
|
||
|
||
- bpo-22703: The Code Context menu label now toggles between Show/Hide Code
|
||
Context. The Zoom Height menu now toggles between Zoom/Restore Height.
|
||
Zoom Height has moved from the Window menu to the Options menu.
|
||
|
||
- bpo-35213: Where appropriate, use 'macOS' in idlelib.
|
||
|
||
- bpo-34864: On macOS, warn if the system preference "Prefer tabs when
|
||
opening documents" is set to "Always".
|
||
|
||
- bpo-34864: Document two IDLE on MacOS issues. The System Preferences Dock
|
||
"prefer tabs always" setting disables some IDLE features. Menus are a bit
|
||
different than as described for Windows and Linux.
|
||
|
||
- bpo-35202: Remove unused imports from lib/idlelib
|
||
|
||
- bpo-33000: Document that IDLE's shell has no line limit. A program that
|
||
runs indefinitely can overfill memory.
|
||
|
||
- bpo-23220: Explain how IDLE's Shell displays output.
|
||
|
||
- bpo-35099: Improve the doc about IDLE running user code. The section is
|
||
renamed from "IDLE -- console differences" is renamed "Running user code".
|
||
It mostly covers the implications of using custom sys.stdxxx objects.
|
||
|
||
- bpo-35097: Add IDLE doc subsection explaining editor windows. Topics
|
||
include opening, title and status bar, .py* extension, and running.
|
||
|
||
- bpo-35093: Document the IDLE document viewer in the IDLE doc. Add a
|
||
paragraph in "Help and preferences", "Help sources" subsection.
|
||
|
||
- bpo-35088: Update idlelib.help.copy_string docstring. We now use git and
|
||
backporting instead of hg and forward merging.
|
||
|
||
- bpo-35087: Update idlelib help files for the current doc build. The main
|
||
change is the elimination of chapter-section numbers.
|
||
|
||
- bpo-34548: Use configured color theme for read-only text views.
|
||
|
||
- bpo-1529353: Enable "squeezing" of long outputs in the shell, to avoid
|
||
performance degradation and to clean up the history without losing it.
|
||
Squeezed outputs may be copied, viewed in a separate window, and
|
||
"unsqueezed".
|
||
|
||
- bpo-34047: Fixed mousewheel scrolling direction on macOS.
|
||
|
||
- bpo-34275: Make IDLE calltips always visible on Mac. Some MacOS-tk
|
||
combinations need .update_idletasks(). Patch by Kevin Walzer.
|
||
|
||
- bpo-34120: Fix unresponsiveness after closing certain windows and dialogs.
|
||
|
||
- bpo-33975: Avoid small type when running htests. Since part of the purpose
|
||
of human-viewed tests is to determine that widgets look right, it is
|
||
important that they look the same for testing as when running IDLE.
|
||
|
||
- bpo-33905: Add test for idlelib.stackview.StackBrowser.
|
||
|
||
- bpo-33924: Change mainmenu.menudefs key 'windows' to 'window'. Every other
|
||
menudef key is lowercase version of main menu entry.
|
||
|
||
- bpo-33906: Rename idlelib.windows as window Match Window on the main menu
|
||
and remove last plural module name.
|
||
|
||
- bpo-33917: Fix and document idlelib/idle_test/template.py. The revised
|
||
file compiles, runs, and tests OK. idle_test/README.txt explains how to
|
||
use it to create new IDLE test files.
|
||
|
||
- bpo-33904: IDLE: In rstrip, rename class RstripExtension as Rstrip
|
||
|
||
- bpo-33907: For consistency and clarity, rename an IDLE module and classes.
|
||
Module calltips and its class CallTips are now calltip and Calltip. In
|
||
module calltip_w, class CallTip is now CalltipWindow.
|
||
|
||
- bpo-33856: Add "help" in the welcome message of IDLE
|
||
|
||
- bpo-33839: IDLE: refactor ToolTip and CallTip and add documentation and
|
||
tests
|
||
|
||
- bpo-33855: Minimally test all IDLE modules. Add missing files, import
|
||
module, instantiate classes, and check coverage. Check existing files.
|
||
|
||
- bpo-33656: On Windows, add API call saying that tk scales for DPI. On
|
||
Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
|
||
unchanged, and a monitor resolution greater than 96 DPI, this should make
|
||
text and lines sharper. It should otherwise have no effect.
|
||
|
||
- bpo-33768: Clicking on a context line moves that line to the top of the
|
||
editor window.
|
||
|
||
- bpo-33763: IDLE: Use read-only text widget for code context instead of
|
||
label widget.
|
||
|
||
- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel
|
||
and scrollbar slider moved text by a fixed number of pixels, resulting in
|
||
partial lines at the top of the editor box. The change also applies to
|
||
the shell and grep output windows, but not to read-only text views.
|
||
|
||
- bpo-33679: Enable theme-specific color configuration for Code Context. Use
|
||
the Highlights tab to see the setting for built-in themes or add settings
|
||
to custom themes.
|
||
|
||
- bpo-33642: Display up to maxlines non-blank lines for Code Context. If
|
||
there is no current context, show a single blank line.
|
||
|
||
- bpo-33628: IDLE: Cleanup codecontext.py and its test.
|
||
|
||
- bpo-33564: IDLE's code context now recognizes async as a block opener.
|
||
|
||
- bpo-21474: Update word/identifier definition from ascii to unicode. In
|
||
text and entry boxes, this affects selection by double-click, movement
|
||
left/right by control-left/right, and deletion left/right by
|
||
control-BACKSPACE/DEL.
|
||
|
||
- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string
|
||
prefix cannot be paired with either 'r' or 'f'. Consistently color as much
|
||
of the prefix, starting at the right, as is valid. Revise and extend
|
||
colorizer test.
|
||
|
||
- bpo-32984: Set ``__file__`` while running a startup file. Like Python,
|
||
IDLE optionally runs one startup file in the Shell window before
|
||
presenting the first interactive input prompt. For IDLE, ``-s`` runs a
|
||
file named in environmental variable :envvar:`IDLESTARTUP` or
|
||
:envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets
|
||
``__file__`` to the startup file name before running the file and unsets
|
||
it before the first prompt. IDLE now does the same when run normally,
|
||
without the ``-n`` option.
|
||
|
||
- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse.
|
||
|
||
- bpo-32916: Change ``str`` to ``code`` in pyparse.
|
||
|
||
- bpo-32905: Remove unused code in pyparse module.
|
||
|
||
- bpo-32874: Add tests for pyparse.
|
||
|
||
- bpo-32837: Using the system and place-dependent default encoding for
|
||
open() is a bad idea for IDLE's system and location-independent files.
|
||
|
||
- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI
|
||
test test_file_buttons() only looks at initial ascii-only lines, but
|
||
failed on systems where open() defaults to 'ascii' because readline()
|
||
internally reads and decodes far enough ahead to encounter a non-ascii
|
||
character in CREDITS.txt.
|
||
|
||
- bpo-32831: Add docstrings and tests for codecontext.
|
||
|
||
- bpo-32765: Update configdialog General tab docstring to add new widgets to
|
||
the widget list.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-35884: Add a benchmark script for timing various ways to access
|
||
variables: ``Tools/scripts/var_access_benchmark.py``.
|
||
|
||
- bpo-34989: python-gdb.py now handles errors on computing the line number
|
||
of a Python frame.
|
||
|
||
- bpo-20260: Argument Clinic now has non-bitwise unsigned int converters.
|
||
|
||
- bpo-32962: python-gdb now catches ``UnicodeDecodeError`` exceptions when
|
||
calling ``string()``.
|
||
|
||
- bpo-32962: python-gdb now catches ValueError on read_var(): when Python
|
||
has no debug symbols for example.
|
||
|
||
- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as
|
||
docstrings and translatable strings, and rejects bytes literals and
|
||
f-string expressions.
|
||
|
||
- bpo-31920: Fixed handling directories as arguments in the ``pygettext``
|
||
script. Based on patch by Oleg Krasnikov.
|
||
|
||
- bpo-29673: Fix pystackv and pystack gdbinit macros.
|
||
|
||
- bpo-25427: Remove the pyvenv script in favor of ``python3 -m venv`` in
|
||
order to lower confusion as to what Python interpreter a virtual
|
||
environment will be created for.
|
||
|
||
- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable
|
||
automatic backup creation (files with ``~`` suffix).
|
||
|
||
- bpo-32222: Fix pygettext not extracting docstrings for functions with type
|
||
annotated arguments. Patch by Toby Harradine.
|
||
|
||
- bpo-31583: Fix 2to3 for using with --add-suffix option but without
|
||
--output-dir option for relative path to files in current directory.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-35713: The :c:func:`PyByteArray_Init` and :c:func:`PyByteArray_Fini`
|
||
functions have been removed. They did nothing since Python 2.7.4 and
|
||
Python 3.2.0, were excluded from the limited API (stable ABI), and were
|
||
not documented.
|
||
|
||
- bpo-33817: Fixed :c:func:`_PyBytes_Resize` for empty bytes objects.
|
||
|
||
- bpo-35322: Fix memory leak in :c:func:`PyUnicode_EncodeLocale` and
|
||
:c:func:`PyUnicode_EncodeFSDefault` on error handling.
|
||
|
||
- bpo-35059: The following C macros have been converted to static inline
|
||
functions: :c:func:`Py_INCREF`, :c:func:`Py_DECREF`, :c:func:`Py_XINCREF`,
|
||
:c:func:`Py_XDECREF`, :c:func:`PyObject_INIT`,
|
||
:c:func:`PyObject_INIT_VAR`.
|
||
|
||
- bpo-35296: ``make install`` now also installs the internal API:
|
||
``Include/internal/*.h`` header files.
|
||
|
||
- bpo-35081: Internal APIs surrounded by ``#ifdef Py_BUILD_CORE`` have been
|
||
moved from ``Include/*.h`` headers to new header files
|
||
``Include/internal/pycore_*.h``.
|
||
|
||
- bpo-35259: Conditionally declare :c:func:`Py_FinalizeEx()` (new in 3.6)
|
||
based on Py_LIMITED_API. Patch by Arthur Neufeld.
|
||
|
||
- bpo-35081: The :c:func:`_PyObject_GC_TRACK` and
|
||
:c:func:`_PyObject_GC_UNTRACK` macros have been removed from the public C
|
||
API.
|
||
|
||
- bpo-35134: Creation of a new ``Include/cpython/`` subdirectory.
|
||
|
||
- bpo-34725: Adds _Py_SetProgramFullPath so embedders may override
|
||
sys.executable
|
||
|
||
- bpo-34910: Ensure that :c:func:`PyObject_Print` always returns ``-1`` on
|
||
error. Patch by Zackery Spytz.
|
||
|
||
- bpo-34523: Py_DecodeLocale() and Py_EncodeLocale() now use the UTF-8
|
||
encoding on Windows if Py_LegacyWindowsFSEncodingFlag is zero.
|
||
|
||
- bpo-34193: Fix pluralization in TypeError messages in getargs.c and
|
||
typeobject.c: '1 argument' instead of '1 arguments' and '1 element'
|
||
instead of '1 elements'.
|
||
|
||
- bpo-34127: Return grammatically correct error message based on argument
|
||
count. Patch by Karthikeyan Singaravelan.
|
||
|
||
- bpo-23927: Fixed :exc:`SystemError` in
|
||
:c:func:`PyArg_ParseTupleAndKeywords` when the ``w*`` format unit is used
|
||
for optional parameter.
|
||
|
||
- bpo-32455: Added :c:func:`PyCompile_OpcodeStackEffectWithJump`.
|
||
|
||
- bpo-34008: Py_Main() can again be called after Py_Initialize(), as in
|
||
Python 3.6.
|
||
|
||
- bpo-32500: Fixed error messages for :c:func:`PySequence_Size`,
|
||
:c:func:`PySequence_GetItem`, :c:func:`PySequence_SetItem` and
|
||
:c:func:`PySequence_DelItem` called with a mapping and
|
||
:c:func:`PyMapping_Size` called with a sequence.
|
||
|
||
- bpo-33818: :c:func:`PyExceptionClass_Name` will now return ``const char
|
||
*`` instead of ``char *``.
|
||
|
||
- bpo-33042: Embedding applications may once again call
|
||
PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to
|
||
calling Py_Initialize.
|
||
|
||
- bpo-32374: Document that m_traverse for multi-phase initialized modules
|
||
can be called with m_state=NULL, and add a sanity check
|
||
|
||
- bpo-30863: :c:func:`PyUnicode_AsWideChar` and
|
||
:c:func:`PyUnicode_AsWideCharString` no longer cache the ``wchar_t*``
|
||
representation of string objects.
|
||
|
||
|
||
What's New in Python 3.7.0 final?
|
||
=================================
|
||
|
||
*Release date: 2018-06-27*
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-33851: Fix :func:`ast.get_docstring` for a node that lacks a
|
||
docstring.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-33932: Calling Py_Initialize() twice does nothing, instead of failing
|
||
with a fatal error: restore the Python 3.6 behaviour.
|
||
|
||
|
||
What's New in Python 3.7.0 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2018-06-12*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-33803: Fix a crash in hamt.c caused by enabling GC tracking for an
|
||
object that hadn't all of its fields set to NULL.
|
||
|
||
- bpo-33706: Fix a crash in Python initialization when parsing the command
|
||
line options. Thanks Christoph Gohlke for the bug report and the fix!
|
||
|
||
- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter
|
||
shutdown even when there was a custom handler set previously. Patch by
|
||
Philipp Kerling.
|
||
|
||
- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
|
||
Steve Weber.
|
||
|
||
- bpo-33812: Datetime instance d with non-None tzinfo, but with
|
||
d.tzinfo.utcoffset(d) returning None is now treated as naive by the
|
||
astimezone() method.
|
||
|
||
- bpo-30805: Avoid race condition with debug logging
|
||
|
||
- bpo-33694: asyncio: Fix a race condition causing data loss on
|
||
pause_reading()/resume_reading() when using the ProactorEventLoop.
|
||
|
||
- bpo-32493: Correct test for ``uuid_enc_be`` availability in
|
||
``configure.ac``. Patch by Michael Felt.
|
||
|
||
- bpo-33792: Add asyncio.WindowsSelectorEventLoopPolicy and
|
||
asyncio.WindowsProactorEventLoopPolicy.
|
||
|
||
- bpo-33778: Update ``unicodedata``'s database to Unicode version 11.0.0.
|
||
|
||
- bpo-33770: improve base64 exception message for encoded inputs of invalid
|
||
length
|
||
|
||
- bpo-33769: asyncio/start_tls: Fix error message; cancel callbacks in case
|
||
of an unhandled error; mark SSLTransport as closed if it is aborted.
|
||
|
||
- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence
|
||
operations now raise :exc:`TypeError` instead of :exc:`SystemError` when
|
||
performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz.
|
||
|
||
- bpo-33734: asyncio/ssl: Fix AttributeError, increase default handshake
|
||
timeout
|
||
|
||
- bpo-11874: Use a better regex when breaking usage into wrappable parts.
|
||
Avoids bogus assertion errors from custom metavar strings.
|
||
|
||
- bpo-33582: Emit a deprecation warning for inspect.formatargspec
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-33409: Clarified the relationship between :pep:`538`'s
|
||
PYTHONCOERCECLOCALE and PEP 540's PYTHONUTF8 mode.
|
||
|
||
- bpo-33736: Improve the documentation of :func:`asyncio.open_connection`,
|
||
:func:`asyncio.start_server` and their UNIX socket counterparts.
|
||
|
||
- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
|
||
flags for ssl.SSLContext.verify_mode.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from
|
||
``OPT``. This option emitted annoying warnings when building extension
|
||
modules written in C++.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-33720: Reduces maximum marshal recursion depth on release builds.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-33656: On Windows, add API call saying that tk scales for DPI. On
|
||
Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
|
||
unchanged, and a monitor resolution greater than 96 DPI, this should make
|
||
text and lines sharper. It should otherwise have no effect.
|
||
|
||
- bpo-33768: Clicking on a context line moves that line to the top of the
|
||
editor window.
|
||
|
||
- bpo-33763: IDLE: Use read-only text widget for code context instead of
|
||
label widget.
|
||
|
||
- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel
|
||
and scrollbar slider moved text by a fixed number of pixels, resulting in
|
||
partial lines at the top of the editor box. The change also applies to
|
||
the shell and grep output windows, but not to read-only text views.
|
||
|
||
- bpo-33679: Enable theme-specific color configuration for Code Context. Use
|
||
the Highlights tab to see the setting for built-in themes or add settings
|
||
to custom themes.
|
||
|
||
- bpo-33642: Display up to maxlines non-blank lines for Code Context. If
|
||
there is no current context, show a single blank line.
|
||
|
||
|
||
What's New in Python 3.7.0 beta 5?
|
||
==================================
|
||
|
||
*Release date: 2018-05-30*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-33622: Fixed a leak when the garbage collector fails to add an object
|
||
with the ``__del__`` method or referenced by it into the
|
||
:data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
|
||
exception is set and preserves it.
|
||
|
||
- bpo-33509: Fix module_globals parameter of warnings.warn_explicit(): don't
|
||
crash if module_globals is not a dict.
|
||
|
||
- bpo-20104: The new `os.posix_spawn` added in 3.7.0b1 was removed as we are
|
||
still working on what the API should look like. Expect this in 3.8
|
||
instead.
|
||
|
||
- bpo-33475: Fixed miscellaneous bugs in converting annotations to strings
|
||
and optimized parentheses in the string representation.
|
||
|
||
- bpo-33391: Fix a leak in set_symmetric_difference().
|
||
|
||
- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer.
|
||
|
||
- bpo-32911: Due to unexpected compatibility issues discovered during
|
||
downstream beta testing, reverted :issue:`29463`. ``docstring`` field is
|
||
removed from Module, ClassDef, FunctionDef, and AsyncFunctionDef ast nodes
|
||
which was added in 3.7a1. Docstring expression is restored as a first
|
||
statement in their body. Based on patch by Inada Naoki.
|
||
|
||
- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a
|
||
ctypes structured data type. Patch by Eryk Sun and Oren Milman.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-32751: When cancelling the task due to a timeout,
|
||
:meth:`asyncio.wait_for` will now wait until the cancellation is complete.
|
||
|
||
- bpo-32684: Fix gather to propagate cancellation of itself even with
|
||
return_exceptions.
|
||
|
||
- bpo-33654: Support protocol type switching in SSLTransport.set_protocol().
|
||
|
||
- bpo-33674: Pause the transport as early as possible to further reduce the
|
||
risk of data_received() being called before connection_made().
|
||
|
||
- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
|
||
asyncio.sslproto: start immediately the handshake instead of using
|
||
call_soon(). Previously, data_received() could be called before the
|
||
handshake started, causing the handshake to hang or fail.
|
||
|
||
- bpo-31647: Fixed bug where calling write_eof() on a
|
||
_SelectorSocketTransport after it's already closed raises AttributeError.
|
||
|
||
- bpo-32610: Make asyncio.all_tasks() return only pending tasks.
|
||
|
||
- bpo-32410: Avoid blocking on file IO in sendfile fallback code
|
||
|
||
- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor
|
||
|
||
- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines
|
||
|
||
- bpo-33654: Fix transport.set_protocol() to support switching between
|
||
asyncio.Protocol and asyncio.BufferedProtocol. Fix loop.start_tls() to
|
||
work with asyncio.BufferedProtocols.
|
||
|
||
- bpo-33652: Pickles of type variables and subscripted generics are now
|
||
future-proof and compatible with older Python versions.
|
||
|
||
- bpo-32493: Fixed :func:`uuid.uuid1` on FreeBSD.
|
||
|
||
- bpo-33618: Finalize and document preliminary and experimental TLS 1.3
|
||
support with OpenSSL 1.1.1
|
||
|
||
- bpo-33623: Fix possible SIGSGV when asyncio.Future is created in __del__
|
||
|
||
- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
|
||
that prevented the cache of parsed strings from clearing after finishing
|
||
the decoding. Based on patch by c-fos.
|
||
|
||
- bpo-33570: Change TLS 1.3 cipher suite settings for compatibility with
|
||
OpenSSL 1.1.1-pre6 and newer. OpenSSL 1.1.1 will have TLS 1.3 ciphers
|
||
enabled by default.
|
||
|
||
- bpo-28556: Do not simplify arguments to `typing.Union`. Now
|
||
`Union[Manager, Employee]` is not simplified to `Employee` at runtime.
|
||
Such simplification previously caused several bugs and limited
|
||
possibilities for introspection.
|
||
|
||
- bpo-33540: Add a new ``block_on_close`` class attribute to
|
||
``ForkingMixIn`` and ``ThreadingMixIn`` classes of :mod:`socketserver`.
|
||
|
||
- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP
|
||
locations
|
||
|
||
- bpo-33109: argparse subparsers are once again not required by default,
|
||
reverting the change in behavior introduced by bpo-26510 in 3.7.0a2.
|
||
|
||
- bpo-33536: dataclasses.make_dataclass now checks for invalid field names
|
||
and duplicate fields. Also, added a check for invalid field
|
||
specifications.
|
||
|
||
- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on
|
||
Windows. Patch by Zvi Effron
|
||
|
||
- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in
|
||
Windows proactor event loop.
|
||
|
||
- Fix failure in `typing.get_type_hints()` when ClassVar was provided as a
|
||
string forward reference.
|
||
|
||
- bpo-33505: Optimize asyncio.ensure_future() by reordering if checks: 1.17x
|
||
faster.
|
||
|
||
- bpo-33497: Add errors param to cgi.parse_multipart and make an encoding in
|
||
FieldStorage use the given errors (needed for Twisted). Patch by Amber
|
||
Brown.
|
||
|
||
- bpo-33495: Change dataclasses.Fields repr to use the repr of each of its
|
||
members, instead of str. This makes it more clear what each field
|
||
actually represents. This is especially true for the 'type' member.
|
||
|
||
- bpo-33453: Fix dataclasses to work if using literal string type
|
||
annotations or if using PEP 563 "Postponed Evaluation of Annotations".
|
||
Only specific string prefixes are detected for both ClassVar ("ClassVar"
|
||
and "typing.ClassVar") and InitVar ("InitVar" and "dataclasses.InitVar").
|
||
|
||
- bpo-28556: Minor fixes in typing module: add annotations to
|
||
``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in
|
||
``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova.
|
||
|
||
- bpo-20087: Updated alias mapping with glibc 2.27 supported locales.
|
||
|
||
- bpo-33422: Fix trailing quotation marks getting deleted when looking up
|
||
byte/string literals on pydoc. Patch by Andrés Delfino.
|
||
|
||
- bpo-28167: The function ``platform.linux_distribution`` and
|
||
``platform.dist`` now trigger a ``DeprecationWarning`` and have been
|
||
marked for removal in Python 3.8
|
||
|
||
- bpo-33197: Update error message when constructing invalid
|
||
inspect.Parameters Patch by Dong-hee Na.
|
||
|
||
- bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad
|
||
Starostin.
|
||
|
||
- bpo-32861: The urllib.robotparser's ``__str__`` representation now
|
||
includes wildcard entries and the "Crawl-delay" and "Request-rate" fields.
|
||
Patch by Michael Lazar.
|
||
|
||
- bpo-32257: The ssl module now contains OP_NO_RENEGOTIATION constant,
|
||
available with OpenSSL 1.1.0h or 1.1.1.
|
||
|
||
- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-23859: Document that `asyncio.wait()` does not cancel its futures on
|
||
timeout.
|
||
|
||
- bpo-32436: Document :pep:`567` changes to asyncio.
|
||
|
||
- bpo-33604: Update HMAC md5 default to a DeprecationWarning, bump removal
|
||
to 3.8.
|
||
|
||
- bpo-33503: Fix broken pypi link
|
||
|
||
- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that
|
||
might be due to running on ZFS.
|
||
|
||
- bpo-32604: Remove the _xxsubinterpreters module (meant for testing) and
|
||
associated helpers. This module was originally added recently in 3.7b1.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-33614: Ensures module definition files for the stable ABI on Windows
|
||
are correctly regenerated.
|
||
|
||
- bpo-33522: Enable CI builds on Visual Studio Team Services at
|
||
https://python.visualstudio.com/cpython
|
||
|
||
- bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing
|
||
warnings about function casts like casting to PyCFunction in method
|
||
definition lists.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-13631: The .editrc file in user's home directory is now processed
|
||
correctly during the readline initialization through editline emulation on
|
||
macOS.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-33628: IDLE: Cleanup codecontext.py and its test.
|
||
|
||
- bpo-33564: IDLE's code context now recognizes async as a block opener.
|
||
|
||
- bpo-32831: Add docstrings and tests for codecontext.
|
||
|
||
|
||
What's New in Python 3.7.0 beta 4?
|
||
==================================
|
||
|
||
*Release date: 2018-05-02*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-33363: Raise a SyntaxError for ``async with`` and ``async for``
|
||
statements outside of async functions.
|
||
|
||
- bpo-33128: Fix a bug that causes PathFinder to appear twice on
|
||
sys.meta_path. Patch by Pablo Galindo Salgado.
|
||
|
||
- bpo-33312: Fixed clang ubsan (undefined behavior sanitizer) warnings in
|
||
dictobject.c by adjusting how the internal struct _dictkeysobject shared
|
||
keys structure is declared.
|
||
|
||
- bpo-33231: Fix potential memory leak in ``normalizestring()``.
|
||
|
||
- bpo-33205: Change dict growth function from
|
||
``round_up_to_power_2(used*2+hashtable_size/2)`` to
|
||
``round_up_to_power_2(used*3)``. Previously, dict is shrinked only when
|
||
``used == 0``. Now dict has more chance to be shrinked.
|
||
|
||
- bpo-29922: Improved error messages in 'async with' when ``__aenter__()``
|
||
or ``__aexit__()`` return non-awaitable object.
|
||
|
||
- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized
|
||
when copying from key-sharing dict.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-33281: Fix ctypes.util.find_library regression on macOS.
|
||
|
||
- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database
|
||
object when it is called with a single argument.
|
||
|
||
- bpo-33329: Fix multiprocessing regression on newer glibcs
|
||
|
||
- bpo-991266: Fix quoting of the ``Comment`` attribute of
|
||
:class:`http.cookies.SimpleCookie`.
|
||
|
||
- bpo-33131: Upgrade bundled version of pip to 10.0.1.
|
||
|
||
- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST
|
||
object to a tree of tuples or lists with ``line_info=False`` and
|
||
``col_info=True``.
|
||
|
||
- bpo-33266: lib2to3 now recognizes ``rf'...'`` strings.
|
||
|
||
- bpo-11594: Ensure line-endings are respected when using lib2to3.
|
||
|
||
- bpo-33254: Have :func:`importlib.resources.contents` and
|
||
:meth:`importlib.abc.ResourceReader.contents` return an :term:`iterable`
|
||
instead of an :term:`iterator`.
|
||
|
||
- bpo-33256: Fix display of ``<module>`` call in the html produced by
|
||
``cgitb.html()``. Patch by Stéphane Blondon.
|
||
|
||
- bpo-33185: Fixed regression when running pydoc with the :option:`-m`
|
||
switch. (The regression was introduced in 3.7.0b3 by the resolution of
|
||
:issue:`33053`) This fix also changed pydoc to add ``os.getcwd()`` to
|
||
:data:`sys.path` when necessary, rather than adding ``"."``.
|
||
|
||
- bpo-33169: Delete entries of ``None`` in :data:`sys.path_importer_cache`
|
||
when :meth:`importlib.machinery.invalidate_caches` is called.
|
||
|
||
- bpo-33217: Deprecate looking up non-Enum objects in Enum classes and Enum
|
||
members (will raise :exc:`TypeError` in 3.8+).
|
||
|
||
- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty
|
||
sequences consistently even when called from subclasses without a
|
||
``getrandbits()`` implementation.
|
||
|
||
- bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught
|
||
StopIteration in a generator into a return-statement.
|
||
|
||
- bpo-33209: End framing at the end of C implementation of
|
||
:func:`pickle.Pickler.dump`.
|
||
|
||
- bpo-20104: Improved error handling and fixed a reference leak in
|
||
:func:`os.posix_spawn()`.
|
||
|
||
- bpo-33175: In dataclasses, Field.__set_name__ now looks up the
|
||
__set_name__ special method on the class, not the instance, of the default
|
||
value.
|
||
|
||
- bpo-33097: Raise RuntimeError when ``executor.submit`` is called during
|
||
interpreter shutdown.
|
||
|
||
- bpo-31908: Fix output of cover files for ``trace`` module command-line
|
||
tool. Previously emitted cover files only when ``--missing`` option was
|
||
used. Patch by Michael Selik.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-33378: Add Korean language switcher for https://docs.python.org/3/
|
||
|
||
- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be
|
||
just any value.
|
||
|
||
- bpo-33201: Modernize documentation for writing C extension types.
|
||
|
||
- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document.
|
||
``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is
|
||
missed in the document.
|
||
|
||
- bpo-8243: Add a note about curses.addch and curses.addstr exception
|
||
behavior when writing outside a window, or pad.
|
||
|
||
- bpo-32337: Update documentation related with ``dict`` order.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-33358: Fix ``test_embed.test_pre_initialization_sys_options()`` when
|
||
the interpreter is built with ``--enable-shared``.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-33394: Enable the verbose build for extension modules, when GNU make
|
||
is passed macros on the command line.
|
||
|
||
- bpo-33393: Update config.guess and config.sub files.
|
||
|
||
- bpo-33377: Add new triplets for mips r6 and riscv variants (used in
|
||
extension suffixes).
|
||
|
||
- bpo-32232: By default, modules configured in `Modules/Setup` are no longer
|
||
built with `-DPy_BUILD_CORE`. Instead, modules that specifically need that
|
||
preprocessor definition include it in their individual entries.
|
||
|
||
- bpo-33182: The embedding tests can once again be built with clang 6.0
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-33184: Update Windows installer to use OpenSSL 1.1.0h.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-33184: Update macOS installer build to use OpenSSL 1.1.0h.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-21474: Update word/identifier definition from ascii to unicode. In
|
||
text and entry boxes, this affects selection by double-click, movement
|
||
left/right by control-left/right, and deletion left/right by
|
||
control-BACKSPACE/DEL.
|
||
|
||
- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string
|
||
prefix cannot be paired with either 'r' or 'f'. Consistently color as much
|
||
of the prefix, starting at the right, as is valid. Revise and extend
|
||
colorizer test.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as
|
||
docstrings and translatable strings, and rejects bytes literals and
|
||
f-string expressions.
|
||
|
||
- bpo-31920: Fixed handling directories as arguments in the ``pygettext``
|
||
script. Based on patch by Oleg Krasnikov.
|
||
|
||
- bpo-29673: Fix pystackv and pystack gdbinit macros.
|
||
|
||
- bpo-31583: Fix 2to3 for using with --add-suffix option but without
|
||
--output-dir option for relative path to files in current directory.
|
||
|
||
|
||
What's New in Python 3.7.0 beta 3?
|
||
==================================
|
||
|
||
*Release date: 2018-03-29*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-33136: Harden ssl module against LibreSSL CVE-2018-8970.
|
||
X509_VERIFY_PARAM_set1_host() is called with an explicit namelen. A new
|
||
test ensures that NULL bytes are not allowed.
|
||
|
||
- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows
|
||
|
||
- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic
|
||
backtracking. These regexes formed potential DOS vectors (REDOS). They
|
||
have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch
|
||
by Jamie Davis.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-33053: When using the -m switch, sys.path[0] is now explicitly
|
||
expanded as the *starting* working directory, rather than being left as
|
||
the empty path (which allows imports from the current working directory at
|
||
the time of the import)
|
||
|
||
- bpo-33018: Improve consistency of errors raised by ``issubclass()`` when
|
||
called with a non-class and an abstract base class as the first and second
|
||
arguments, respectively. Patch by Josh Bronson.
|
||
|
||
- bpo-33041: Fixed jumping when the function contains an ``async for`` loop.
|
||
|
||
- bpo-33026: Fixed jumping out of "with" block by setting f_lineno.
|
||
|
||
- bpo-33005: Fix a crash on fork when using a custom memory allocator (ex:
|
||
using PYTHONMALLOC env var). _PyGILState_Reinit() and
|
||
_PyInterpreterState_Enable() now use the default RAW memory allocator to
|
||
allocate a new interpreters mutex on fork.
|
||
|
||
- bpo-17288: Prevent jumps from 'return' and 'exception' trace events.
|
||
|
||
- bpo-32836: Don't use temporary variables in cases of list/dict/set
|
||
comprehensions
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-33141: Have Field objects pass through __set_name__ to their default
|
||
values, if they have their own __set_name__.
|
||
|
||
- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
|
||
boolean value. Note iid=0 and iid=False would be same. Patch by Garvit
|
||
Khatri.
|
||
|
||
- bpo-32873: Treat type variables and special typing forms as immutable by
|
||
copy and pickle. This fixes several minor issues and inconsistencies, and
|
||
improves backwards compatibility with Python 3.6.
|
||
|
||
- bpo-33134: When computing dataclass's __hash__, use the lookup table to
|
||
contain the function which returns the __hash__ value. This is an
|
||
improvement over looking up a string, and then testing that string to see
|
||
what to do.
|
||
|
||
- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.
|
||
|
||
- bpo-32505: Raise TypeError if a member variable of a dataclass is of type
|
||
Field, but doesn't have a type annotation.
|
||
|
||
- bpo-33078: Fix the failure on OSX caused by the tests relying on
|
||
sem_getvalue
|
||
|
||
- bpo-33116: Add 'Field' to dataclasses.__all__.
|
||
|
||
- bpo-32896: Fix an error where subclassing a dataclass with a field that
|
||
uses a default_factory would generate an incorrect class.
|
||
|
||
- bpo-33100: Dataclasses: If a field has a default value that's a
|
||
MemberDescriptorType, then it's from that field being in __slots__, not an
|
||
actual default value.
|
||
|
||
- bpo-32953: If a non-dataclass inherits from a frozen dataclass, allow
|
||
attributes to be added to the derived class. Only attributes from the
|
||
frozen dataclass cannot be assigned to. Require all dataclasses in a
|
||
hierarchy to be either all frozen or all non-frozen.
|
||
|
||
- bpo-33061: Add missing ``NoReturn`` to ``__all__`` in typing.py
|
||
|
||
- bpo-33078: Fix the size handling in multiprocessing.Queue when a pickling
|
||
error occurs.
|
||
|
||
- bpo-33064: lib2to3 now properly supports trailing commas after ``*args``
|
||
and ``**kwargs`` in function signatures.
|
||
|
||
- bpo-33056: FIX properly close leaking fds in
|
||
concurrent.futures.ProcessPoolExecutor.
|
||
|
||
- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
|
||
threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch
|
||
by Nir Soffer.
|
||
|
||
- bpo-31804: Avoid failing in multiprocessing.Process if the standard
|
||
streams are closed or None at exit.
|
||
|
||
- bpo-33037: Skip sending/receiving data after SSL transport closing.
|
||
|
||
- bpo-27683: Fix a regression in :mod:`ipaddress` that result of
|
||
:meth:`hosts` is empty when the network is constructed by a tuple
|
||
containing an integer mask and only 1 bit left for addresses.
|
||
|
||
- bpo-32999: Fix C implementation of ``ABC.__subclasscheck__(cls,
|
||
subclass)`` crashed when ``subclass`` is not a type object.
|
||
|
||
- bpo-33009: Fix inspect.signature() for single-parameter partialmethods.
|
||
|
||
- bpo-32969: Expose several missing constants in zlib and fix corresponding
|
||
documentation.
|
||
|
||
- bpo-32056: Improved exceptions raised for invalid number of channels and
|
||
sample width when read an audio file in modules :mod:`aifc`, :mod:`wave`
|
||
and :mod:`sunau`.
|
||
|
||
- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
|
||
subprocess if another low descriptor is closed.
|
||
|
||
- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a
|
||
:exc:`ValueError` instead of canceling the first scheduled function.
|
||
Patch by Cheryl Sabella.
|
||
|
||
- bpo-31639: http.server now exposes a ThreadedHTTPServer class and uses it
|
||
when the module is run with ``-m`` to cope with web browsers pre-opening
|
||
sockets.
|
||
|
||
- bpo-27645: :class:`sqlite3.Connection` now exposes a
|
||
:class:`~sqlite3.Connection.backup` method, if the underlying SQLite
|
||
library is at version 3.6.11 or higher. Patch by Lele Gaifax.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-33126: Document PyBuffer_ToContiguous().
|
||
|
||
- bpo-27212: Modify documentation for the :func:`islice` recipe to consume
|
||
initial values up to the start index.
|
||
|
||
- bpo-28247: Update :mod:`zipapp` documentation to describe how to make
|
||
standalone applications.
|
||
|
||
- bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and
|
||
Berker Peksag.
|
||
|
||
- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder``
|
||
implements ``MetaPathFinder``. (Patch by Himanshu Lakhara)
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-32872: Avoid regrtest compatibility issue with namespace packages.
|
||
|
||
- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport
|
||
of ``KqueueSelector`` loop was not being closed.
|
||
|
||
- bpo-19417: Add test_bdb.py.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-33016: Fix potential use of uninitialized memory in
|
||
nt._getfinalpathname
|
||
|
||
- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current
|
||
directory is set to a UNC path.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-32726: Build and link with private copy of Tcl/Tk 8.6 for the macOS
|
||
10.6+ installer. The 10.9+ installer variant already does this. This
|
||
means that the Python 3.7 provided by the python.org macOS installers no
|
||
longer need or use any external versions of Tcl/Tk, either system-provided
|
||
or user-installed, such as ActiveTcl.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-32984: Set ``__file__`` while running a startup file. Like Python,
|
||
IDLE optionally runs one startup file in the Shell window before
|
||
presenting the first interactive input prompt. For IDLE, ``-s`` runs a
|
||
file named in environmental variable :envvar:`IDLESTARTUP` or
|
||
:envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets
|
||
``__file__`` to the startup file name before running the file and unsets
|
||
it before the first prompt. IDLE now does the same when run normally,
|
||
without the ``-n`` option.
|
||
|
||
- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable
|
||
automatic backup creation (files with ``~`` suffix).
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-33042: Embedding applications may once again call
|
||
PySys_ResetWarnOptions, PySys_AddWarnOption, and PySys_AddXOption prior to
|
||
calling Py_Initialize.
|
||
|
||
- bpo-32374: Document that m_traverse for multi-phase initialized modules
|
||
can be called with m_state=NULL, and add a sanity check
|
||
|
||
|
||
What's New in Python 3.7.0 beta 2?
|
||
==================================
|
||
|
||
*Release date: 2018-02-27*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-28414: The ssl module now allows users to perform their own IDN
|
||
en/decoding when using SNI.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-32889: Update Valgrind suppression list to account for the rename of
|
||
``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
|
||
|
||
- bpo-31356: Remove the new API added in bpo-31356 (gc.ensure_disabled()
|
||
context manager).
|
||
|
||
- bpo-32305: For namespace packages, ensure that both ``__file__`` and
|
||
``__spec__.origin`` are set to None.
|
||
|
||
- bpo-32303: Make sure ``__spec__.loader`` matches ``__loader__`` for
|
||
namespace packages.
|
||
|
||
- bpo-32711: Fix the warning messages for Python/ast_unparse.c. Patch by
|
||
Stéphane Wirtel
|
||
|
||
- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by
|
||
write out-of-bound errors when using customized decode error handlers.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-32960: For dataclasses, disallow inheriting frozen from non-frozen
|
||
classes, and also disallow inheriting non-frozen from frozen classes. This
|
||
restriction will be relaxed at a future date.
|
||
|
||
- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
|
||
by Joffrey Fuhrer.
|
||
|
||
- bpo-32951: Direct instantiation of SSLSocket and SSLObject objects is now
|
||
prohibited. The constructors were never documented, tested, or designed as
|
||
public constructors. Users were suppose to use ssl.wrap_socket() or
|
||
SSLContext.
|
||
|
||
- bpo-32929: Remove the tri-state parameter "hash", and add the boolean
|
||
"unsafe_hash". If unsafe_hash is True, add a __hash__ function, but if a
|
||
__hash__ exists, raise TypeError. If unsafe_hash is False, add a __hash__
|
||
based on the values of eq= and frozen=. The unsafe_hash=False behavior is
|
||
the same as the old hash=None behavior. unsafe_hash=False is the default,
|
||
just as hash=None used to be.
|
||
|
||
- bpo-32947: Add OP_ENABLE_MIDDLEBOX_COMPAT and test workaround for TLSv1.3
|
||
for future compatibility with OpenSSL 1.1.1.
|
||
|
||
- bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
|
||
|
||
- bpo-32922: dbm.open() now encodes filename with the filesystem encoding
|
||
rather than default encoding.
|
||
|
||
- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3``
|
||
syscall exists or not.
|
||
|
||
- bpo-32556: nt._getfinalpathname, nt._getvolumepathname and
|
||
nt._getdiskusage now correctly convert from bytes.
|
||
|
||
- bpo-25988: Emit a :exc:`DeprecationWarning` when using or importing an ABC
|
||
directly from :mod:`collections` rather than from :mod:`collections.abc`.
|
||
|
||
- bpo-21060: Rewrite confusing message from setup.py upload from "No dist
|
||
file created in earlier command" to the more helpful "Must create and
|
||
upload files in one command".
|
||
|
||
- bpo-32852: Make sure sys.argv remains as a list when running trace.
|
||
|
||
- bpo-31333: ``_abc`` module is added. It is a speedup module with C
|
||
implementations for various functions and methods in ``abc``. Creating an
|
||
ABC subclass and calling ``isinstance`` or ``issubclass`` with an ABC
|
||
subclass are up to 1.5x faster. In addition, this makes Python start-up up
|
||
to 10% faster. Note that the new implementation hides internal registry
|
||
and caches, previously accessible via private attributes
|
||
``_abc_registry``, ``_abc_cache``, and ``_abc_negative_cache``. There are
|
||
three debugging helper methods that can be used instead
|
||
``_dump_registry``, ``_abc_registry_clear``, and ``_abc_caches_clear``.
|
||
|
||
- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored
|
||
cancellation after notifying and cancelling a conditional lock. Patch by
|
||
Bar Harel.
|
||
|
||
- bpo-32819: ssl.match_hostname() has been simplified and no longer depends
|
||
on re and ipaddress module for wildcard and IP addresses. Error reporting
|
||
for invalid wildcards has been improved.
|
||
|
||
- bpo-32394: socket: Remove
|
||
TCP_FASTOPEN,TCP_KEEPCNT,TCP_KEEPIDLE,TCP_KEEPINTVL flags on older version
|
||
Windows during run-time.
|
||
|
||
- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules.
|
||
(Contributed by Oren Milman)
|
||
|
||
- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
|
||
only the last field is quoted. Patch by Jake Davis.
|
||
|
||
- bpo-32792: collections.ChainMap() preserves the order of the underlying
|
||
mappings.
|
||
|
||
- bpo-32775: :func:`fnmatch.translate()` no longer produces patterns which
|
||
contain set operations. Sets starting with '[' or containing '--', '&&',
|
||
'~~' or '||' will be interpreted differently in regular expressions in
|
||
future versions. Currently they emit warnings. fnmatch.translate() now
|
||
avoids producing patterns containing such sets by accident.
|
||
|
||
- bpo-32622: Implement native fast sendfile for Windows proactor event loop.
|
||
|
||
- bpo-32777: Fix a rare but potential pre-exec child process deadlock in
|
||
subprocess on POSIX systems when marking file descriptors inheritable on
|
||
exec in the child process. This bug appears to have been introduced in
|
||
3.4.
|
||
|
||
- bpo-32647: The ctypes module used to depend on indirect linking for
|
||
dlopen. The shared extension is now explicitly linked against libdl on
|
||
platforms with dl.
|
||
|
||
- bpo-32741: Implement ``asyncio.TimerHandle.when()`` method.
|
||
|
||
- bpo-32691: Use mod_spec.parent when running modules with pdb
|
||
|
||
- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring
|
||
and locking the same lock multiple times, without it being free. Patch by
|
||
Bar Harel.
|
||
|
||
- bpo-32727: Do not include name field in SMTP envelope from address. Patch
|
||
by Stéphane Wirtel
|
||
|
||
- bpo-31453: Add TLSVersion constants and SSLContext.maximum_version /
|
||
minimum_version attributes. The new API wraps OpenSSL 1.1
|
||
https://www.openssl.org/docs/man1.1.0/ssl/SSL_CTX_set_min_proto_version.html
|
||
feature.
|
||
|
||
- bpo-24334: Internal implementation details of ssl module were cleaned up.
|
||
The SSLSocket has one less layer of indirection. Owner and session
|
||
information are now handled by the SSLSocket and SSLObject constructor.
|
||
Channel binding implementation has been simplified.
|
||
|
||
- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
|
||
chunk is not found. Patch by Zackery Spytz.
|
||
|
||
- bpo-32585: Add Ttk spinbox widget to :mod:`tkinter.ttk`. Patch by Alan D
|
||
Moore.
|
||
|
||
- bpo-32221: Various functions returning tuple containing IPv6 addresses now
|
||
omit ``%scope`` part since the same information is already encoded in
|
||
*scopeid* tuple item. Especially this speeds up :func:`socket.recvfrom`
|
||
when it receives multicast packet since useless resolving of network
|
||
interface name is omitted.
|
||
|
||
- bpo-30693: The TarFile class now recurses directories in a reproducible
|
||
way.
|
||
|
||
- bpo-30693: The ZipFile class now recurses directories in a reproducible
|
||
way.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-28124: The ssl module function ssl.wrap_socket() has been
|
||
de-emphasized and deprecated in favor of the more secure and efficient
|
||
SSLContext.wrap_socket() method.
|
||
|
||
- bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy.
|
||
|
||
- bpo-32436: Add documentation for the contextvars module (PEP 567).
|
||
|
||
- bpo-32800: Update link to w3c doc for xml default namespaces.
|
||
|
||
- bpo-11015: Update :mod:`test.support` documentation.
|
||
|
||
- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get`
|
||
method raises :exc:`AttributeError`.
|
||
|
||
- bpo-32614: Modify RE examples in documentation to use raw strings to
|
||
prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight
|
||
the deprecation.
|
||
|
||
- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-31809: Add tests to verify connection with secp ECDH curves.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-32898: Fix the python debug build when using COUNT_ALLOCS.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-32901: Update Tcl and Tk versions to 8.6.8
|
||
|
||
- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data.
|
||
|
||
- bpo-32409: Ensures activate.bat can handle Unicode contents.
|
||
|
||
- bpo-32457: Improves handling of denormalized executable path when
|
||
launching Python.
|
||
|
||
- bpo-32370: Use the correct encoding for ipconfig output in the uuid
|
||
module. Patch by Segev Finer.
|
||
|
||
- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly
|
||
treating the ``PrintNameOffset`` field of the reparse data buffer as a
|
||
number of characters instead of bytes. Patch by Craig Holmquist and SSE4.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-32901: Update macOS 10.9+ installer to Tcl/Tk 8.6.8.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-32916: Change ``str`` to ``code`` in pyparse.
|
||
|
||
- bpo-32905: Remove unused code in pyparse module.
|
||
|
||
- bpo-32874: Add tests for pyparse.
|
||
|
||
- bpo-32837: Using the system and place-dependent default encoding for
|
||
open() is a bad idea for IDLE's system and location-independent files.
|
||
|
||
- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI
|
||
test test_file_buttons() only looks at initial ascii-only lines, but
|
||
failed on systems where open() defaults to 'ascii' because readline()
|
||
internally reads and decodes far enough ahead to encounter a non-ascii
|
||
character in CREDITS.txt.
|
||
|
||
- bpo-32765: Update configdialog General tab docstring to add new widgets to
|
||
the widget list.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-32222: Fix pygettext not extracting docstrings for functions with type
|
||
annotated arguments. Patch by Toby Harradine.
|
||
|
||
|
||
What's New in Python 3.7.0 beta 1?
|
||
==================================
|
||
|
||
*Release date: 2018-01-30*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-32703: Fix coroutine's ResourceWarning when there's an active error
|
||
set when it's being finalized.
|
||
|
||
- bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step
|
||
over (next command) native coroutines. Patch by Pablo Galindo.
|
||
|
||
- bpo-28685: Optimize list.sort() and sorted() by using type specialized
|
||
comparisons when possible.
|
||
|
||
- bpo-32685: Improve suggestion when the Python 2 form of print statement is
|
||
either present on the same line as the header of a compound statement or
|
||
else terminated by a semi-colon instead of a newline. Patch by Nitish
|
||
Chandra.
|
||
|
||
- bpo-32697: Python now explicitly preserves the definition order of
|
||
keyword-only parameters. It's always preserved their order, but this
|
||
behavior was never guaranteed before; this behavior is now guaranteed and
|
||
tested.
|
||
|
||
- bpo-32690: The locals() dictionary now displays in the lexical order that
|
||
variables were defined. Previously, the order was reversed.
|
||
|
||
- bpo-32677: Add ``.isascii()`` method to ``str``, ``bytes`` and
|
||
``bytearray``. It can be used to test that string contains only ASCII
|
||
characters.
|
||
|
||
- bpo-32670: Enforce :pep:`479` for all code. This means that manually
|
||
raising a StopIteration exception from a generator is prohibited for all
|
||
code, regardless of whether 'from __future__ import generator_stop' was
|
||
used or not.
|
||
|
||
- bpo-32591: Added built-in support for tracking the origin of coroutine
|
||
objects; see sys.set_coroutine_origin_tracking_depth and
|
||
CoroutineType.cr_origin. This replaces the asyncio debug mode's use of
|
||
coroutine wrapping for native coroutine objects.
|
||
|
||
- bpo-31368: Expose preadv and pwritev system calls in the os module. Patch
|
||
by Pablo Galindo
|
||
|
||
- bpo-32544: ``hasattr(obj, name)`` and ``getattr(obj, name, default)`` are
|
||
about 4 times faster than before when ``name`` is not found and ``obj``
|
||
doesn't override ``__getattr__`` or ``__getattribute__``.
|
||
|
||
- bpo-26163: Improved frozenset() hash to create more distinct hash values
|
||
when faced with datasets containing many similar values.
|
||
|
||
- bpo-32550: Remove the STORE_ANNOTATION bytecode.
|
||
|
||
- bpo-20104: Expose posix_spawn as a low level API in the os module.
|
||
(removed before 3.7.0rc1)
|
||
|
||
- bpo-24340: Fixed estimation of the code stack size.
|
||
|
||
- bpo-32436: Implement :pep:`567` Context Variables.
|
||
|
||
- bpo-18533: ``repr()`` on a dict containing its own ``values()`` or
|
||
``items()`` no longer raises ``RecursionError``; OrderedDict similarly.
|
||
Instead, use ``...``, as for other recursive structures. Patch by Ben
|
||
North.
|
||
|
||
- bpo-20891: Py_Initialize() now creates the GIL. The GIL is no longer
|
||
created "on demand" to fix a race condition when PyGILState_Ensure() is
|
||
called in a non-Python thread.
|
||
|
||
- bpo-32028: Leading whitespace is now correctly ignored when generating
|
||
suggestions for converting Py2 print statements to Py3 builtin print
|
||
function calls. Patch by Sanyam Khurana.
|
||
|
||
- bpo-31179: Make dict.copy() up to 5.5 times faster.
|
||
|
||
- bpo-31113: Get rid of recursion in the compiler for normal control flow.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-25988: Deprecate exposing the contents of collections.abc in the
|
||
regular collections module.
|
||
|
||
- bpo-31429: The default cipher suite selection of the ssl module now uses a
|
||
blacklist approach rather than a hard-coded whitelist. Python no longer
|
||
re-enables ciphers that have been blocked by OpenSSL security update.
|
||
Default cipher suite selection can be configured on compile time.
|
||
|
||
- bpo-30306: contextlib.contextmanager now releases the arguments passed to
|
||
the underlying generator as soon as the context manager is entered.
|
||
Previously it would keep them alive for as long as the context manager was
|
||
alive, even when not being used as a function decorator. Patch by Martin
|
||
Teichmann.
|
||
|
||
- bpo-21417: Added support for setting the compression level for
|
||
zipfile.ZipFile.
|
||
|
||
- bpo-32251: Implement asyncio.BufferedProtocol (provisional API).
|
||
|
||
- bpo-32513: In dataclasses, allow easier overriding of dunder methods
|
||
without specifying decorator parameters.
|
||
|
||
- bpo-32660: :mod:`termios` makes available ``FIONREAD``, ``FIONCLEX``,
|
||
``FIOCLEX``, ``FIOASYNC`` and ``FIONBIO`` also under Solaris/derivatives.
|
||
|
||
- bpo-27931: Fix email address header parsing error when the username is an
|
||
empty quoted string. Patch by Xiang Zhang.
|
||
|
||
- bpo-32659: Under Solaris and derivatives, :class:`os.stat_result` provides
|
||
a st_fstype attribute.
|
||
|
||
- bpo-32662: Implement Server.start_serving(), Server.serve_forever(), and
|
||
Server.is_serving() methods. Add 'start_serving' keyword parameter to
|
||
loop.create_server() and loop.create_unix_server().
|
||
|
||
- bpo-32391: Implement :meth:`asyncio.StreamWriter.wait_closed` and
|
||
:meth:`asyncio.StreamWriter.is_closing` methods
|
||
|
||
- bpo-32643: Make Task._step, Task._wakeup and Future._schedule_callbacks
|
||
methods private.
|
||
|
||
- bpo-32630: Refactor decimal module to use contextvars to store decimal
|
||
context.
|
||
|
||
- bpo-32622: Add :meth:`asyncio.AbstractEventLoop.sendfile` method.
|
||
|
||
- bpo-32304: distutils' upload command no longer corrupts tar files ending
|
||
with a CR byte, and no longer tries to convert CR to CRLF in any of the
|
||
upload text fields.
|
||
|
||
- bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware
|
||
address is encountered.
|
||
|
||
- bpo-32596: ``concurrent.futures`` imports ``ThreadPoolExecutor`` and
|
||
``ProcessPoolExecutor`` lazily (using :pep:`562`). It makes ``import
|
||
asyncio`` about 15% faster because asyncio uses only
|
||
``ThreadPoolExecutor`` by default.
|
||
|
||
- bpo-31801: Add ``_ignore_`` to ``Enum`` so temporary variables can be used
|
||
during class construction without being turned into members.
|
||
|
||
- bpo-32576: Use queue.SimpleQueue() in places where it can be invoked from
|
||
a weakref callback.
|
||
|
||
- bpo-32574: Fix memory leak in asyncio.Queue, when the queue has limited
|
||
size and it is full, the cancelation of queue.put() can cause a memory
|
||
leak. Patch by: José Melero.
|
||
|
||
- bpo-32521: The nis module is now compatible with new libnsl and headers
|
||
location.
|
||
|
||
- bpo-32467: collections.abc.ValuesView now inherits from
|
||
collections.abc.Collection.
|
||
|
||
- bpo-32473: Improve ABCMeta._dump_registry() output readability
|
||
|
||
- bpo-32102: New argument ``capture_output`` for subprocess.run
|
||
|
||
- bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and
|
||
library in nis module.
|
||
|
||
- bpo-32493: UUID module fixes build for FreeBSD/OpenBSD
|
||
|
||
- bpo-32503: Pickling with protocol 4 no longer creates too small frames.
|
||
|
||
- bpo-29237: Create enum for pstats sorting options
|
||
|
||
- bpo-32454: Add close(fd) function to the socket module.
|
||
|
||
- bpo-25942: The subprocess module is now more graceful when handling a
|
||
Ctrl-C KeyboardInterrupt during subprocess.call, subprocess.run, or a
|
||
Popen context manager. It now waits a short amount of time for the child
|
||
(presumed to have also gotten the SIGINT) to exit, before continuing the
|
||
KeyboardInterrupt exception handling. This still includes a SIGKILL in
|
||
the call() and run() APIs, but at least the child had a chance first.
|
||
|
||
- bpo-32433: The hmac module now has hmac.digest(), which provides an
|
||
optimized HMAC digest.
|
||
|
||
- bpo-28134: Sockets now auto-detect family, type and protocol from file
|
||
descriptor by default.
|
||
|
||
- bpo-32404: Fix bug where :meth:`datetime.datetime.fromtimestamp` did not
|
||
call __new__ in :class:`datetime.datetime` subclasses.
|
||
|
||
- bpo-32403: Improved speed of :class:`datetime.date` and
|
||
:class:`datetime.datetime` alternate constructors.
|
||
|
||
- bpo-32228: Ensure that ``truncate()`` preserves the file position (as
|
||
reported by ``tell()``) after writes longer than the buffer size.
|
||
|
||
- bpo-32410: Implement ``loop.sock_sendfile`` for asyncio event loop.
|
||
|
||
- bpo-22908: Added seek and tell to the ZipExtFile class. This only works if
|
||
the file object used to open the zipfile is seekable.
|
||
|
||
- bpo-32373: Add socket.getblocking() method.
|
||
|
||
- bpo-32248: Add :mod:`importlib.resources` and
|
||
:class:`importlib.abc.ResourceReader` as the unified API for reading
|
||
resources contained within packages. Loaders wishing to support resource
|
||
reading must implement the :meth:`get_resource_reader()` method.
|
||
File-based and zipimport-based loaders both implement these APIs.
|
||
:class:`importlib.abc.ResourceLoader` is deprecated in favor of these new
|
||
APIs.
|
||
|
||
- bpo-32320: collections.namedtuple() now supports default values.
|
||
|
||
- bpo-29302: Add contextlib.AsyncExitStack. Patch by Alexander Mohr and Ilya
|
||
Kulakov.
|
||
|
||
- bpo-31961: *Removed in Python 3.7.0b2.* The *args* argument of
|
||
subprocess.Popen can now be a :term:`path-like object`. If *args* is given
|
||
as a sequence, it's first element can now be a :term:`path-like object` as
|
||
well.
|
||
|
||
- bpo-31900: The :func:`locale.localeconv` function now sets temporarily the
|
||
``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode
|
||
``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII
|
||
or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the
|
||
``LC_CTYPE`` locale. This temporary change affects other threads. Same
|
||
change for the :meth:`str.format` method when formatting a number
|
||
(:class:`int`, :class:`float`, :class:`float` and subclasses) with the
|
||
``n`` type (ex: ``'{:n}'.format(1234)``).
|
||
|
||
- bpo-31853: Use super().method instead of socket.method in SSLSocket. They
|
||
were there most likely for legacy reasons.
|
||
|
||
- bpo-31399: The ssl module now uses OpenSSL's X509_VERIFY_PARAM_set1_host()
|
||
and X509_VERIFY_PARAM_set1_ip() API to verify hostname and IP addresses.
|
||
Subject common name fallback can be disabled with
|
||
SSLContext.hostname_checks_common_name.
|
||
|
||
- bpo-14976: Add a queue.SimpleQueue class, an unbounded FIFO queue with a
|
||
reentrant C implementation of put().
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-32724: Add references to some commands in the documentation of Pdb.
|
||
Patch by Stéphane Wirtel
|
||
|
||
- bpo-32649: Complete the C API documentation, profiling and tracing part
|
||
with the newly added per-opcode events.
|
||
|
||
- bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and
|
||
their C-API counterparts regarding which type of events are received in
|
||
each function. Patch by Pablo Galindo Salgado.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built.
|
||
|
||
- bpo-28414: Add test cases for IDNA 2003 and 2008 host names. IDNA 2003
|
||
internationalized host names are working since bpo-31399 has landed. IDNA
|
||
2008 are still broken.
|
||
|
||
- bpo-32604: Add a new "_xxsubinterpreters" extension module that exposes
|
||
the existing subinterpreter C-API and a new cross-interpreter data sharing
|
||
mechanism. The module is primarily intended for more thorough testing of
|
||
the existing subinterpreter support. Note that the _xxsubinterpreters
|
||
module has been removed in 3.7.0rc1.
|
||
|
||
- bpo-32602: Add test certs and test for ECDSA cert and EC/RSA dual mode.
|
||
|
||
- bpo-32549: On Travis CI, Python now Compiles and uses a local copy of
|
||
OpenSSL 1.1.0g for testing.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-32635: Fix segfault of the crypt module when libxcrypt is provided
|
||
instead of libcrypt at the system.
|
||
|
||
- bpo-32598: Use autoconf to detect OpenSSL libs, headers and supported
|
||
features. The ax_check_openssl M4 macro uses pkg-config to locate OpenSSL
|
||
and falls back to manual search.
|
||
|
||
- bpo-32593: Drop support of FreeBSD 9 and older.
|
||
|
||
- bpo-29708: If the :envvar:`SOURCE_DATE_EPOCH` environment variable is set,
|
||
:mod:`py_compile` will always create hash-based ``.pyc`` files.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-32588: Create standalone _distutils_findvs module and add missing
|
||
_queue module to installer.
|
||
|
||
- bpo-29911: Ensure separate Modify and Uninstall buttons are displayed.
|
||
|
||
- bpo-32507: Use app-local UCRT install rather than the proper update for
|
||
old versions of Windows.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-32726: Provide an additional, more modern macOS installer variant that
|
||
supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied
|
||
third-party libraries to OpenSSL 1.1.0g and to SQLite 3.22.0. The 10.9+
|
||
installer now links with and supplies its own copy of Tcl/Tk 8.6.
|
||
|
||
- bpo-28440: No longer add /Library/Python/3.x/site-packages to sys.path for
|
||
macOS framework builds to avoid future conflicts.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-32681: Fix uninitialized variable 'res' in the C implementation of
|
||
os.dup2. Patch by Stéphane Wirtel
|
||
|
||
- bpo-10381: Add C API access to the ``datetime.timezone`` constructor and
|
||
``datetime.timzone.UTC`` singleton.
|
||
|
||
|
||
What's New in Python 3.7.0 alpha 4?
|
||
===================================
|
||
|
||
*Release date: 2018-01-08*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-31975: The default warning filter list now starts with a
|
||
"default::DeprecationWarning:__main__" entry, so deprecation warnings are
|
||
once again shown by default in single-file scripts and at the interactive
|
||
prompt.
|
||
|
||
- bpo-32226: ``__class_getitem__`` is now an automatic class method.
|
||
|
||
- bpo-32399: Add AIX uuid library support for RFC4122 using uuid_create() in
|
||
libc.a
|
||
|
||
- bpo-32390: Fix the compilation failure on AIX after the f_fsid field has
|
||
been added to the object returned by os.statvfs() (issue #32143). Original
|
||
patch by Michael Felt.
|
||
|
||
- bpo-32379: Make MRO computation faster when a class inherits from a single
|
||
base.
|
||
|
||
- bpo-32259: The error message of a TypeError raised when unpack
|
||
non-iterable is now more specific.
|
||
|
||
- bpo-27169: The ``__debug__`` constant is now optimized out at compile
|
||
time. This fixes also bpo-22091.
|
||
|
||
- bpo-32329: The :option:`-R` option now turns on hash randomization when
|
||
the :envvar:`PYTHONHASHSEED` environment variable is set to ``0``.
|
||
Previously, the option was ignored. Moreover,
|
||
``sys.flags.hash_randomization`` is now properly set to 0 when hash
|
||
randomization is turned off by ``PYTHONHASHSEED=0``.
|
||
|
||
- bpo-30416: The optimizer is now protected from spending much time doing
|
||
complex calculations and consuming much memory for creating large
|
||
constants in constant folding. Increased limits for constants that can be
|
||
produced in constant folding.
|
||
|
||
- bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in
|
||
socketmodule on Windows.
|
||
|
||
- bpo-30579: Implement TracebackType.__new__ to allow Python-level creation
|
||
of traceback objects, and make TracebackType.tb_next mutable.
|
||
|
||
- bpo-32260: Don't byte swap the input keys to the SipHash algorithm on
|
||
big-endian platforms. This should ensure siphash gives consistent results
|
||
across platforms.
|
||
|
||
- bpo-31506: Improve the error message logic for object.__new__ and
|
||
object.__init__. Patch by Sanyam Khurana.
|
||
|
||
- bpo-20361: ``-b`` and ``-bb`` now inject ``'default::BytesWarning'`` and
|
||
``error::BytesWarning`` entries into ``sys.warnoptions``, ensuring that
|
||
they take precedence over any other warning filters configured via the
|
||
``-W`` option or the ``PYTHONWARNINGS`` environment variable.
|
||
|
||
- bpo-32230: `-X dev` now injects a ``'default'`` entry into
|
||
sys.warnoptions, ensuring that it behaves identically to actually passing
|
||
``-Wdefault`` at the command line.
|
||
|
||
- bpo-29240: Add a new UTF-8 mode: implementation of the :pep:`540`.
|
||
|
||
- bpo-32226: :pep:`560`: Add support for ``__mro_entries__`` and
|
||
``__class_getitem__``. Implemented by Ivan Levkivskyi.
|
||
|
||
- bpo-32225: :pep:`562`: Add support for module ``__getattr__`` and
|
||
``__dir__``. Implemented by Ivan Levkivskyi.
|
||
|
||
- bpo-31901: The `atexit` module now has its callback stored per
|
||
interpreter.
|
||
|
||
- bpo-31650: Implement :pep:`552` (Deterministic pycs). Python now supports
|
||
invalidating bytecode cache files bashed on a source content hash rather
|
||
than source last-modified time.
|
||
|
||
- bpo-29469: Move constant folding from bytecode layer to AST layer.
|
||
Original patch by Eugene Toder.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-32506: Now that dict is defined as keeping insertion order, drop
|
||
OrderedDict and just use plain dict.
|
||
|
||
- bpo-32279: Add params to dataclasses.make_dataclasses(): init, repr, eq,
|
||
order, hash, and frozen. Pass them through to dataclass().
|
||
|
||
- bpo-32278: Make type information optional on dataclasses.make_dataclass().
|
||
If omitted, the string 'typing.Any' is used.
|
||
|
||
- bpo-32499: Add dataclasses.is_dataclass(obj), which returns True if obj is
|
||
a dataclass or an instance of one.
|
||
|
||
- bpo-32468: Improve frame repr() to mention filename, code name and current
|
||
line number.
|
||
|
||
- bpo-23749: asyncio: Implement loop.start_tls()
|
||
|
||
- bpo-32441: Return the new file descriptor (i.e., the second argument) from
|
||
``os.dup2``. Previously, ``None`` was always returned.
|
||
|
||
- bpo-32422: ``functools.lru_cache`` uses less memory (3 words for each
|
||
cached key) and takes about 1/3 time for cyclic GC.
|
||
|
||
- bpo-31721: Prevent Python crash from happening when Future._log_traceback
|
||
is set to True manually. Now it can only be set to False, or a ValueError
|
||
is raised.
|
||
|
||
- bpo-32415: asyncio: Add Task.get_loop() and Future.get_loop()
|
||
|
||
- bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on
|
||
interpreter shutdown.
|
||
|
||
- bpo-32363: Make asyncio.Task.set_exception() and set_result() raise
|
||
NotImplementedError. Task._step() and Future.__await__() raise proper
|
||
exceptions when they are in an invalid state, instead of raising an
|
||
AssertionError.
|
||
|
||
- bpo-32357: Optimize asyncio.iscoroutine() and loop.create_task() for
|
||
non-native coroutines (e.g. async/await compiled with Cython).
|
||
'loop.create_task(python_coroutine)' used to be 20% faster than
|
||
'loop.create_task(cython_coroutine)'. Now, the latter is as fast.
|
||
|
||
- bpo-32356: asyncio.transport.resume_reading() and pause_reading() are now
|
||
idempotent. New transport.is_reading() method is added.
|
||
|
||
- bpo-32355: Optimize asyncio.gather(); now up to 15% faster.
|
||
|
||
- bpo-32351: Use fastpath in asyncio.sleep if delay<0 (2x boost)
|
||
|
||
- bpo-32348: Optimize asyncio.Future schedule/add/remove callback. The
|
||
optimization shows 3-6% performance improvements of async/await code.
|
||
|
||
- bpo-32331: Fix socket.settimeout() and socket.setblocking() to keep
|
||
socket.type as is. Fix socket.socket() constructor to reset any bit flags
|
||
applied to socket's type. This change only affects OSes that have
|
||
SOCK_NONBLOCK and/or SOCK_CLOEXEC.
|
||
|
||
- bpo-32248: Add :class:`importlib.abc.ResourceReader` as an ABC for loaders
|
||
to provide a unified API for reading resources contained within packages.
|
||
Also add :mod:`importlib.resources` as the port of
|
||
``importlib_resources``.
|
||
|
||
- bpo-32311: Implement asyncio.create_task(coro) shortcut
|
||
|
||
- bpo-32327: Convert asyncio functions that were documented as coroutines to
|
||
coroutines. Affected functions: loop.sock_sendall, loop.sock_recv,
|
||
loop.sock_accept, loop.getaddrinfo, loop.getnameinfo.
|
||
|
||
- bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id
|
||
(scope) to lower case for scoped IPv6 addresses in hostnames now.
|
||
|
||
- bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary
|
||
compatible with CRT v140.
|
||
|
||
- bpo-29711: Fix ``stop_serving`` in asyncio proactor loop kill all
|
||
listening servers
|
||
|
||
- bpo-32308: :func:`re.sub()` now replaces empty matches adjacent to a
|
||
previous non-empty match.
|
||
|
||
- bpo-29970: Abort asyncio SSLProtocol connection if handshake not complete
|
||
within 10s
|
||
|
||
- bpo-32314: Implement asyncio.run().
|
||
|
||
- bpo-17852: Revert incorrect fix based on misunderstanding of
|
||
_Py_PyAtExit() semantics.
|
||
|
||
- bpo-32296: Implement asyncio._get_running_loop() and get_event_loop() in
|
||
C. This makes them 4x faster.
|
||
|
||
- bpo-32250: Implement ``asyncio.current_task()`` and
|
||
``asyncio.all_tasks()``. Add helpers intended to be used by alternative
|
||
task implementations: ``asyncio._register_task``, ``asyncio._enter_task``,
|
||
``asyncio._leave_task`` and ``asyncio._unregister_task``. Deprecate
|
||
``asyncio.Task.current_task()`` and ``asyncio.Task.all_tasks()``.
|
||
|
||
- bpo-32255: A single empty field is now always quoted when written into a
|
||
CSV file. This allows to distinguish an empty row from a row consisting of
|
||
a single empty field. Patch by Licht Takeuchi.
|
||
|
||
- bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on
|
||
platforms where ``chmod(..., follow_symlinks=False)`` is not supported.
|
||
Patch by Anthony Sottile.
|
||
|
||
- bpo-30050: New argument warn_on_full_buffer to signal.set_wakeup_fd lets
|
||
you control whether Python prints a warning on stderr when the wakeup fd
|
||
buffer overflows.
|
||
|
||
- bpo-29137: The ``fpectl`` library has been removed. It was never enabled
|
||
by default, never worked correctly on x86-64, and it changed the Python
|
||
ABI in ways that caused unexpected breakage of C extensions.
|
||
|
||
- bpo-32273: Move asyncio.test_utils to test.test_asyncio.
|
||
|
||
- bpo-32272: Remove asyncio.async() function.
|
||
|
||
- bpo-32269: Add asyncio.get_running_loop() function.
|
||
|
||
- bpo-32265: All class and static methods of builtin types now are correctly
|
||
classified by inspect.classify_class_attrs() and grouped in pydoc ouput.
|
||
Added types.ClassMethodDescriptorType for unbound class methods of builtin
|
||
types.
|
||
|
||
- bpo-32253: Deprecate ``yield from lock``, ``await lock``, ``with (yield
|
||
from lock)`` and ``with await lock`` for asyncio synchronization
|
||
primitives.
|
||
|
||
- bpo-22589: Changed MIME type of .bmp from 'image/x-ms-bmp' to 'image/bmp'
|
||
|
||
- bpo-32193: Convert asyncio to use *async/await* syntax. Old styled ``yield
|
||
from`` is still supported too.
|
||
|
||
- bpo-32206: Add support to run modules with pdb
|
||
|
||
- bpo-32227: ``functools.singledispatch`` now supports registering
|
||
implementations using type annotations.
|
||
|
||
- bpo-15873: Added new alternate constructors
|
||
:meth:`datetime.datetime.fromisoformat`,
|
||
:meth:`datetime.time.fromisoformat` and
|
||
:meth:`datetime.date.fromisoformat` as the inverse operation of each
|
||
classes's respective ``isoformat`` methods.
|
||
|
||
- bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link
|
||
list'.
|
||
|
||
- bpo-32143: os.statvfs() includes the f_fsid field from statvfs(2)
|
||
|
||
- bpo-26439: Fix ctypes.util.find_library() for AIX by implementing
|
||
ctypes._aix.find_library() Patch by: Michael Felt
|
||
|
||
- bpo-31993: The pickler now uses less memory when serializing large bytes
|
||
and str objects into a file. Pickles created with protocol 4 will require
|
||
less memory for unpickling large bytes and str objects.
|
||
|
||
- bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner.
|
||
|
||
- bpo-31778: ast.literal_eval() is now more strict. Addition and subtraction
|
||
of arbitrary numbers no longer allowed.
|
||
|
||
- bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now
|
||
works even if the ``os`` module still is not imported.
|
||
|
||
- bpo-30241: Add contextlib.AbstractAsyncContextManager. Patch by Jelle
|
||
Zijlstra.
|
||
|
||
- bpo-31699: Fix deadlocks in
|
||
:class:`concurrent.futures.ProcessPoolExecutor` when task arguments or
|
||
results cause pickling or unpickling errors. This should make sure that
|
||
calls to the :class:`ProcessPoolExecutor` API always eventually return.
|
||
|
||
- bpo-15216: ``TextIOWrapper.reconfigure()`` supports changing *encoding*,
|
||
*errors*, and *newline*.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-32418: Add get_loop() method to Server and AbstractServer classes.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core
|
||
dump files when testing crashes. getrlimit() returns zero on success.
|
||
|
||
- bpo-32002: Adjust C locale coercion testing for the empty locale and POSIX
|
||
locale cases to more readily adjust to platform dependent behaviour.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-19764: Implement support for `subprocess.Popen(close_fds=True)` on
|
||
Windows. Patch by Segev Finer.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using
|
||
pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and
|
||
lib2to3 work when run from a zipfile.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-32030: Py_Initialize() doesn't reset the memory allocators to default
|
||
if the ``PYTHONMALLOC`` environment variable is not set.
|
||
|
||
- bpo-29084: Undocumented C API for OrderedDict has been excluded from the
|
||
limited C API. It was added by mistake and actually never worked in the
|
||
limited C API.
|
||
|
||
- bpo-32264: Moved the pygetopt.h header into internal/, since it has no
|
||
public APIs.
|
||
|
||
- bpo-32241: :c:func:`Py_SetProgramName` and :c:func:`Py_SetPythonHome` now
|
||
take the ``const wchar *`` arguments instead of ``wchar *``.
|
||
|
||
|
||
What's New in Python 3.7.0 alpha 3?
|
||
===================================
|
||
|
||
*Release date: 2017-12-05*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code
|
||
object constructor based on freevars and cellvars, rather than needing to
|
||
be set correctly by the caller. This ensures it will be cleared
|
||
automatically when additional cell references are injected into a modified
|
||
code object and function.
|
||
|
||
- bpo-10544: Yield expressions are now deprecated in comprehensions and
|
||
generator expressions. They are still permitted in the definition of the
|
||
outermost iterable, as that is evaluated directly in the enclosing scope.
|
||
|
||
- bpo-32137: The repr of deeply nested dict now raises a RecursionError
|
||
instead of crashing due to a stack overflow.
|
||
|
||
- bpo-32096: Revert memory allocator changes in the C API: move structures
|
||
back from _PyRuntime to Objects/obmalloc.c. The memory allocators are once
|
||
again initialized statically, and so PyMem_RawMalloc() and
|
||
Py_DecodeLocale() can be called before _PyRuntime_Initialize().
|
||
|
||
- bpo-32043: Add a new "developer mode": new "-X dev" command line option to
|
||
enable debug checks at runtime.
|
||
|
||
- bpo-32023: SyntaxError is now correctly raised when a generator expression
|
||
without parenthesis is used instead of an inheritance list in a class
|
||
definition. The duplication of the parentheses can be omitted only on
|
||
calls.
|
||
|
||
- bpo-32012: SyntaxError is now correctly raised when a generator expression
|
||
without parenthesis is passed as an argument, but followed by a trailing
|
||
comma. A generator expression always needs to be directly inside a set of
|
||
parentheses and cannot have a comma on either side.
|
||
|
||
- bpo-28180: A new internal ``_Py_SetLocaleFromEnv(category)`` helper
|
||
function has been added in order to improve the consistency of behaviour
|
||
across different ``libc`` implementations (e.g. Android doesn't support
|
||
setting the locale from the environment by default).
|
||
|
||
- bpo-31949: Fixed several issues in printing tracebacks
|
||
(PyTraceBack_Print()). Setting sys.tracebacklimit to 0 or less now
|
||
suppresses printing tracebacks. Setting sys.tracebacklimit to None now
|
||
causes using the default limit. Setting sys.tracebacklimit to an integer
|
||
larger than LONG_MAX now means using the limit LONG_MAX rather than the
|
||
default limit. Fixed integer overflows in the case of more than ``2**31``
|
||
traceback items on Windows. Fixed output errors handling.
|
||
|
||
- bpo-30696: Fix the interactive interpreter looping endlessly when no
|
||
memory.
|
||
|
||
- bpo-20047: Bytearray methods partition() and rpartition() now accept only
|
||
bytes-like objects as separator, as documented. In particular they now
|
||
raise TypeError rather of returning a bogus result when an integer is
|
||
passed as a separator.
|
||
|
||
- bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of
|
||
``__import__()`` or the ``__all__`` attribute of the module contain bytes
|
||
instances.
|
||
|
||
- bpo-31845: Environment variables are once more read correctly at
|
||
interpreter startup.
|
||
|
||
- bpo-28936: Ensure that lexically first syntax error involving a parameter
|
||
and ``global`` or ``nonlocal`` is detected first at a given scope. Patch
|
||
by Ivan Levkivskyi.
|
||
|
||
- bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in
|
||
codecs.escape_decode() when decode an escaped non-ascii byte.
|
||
|
||
- bpo-31618: The per-frame tracing logic added in 3.7a1 has been altered so
|
||
that ``frame->f_lineno`` is updated before either ``"line"`` or
|
||
``"opcode"`` events are emitted. Previously, opcode events were emitted
|
||
first, and therefore would occasionally see stale line numbers on the
|
||
frame. The behavior of this feature has changed slightly as a result: when
|
||
both ``f_trace_lines`` and ``f_trace_opcodes`` are enabled, line events
|
||
now occur first.
|
||
|
||
- bpo-28603: Print the full context/cause chain of exceptions on interpreter
|
||
exit, even if an exception in the chain is unhashable or compares equal to
|
||
later ones. Patch by Zane Bitter.
|
||
|
||
- bpo-31786: Fix timeout rounding in the select module to round correctly
|
||
negative timeouts between -1.0 and 0.0. The functions now block waiting
|
||
for events as expected. Previously, the call was incorrectly non-blocking.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-31781: Prevent crashes when calling methods of an uninitialized
|
||
``zipimport.zipimporter`` object. Patch by Oren Milman.
|
||
|
||
- bpo-30399: Standard repr() of BaseException with a single argument no
|
||
longer contains redundant trailing comma.
|
||
|
||
- bpo-31626: Fixed a bug in debug memory allocator. There was a write to
|
||
freed memory after shrinking a memory block.
|
||
|
||
- bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be
|
||
raised by `_PySys_SetObjectId()`, for example when no memory.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying
|
||
instances of generic classes, improve interaction of ``__init_subclass__``
|
||
with generics. Original PRs by Ivan Levkivskyi.
|
||
|
||
- bpo-32214: PEP 557, Data Classes. Provides a decorator which adds
|
||
boilerplate methods to classes which use type annotations so specify
|
||
fields.
|
||
|
||
- bpo-27240: The header folding algorithm for the new email policies has
|
||
been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182. In
|
||
particular, RFC2231 folding is now done correctly.
|
||
|
||
- bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL
|
||
when getting the file size. Fixed hang of all threads with inaccessible
|
||
NFS server. Patch by Nir Soffer.
|
||
|
||
- bpo-32101: Add :attr:`sys.flags.dev_mode` flag
|
||
|
||
- bpo-32154: The ``asyncio.windows_utils.socketpair()`` function has been
|
||
removed: use directly :func:`socket.socketpair` which is available on all
|
||
platforms since Python 3.5 (before, it wasn't available on Windows).
|
||
``asyncio.windows_utils.socketpair()`` was just an alias to
|
||
``socket.socketpair`` on Python 3.5 and newer.
|
||
|
||
- bpo-32089: warnings: In development (-X dev) and debug mode (pydebug
|
||
build), use the "default" action for ResourceWarning, rather than the
|
||
"always" action, in the default warnings filters.
|
||
|
||
- bpo-32107: ``uuid.getnode()`` now preferentially returns universally
|
||
administered MAC addresses if available, over locally administered MAC
|
||
addresses. This makes a better guarantee for global uniqueness of UUIDs
|
||
returned from ``uuid.uuid1()``. If only locally administered MAC
|
||
addresses are available, the first such one found is returned.
|
||
|
||
- bpo-23033: Wildcard is now supported in hostname when it is one and only
|
||
character in the left most segment of hostname in second argument of
|
||
:meth:`ssl.match_hostname`. Patch by Mandeep Singh.
|
||
|
||
- bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return
|
||
``None`` when the value of property is ``VT_EMPTY``. Initial patch by
|
||
Mark Mc Mahon.
|
||
|
||
- bpo-28334: Use :func:`os.path.expanduser` to find the ``~/.netrc`` file in
|
||
:class:`netrc.netrc`. If it does not exist, :exc:`FileNotFoundError` is
|
||
raised. Patch by Dimitri Merejkowsky.
|
||
|
||
- bpo-32121: Made ``tracemalloc.Traceback`` behave more like the traceback
|
||
module, sorting the frames from oldest to most recent.
|
||
``Traceback.format()`` now accepts negative *limit*, truncating the result
|
||
to the ``abs(limit)`` oldest frames. To get the old behaviour, one can use
|
||
the new *most_recent_first* argument to ``Traceback.format()``. (Patch by
|
||
Jesse Bakker.)
|
||
|
||
- bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the
|
||
:meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>`
|
||
method. Initial patch by Robin Wellner.
|
||
|
||
- bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception
|
||
message when it couldn't open or create an MSI file. Initial patch by
|
||
William Tisäter.
|
||
|
||
- bpo-19610: ``setup()`` now warns about invalid types for some fields. The
|
||
``distutils.dist.Distribution`` class now warns when ``classifiers``,
|
||
``keywords`` and ``platforms`` fields are not specified as a list or a
|
||
string.
|
||
|
||
- bpo-32071: Added the ``-k`` command-line option to ``python -m unittest``
|
||
to run only tests that match the given pattern(s).
|
||
|
||
- bpo-10049: Added *nullcontext* no-op context manager to contextlib. This
|
||
provides a simpler and faster alternative to ExitStack() when handling
|
||
optional context managers.
|
||
|
||
- bpo-28684: The new test.support.skip_unless_bind_unix_socket() decorator
|
||
is used here to skip asyncio tests that fail because the platform lacks a
|
||
functional bind() function for unix domain sockets (as it is the case for
|
||
non root users on the recent Android versions that run now SELinux in
|
||
enforcing mode).
|
||
|
||
- bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n*
|
||
characters/bytes for non-negative *n*. This makes it compatible with
|
||
``read()`` methods of other file-like objects.
|
||
|
||
- bpo-27535: The warnings module doesn't leak memory anymore in the hidden
|
||
warnings registry for the "ignore" action of warnings filters.
|
||
warn_explicit() function doesn't add the warning key to the registry
|
||
anymore for the "ignore" action.
|
||
|
||
- bpo-32088: warnings: When Python is build is debug mode (``Py_DEBUG``),
|
||
:exc:`DeprecationWarning`, :exc:`PendingDeprecationWarning` and
|
||
:exc:`ImportWarning` warnings are now displayed by default.
|
||
|
||
- bpo-1647489: Fixed searching regular expression patterns that could match
|
||
an empty string. Non-empty string can now be correctly found after
|
||
matching an empty string.
|
||
|
||
- bpo-25054: Added support of splitting on a pattern that could match an
|
||
empty string.
|
||
|
||
- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays.
|
||
Identical objects will be saved only once. Equal references will be load
|
||
as identical objects. Added support for saving and loading recursive data
|
||
structures.
|
||
|
||
- bpo-32069: Drop legacy SSL transport from asyncio, ssl.MemoryBIO is always
|
||
used anyway.
|
||
|
||
- bpo-32066: asyncio: Support pathlib.Path in create_unix_connection; sock
|
||
arg should be optional
|
||
|
||
- bpo-32046: Updates 2to3 to convert from operator.isCallable(obj) to
|
||
callable(obj). Patch by Dong-hee Na.
|
||
|
||
- bpo-32018: inspect.signature should follow :pep:`8`, if the parameter has
|
||
an annotation and a default value. Patch by Dong-hee Na.
|
||
|
||
- bpo-32025: Add time.thread_time() and time.thread_time_ns()
|
||
|
||
- bpo-32037: Integers that fit in a signed 32-bit integer will be now
|
||
pickled with protocol 0 using the INT opcode. This will decrease the size
|
||
of a pickle, speed up pickling and unpickling, and make these integers be
|
||
unpickled as int instances in Python 2.
|
||
|
||
- bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError
|
||
pickleable.
|
||
|
||
- bpo-32015: Fixed the looping of asyncio in the case of reconnection the
|
||
socket during waiting async read/write from/to the socket.
|
||
|
||
- bpo-32011: Restored support of loading marshal files with the TYPE_INT64
|
||
code. These files can be produced in Python 2.7.
|
||
|
||
- bpo-28369: Enhance add_reader/writer check that socket is not used by some
|
||
transport. Before, only cases when add_reader/writer were called with an
|
||
int FD were supported. Now the check is implemented correctly for all
|
||
file-like objects.
|
||
|
||
- bpo-31976: Fix race condition when flushing a file is slow, which can
|
||
cause a segfault if closing the file from another thread.
|
||
|
||
- bpo-31985: Formally deprecated aifc.openfp, sunau.openfp, and wave.openfp.
|
||
Since change 7bc817d5ba917528e8bd07ec461c635291e7b06a in 1993, openfp in
|
||
each of the three modules had been pointing to that module's open function
|
||
as a matter of backwards compatibility, though it had been both untested
|
||
and undocumented.
|
||
|
||
- bpo-21862: cProfile command line now accepts `-m module_name` as an
|
||
alternative to script path. Patch by Sanyam Khurana.
|
||
|
||
- bpo-31970: Reduce performance overhead of asyncio debug mode.
|
||
|
||
- bpo-31843: *database* argument of sqlite3.connect() now accepts a
|
||
:term:`path-like object`, instead of just a string.
|
||
|
||
- bpo-31945: Add Configurable *blocksize* to ``HTTPConnection`` and
|
||
``HTTPSConnection`` for improved upload throughput. Patch by Nir Soffer.
|
||
|
||
- bpo-31943: Add a ``cancelled()`` method to :class:`asyncio.Handle`. Patch
|
||
by Marat Sharafutdinov.
|
||
|
||
- bpo-9678: Fixed determining the MAC address in the uuid module: Using
|
||
ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, NetBSD and
|
||
OpenBSD. Based on patch by Takayuki Shimizukawa.
|
||
|
||
- bpo-30057: Fix potential missed signal in signal.signal().
|
||
|
||
- bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian
|
||
platforms. Patch by Jack O'Connor.
|
||
|
||
- bpo-21423: Add an initializer argument to {Process,Thread}PoolExecutor
|
||
|
||
- bpo-31927: Fixed compilation of the socket module on NetBSD 8. Fixed
|
||
assertion failure or reading arbitrary data when parse a AF_BLUETOOTH
|
||
address on NetBSD and DragonFly BSD.
|
||
|
||
- bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse()
|
||
when the size of types chtype or mmask_t is less than the size of C long.
|
||
curses.box() now accepts characters as arguments. Based on patch by Steve
|
||
Fink.
|
||
|
||
- bpo-31917: Add 3 new clock identifiers: :data:`time.CLOCK_BOOTTIME`,
|
||
:data:`time.CLOCK_PROF` and :data:`time.CLOCK_UPTIME`.
|
||
|
||
- bpo-31897: plistlib now catches more errors when read binary plists and
|
||
raises InvalidFileException instead of unexpected exceptions.
|
||
|
||
- bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch
|
||
by Masayuki Yamamoto.
|
||
|
||
- bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and
|
||
NetBSD. Fixed the comparison of the kqueue_event objects.
|
||
|
||
- bpo-31891: Fixed building the curses module on NetBSD.
|
||
|
||
- bpo-31884: added required constants to subprocess module for setting
|
||
priority on windows
|
||
|
||
- bpo-28281: Remove year (1-9999) limits on the Calendar.weekday() function.
|
||
Patch by Mark Gollahon.
|
||
|
||
- bpo-31702: crypt.mksalt() now allows to specify the number of rounds for
|
||
SHA-256 and SHA-512 hashing.
|
||
|
||
- bpo-30639: :func:`inspect.getfile` no longer computes the repr of unknown
|
||
objects to display in an error message, to protect against badly behaved
|
||
custom reprs.
|
||
|
||
- bpo-30768: Fix the pthread+semaphore implementation of
|
||
PyThread_acquire_lock_timed() when called with timeout > 0 and
|
||
intr_flag=0: recompute the timeout if sem_timedwait() is interrupted by a
|
||
signal (EINTR). See also the :pep:`475`.
|
||
|
||
- bpo-31854: Add ``mmap.ACCESS_DEFAULT`` constant.
|
||
|
||
- bpo-31834: Use optimized code for BLAKE2 only with SSSE3+. The pure SSE2
|
||
implementation is slower than the pure C reference implementation.
|
||
|
||
- bpo-28292: Calendar.itermonthdates() will now consistently raise an
|
||
exception when a date falls outside of the 0001-01-01 through 9999-12-31
|
||
range. To support applications that cannot tolerate such exceptions, the
|
||
new methods itermonthdays3() and itermonthdays4() are added. The new
|
||
methods return tuples and are not restricted by the range supported by
|
||
datetime.date.
|
||
|
||
- bpo-28564: The shutil.rmtree() function has been sped up to 20--40%. This
|
||
was done using the os.scandir() function.
|
||
|
||
- bpo-28416: Instances of pickle.Pickler subclass with the persistent_id()
|
||
method and pickle.Unpickler subclass with the persistent_load() method no
|
||
longer create reference cycles.
|
||
|
||
- bpo-31653: Don't release the GIL if we can acquire a multiprocessing
|
||
semaphore immediately.
|
||
|
||
- bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed
|
||
or None.
|
||
|
||
- bpo-20825: Add `subnet_of` and `superset_of` containment tests to
|
||
:class:`ipaddress.IPv6Network` and :class:`ipaddress.IPv4Network`. Patch
|
||
by Michel Albert and Cheryl Sabella.
|
||
|
||
- bpo-31827: Remove the os.stat_float_times() function. It was introduced in
|
||
Python 2.3 for backward compatibility with Python 2.2, and was deprecated
|
||
since Python 3.1.
|
||
|
||
- bpo-31756: Add a ``subprocess.Popen(text=False)`` keyword argument to
|
||
`subprocess` functions to be more explicit about when the library should
|
||
attempt to decode outputs into text. Patch by Andrew Clegg.
|
||
|
||
- bpo-31819: Add AbstractEventLoop.sock_recv_into().
|
||
|
||
- bpo-31457: If nested log adapters are used, the inner ``process()``
|
||
methods are no longer omitted.
|
||
|
||
- bpo-31457: The ``manager`` property on LoggerAdapter objects is now
|
||
properly settable.
|
||
|
||
- bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire()
|
||
and socket.socket.settimeout() to round correctly negative timeouts
|
||
between -1.0 and 0.0. The functions now block waiting for events as
|
||
expected. Previously, the call was incorrectly non-blocking. Patch by
|
||
Pablo Galindo.
|
||
|
||
- bpo-31803: time.clock() and time.get_clock_info('clock') now emit a
|
||
DeprecationWarning warning.
|
||
|
||
- bpo-31800: Extended support for parsing UTC offsets. strptime '%z' can now
|
||
parse the output generated by datetime.isoformat, including seconds and
|
||
microseconds.
|
||
|
||
- bpo-28603: traceback: Fix a TypeError that occurred during printing of
|
||
exception tracebacks when either the current exception or an exception in
|
||
its context/cause chain is unhashable. Patch by Zane Bitter.
|
||
|
||
- bpo-30541: Add new function to seal a mock and prevent the automatically
|
||
creation of child mocks. Patch by Mario Corchero.
|
||
|
||
- bpo-31784: Implement the :pep:`564`, add new 6 new functions with
|
||
nanosecond resolution to the :mod:`time` module:
|
||
:func:`~time.clock_gettime_ns`, :func:`~time.clock_settime_ns`,
|
||
:func:`~time.monotonic_ns`, :func:`~time.perf_counter_ns`,
|
||
:func:`~time.process_time_ns`, :func:`~time.time_ns`.
|
||
|
||
- bpo-30143: 2to3 now generates a code that uses abstract collection classes
|
||
from collections.abc rather than collections.
|
||
|
||
- bpo-31770: Prevent a crash when calling the ``__init__()`` method of a
|
||
``sqlite3.Cursor`` object more than once. Patch by Oren Milman.
|
||
|
||
- bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the
|
||
``Cursor`` object is uninitialized. Patch by Oren Milman.
|
||
|
||
- bpo-31752: Fix possible crash in timedelta constructor called with custom
|
||
integers.
|
||
|
||
- bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get
|
||
pollers timeout
|
||
|
||
- bpo-31690: Allow the flags re.ASCII, re.LOCALE, and re.UNICODE to be used
|
||
as group flags for regular expressions.
|
||
|
||
- bpo-30349: FutureWarning is now emitted if a regular expression contains
|
||
character set constructs that will change semantically in the future
|
||
(nested sets and set operations).
|
||
|
||
- bpo-31664: Added support for the Blowfish hashing in the crypt module.
|
||
|
||
- bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in
|
||
asyncio module. This method was previously modifying a wrong reference to
|
||
the protocol.
|
||
|
||
- bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and
|
||
earlier.
|
||
|
||
- bpo-31307: Allow use of bytes objects for arguments to
|
||
:meth:`configparser.ConfigParser.read`. Patch by Vincent Michel.
|
||
|
||
- bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for
|
||
arbitrary negative timeouts on all OSes where it can only be a
|
||
non-negative integer or -1. Patch by Riccardo Coccioli.
|
||
|
||
- bpo-31310: multiprocessing's semaphore tracker should be launched again if
|
||
crashed.
|
||
|
||
- bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and
|
||
other user interruptions. If it crashes, restart it when necessary.
|
||
|
||
- bpo-31245: Added support for AF_UNIX socket in asyncio
|
||
`create_datagram_endpoint`.
|
||
|
||
- bpo-30553: Add HTTP/2 status code 421 (Misdirected Request) to
|
||
:class:`http.HTTPStatus`. Patch by Vitor Pereira.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket
|
||
versionadded marker.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on
|
||
APFS.
|
||
|
||
- bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5.
|
||
The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged
|
||
into the kernel 4.5.
|
||
|
||
- bpo-32138: Skip on Android test_faulthandler tests that raise SIGSEGV and
|
||
remove the test.support.requires_android_level decorator.
|
||
|
||
- bpo-32136: The runtime embedding tests have been split out from
|
||
``Lib/test/test_capi.py`` into a new ``Lib/test/test_embed.py`` file.
|
||
|
||
- bpo-28668: test.support.requires_multiprocessing_queue is removed. Skip
|
||
tests with test.support.import_module('multiprocessing.synchronize')
|
||
instead when the semaphore implementation is broken or missing.
|
||
|
||
- bpo-32126: Skip test_get_event_loop_new_process in
|
||
test.test_asyncio.test_events when sem_open() is not functional.
|
||
|
||
- bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the
|
||
names sample to always test the same files. It prevents false alarms when
|
||
hunting reference leaks.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-28538: Revert the previous changes, the if_nameindex structure is
|
||
defined by Unified Headers.
|
||
|
||
- bpo-28762: Revert the last commit, the F_LOCK macro is defined by Android
|
||
Unified Headers.
|
||
|
||
- bpo-29040: Support building Android with Unified Headers. The first NDK
|
||
release to support Unified Headers is android-ndk-r14.
|
||
|
||
- bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the
|
||
sysroot paths when cross-compiling.
|
||
|
||
- bpo-31957: Fixes Windows SDK version detection when building for Windows.
|
||
|
||
- bpo-31609: Fixes quotes in PCbuild/clean.bat
|
||
|
||
- bpo-31934: Abort the build when building out of a not clean source tree.
|
||
|
||
- bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when
|
||
there was more than one function and/or method in a .c file with the same
|
||
name.
|
||
|
||
- bpo-28791: Update Windows builds to use SQLite 3.21.0.
|
||
|
||
- bpo-28791: Update OS X installer to use SQLite 3.21.0.
|
||
|
||
- bpo-28643: Record profile-opt build progress with stamp files.
|
||
|
||
- bpo-31866: Finish removing support for AtheOS.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-1102: Return ``None`` when ``View.Fetch()`` returns
|
||
``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``. Initial patch by
|
||
Anthony Tuininga.
|
||
|
||
- bpo-31944: Fixes Modify button in Apps and Features dialog.
|
||
|
||
- bpo-20486: Implement the ``Database.Close()`` method to help closing MSI
|
||
database objects.
|
||
|
||
- bpo-31857: Make the behavior of USE_STACKCHECK deterministic in a
|
||
multi-threaded environment.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-31392: Update macOS installer to use OpenSSL 1.0.2m
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event
|
||
handling is driven by IDLE's run loop, a confusing and distracting
|
||
queue.EMPTY traceback context is no longer added to tk event exception
|
||
tracebacks. The traceback is now the same as when event handling is
|
||
driven by user code. Patch based on a suggestion by Serhiy Storchaka.
|
||
|
||
- bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet
|
||
in configdialog was replaced by ttk.Notebook.
|
||
|
||
- bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch
|
||
mostly by Cheryl Sabella.
|
||
|
||
- bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor
|
||
and output windows only see an empty last prompt line. This simplifies
|
||
the code and fixes a minor bug when newline is inserted. Sys.ps1, if
|
||
present, is read on Shell start-up, but is not set or changed.
|
||
|
||
- bpo-31860: The font sample in the IDLE configuration dialog is now
|
||
editable. Changes persist while IDLE remains open
|
||
|
||
- bpo-31836: Test_code_module now passes if run after test_idle, which sets
|
||
ps1. The code module uses sys.ps1 if present or sets it to '>>> ' if not.
|
||
Test_code_module now properly tests both behaviors. Ditto for ps2.
|
||
|
||
- bpo-28603: Fix a TypeError that caused a shell restart when printing a
|
||
traceback that includes an exception that is unhashable. Patch by Zane
|
||
Bitter.
|
||
|
||
- bpo-13802: Use non-Latin characters in the IDLE's Font settings sample.
|
||
Even if one selects a font that defines a limited subset of the unicode
|
||
Basic Multilingual Plane, tcl/tk will use other fonts that define a
|
||
character. The expanded example give users of non-Latin characters a
|
||
better idea of what they might see in IDLE's shell and editors. To make
|
||
room for the expanded sample, frames on the Font tab are re-arranged. The
|
||
Font/Tabs help explains a bit about the additions.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-32159: Remove CVS and Subversion tools: remove svneol.py and
|
||
treesync.py scripts. CPython migrated from CVS to Subversion, to
|
||
Mercurial, and then to Git. CVS and Subversion are no longer used to
|
||
develop CPython.
|
||
|
||
- bpo-30722: Make redemo work with Python 3.6 and newer versions. Also,
|
||
remove the ``LOCALE`` option since it doesn't work with string patterns in
|
||
Python 3. Patch by Christoph Sarnowski.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in
|
||
a non-Python thread before PyEval_InitThreads(), only call
|
||
PyEval_InitThreads() after calling PyThreadState_New() to fix a crash.
|
||
|
||
- bpo-32125: The ``Py_UseClassExceptionsFlag`` flag has been removed. It was
|
||
deprecated and wasn't used anymore since Python 2.0.
|
||
|
||
- bpo-25612: Move the current exception state from the frame object to the
|
||
co-routine. This simplifies the interpreter and fixes a couple of obscure
|
||
bugs caused by having swap exception state when entering or exiting a
|
||
generator.
|
||
|
||
- bpo-23699: Add Py_RETURN_RICHCOMPARE macro to reduce boilerplate code in
|
||
rich comparison functions.
|
||
|
||
- bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and
|
||
`PyErr_NormalizeException()` does not use it anymore. This singleton is
|
||
persistent and its members being never cleared may cause a segfault during
|
||
finalization of the interpreter. See also issue #22898.
|
||
|
||
|
||
What's New in Python 3.7.0 alpha 2?
|
||
===================================
|
||
|
||
*Release date: 2017-10-16*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-31558: ``gc.freeze()`` is a new API that allows for moving all objects
|
||
currently tracked by the garbage collector to a permanent generation,
|
||
effectively removing them from future collection events. This can be used
|
||
to protect those objects from having their PyGC_Head mutated. In effect,
|
||
this enables great copy-on-write stability at fork().
|
||
|
||
- bpo-31642: Restored blocking "from package import module" by setting
|
||
sys.modules["package.module"] to None.
|
||
|
||
- bpo-31708: Allow use of asynchronous generator expressions in synchronous
|
||
functions.
|
||
|
||
- bpo-31709: Drop support of asynchronous __aiter__.
|
||
|
||
- bpo-30404: The -u option now makes the stdout and stderr streams
|
||
unbuffered rather than line-buffered.
|
||
|
||
- bpo-31619: Fixed a ValueError when convert a string with large number of
|
||
underscores to integer with binary base.
|
||
|
||
- bpo-31602: Fix an assertion failure in `zipimporter.get_source()` in case
|
||
of a bad `zlib.decompress()`. Patch by Oren Milman.
|
||
|
||
- bpo-31592: Fixed an assertion failure in Python parser in case of a bad
|
||
`unicodedata.normalize()`. Patch by Oren Milman.
|
||
|
||
- bpo-31588: Raise a `TypeError` with a helpful error message when class
|
||
creation fails due to a metaclass with a bad ``__prepare__()`` method.
|
||
Patch by Oren Milman.
|
||
|
||
- bpo-31574: Importlib was instrumented with two dtrace probes to profile
|
||
import timing.
|
||
|
||
- bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad
|
||
``__name__`` global. Patch by Oren Milman.
|
||
|
||
- bpo-31506: Improved the error message logic for object.__new__ and
|
||
object.__init__.
|
||
|
||
- bpo-31505: Fix an assertion failure in `json`, in case
|
||
`_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren
|
||
Milman.
|
||
|
||
- bpo-31492: Fix assertion failures in case of failing to import from a
|
||
module with a bad ``__name__`` attribute, and in case of failing to access
|
||
an attribute of such a module. Patch by Oren Milman.
|
||
|
||
- bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the
|
||
argument has a bad ``__abs__()`` method. Patch by Oren Milman.
|
||
|
||
- bpo-31336: Speed up class creation by 10-20% by reducing the overhead in
|
||
the necessary special method lookups. Patch by Stefan Behnel.
|
||
|
||
- bpo-31415: Add ``-X importtime`` option to show how long each import
|
||
takes. It can be used to optimize application's startup time. Support the
|
||
:envvar:`PYTHONPROFILEIMPORTTIME` as an equivalent way to enable this.
|
||
|
||
- bpo-31410: Optimized calling wrapper and classmethod descriptors.
|
||
|
||
- bpo-31353: :pep:`553` - Add a new built-in called ``breakpoint()`` which
|
||
calls ``sys.breakpointhook()``. By default this imports ``pdb`` and calls
|
||
``pdb.set_trace()``, but users may override ``sys.breakpointhook()`` to
|
||
call whatever debugger they want. The original value of the hook is saved
|
||
in ``sys.__breakpointhook__``.
|
||
|
||
- bpo-17852: Maintain a list of open buffered files, flush them before
|
||
exiting the interpreter. Based on a patch from Armin Rigo.
|
||
|
||
- bpo-31315: Fix an assertion failure in imp.create_dynamic(), when
|
||
spec.name is not a string. Patch by Oren Milman.
|
||
|
||
- bpo-31311: Fix a crash in the ``__setstate__()`` method of
|
||
`ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman.
|
||
|
||
- bpo-31293: Fix crashes in true division and multiplication of a timedelta
|
||
object by a float with a bad as_integer_ratio() method. Patch by Oren
|
||
Milman.
|
||
|
||
- bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the
|
||
return value of the received loader's get_source() has a bad splitlines()
|
||
method. Patch by Oren Milman.
|
||
|
||
- bpo-30406: Make ``async`` and ``await`` proper keywords, as specified in
|
||
:pep:`492`.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-30058: Fixed buffer overflow in select.kqueue.control().
|
||
|
||
- bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII
|
||
characters. Now it uses ``-i`` regular expression local flag to avoid
|
||
non-ASCII characters.
|
||
|
||
- bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM
|
||
exceptions.
|
||
|
||
- bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of
|
||
`Element.text` and `Element.tail`. Patch by Oren Milman.
|
||
|
||
- bpo-31671: Now ``re.compile()`` converts passed RegexFlag to normal int
|
||
object before compiling. bm_regex_compile benchmark shows 14% performance
|
||
improvements.
|
||
|
||
- bpo-30397: The types of compiled regular objects and match objects are now
|
||
exposed as `re.Pattern` and `re.Match`. This adds information in pydoc
|
||
output for the re module.
|
||
|
||
- bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split()
|
||
when pass a string larger than 2 GiB.
|
||
|
||
- bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo().
|
||
|
||
- bpo-31648: Improvements to path predicates in ElementTree: Allow
|
||
whitespace around predicate parts, i.e. "[a = 'text']" instead of
|
||
requiring the less readable "[a='text']". Add support for text comparison
|
||
of the current node, like "[.='text']". Patch by Stefan Behnel.
|
||
|
||
- bpo-30806: Fix the string representation of a netrc object.
|
||
|
||
- bpo-31638: Add optional argument ``compressed`` to
|
||
``zipapp.create_archive``, and add option ``--compress`` to the command
|
||
line interface of ``zipapp``.
|
||
|
||
- bpo-25351: Avoid venv activate failures with undefined variables
|
||
|
||
- bpo-20519: Avoid ctypes use (if possible) and improve import time for
|
||
uuid.
|
||
|
||
- bpo-28293: The regular expression cache is no longer completely dumped
|
||
when it is full.
|
||
|
||
- bpo-31596: Added pthread_getcpuclockid() to the time module
|
||
|
||
- bpo-27494: Make 2to3 accept a trailing comma in generator expressions. For
|
||
example, ``set(x for x in [],)`` is now allowed.
|
||
|
||
- bpo-30347: Stop crashes when concurrently iterate over itertools.groupby()
|
||
iterators.
|
||
|
||
- bpo-30346: An iterator produced by itertools.groupby() iterator now
|
||
becomes exhausted after advancing the groupby iterator.
|
||
|
||
- bpo-31556: Cancel asyncio.wait_for future faster if timeout <= 0
|
||
|
||
- bpo-31540: Allow passing a context object in
|
||
:class:`concurrent.futures.ProcessPoolExecutor` constructor. Also, free
|
||
job resources in :class:`concurrent.futures.ProcessPoolExecutor` earlier
|
||
to improve memory usage when a worker waits for new jobs.
|
||
|
||
- bpo-31516: ``threading.current_thread()`` should not return a dummy thread
|
||
at shutdown.
|
||
|
||
- bpo-31525: In the sqlite module, require the sqlite3_prepare_v2 API. Thus,
|
||
the sqlite module now requires sqlite version at least 3.3.9.
|
||
|
||
- bpo-26510: argparse subparsers are now required by default. This matches
|
||
behaviour in Python 2. For optional subparsers, use the new parameter
|
||
``add_subparsers(required=False)``. Patch by Anthony Sottile. (As of
|
||
3.7.0rc1, the default was changed to not required as had been the case
|
||
since Python 3.3.)
|
||
|
||
- bpo-27541: Reprs of subclasses of some collection and iterator classes
|
||
(`bytearray`, `array.array`, `collections.deque`,
|
||
`collections.defaultdict`, `itertools.count`, `itertools.repeat`) now
|
||
contain actual type name insteads of hardcoded name of the base class.
|
||
|
||
- bpo-31351: python -m ensurepip now exits with non-zero exit code if pip
|
||
bootstrapping has failed.
|
||
|
||
- bpo-31389: ``pdb.set_trace()`` now takes an optional keyword-only argument
|
||
``header``. If given, this is printed to the console just before debugging
|
||
begins.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-31537: Fix incorrect usage of ``get_history_length`` in readline
|
||
documentation example code. Patch by Brad Smith.
|
||
|
||
- bpo-30085: The operator functions without double underscores are preferred
|
||
for clarity. The one with underscores are only kept for
|
||
back-compatibility.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-31696: Improve compiler version information in :data:`sys.version`
|
||
when Python is built with Clang.
|
||
|
||
- bpo-31625: Stop using ranlib on static libraries. Instead, we assume ar
|
||
supports the 's' flag.
|
||
|
||
- bpo-31624: Remove support for BSD/OS.
|
||
|
||
- bpo-22140: Prevent double substitution of prefix in python-config.sh.
|
||
|
||
- bpo-31569: Correct PCBuild/ case to PCbuild/ in build scripts and
|
||
documentation.
|
||
|
||
- bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing
|
||
changed.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-31460: Simplify the API of IDLE's Module Browser. Passing a widget
|
||
instead of an flist with a root widget opens the option of creating a
|
||
browser frame that is only part of a window. Passing a full file name
|
||
instead of pieces assumed to come from a .py file opens the possibility of
|
||
browsing python files that do not end in .py.
|
||
|
||
- bpo-31649: IDLE - Make _htest, _utest parameters keyword only.
|
||
|
||
- bpo-31559: Remove test order dependence in idle_test.test_browser.
|
||
|
||
- bpo-31459: Rename IDLE's module browser from Class Browser to Module
|
||
Browser. The original module-level class and method browser became a
|
||
module browser, with the addition of module-level functions, years ago.
|
||
Nested classes and functions were added yesterday. For
|
||
back-compatibility, the virtual event <<open-class-browser>>, which
|
||
appears on the Keys tab of the Settings dialog, is not changed. Patch by
|
||
Cheryl Sabella.
|
||
|
||
- bpo-31500: Default fonts now are scaled on HiDPI displays.
|
||
|
||
- bpo-1612262: IDLE module browser now shows nested classes and functions.
|
||
Original patches for code and tests by Guilherme Polo and Cheryl Sabella,
|
||
respectively.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-28280: Make `PyMapping_Keys()`, `PyMapping_Values()` and
|
||
`PyMapping_Items()` always return a `list` (rather than a `list` or a
|
||
`tuple`). Patch by Oren Milman.
|
||
|
||
- bpo-31532: Fix memory corruption due to allocator mix in getpath.c between
|
||
Py_GetPath() and Py_SetPath()
|
||
|
||
- bpo-25658: Implement :pep:`539` for Thread Specific Storage (TSS) API: it
|
||
is a new Thread Local Storage (TLS) API to CPython which would supersede
|
||
use of the existing TLS API within the CPython interpreter, while
|
||
deprecating the existing API. PEP written by Erik M. Bray, patch by
|
||
Masayuki Yamamoto.
|
||
|
||
|
||
What's New in Python 3.7.0 alpha 1?
|
||
===================================
|
||
|
||
*Release date: 2017-09-19*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-29781: SSLObject.version() now correctly returns None when handshake
|
||
over BIO has not been performed yet.
|
||
|
||
- bpo-29505: Add fuzz tests for float(str), int(str), unicode(str); for
|
||
oss-fuzz.
|
||
|
||
- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
|
||
get security fixes.
|
||
|
||
- bpo-30730: Prevent environment variables injection in subprocess on
|
||
Windows. Prevent passing other environment variables and command
|
||
arguments.
|
||
|
||
- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
|
||
security vulnerabilities including: CVE-2017-9233 (External entity
|
||
infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
|
||
CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
|
||
CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
|
||
CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
|
||
impact Python, since Python already gets entropy from the OS to set the
|
||
expat secret using ``XML_SetHashSalt()``.
|
||
|
||
- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
|
||
example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
|
||
``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
|
||
authentication (``login@host``).
|
||
|
||
- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
|
||
CVE-2016-0718 and CVE-2016-4472. See
|
||
https://sourceforge.net/p/expat/bugs/537/ for more information.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-31490: Fix an assertion failure in `ctypes` class definition, in case
|
||
the class has an attribute whose name is specified in ``_anonymous_`` but
|
||
not in ``_fields_``. Patch by Oren Milman.
|
||
|
||
- bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in
|
||
case the env argument has a bad keys() method. Patch by Oren Milman.
|
||
|
||
- bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case
|
||
of an exception with a bad ``__module__`` attribute. Patch by Oren Milman.
|
||
|
||
- bpo-31416: Fix assertion failures in case of a bad warnings.filters or
|
||
warnings.defaultaction. Patch by Oren Milman.
|
||
|
||
- bpo-28411: Change direct usage of PyInterpreterState.modules to
|
||
PyImport_GetModuleDict(). Also introduce more uniformity in other code
|
||
that deals with sys.modules. This helps reduce complications when working
|
||
on sys.modules.
|
||
|
||
- bpo-28411: Switch to the abstract API when dealing with
|
||
``PyInterpreterState.modules``. This allows later support for all dict
|
||
subclasses and other Mapping implementations. Also add a
|
||
``PyImport_GetModule()`` function to reduce a bunch of duplicated code.
|
||
|
||
- bpo-31411: Raise a TypeError instead of SystemError in case
|
||
warnings.onceregistry is not a dictionary. Patch by Oren Milman.
|
||
|
||
- bpo-31344: For finer control of tracing behaviour when testing the
|
||
interpreter, two new frame attributes have been added to control the
|
||
emission of particular trace events: ``f_trace_lines`` (``True`` by
|
||
default) to turn off per-line trace events; and ``f_trace_opcodes``
|
||
(``False`` by default) to turn on per-opcode trace events.
|
||
|
||
- bpo-31373: Fix several possible instances of undefined behavior due to
|
||
floating-point demotions.
|
||
|
||
- bpo-30465: Location information (``lineno`` and ``col_offset``) in
|
||
f-strings is now (mostly) correct. This fixes tools like flake8 from
|
||
showing warnings on the wrong line (typically the first line of the file).
|
||
|
||
- bpo-30860: Consolidate CPython's global runtime state under a single
|
||
struct. This improves discoverability of the runtime state.
|
||
|
||
- bpo-31347: Fix possible undefined behavior in _PyObject_FastCall_Prepend.
|
||
|
||
- bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev().
|
||
GNU C libray plans to remove the functions from sys/types.h.
|
||
|
||
- bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on
|
||
Windows, when the return value of ``pathname.replace('/','\\')`` isn't a
|
||
string. Patch by Oren Milman.
|
||
|
||
- bpo-31271: Fix an assertion failure in the write() method of
|
||
`io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch
|
||
by Oren Milman.
|
||
|
||
- bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the
|
||
decoder's state is invalid. Patch by Oren Milman.
|
||
|
||
- bpo-30721: ``print`` now shows correct usage hint for using Python 2
|
||
redirection syntax. Patch by Sanyam Khurana.
|
||
|
||
- bpo-31070: Fix a race condition in importlib _get_module_lock().
|
||
|
||
- bpo-30747: Add a non-dummy implementation of _Py_atomic_store and
|
||
_Py_atomic_load on MSVC.
|
||
|
||
- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
|
||
doesn't call ``PyObject_GC_UnTrack()``.
|
||
|
||
- bpo-31071: Avoid masking original TypeError in call with * unpacking when
|
||
other arguments are passed.
|
||
|
||
- bpo-30978: str.format_map() now passes key lookup exceptions through.
|
||
Previously any exception was replaced with a KeyError exception.
|
||
|
||
- bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state.
|
||
|
||
- bpo-30876: Relative import from unloaded package now reimports the package
|
||
instead of failing with SystemError. Relative import from non-package now
|
||
fails with ImportError rather than SystemError.
|
||
|
||
- bpo-30703: Improve signal delivery. Avoid using Py_AddPendingCall from
|
||
signal handler, to avoid calling signal-unsafe functions. The tests I'm
|
||
adding here fail without the rest of the patch, on Linux and OS X. This
|
||
means our signal delivery logic had defects (some signals could be lost).
|
||
|
||
- bpo-30765: Avoid blocking in pthread_mutex_lock() when
|
||
PyThread_acquire_lock() is asked not to block.
|
||
|
||
- bpo-31161: Make sure the 'Missing parentheses' syntax error message is
|
||
only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters.
|
||
|
||
- bpo-30814: Fixed a race condition when import a submodule from a package.
|
||
|
||
- bpo-30736: The internal unicodedata database has been upgraded to Unicode
|
||
10.0.
|
||
|
||
- bpo-30604: Move co_extra_freefuncs from per-thread to per-interpreter to
|
||
avoid crashes.
|
||
|
||
- bpo-30597: ``print`` now shows expected input in custom error message when
|
||
used as a Python 2 statement. Patch by Sanyam Khurana.
|
||
|
||
- bpo-30682: Removed a too-strict assertion that failed for certain
|
||
f-strings, such as eval("f'\\\n'") and eval("f'\\\r'").
|
||
|
||
- bpo-30501: The compiler now produces more optimal code for complex
|
||
condition expressions in the "if", "while" and "assert" statement, the
|
||
"if" expression, and generator expressions and comprehensions.
|
||
|
||
- bpo-28180: Implement :pep:`538` (legacy C locale coercion). This means
|
||
that when a suitable coercion target locale is available, both the core
|
||
interpreter and locale-aware C extensions will assume the use of UTF-8 as
|
||
the default text encoding, rather than ASCII.
|
||
|
||
- bpo-30486: Allows setting cell values for __closure__. Patch by Lisa
|
||
Roach.
|
||
|
||
- bpo-30537: itertools.islice now accepts integer-like objects (having an
|
||
__index__ method) as start, stop, and slice arguments
|
||
|
||
- bpo-25324: Tokens needed for parsing in Python moved to C. ``COMMENT``,
|
||
``NL`` and ``ENCODING``. This way the tokens and tok_names in the token
|
||
module don't get changed when you import the tokenize module.
|
||
|
||
- bpo-29104: Fixed parsing backslashes in f-strings.
|
||
|
||
- bpo-27945: Fixed various segfaults with dict when input collections are
|
||
mutated during searching, inserting or comparing. Based on patches by
|
||
Duane Griffin and Tim Mitchell.
|
||
|
||
- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
|
||
non-interned attribute names. Based on patch by Eryk Sun.
|
||
|
||
- bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the
|
||
middle of resuming a chain of nested 'yield from' or 'await' calls, it's
|
||
now correctly delivered to the innermost frame.
|
||
|
||
- bpo-28974: ``object.__format__(x, '')`` is now equivalent to ``str(x)``
|
||
rather than ``format(str(self), '')``.
|
||
|
||
- bpo-30024: Circular imports involving absolute imports with binding a
|
||
submodule to a name are now supported.
|
||
|
||
- bpo-12414: sys.getsizeof() on a code object now returns the sizes which
|
||
includes the code struct and sizes of objects which it references. Patch
|
||
by Dong-hee Na.
|
||
|
||
- bpo-29839: len() now raises ValueError rather than OverflowError if
|
||
__len__() returned a large negative integer.
|
||
|
||
- bpo-11913: README.rst is now included in the list of distutils standard
|
||
READMEs and therefore included in source distributions.
|
||
|
||
- bpo-29914: Fixed default implementations of __reduce__ and
|
||
__reduce_ex__(). object.__reduce__() no longer takes arguments,
|
||
object.__reduce_ex__() now requires one argument.
|
||
|
||
- bpo-29949: Fix memory usage regression of set and frozenset object.
|
||
|
||
- bpo-29935: Fixed error messages in the index() method of tuple, list and
|
||
deque when pass indices of wrong type.
|
||
|
||
- bpo-29816: Shift operation now has less opportunity to raise
|
||
OverflowError. ValueError always is raised rather than OverflowError for
|
||
negative counts. Shifting zero with non-negative count always returns
|
||
zero.
|
||
|
||
- bpo-24821: Fixed the slowing down to 25 times in the searching of some
|
||
unlucky Unicode characters.
|
||
|
||
- bpo-29102: Add a unique ID to PyInterpreterState. This makes it easier to
|
||
identify each subinterpreter.
|
||
|
||
- bpo-29894: The deprecation warning is emitted if __complex__ returns an
|
||
instance of a strict subclass of complex. In a future versions of Python
|
||
this can be an error.
|
||
|
||
- bpo-29859: Show correct error messages when any of the pthread_* calls in
|
||
thread_pthread.h fails.
|
||
|
||
- bpo-29849: Fix a memory leak when an ImportError is raised during from
|
||
import.
|
||
|
||
- bpo-28856: Fix an oversight that %b format for bytes should support
|
||
objects follow the buffer protocol.
|
||
|
||
- bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused
|
||
a regression by revealing an inconsistency in how sys.path is initialized
|
||
when executing ``__main__`` from a zipfile, directory, or other import
|
||
location. The interpreter now consistently avoids ever adding the import
|
||
location's parent directory to ``sys.path``, and ensures no other
|
||
``sys.path`` entries are inadvertently modified when inserting the import
|
||
location named on the command line.
|
||
|
||
- bpo-29568: Escaped percent "%%" in the format string for classic string
|
||
formatting no longer allows any characters between two percents.
|
||
|
||
- bpo-29714: Fix a regression that bytes format may fail when containing
|
||
zero bytes inside.
|
||
|
||
- bpo-29695: bool(), float(), list() and tuple() no longer take keyword
|
||
arguments. The first argument of int() can now be passes only as
|
||
positional argument.
|
||
|
||
- bpo-28893: Set correct __cause__ for errors about invalid awaitables
|
||
returned from __aiter__ and __anext__.
|
||
|
||
- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
|
||
:exc:`OverflowError`.
|
||
|
||
- bpo-29683: Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian
|
||
Coleman.
|
||
|
||
- bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It
|
||
should raise TypeError when kwargs is not a dict. But it might cause segv
|
||
when args=NULL and kwargs is not a dict.
|
||
|
||
- bpo-28598: Support __rmod__ for subclasses of str being called before
|
||
str.__mod__. Patch by Martijn Pieters.
|
||
|
||
- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by
|
||
Matthieu Dartiailh.
|
||
|
||
- bpo-29602: Fix incorrect handling of signed zeros in complex constructor
|
||
for complex subclasses and for inputs having a __complex__ method. Patch
|
||
by Serhiy Storchaka.
|
||
|
||
- bpo-29347: Fixed possibly dereferencing undefined pointers when creating
|
||
weakref objects.
|
||
|
||
- bpo-29463: Add ``docstring`` field to Module, ClassDef, FunctionDef, and
|
||
AsyncFunctionDef ast nodes. docstring is not first stmt in their body
|
||
anymore. It affects ``co_firstlineno`` and ``co_lnotab`` of code object
|
||
for module and class. (Reverted in :issue:`32911`.)
|
||
|
||
- bpo-29438: Fixed use-after-free problem in key sharing dict.
|
||
|
||
- bpo-29546: Set the 'path' and 'name' attribute on ImportError for ``from
|
||
... import ...``.
|
||
|
||
- bpo-29546: Improve from-import error message with location
|
||
|
||
- bpo-29478: If max_line_length=None is specified while using the Compat32
|
||
policy, it is no longer ignored. Patch by Mircea Cosbuc.
|
||
|
||
- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
|
||
|
||
- bpo-29337: Fixed possible BytesWarning when compare the code objects.
|
||
Warnings could be emitted at compile time.
|
||
|
||
- bpo-29327: Fixed a crash when pass the iterable keyword argument to
|
||
sorted().
|
||
|
||
- bpo-29034: Fix memory leak and use-after-free in os module
|
||
(path_converter).
|
||
|
||
- bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception.
|
||
|
||
- bpo-29049: Call _PyObject_GC_TRACK() lazily when calling Python function.
|
||
Calling function is up to 5% faster.
|
||
|
||
- bpo-28927: bytes.fromhex() and bytearray.fromhex() now ignore all ASCII
|
||
whitespace, not only spaces. Patch by Robert Xiao.
|
||
|
||
- bpo-28932: Do not include <sys/random.h> if it does not exist.
|
||
|
||
- bpo-25677: Correct the positioning of the syntax error caret for indented
|
||
blocks. Based on patch by Michael Layzell.
|
||
|
||
- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
|
||
form.
|
||
|
||
- bpo-18896: Python function can now have more than 255 parameters.
|
||
collections.namedtuple() now supports tuples with more than 255 elements.
|
||
|
||
- bpo-28596: The preferred encoding is UTF-8 on Android. Patch written by
|
||
Chi Hsuan Yen.
|
||
|
||
- bpo-22257: Clean up interpreter startup (see :pep:`432`).
|
||
|
||
- bpo-26919: On Android, operating system data is now always encoded/decoded
|
||
to/from UTF-8, instead of the locale encoding to avoid inconsistencies
|
||
with os.fsencode() and os.fsdecode() which are already using UTF-8.
|
||
|
||
- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
|
||
bug triggerable by a monkey-patched len() function.
|
||
|
||
- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
|
||
not convert combined table into split table. Patch written by INADA Naoki.
|
||
|
||
- bpo-28739: f-string expressions are no longer accepted as docstrings and
|
||
by ast.literal_eval() even if they do not include expressions.
|
||
|
||
- bpo-28512: Fixed setting the offset attribute of SyntaxError by
|
||
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
|
||
|
||
- bpo-28918: Fix the cross compilation of xxlimited when Python has been
|
||
built with Py_DEBUG defined.
|
||
|
||
- bpo-23722: Rather than silently producing a class that doesn't support
|
||
zero-argument ``super()`` in methods, failing to pass the new
|
||
``__classcell__`` namespace entry up to ``type.__new__`` now results in a
|
||
``DeprecationWarning`` and a class that supports zero-argument
|
||
``super()``.
|
||
|
||
- bpo-28797: Modifying the class __dict__ inside the __set_name__ method of
|
||
a descriptor that is used inside that class no longer prevents calling the
|
||
__set_name__ method of other descriptors.
|
||
|
||
- bpo-28799: Remove the ``PyEval_GetCallStats()`` function and deprecate the
|
||
untested and undocumented ``sys.callstats()`` function. Remove the
|
||
``CALL_PROFILE`` special build: use the :func:`sys.setprofile` function,
|
||
:mod:`cProfile` or :mod:`profile` to profile function calls.
|
||
|
||
- bpo-12844: More than 255 arguments can now be passed to a function.
|
||
|
||
- bpo-28782: Fix a bug in the implementation ``yield from`` when checking if
|
||
the next instruction is YIELD_FROM. Regression introduced by WORDCODE
|
||
(issue #26647).
|
||
|
||
- bpo-28774: Fix error position of the unicode error in ASCII and Latin1
|
||
encoders when a string returned by the error handler contains multiple
|
||
non-encodable characters (non-ASCII for the ASCII codec, characters out of
|
||
the U+0000-U+00FF range for Latin1).
|
||
|
||
- bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict.
|
||
Improve speed of dict literal with constant keys up to 30%.
|
||
|
||
- bpo-28532: Show sys.version when -V option is supplied twice.
|
||
|
||
- bpo-27100: The with-statement now checks for __enter__ before it checks
|
||
for __exit__. This gives less confusing error messages when both methods
|
||
are missing. Patch by Jonathan Ellington.
|
||
|
||
- bpo-28746: Fix the set_inheritable() file descriptor method on platforms
|
||
that do not have the ioctl FIOCLEX and FIONCLEX commands.
|
||
|
||
- bpo-26920: Fix not getting the locale's charset upon initializing the
|
||
interpreter, on platforms that do not have langinfo.
|
||
|
||
- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
|
||
when decode astral characters. Patch by Xiang Zhang.
|
||
|
||
- bpo-28665: Improve speed of the STORE_DEREF opcode by 40%.
|
||
|
||
- bpo-19398: Extra slash no longer added to sys.path components in case of
|
||
empty compile-time PYTHONPATH components.
|
||
|
||
- bpo-28621: Sped up converting int to float by reusing faster bits counting
|
||
implementation. Patch by Adrian Wielgosik.
|
||
|
||
- bpo-28580: Optimize iterating split table values. Patch by Xiang Zhang.
|
||
|
||
- bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch
|
||
by Xiang Zhang.
|
||
|
||
- bpo-28128: Deprecation warning for invalid str and byte escape sequences
|
||
now prints better information about where the error occurs. Patch by
|
||
Serhiy Storchaka and Eric Smith.
|
||
|
||
- bpo-28509: dict.update() no longer allocate unnecessary large memory.
|
||
|
||
- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
|
||
build.
|
||
|
||
- bpo-28517: Fixed of-by-one error in the peephole optimizer that caused
|
||
keeping unreachable code.
|
||
|
||
- bpo-28214: Improved exception reporting for problematic __set_name__
|
||
attributes.
|
||
|
||
- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
|
||
loss in PyTraceBack_Here().
|
||
|
||
- bpo-28183: Optimize and cleanup dict iteration.
|
||
|
||
- bpo-26081: Added C implementation of asyncio.Future. Original patch by
|
||
Yury Selivanov.
|
||
|
||
- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
|
||
Patch by Xiang Zhang.
|
||
|
||
- bpo-28376: The type of long range iterator is now registered as Iterator.
|
||
Patch by Oren Milman.
|
||
|
||
- bpo-28376: Creating instances of range_iterator by calling range_iterator
|
||
type now is disallowed. Calling iter() on range instance is the only way.
|
||
Patch by Oren Milman.
|
||
|
||
- bpo-26906: Resolving special methods of uninitialized type now causes
|
||
implicit initialization of the type instead of a fail.
|
||
|
||
- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
|
||
patch by Niklas Koep.
|
||
|
||
- bpo-24098: Fixed possible crash when AST is changed in process of
|
||
compiling it.
|
||
|
||
- bpo-28201: Dict reduces possibility of 2nd conflict in hash table when
|
||
hashes have same lower bits.
|
||
|
||
- bpo-28350: String constants with null character no longer interned.
|
||
|
||
- bpo-26617: Fix crash when GC runs during weakref callbacks.
|
||
|
||
- bpo-27942: String constants now interned recursively in tuples and
|
||
frozensets.
|
||
|
||
- bpo-28289: ImportError.__init__ now resets not specified attributes.
|
||
|
||
- bpo-21578: Fixed misleading error message when ImportError called with
|
||
invalid keyword args.
|
||
|
||
- bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch
|
||
by Soumya Sharma.
|
||
|
||
- bpo-28086: Single var-positional argument of tuple subtype was passed
|
||
unscathed to the C-defined function. Now it is converted to exact tuple.
|
||
|
||
- bpo-28214: Now __set_name__ is looked up on the class instead of the
|
||
instance.
|
||
|
||
- bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
|
||
syscall fails with EPERM, for example when blocked by SECCOMP.
|
||
|
||
- bpo-28192: Don't import readline in isolated mode.
|
||
|
||
- bpo-27441: Remove some redundant assignments to ob_size in longobject.c.
|
||
Thanks Oren Milman.
|
||
|
||
- bpo-27222: Clean up redundant code in long_rshift function. Thanks Oren
|
||
Milman.
|
||
|
||
- Upgrade internal unicode databases to Unicode version 9.0.0.
|
||
|
||
- bpo-28131: Fix a regression in zipimport's compile_source(). zipimport
|
||
should use the same optimization level as the interpreter.
|
||
|
||
- bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly
|
||
optimize memcpy().
|
||
|
||
- bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a
|
||
"pending key" (Not yet inserted in split-table). Patch by Xiang Zhang.
|
||
|
||
- bpo-26182: Raise DeprecationWarning when async and await keywords are used
|
||
as variable/attribute/class/function name.
|
||
|
||
- bpo-26182: Fix a refleak in code that raises DeprecationWarning.
|
||
|
||
- bpo-28721: Fix asynchronous generators aclose() and athrow() to handle
|
||
StopAsyncIteration propagation properly.
|
||
|
||
- bpo-26110: Speed-up method calls: add LOAD_METHOD and CALL_METHOD opcodes.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-31499: xml.etree: Fix a crash when a parser is part of a reference
|
||
cycle.
|
||
|
||
- bpo-31482: ``random.seed()`` now works with bytes in version=1
|
||
|
||
- bpo-28556: typing.get_type_hints now finds the right globalns for classes
|
||
and modules by default (when no ``globalns`` was specified by the caller).
|
||
|
||
- bpo-28556: Speed improvements to the ``typing`` module. Original PRs by
|
||
Ivan Levkivskyi and Mitar.
|
||
|
||
- bpo-31544: The C accelerator module of ElementTree ignored exceptions
|
||
raised when looking up TreeBuilder target methods in XMLParser().
|
||
|
||
- bpo-31234: socket.create_connection() now fixes manually a reference
|
||
cycle: clear the variable storing the last exception on success.
|
||
|
||
- bpo-31457: LoggerAdapter objects can now be nested.
|
||
|
||
- bpo-31431: SSLContext.check_hostname now automatically sets
|
||
SSLContext.verify_mode to ssl.CERT_REQUIRED instead of failing with a
|
||
ValueError.
|
||
|
||
- bpo-31233: socketserver.ThreadingMixIn now keeps a list of non-daemonic
|
||
threads to wait until all these threads complete in server_close().
|
||
|
||
- bpo-28638: Changed the implementation strategy for
|
||
collections.namedtuple() to substantially reduce the use of exec() in
|
||
favor of precomputed methods. As a result, the *verbose* parameter and
|
||
*_source* attribute are no longer supported. The benefits include 1)
|
||
having a smaller memory footprint for applications using multiple named
|
||
tuples, 2) faster creation of the named tuple class (approx 4x to 6x
|
||
depending on how it is measured), and 3) minor speed-ups for instance
|
||
creation using __new__, _make, and _replace. (The primary patch
|
||
contributor is Jelle Zijlstra with further improvements by INADA Naoki,
|
||
Serhiy Storchaka, and Raymond Hettinger.)
|
||
|
||
- bpo-31400: Improves SSL error handling to avoid losing error numbers.
|
||
|
||
- bpo-27629: Make return types of SSLContext.wrap_bio() and
|
||
SSLContext.wrap_socket() customizable.
|
||
|
||
- bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a
|
||
context cannot be instantiated.
|
||
|
||
- bpo-28182: The SSL module now raises SSLCertVerificationError when OpenSSL
|
||
fails to verify the peer's certificate. The exception contains more
|
||
information about the error.
|
||
|
||
- bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of
|
||
data. This fixes support for all bytes-like object. It is also more
|
||
efficient and avoids costly copies.
|
||
|
||
- bpo-14191: A new function
|
||
``argparse.ArgumentParser.parse_intermixed_args`` provides the ability to
|
||
parse command lines where there user intermixes options and positional
|
||
arguments.
|
||
|
||
- bpo-31178: Fix string concatenation bug in rare error path in the
|
||
subprocess module
|
||
|
||
- bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up
|
||
to 10% faster.
|
||
|
||
- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
|
||
partial characters for UTF-8 input (libexpat bug 115):
|
||
https://github.com/libexpat/libexpat/issues/115
|
||
|
||
- bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3.
|
||
|
||
- bpo-1198569: ``string.Template`` subclasses can optionally define
|
||
``braceidpattern`` if they want to specify different placeholder patterns
|
||
inside and outside the braces. If None (the default) it falls back to
|
||
``idpattern``.
|
||
|
||
- bpo-31326: concurrent.futures.ProcessPoolExecutor.shutdown() now
|
||
explicitly closes the call queue. Moreover, shutdown(wait=True) now also
|
||
join the call queue thread, to prevent leaking a dangling thread.
|
||
|
||
- bpo-27144: The ``map()`` and ``as_completed()`` iterators in
|
||
``concurrent.futures`` now avoid keeping a reference to yielded objects.
|
||
|
||
- bpo-31281: Fix ``fileinput.FileInput(files, inplace=True)`` when ``files``
|
||
contain ``pathlib.Path`` objects.
|
||
|
||
- bpo-10746: Fix ctypes producing wrong :pep:`3118` type codes for integer
|
||
types.
|
||
|
||
- bpo-27584: ``AF_VSOCK`` has been added to the socket interface which
|
||
allows communication between virtual machines and their host.
|
||
|
||
- bpo-22536: The subprocess module now sets the filename when
|
||
FileNotFoundError is raised on POSIX systems due to the executable or cwd
|
||
not being found.
|
||
|
||
- bpo-29741: Update some methods in the _pyio module to also accept integer
|
||
types. Patch by Oren Milman.
|
||
|
||
- bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor
|
||
now breaks a reference cycle between an exception object and the WorkItem
|
||
object.
|
||
|
||
- bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using
|
||
sys.exc_info() in code handling exceptions.
|
||
|
||
- bpo-23835: configparser: reading defaults in the ``ConfigParser()``
|
||
constructor is now using ``read_dict()``, making its behavior consistent
|
||
with the rest of the parser. Non-string keys and values in the defaults
|
||
dictionary are now being implicitly converted to strings. Patch by James
|
||
Tocknell.
|
||
|
||
- bpo-31238: pydoc: the stop() method of the private ServerThread class now
|
||
waits until DocServer.serve_until_quit() completes and then explicitly
|
||
sets its docserver attribute to None to break a reference cycle.
|
||
|
||
- bpo-5001: Many asserts in `multiprocessing` are now more informative, and
|
||
some error types have been changed to more specific ones.
|
||
|
||
- bpo-31109: Convert zipimport to use Argument Clinic.
|
||
|
||
- bpo-30102: The ssl and hashlib modules now call
|
||
OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function
|
||
detects CPU features and enables optimizations on some CPU architectures
|
||
such as POWER8. Patch is based on research from Gustavo Serra Scalet.
|
||
|
||
- bpo-18966: Non-daemonic threads created by a multiprocessing.Process are
|
||
now joined on child exit.
|
||
|
||
- bpo-31183: `dis` now works with asynchronous generator and coroutine
|
||
objects. Patch by George Collins based on diagnosis by Luciano Ramalho.
|
||
|
||
- bpo-5001: There are a number of uninformative asserts in the
|
||
`multiprocessing` module, as noted in issue 5001. This change fixes two of
|
||
the most potentially problematic ones, since they are in error-reporting
|
||
code, in the `multiprocessing.managers.convert_to_error` function. (It
|
||
also makes more informative a ValueError message.) The only potentially
|
||
problematic change is that the AssertionError is now a TypeError; however,
|
||
this should also help distinguish it from an AssertionError being
|
||
*reported* by the function/its caller (such as in issue 31169). - Patch by
|
||
Allen W. Smith (drallensmith on github).
|
||
|
||
- bpo-31185: Fixed miscellaneous errors in asyncio speedup module.
|
||
|
||
- bpo-31151: socketserver.ForkingMixIn.server_close() now waits until all
|
||
child processes completed to prevent leaking zombie processes.
|
||
|
||
- bpo-31072: Add an ``include_file`` parameter to
|
||
``zipapp.create_archive()``
|
||
|
||
- bpo-24700: Optimize array.array comparison. It is now from 10x up to 70x
|
||
faster when comparing arrays holding values of the same integer type.
|
||
|
||
- bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu
|
||
classes. Call the parent destroy() method even if the used attribute
|
||
doesn't exist. The LabeledScale.destroy() method now also explicitly
|
||
clears label and scale attributes to help the garbage collector to destroy
|
||
all widgets.
|
||
|
||
- bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for
|
||
classes whose name begins with an underscore. Patch by Shane Harvey.
|
||
|
||
- bpo-31080: Allow `logging.config.fileConfig` to accept kwargs and/or args.
|
||
|
||
- bpo-30897: ``pathlib.Path`` objects now include an ``is_mount()`` method
|
||
(only implemented on POSIX). This is similar to ``os.path.ismount(p)``.
|
||
Patch by Cooper Ry Lees.
|
||
|
||
- bpo-31061: Fixed a crash when using asyncio and threads.
|
||
|
||
- bpo-30987: Added support for CAN ISO-TP protocol in the socket module.
|
||
|
||
- bpo-30522: Added a ``setStream`` method to ``logging.StreamHandler`` to
|
||
allow the stream to be set after creation.
|
||
|
||
- bpo-30502: Fix handling of long oids in ssl. Based on patch by Christian
|
||
Heimes.
|
||
|
||
- bpo-5288: Support tzinfo objects with sub-minute offsets.
|
||
|
||
- bpo-30919: Fix shared memory performance regression in multiprocessing in
|
||
3.x. Shared memory used anonymous memory mappings in 2.x, while 3.x mmaps
|
||
actual files. Try to be careful to do as little disk I/O as possible.
|
||
|
||
- bpo-26732: Fix too many fds in processes started with the "forkserver"
|
||
method. A child process would inherit as many fds as the number of
|
||
still-running children.
|
||
|
||
- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
|
||
builtin functions. Patch by Aaron Gallagher.
|
||
|
||
- bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
|
||
|
||
- bpo-19896: Fix multiprocessing.sharedctypes to recognize typecodes ``'q'``
|
||
and ``'Q'``.
|
||
|
||
- bpo-30946: Remove obsolete code in readline module for platforms where GNU
|
||
readline is older than 2.1 or where select() is not available.
|
||
|
||
- bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across
|
||
instances of ``OptionMenu``.
|
||
|
||
- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
|
||
thread completes, even if the thread was started by the same process which
|
||
created the queue.
|
||
|
||
- bpo-29854: Fix segfault in readline when using readline's history-size
|
||
option. Patch by Nir Soffer.
|
||
|
||
- bpo-30794: Added multiprocessing.Process.kill method to terminate using
|
||
the SIGKILL signal on Unix.
|
||
|
||
- bpo-30319: socket.close() now ignores ECONNRESET error.
|
||
|
||
- bpo-30828: Fix out of bounds write in
|
||
`asyncio.CFuture.remove_done_callback()`.
|
||
|
||
- bpo-30302: Use keywords in the ``repr`` of ``datetime.timedelta``.
|
||
|
||
- bpo-30807: signal.setitimer() may disable the timer when passed a tiny
|
||
value. Tiny values (such as 1e-6) are valid non-zero values for
|
||
setitimer(), which is specified as taking microsecond-resolution
|
||
intervals. However, on some platform, our conversion routine could convert
|
||
1e-6 into a zero interval, therefore disabling the timer instead of
|
||
(re-)scheduling it.
|
||
|
||
- bpo-30441: Fix bug when modifying os.environ while iterating over it
|
||
|
||
- bpo-29585: Avoid importing ``sysconfig`` from ``site`` to improve startup
|
||
speed. Python startup is about 5% faster on Linux and 30% faster on macOS.
|
||
|
||
- bpo-29293: Add missing parameter "n" on
|
||
multiprocessing.Condition.notify(). The doc claims
|
||
multiprocessing.Condition behaves like threading.Condition, but its
|
||
notify() method lacked the optional "n" argument (to specify the number of
|
||
sleepers to wake up) that threading.Condition.notify() accepts.
|
||
|
||
- bpo-30532: Fix email header value parser dropping folding white space in
|
||
certain cases.
|
||
|
||
- bpo-30596: Add a ``close()`` method to ``multiprocessing.Process``.
|
||
|
||
- bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash
|
||
functions such as md5 are not available in the linked OpenSSL library. As
|
||
in some special FIPS-140 build environments.
|
||
|
||
- bpo-29169: Update zlib to 1.2.11.
|
||
|
||
- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
|
||
contains CR or LF. Patch by Dong-hee Na.
|
||
|
||
- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
|
||
with bytes-like argument.
|
||
|
||
- bpo-30746: Prohibited the '=' character in environment variable names in
|
||
``os.putenv()`` and ``os.spawn*()``.
|
||
|
||
- bpo-30664: The description of a unittest subtest now preserves the order
|
||
of keyword arguments of TestCase.subTest().
|
||
|
||
- bpo-21071: struct.Struct.format type is now :class:`str` instead of
|
||
:class:`bytes`.
|
||
|
||
- bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to
|
||
have a non repr() based thread name by default when no thread_name_prefix
|
||
is supplied. They will now identify themselves as
|
||
"ThreadPoolExecutor-y_n".
|
||
|
||
- bpo-29755: Fixed the lgettext() family of functions in the gettext module.
|
||
They now always return bytes.
|
||
|
||
- bpo-30616: Functional API of enum allows to create empty enums. Patched by
|
||
Dong-hee Na
|
||
|
||
- bpo-30038: Fix race condition between signal delivery and wakeup file
|
||
descriptor. Patch by Nathaniel Smith.
|
||
|
||
- bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings.
|
||
|
||
- bpo-24744: pkgutil.walk_packages function now raises ValueError if *path*
|
||
is a string. Patch by Sanyam Khurana.
|
||
|
||
- bpo-24484: Avoid race condition in multiprocessing cleanup.
|
||
|
||
- bpo-30589: Fix multiprocessing.Process.exitcode to return the opposite of
|
||
the signal number when the process is killed by a signal (instead of 255)
|
||
when using the "forkserver" method.
|
||
|
||
- bpo-28994: The traceback no longer displayed for SystemExit raised in a
|
||
callback registered by atexit.
|
||
|
||
- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
|
||
called.
|
||
|
||
- bpo-30645: Fix path calculation in `imp.load_package()`, fixing it for
|
||
cases when a package is only shipped with bytecodes. Patch by Alexandru
|
||
Ardelean.
|
||
|
||
- bpo-11822: The dis.dis() function now is able to disassemble nested code
|
||
objects.
|
||
|
||
- bpo-30624: selectors does not take KeyboardInterrupt and SystemExit into
|
||
account, leaving a fd in a bad state in case of error. Patch by Giampaolo
|
||
Rodola'.
|
||
|
||
- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader
|
||
in non-blocking mode if it succeeded to acquire the lock but the acquire
|
||
took longer than the timeout.
|
||
|
||
- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
|
||
support for ContextManager on all versions. Original PRs by Jelle Zijlstra
|
||
and Ivan Levkivskyi
|
||
|
||
- bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
|
||
bytes instance with misplaced inline modifier. Patch by Roy Williams.
|
||
|
||
- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
|
||
implementation. Patch by Michaël Sghaïer.
|
||
|
||
- bpo-29743: Closing transport during handshake process leaks open socket.
|
||
Patch by Nikolay Kim
|
||
|
||
- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
|
||
Sornay.
|
||
|
||
- bpo-30014: modify() method of poll(), epoll() and devpoll() based classes
|
||
of selectors module is around 10% faster. Patch by Giampaolo Rodola'.
|
||
|
||
- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
|
||
EINVAL on stdin.write() if the child process is still running but closed
|
||
the pipe.
|
||
|
||
- bpo-30463: Addded empty __slots__ to abc.ABC. This allows subclassers to
|
||
deny __dict__ and __weakref__ creation. Patch by Aaron Hall.
|
||
|
||
- bpo-30520: Loggers are now pickleable.
|
||
|
||
- bpo-30557: faulthandler now correctly filters and displays exception codes
|
||
on Windows
|
||
|
||
- bpo-30526: Add TextIOWrapper.reconfigure() and a
|
||
TextIOWrapper.write_through attribute.
|
||
|
||
- bpo-30245: Fix possible overflow when organize struct.pack_into error
|
||
message. Patch by Yuan Liu.
|
||
|
||
- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
|
||
handle IPv6 addresses.
|
||
|
||
- bpo-16500: Allow registering at-fork handlers.
|
||
|
||
- bpo-30470: Deprecate invalid ctypes call protection on Windows. Patch by
|
||
Mariatta Wijaya.
|
||
|
||
- bpo-30414: multiprocessing.Queue._feed background running thread do not
|
||
break from main loop on exception.
|
||
|
||
- bpo-30003: Fix handling escape characters in HZ codec. Based on patch by
|
||
Ma Lin.
|
||
|
||
- bpo-30149: inspect.signature() now supports callables with
|
||
variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
|
||
Na.
|
||
|
||
- bpo-30436: importlib.find_spec() raises ModuleNotFoundError instead of
|
||
AttributeError if the specified parent module is not a package (i.e. lacks
|
||
a __path__ attribute).
|
||
|
||
- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
|
||
and *forkserver* start methods.
|
||
|
||
- bpo-30375: Warnings emitted when compile a regular expression now always
|
||
point to the line in the user code. Previously they could point into
|
||
inners of the re module if emitted from inside of groups or conditionals.
|
||
|
||
- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
|
||
(code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
|
||
This error occurs sometimes on SSL connections.
|
||
|
||
- bpo-29196: Removed previously deprecated in Python 2.4 classes Plist, Dict
|
||
and _InternalDict in the plistlib module. Dict values in the result of
|
||
functions readPlist() and readPlistFromBytes() are now normal dicts. You
|
||
no longer can use attribute access to access items of these dictionaries.
|
||
|
||
- bpo-9850: The :mod:`macpath` is now deprecated and will be removed in
|
||
Python 3.8.
|
||
|
||
- bpo-30299: Compiling regular expression in debug mode on CPython now
|
||
displays the compiled bytecode in human readable form.
|
||
|
||
- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
|
||
coroutine and the coroutine returned without any more ``await``.
|
||
|
||
- bpo-30266: contextlib.AbstractContextManager now supports
|
||
anti-registration by setting __enter__ = None or __exit__ = None,
|
||
following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra.
|
||
|
||
- bpo-30340: Enhanced regular expressions optimization. This increased the
|
||
performance of matching some patterns up to 25 times.
|
||
|
||
- bpo-30298: Weaken the condition of deprecation warnings for inline
|
||
modifiers. Now allowed several subsequential inline modifiers at the start
|
||
of the pattern (e.g. ``'(?i)(?s)...'``). In verbose mode whitespaces and
|
||
comments now are allowed before and between inline modifiers (e.g. ``'(?x)
|
||
(?i) (?s)...'``).
|
||
|
||
- bpo-30285: Optimized case-insensitive matching and searching of regular
|
||
expressions.
|
||
|
||
- bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma
|
||
Lin.
|
||
|
||
- bpo-29979: rewrite cgi.parse_multipart, reusing the FieldStorage class and
|
||
making its results consistent with those of FieldStorage for
|
||
multipart/form-data requests. Patch by Pierre Quentel.
|
||
|
||
- bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
|
||
Misusing them could cause memory leaks or crashes. Now scanner and
|
||
encoder objects are completely initialized in the __new__ methods.
|
||
|
||
- bpo-30215: Compiled regular expression objects with the re.LOCALE flag no
|
||
longer depend on the locale at compile time. Only the locale at matching
|
||
time affects the result of matching.
|
||
|
||
- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
|
||
when Ctrl-C is received.
|
||
|
||
- bpo-30103: binascii.b2a_uu() and uu.encode() now support using ``'`'`` as
|
||
zero instead of space.
|
||
|
||
- bpo-28556: Various updates to typing module: add typing.NoReturn type, use
|
||
WrapperDescriptorType, minor bug-fixes. Original PRs by Jim
|
||
Fasarakis-Hilliard and Ivan Levkivskyi.
|
||
|
||
- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
|
||
|
||
- bpo-30228: The seek() and tell() methods of io.FileIO now set the internal
|
||
seekable attribute to avoid one syscall on open() (in buffered or text
|
||
mode).
|
||
|
||
- bpo-30190: unittest's assertAlmostEqual and assertNotAlmostEqual provide a
|
||
better message in case of failure which includes the difference between
|
||
left and right arguments. (patch by Giampaolo Rodola')
|
||
|
||
- bpo-30101: Add support for curses.A_ITALIC.
|
||
|
||
- bpo-29822: inspect.isabstract() now works during __init_subclass__. Patch
|
||
by Nate Soares.
|
||
|
||
- bpo-29960: Preserve generator state when _random.Random.setstate() raises
|
||
an exception. Patch by Bryan Olson.
|
||
|
||
- bpo-30070: Fixed leaks and crashes in errors handling in the parser
|
||
module.
|
||
|
||
- bpo-22352: Column widths in the output of dis.dis() are now adjusted for
|
||
large line numbers and instruction offsets.
|
||
|
||
- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
|
||
readline() or __next__() respectively return non-sizeable object. Fixed
|
||
possible other errors caused by not checking results of PyObject_Size(),
|
||
PySequence_Size(), or PyMapping_Size().
|
||
|
||
- bpo-30218: Fix PathLike support for shutil.unpack_archive. Patch by Jelle
|
||
Zijlstra.
|
||
|
||
- bpo-10076: Compiled regular expression and match objects in the re module
|
||
now support copy.copy() and copy.deepcopy() (they are considered atomic).
|
||
|
||
- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
|
||
is present.
|
||
|
||
- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
|
||
Patch by Armin Rigo.
|
||
|
||
- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
|
||
contextlib.contextmanager. Patch by Siddharth Velankar.
|
||
|
||
- bpo-26187: Test that sqlite3 trace callback is not called multiple times
|
||
when schema is changing. Indirectly fixed by switching to use
|
||
sqlite3_prepare_v2() in bpo-9303. Patch by Aviv Palivoda.
|
||
|
||
- bpo-30017: Allowed calling the close() method of the zip entry writer
|
||
object multiple times. Writing to a closed writer now always produces a
|
||
ValueError.
|
||
|
||
- bpo-29998: Pickling and copying ImportError now preserves name and path
|
||
attributes.
|
||
|
||
- bpo-29995: re.escape() now escapes only regex special characters.
|
||
|
||
- bpo-29962: Add math.remainder operation, implementing remainder as
|
||
specified in IEEE 754.
|
||
|
||
- bpo-29649: Improve struct.pack_into() exception messages for problems with
|
||
the buffer size and offset. Patch by Andrew Nester.
|
||
|
||
- bpo-29654: Support If-Modified-Since HTTP header (browser cache). Patch
|
||
by Pierre Quentel.
|
||
|
||
- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
|
||
Patch by Sanjay Sundaresan.
|
||
|
||
- bpo-29953: Fixed memory leaks in the replace() method of datetime and time
|
||
objects when pass out of bound fold argument.
|
||
|
||
- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
|
||
long runs of empty iterables.
|
||
|
||
- bpo-10030: Sped up reading encrypted ZIP files by 2 times.
|
||
|
||
- bpo-29204: Element.getiterator() and the html parameter of XMLParser()
|
||
were deprecated only in the documentation (since Python 3.2 and 3.4
|
||
correspondingly). Now using them emits a deprecation warning.
|
||
|
||
- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
|
||
and wrong types.
|
||
|
||
- bpo-25996: Added support of file descriptors in os.scandir() on Unix.
|
||
os.fwalk() is sped up by 2 times by using os.scandir().
|
||
|
||
- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
|
||
exception at the very first of an iterable may swallow the exception or
|
||
make the program hang. Patch by Davin Potts and Xiang Zhang.
|
||
|
||
- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
|
||
reference cycle to not keep objects alive longer than expected.
|
||
|
||
- bpo-29901: The zipapp module now supports general path-like objects, not
|
||
just pathlib.Path.
|
||
|
||
- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
|
||
the OS gives priority to errors such as EACCES over EEXIST.
|
||
|
||
- bpo-29861: Release references to tasks, their arguments and their results
|
||
as soon as they are finished in multiprocessing.Pool.
|
||
|
||
- bpo-19930: The mode argument of os.makedirs() no longer affects the file
|
||
permission bits of newly created intermediate-level directories.
|
||
|
||
- bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
|
||
Patch by Christophe Zeitouny.
|
||
|
||
- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
|
||
|
||
- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
|
||
are not strings. Patch by Michael Seifert.
|
||
|
||
- bpo-8256: Fixed possible failing or crashing input() if attributes
|
||
"encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
|
||
strings.
|
||
|
||
- bpo-28692: Using non-integer value for selecting a plural form in gettext
|
||
is now deprecated.
|
||
|
||
- bpo-26121: Use C library implementation for math functions erf() and
|
||
erfc().
|
||
|
||
- bpo-29619: os.stat() and os.DirEntry.inode() now convert inode (st_ino)
|
||
using unsigned integers.
|
||
|
||
- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
|
||
big intables (objects that have __int__) as elements.
|
||
|
||
- bpo-29645: Speed up importing the webbrowser module.
|
||
webbrowser.register() is now thread-safe.
|
||
|
||
- bpo-28231: The zipfile module now accepts path-like objects for external
|
||
paths.
|
||
|
||
- bpo-26915: index() and count() methods of collections.abc.Sequence now
|
||
check identity before checking equality when do comparisons.
|
||
|
||
- bpo-28682: Added support for bytes paths in os.fwalk().
|
||
|
||
- bpo-29728: Add new :data:`socket.TCP_NOTSENT_LOWAT` (Linux 3.12) constant.
|
||
Patch by Nathaniel J. Smith.
|
||
|
||
- bpo-29623: Allow use of path-like object as a single argument in
|
||
ConfigParser.read(). Patch by David Ellis.
|
||
|
||
- bpo-9303: Migrate sqlite3 module to _v2 API. Patch by Aviv Palivoda.
|
||
|
||
- bpo-28963: Fix out of bound iteration in
|
||
asyncio.Future.remove_done_callback implemented in C.
|
||
|
||
- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
|
||
before all pipes are closed.
|
||
|
||
- bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to
|
||
accept None argument as their pure Python implementation.
|
||
|
||
- bpo-29703: Fix asyncio to support instantiation of new event loops in
|
||
child processes.
|
||
|
||
- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
|
||
exception) to exception(s) raised in the dispatched methods. Patch by Petr
|
||
Motejlek.
|
||
|
||
- bpo-7769: Method register_function() of
|
||
xmlrpc.server.SimpleXMLRPCDispatcher and its subclasses can now be used as
|
||
a decorator.
|
||
|
||
- bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
|
||
|
||
- bpo-28624: Add a test that checks that cwd parameter of Popen() accepts
|
||
PathLike objects. Patch by Sayan Chowdhury.
|
||
|
||
- bpo-28518: Start a transaction implicitly before a DML statement. Patch by
|
||
Aviv Palivoda.
|
||
|
||
- bpo-29742: get_extra_info() raises exception if get called on closed ssl
|
||
transport. Patch by Nikolay Kim.
|
||
|
||
- bpo-16285: urllib.parse.quote is now based on RFC 3986 and hence includes
|
||
'~' in the set of characters that is not quoted by default. Patch by
|
||
Christian Theune and Ratnadeep Debnath.
|
||
|
||
- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
|
||
longer affects a partial object after creation.
|
||
|
||
- bpo-29110: Fix file object leak in aifc.open() when file is given as a
|
||
filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
|
||
|
||
- bpo-22807: Add uuid.SafeUUID and uuid.UUID.is_safe to relay information
|
||
from the platform about whether generated UUIDs are generated with a
|
||
multiprocessing safe method.
|
||
|
||
- bpo-29576: Improve some deprecations in importlib. Some deprecated methods
|
||
now emit DeprecationWarnings and have better descriptive messages.
|
||
|
||
- bpo-29534: Fixed different behaviour of Decimal.from_float() for _decimal
|
||
and _pydecimal. Thanks Andrew Nester.
|
||
|
||
- bpo-10379: locale.format_string now supports the 'monetary' keyword
|
||
argument, and locale.format is deprecated.
|
||
|
||
- bpo-29851: importlib.reload() now raises ModuleNotFoundError if the module
|
||
lacks a spec.
|
||
|
||
- bpo-28556: Various updates to typing module: typing.Counter,
|
||
typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
|
||
Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
|
||
|
||
- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
|
||
3.6.0: check minimum and maximum years.
|
||
|
||
- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
|
||
|
||
- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
|
||
match object. Based on patch by WGH.
|
||
|
||
- bpo-29377: Add WrapperDescriptorType, MethodWrapperType, and
|
||
MethodDescriptorType built-in types to types module. Original patch by
|
||
Manuel Krebber.
|
||
|
||
- bpo-29218: Unused install_misc command is now removed. It has been
|
||
documented as unused since 2000. Patch by Eric N. Vander Weele.
|
||
|
||
- bpo-29368: The extend() method is now called instead of the append()
|
||
method when unpickle collections.deque and other list-like objects. This
|
||
can speed up unpickling to 2 times.
|
||
|
||
- bpo-29338: The help of a builtin or extension class now includes the
|
||
constructor signature if __text_signature__ is provided for the class.
|
||
|
||
- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
|
||
to a stopped instead of terminated state (ex: when under ptrace).
|
||
|
||
- bpo-29290: Fix a regression in argparse that help messages would wrap at
|
||
non-breaking spaces.
|
||
|
||
- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
|
||
|
||
- bpo-29197: Removed deprecated function ntpath.splitunc().
|
||
|
||
- bpo-29210: Removed support of deprecated argument "exclude" in
|
||
tarfile.TarFile.add().
|
||
|
||
- bpo-29219: Fixed infinite recursion in the repr of uninitialized
|
||
ctypes.CDLL instances.
|
||
|
||
- bpo-29192: Removed deprecated features in the http.cookies module.
|
||
|
||
- bpo-29193: A format string argument for string.Formatter.format() is now
|
||
positional-only.
|
||
|
||
- bpo-29195: Removed support of deprecated undocumented keyword arguments in
|
||
methods of regular expression objects.
|
||
|
||
- bpo-28969: Fixed race condition in C implementation of
|
||
functools.lru_cache. KeyError could be raised when cached function with
|
||
full cache was simultaneously called from different threads with the same
|
||
uncached arguments.
|
||
|
||
- bpo-20804: The unittest.mock.sentinel attributes now preserve their
|
||
identity when they are copied or pickled.
|
||
|
||
- bpo-29142: In urllib.request, suffixes in no_proxy environment variable
|
||
with leading dots could match related hostnames again (e.g. .b.c matches
|
||
a.b.c). Patch by Milan Oberkirch.
|
||
|
||
- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
|
||
anymore. Patch written by Jiajun Huang.
|
||
|
||
- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
|
||
context. Patch by Sam Breese.
|
||
|
||
- bpo-28985: Update authorizer constants in sqlite3 module. Patch by
|
||
Dingyuan Wang.
|
||
|
||
- bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows
|
||
|
||
- bpo-13051: Fixed recursion errors in large or resized
|
||
curses.textpad.Textbox. Based on patch by Tycho Andersen.
|
||
|
||
- bpo-9770: curses.ascii predicates now work correctly with negative
|
||
integers.
|
||
|
||
- bpo-28427: old keys should not remove new values from WeakValueDictionary
|
||
when collecting from another thread.
|
||
|
||
- bpo-28923: Remove editor artifacts from Tix.py.
|
||
|
||
- bpo-28871: Fixed a crash when deallocate deep ElementTree.
|
||
|
||
- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
|
||
WeakValueDictionary.pop() when a GC collection happens in another thread.
|
||
|
||
- bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence
|
||
that doesn't own its elements as limits.
|
||
|
||
- bpo-16255: subprocess.Popen uses /system/bin/sh on Android as the shell,
|
||
instead of /bin/sh.
|
||
|
||
- bpo-28779: multiprocessing.set_forkserver_preload() would crash the
|
||
forkserver process if a preloaded module instantiated some multiprocessing
|
||
objects such as locks.
|
||
|
||
- bpo-26937: The chown() method of the tarfile.TarFile class does not fail
|
||
now when the grp module cannot be imported, as for example on Android
|
||
platforms.
|
||
|
||
- bpo-28847: dbm.dumb now supports reading read-only files and no longer
|
||
writes the index file when it is not changed. A deprecation warning is
|
||
now emitted if the index file is missed and recreated in the 'r' and 'w'
|
||
modes (will be an error in future Python releases).
|
||
|
||
- bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in
|
||
re.sub() replacement templates regular expressions now are errors.
|
||
|
||
- bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call
|
||
warnings.showwarning() if it was overridden inside the context manager.
|
||
|
||
- bpo-27172: To assist with upgrades from 2.7, the previously documented
|
||
deprecation of ``inspect.getfullargspec()`` has been reversed. This
|
||
decision may be revisited again after the Python 2.7 branch is no longer
|
||
officially supported.
|
||
|
||
- bpo-28740: Add sys.getandroidapilevel(): return the build time API version
|
||
of Android as an integer. Function only available on Android.
|
||
|
||
- bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and
|
||
:data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by
|
||
Omar Sandoval.
|
||
|
||
- bpo-28752: Restored the __reduce__() methods of datetime objects.
|
||
|
||
- bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created
|
||
by re.compile(), become comparable (only x==y and x!=y operators). This
|
||
change should fix the issue #18383: don't duplicate warning filters when
|
||
the warnings module is reloaded (thing usually only done in unit tests).
|
||
|
||
- bpo-20572: Remove the subprocess.Popen.wait endtime parameter. It was
|
||
deprecated in 3.4 and undocumented prior to that.
|
||
|
||
- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
|
||
from_buffer_copy() methods on abstract classes like Array.
|
||
|
||
- bpo-28548: In the "http.server" module, parse the protocol version if
|
||
possible, to avoid using HTTP 0.9 in some error responses.
|
||
|
||
- bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch
|
||
by Vajrasky Kok
|
||
|
||
- bpo-28563: Fixed possible DoS and arbitrary code execution when handle
|
||
plural form selections in the gettext module. The expression parser now
|
||
supports exact syntax supported by GNU gettext.
|
||
|
||
- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
|
||
garbage collector is invoked in other thread. Based on patch by Sebastian
|
||
Cufre.
|
||
|
||
- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
|
||
given empty data twice. Patch by Benjamin Fogle.
|
||
|
||
- bpo-28549: Fixed segfault in curses's addch() with ncurses6.
|
||
|
||
- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
|
||
file with compression before trying to open it without compression.
|
||
Otherwise it had 50% chance failed with ignore_zeros=True.
|
||
|
||
- bpo-23262: The webbrowser module now supports Firefox 36+ and derived
|
||
browsers. Based on patch by Oleg Broytman.
|
||
|
||
- bpo-24241: The webbrowser in an X environment now prefers using the
|
||
default browser directly. Also, the webbrowser register() function now has
|
||
a documented 'preferred' argument, to specify browsers to be returned by
|
||
get() with no arguments. Patch by David Steele
|
||
|
||
- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
|
||
by representing the scale as float value internally in Tk. tkinter.IntVar
|
||
now works if float value is set to underlying Tk variable.
|
||
|
||
- bpo-28255: calendar.TextCalendar.prweek() no longer prints a space after a
|
||
weeks's calendar. calendar.TextCalendar.pryear() no longer prints
|
||
redundant newline after a year's calendar. Based on patch by Xiang Zhang.
|
||
|
||
- bpo-28255: calendar.TextCalendar.prmonth() no longer prints a space at the
|
||
start of new line after printing a month's calendar. Patch by Xiang
|
||
Zhang.
|
||
|
||
- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
|
||
Based on patch by Kaarle Ritvanen.
|
||
|
||
- bpo-28353: os.fwalk() no longer fails on broken links.
|
||
|
||
- bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept
|
||
non-None value is passed to it.send(val).
|
||
|
||
- bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix
|
||
for readability.
|
||
|
||
- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
|
||
workaround to Tix library bug.
|
||
|
||
- bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.
|
||
|
||
- bpo-25953: re.sub() now raises an error for invalid numerical group
|
||
reference in replacement template even if the pattern is not found in the
|
||
string. Error message for invalid group reference now includes the group
|
||
index and the position of the reference. Based on patch by SilentGhost.
|
||
|
||
- bpo-28469: timeit now uses the sequence 1, 2, 5, 10, 20, 50,... instead of
|
||
1, 10, 100,... for autoranging.
|
||
|
||
- bpo-28115: Command-line interface of the zipfile module now uses argparse.
|
||
Added support of long options.
|
||
|
||
- bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by
|
||
Mariatta Wijaya.
|
||
|
||
- bpo-28448: Fix C implemented asyncio.Future didn't work on Windows.
|
||
|
||
- bpo-23214: In the "io" module, the argument to BufferedReader and
|
||
BytesIO's read1() methods is now optional and can be -1, matching the
|
||
BufferedIOBase specification.
|
||
|
||
- bpo-28480: Fix error building socket module when multithreading is
|
||
disabled.
|
||
|
||
- bpo-28240: timeit: remove ``-c/--clock`` and ``-t/--time`` command line
|
||
options which were deprecated since Python 3.3.
|
||
|
||
- bpo-28240: timeit now repeats the benchmarks 5 times instead of only 3 to
|
||
make benchmarks more reliable.
|
||
|
||
- bpo-28240: timeit autorange now uses a single loop iteration if the
|
||
benchmark takes less than 10 seconds, instead of 10 iterations. "python3
|
||
-m timeit -s 'import time' 'time.sleep(1)'" now takes 4 seconds instead of
|
||
40 seconds.
|
||
|
||
- Distutils.sdist now looks for README and setup.py files with case
|
||
sensitivity. This behavior matches that found in Setuptools 6.0 and later.
|
||
See `setuptools 100 <https://github.com/pypa/setuptools/issues/100>`_ for
|
||
rationale.
|
||
|
||
- bpo-24452: Make webbrowser support Chrome on Mac OS X. Patch by Ned
|
||
Batchelder.
|
||
|
||
- bpo-20766: Fix references leaked by pdb in the handling of SIGINT
|
||
handlers.
|
||
|
||
- bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by
|
||
Eryk Sun.
|
||
|
||
- bpo-28317: The disassembler now decodes FORMAT_VALUE argument.
|
||
|
||
- bpo-28380: unittest.mock Mock autospec functions now properly support
|
||
assert_called, assert_not_called, and assert_called_once.
|
||
|
||
- bpo-28229: lzma module now supports pathlib.
|
||
|
||
- bpo-28321: Fixed writing non-BMP characters with binary format in
|
||
plistlib.
|
||
|
||
- bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan
|
||
Furman.
|
||
|
||
- bpo-28227: gzip now supports pathlib. Patch by Ethan Furman.
|
||
|
||
- bpo-28332: Deprecated silent truncations in socket.htons and socket.ntohs.
|
||
Original patch by Oren Milman.
|
||
|
||
- bpo-27358: Optimized merging var-keyword arguments and improved error
|
||
message when passing a non-mapping as a var-keyword argument.
|
||
|
||
- bpo-28257: Improved error message when passing a non-iterable as a
|
||
var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
|
||
|
||
- bpo-28322: Fixed possible crashes when unpickle itertools objects from
|
||
incorrect pickle data. Based on patch by John Leitch.
|
||
|
||
- bpo-28228: imghdr now supports pathlib.
|
||
|
||
- bpo-28226: compileall now supports pathlib.
|
||
|
||
- bpo-28314: Fix function declaration (C flags) for the getiterator() method
|
||
of xml.etree.ElementTree.Element.
|
||
|
||
- bpo-28148: Stop using localtime() and gmtime() in the time module.
|
||
Introduced platform independent _PyTime_localtime API that is similar to
|
||
POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.
|
||
|
||
- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
|
||
9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so
|
||
that they don't call itermonthdates() which can cause datetime.date
|
||
under/overflow.
|
||
|
||
- bpo-28275: Fixed possible use after free in the decompress() methods of
|
||
the LZMADecompressor and BZ2Decompressor classes. Original patch by John
|
||
Leitch.
|
||
|
||
- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
|
||
if pass invalid string-like object as a name. Patch by Xiang Zhang.
|
||
|
||
- bpo-18844: random.choices() now has k as a keyword-only argument to
|
||
improve the readability of common cases and come into line with the
|
||
signature used in other languages.
|
||
|
||
- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
|
||
Patch by Madison May.
|
||
|
||
- bpo-27611: Fixed support of default root window in the tkinter.tix module.
|
||
Added the master parameter in the DisplayStyle constructor.
|
||
|
||
- bpo-27348: In the traceback module, restore the formatting of exception
|
||
messages like "Exception: None". This fixes a regression introduced in
|
||
3.5a2.
|
||
|
||
- bpo-25651: Allow falsy values to be used for msg parameter of subTest().
|
||
|
||
- bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is
|
||
interrupted by a signal and a signal handler raises a Python exception.
|
||
|
||
- bpo-28200: Fix memory leak on Windows in the os module (fix
|
||
path_converter() function).
|
||
|
||
- bpo-25400: RobotFileParser now correctly returns default values for
|
||
crawl_delay and request_rate. Initial patch by Peter Wirtz.
|
||
|
||
- bpo-27932: Prevent memory leak in win32_ver().
|
||
|
||
- Fix UnboundLocalError in socket._sendfile_use_sendfile.
|
||
|
||
- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
|
||
os.stat(). Patch by Eryk Sun.
|
||
|
||
- bpo-22493: Warning message emitted by using inline flags in the middle of
|
||
regular expression now contains a (truncated) regex pattern. Patch by Tim
|
||
Graham.
|
||
|
||
- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
|
||
empty bytestring is passed.
|
||
|
||
- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
|
||
|
||
- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
|
||
Gergely Imreh and Markus Holtermann.
|
||
|
||
- bpo-28114: Fix a crash in parse_envlist() when env contains byte strings.
|
||
Patch by Eryk Sun.
|
||
|
||
- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
|
||
binascii.a2b_qp().
|
||
|
||
- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
|
||
Kevin Conway.
|
||
|
||
- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
|
||
Seth Michael Larson.
|
||
|
||
- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
|
||
iceboy.
|
||
|
||
- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
|
||
|
||
- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
|
||
|
||
- bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
|
||
Patch by Mark Williams.
|
||
|
||
- bpo-28325: Remove vestigial MacOS 9 macurl2path module and its tests.
|
||
|
||
- bpo-28368: Refuse monitoring processes if the child watcher has no loop
|
||
attached. Patch by Vincent Michel.
|
||
|
||
- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
|
||
add_writer, etc.
|
||
|
||
- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
|
||
Марк.
|
||
|
||
- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
|
||
|
||
- bpo-28372: Fix asyncio to support formatting of non-python coroutines.
|
||
|
||
- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
|
||
Марк.
|
||
|
||
- bpo-27972: Prohibit Tasks to await on themselves.
|
||
|
||
- bpo-24142: Reading a corrupt config file left configparser in an invalid
|
||
state. Original patch by Florian Höch.
|
||
|
||
- bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract
|
||
base classes to use keyword parameters in __init_subclass__. Patch by Nate
|
||
Soares.
|
||
|
||
- bpo-25532: inspect.unwrap() will now only try to unwrap an object
|
||
sys.getrecursionlimit() times, to protect against objects which create a
|
||
new object on every attribute access.
|
||
|
||
- bpo-30177: path.resolve(strict=False) no longer cuts the path after the
|
||
first element not present in the filesystem. Patch by Antoine Pietri.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and
|
||
ZeroMQSocketHandler examples and adapt them to Python 3.
|
||
|
||
- bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL
|
||
documentation.
|
||
|
||
- bpo-31128: Allow the pydoc server to bind to arbitrary hostnames.
|
||
|
||
- bpo-30803: Clarify doc on truth value testing. Original patch by Peter
|
||
Thomassen.
|
||
|
||
- bpo-30176: Add missing attribute related constants in curses
|
||
documentation.
|
||
|
||
- bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are
|
||
now their respective type definitions, rather than the corresponding
|
||
builtin function entries. Use :ref:`bytes <func-bytes>` and
|
||
:ref:`bytearray <func-bytearray>` to reference the latter. In order to
|
||
ensure this and future cross-reference updates are applied automatically,
|
||
the daily documentation builds now disable the default output caching
|
||
features in Sphinx.
|
||
|
||
- bpo-26985: Add missing info of code object in inspect documentation.
|
||
|
||
- bpo-19824: Improve the documentation for, and links to, template strings
|
||
by emphasizing their utility for internationalization, and by clarifying
|
||
some usage constraints. (See also: bpo-20314, bpo-12518)
|
||
|
||
- bpo-28929: Link the documentation to its source file on GitHub.
|
||
|
||
- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
|
||
to aiosmtpd, a third-party asyncio-based replacement.
|
||
|
||
- bpo-26355: Add canonical header link on each page to corresponding major
|
||
version of the documentation. Patch by Matthias Bussonnier.
|
||
|
||
- bpo-29349: Fix Python 2 syntax in code for building the documentation.
|
||
|
||
- bpo-23722: The data model reference and the porting section in the 3.6
|
||
What's New guide now cover the additional ``__classcell__`` handling
|
||
needed for custom metaclasses to fully support :pep:`487` and
|
||
zero-argument ``super()``.
|
||
|
||
- bpo-28513: Documented command-line interface of zipfile.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-29639: test.support.HOST is now "localhost", a new HOSTv4 constant has
|
||
been added for your ``127.0.0.1`` needs, similar to the existing HOSTv6
|
||
constant.
|
||
|
||
- bpo-31320: Silence traceback in test_ssl
|
||
|
||
- bpo-31346: Prefer PROTOCOL_TLS_CLIENT and PROTOCOL_TLS_SERVER protocols
|
||
for SSLContext.
|
||
|
||
- bpo-25674: Remove sha256.tbs-internet.com ssl test
|
||
|
||
- bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest
|
||
version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
|
||
|
||
- bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the
|
||
test suite using --use=all / -u all, exclude tzdata since it makes
|
||
test_datetime too slow (15-20 min on some buildbots) which then times out
|
||
on some buildbots. Fix also regrtest command line parser to allow passing
|
||
-u extralargefile to run test_zipfile64.
|
||
|
||
- bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()`
|
||
functions to the _testcapi module.
|
||
|
||
- bpo-30357: test_thread: setUp() now uses support.threading_setup() and
|
||
support.threading_cleanup() to wait until threads complete to avoid random
|
||
side effects on following tests. Initial patch written by Grzegorz
|
||
Grzywacz.
|
||
|
||
- bpo-30197: Enhanced functions swap_attr() and swap_item() in the
|
||
test.support module. They now work when delete replaced attribute or item
|
||
inside the with statement. The old value of the attribute or item (or
|
||
None if it doesn't exist) now will be assigned to the target of the "as"
|
||
clause, if there is one.
|
||
|
||
- bpo-24932: Use proper command line parsing in _testembed
|
||
|
||
- bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line
|
||
arguments.
|
||
|
||
- bpo-28683: Fix the tests that bind() a unix socket and raise
|
||
PermissionError on Android for a non-root user.
|
||
|
||
- bpo-26936: Fix the test_socket failures on Android - getservbyname(),
|
||
getservbyport() and getaddrinfo() are broken on some Android API levels.
|
||
|
||
- bpo-28666: Now test.support.rmtree is able to remove unwritable or
|
||
unreadable directories.
|
||
|
||
- bpo-23839: Various caches now are cleared before running every test file.
|
||
|
||
- bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or
|
||
missing the effective gid.
|
||
|
||
- bpo-28409: regrtest: fix the parser of command line arguments.
|
||
|
||
- bpo-28217: Adds _testconsole module to test console input.
|
||
|
||
- bpo-26939: Add the support.setswitchinterval() function to fix
|
||
test_functools hanging on the Android armv7 qemu emulator.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-31354: Allow --with-lto to be used on all builds, not just `make
|
||
profile-opt`.
|
||
|
||
- bpo-31370: Remove support for building --without-threads. This option is
|
||
not really useful anymore in the 21st century. Removing lots of
|
||
conditional paths allows us to simplify the code base, including in
|
||
difficult to maintain low-level internal code.
|
||
|
||
- bpo-31341: Per :pep:`11`, support for the IRIX operating system was
|
||
removed.
|
||
|
||
- bpo-30854: Fix compile error when compiling --without-threads. Patch by
|
||
Masayuki Yamamoto.
|
||
|
||
- bpo-30687: Locate msbuild.exe on Windows when building rather than
|
||
vcvarsall.bat
|
||
|
||
- bpo-20210: Support the *disabled* marker in Setup files. Extension modules
|
||
listed after this marker are not built at all, neither by the Makefile nor
|
||
by setup.py.
|
||
|
||
- bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C
|
||
``assert()`` checks. Defaults to off. ``--with-pydebug`` implies
|
||
``--with-assertions``.
|
||
|
||
- bpo-28787: Fix out-of-tree builds of Python when configured with
|
||
``--with--dtrace``.
|
||
|
||
- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
|
||
``make install`` and some other make targets when configured with
|
||
``--enable-optimizations``.
|
||
|
||
- bpo-23404: Don't regenerate generated files based on file modification
|
||
time anymore: the action is now explicit. Replace ``make touch`` with
|
||
``make regen-all``.
|
||
|
||
- bpo-29643: Fix ``--enable-optimization`` didn't work.
|
||
|
||
- bpo-27593: sys.version and the platform module python_build(),
|
||
python_branch(), and python_revision() functions now use git information
|
||
rather than hg when building from a repo.
|
||
|
||
- bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.
|
||
|
||
- bpo-27659: Prohibit implicit C function declarations: use
|
||
``-Werror=implicit-function-declaration`` when possible (GCC and Clang,
|
||
but it depends on the compiler version). Patch written by Chi Hsuan Yen.
|
||
|
||
- bpo-29384: Remove old Be OS helper scripts.
|
||
|
||
- bpo-26851: Set Android compilation and link flags.
|
||
|
||
- bpo-28768: Fix implicit declaration of function _setmode. Patch by
|
||
Masayuki Yamamoto
|
||
|
||
- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
|
||
|
||
- bpo-23903: Added missed names to PC/python3.def.
|
||
|
||
- bpo-28762: lockf() is available on Android API level 24, but the F_LOCK
|
||
macro is not defined in android-ndk-r13.
|
||
|
||
- bpo-28538: Fix the compilation error that occurs because if_nameindex() is
|
||
available on Android API level 24, but the if_nameindex structure is not
|
||
defined.
|
||
|
||
- bpo-20211: Do not add the directory for installing C header files and the
|
||
directory for installing object code libraries to the cross compilation
|
||
search paths. Original patch by Thomas Petazzoni.
|
||
|
||
- bpo-28849: Do not define sys.implementation._multiarch on Android.
|
||
|
||
- bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and
|
||
Michael Haubenwallner.
|
||
|
||
- bpo-26359: Rename --with-optimiations to --enable-optimizations.
|
||
|
||
- bpo-28444: Fix missing extensions modules when cross compiling.
|
||
|
||
- bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.
|
||
|
||
- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
|
||
|
||
- bpo-21124: Fix building the _struct module on Cygwin by passing ``NULL``
|
||
instead of ``&PyType_Type`` to PyVarObject_HEAD_INIT. Patch by Masayuki
|
||
Yamamoto.
|
||
|
||
- bpo-13756: Fix building extensions modules on Cygwin. Patch by Roumen
|
||
Petrov, based on original patch by Jason Tishler.
|
||
|
||
- bpo-21085: Add configure check for siginfo_t.si_band, which Cygwin does
|
||
not provide. Patch by Masayuki Yamamoto with review and rebase by Erik
|
||
Bray.
|
||
|
||
- bpo-28258: Fixed build with Estonian locale (python-config and distclean
|
||
targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
|
||
|
||
- bpo-26661: setup.py now detects system libffi with multiarch wrapper.
|
||
|
||
- bpo-27979: A full copy of libffi is no longer bundled for use when
|
||
building _ctypes on non-OSX UNIX platforms. An installed copy of libffi
|
||
is now required when building _ctypes on such platforms.
|
||
|
||
- bpo-15819: Remove redundant include search directory option for building
|
||
outside the source tree.
|
||
|
||
- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
|
||
Patch by Gareth Rees.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-31392: Update Windows build to use OpenSSL 1.1.0f
|
||
|
||
- bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.
|
||
|
||
- bpo-31358: zlib is no longer bundled in the CPython source, instead it is
|
||
downloaded on demand just like bz2, lzma, OpenSSL, Tcl/Tk, and SQLite.
|
||
|
||
- bpo-31340: Change to building with MSVC v141 (included with Visual Studio
|
||
2017)
|
||
|
||
- bpo-30581: os.cpu_count() now returns the correct number of processors on
|
||
Windows when the number of logical processors is greater than 64.
|
||
|
||
- bpo-30916: Pre-build OpenSSL, Tcl and Tk and include the binaries in the
|
||
build.
|
||
|
||
- bpo-30731: Add a missing xmlns to python.manifest so that it matches the
|
||
schema.
|
||
|
||
- bpo-30291: Allow requiring 64-bit interpreters from py.exe using -64
|
||
suffix. Contributed by Steve (Gadget) Barnes.
|
||
|
||
- bpo-30362: Adds list options (-0, -0p) to py.exe launcher. Contributed by
|
||
Steve Barnes.
|
||
|
||
- bpo-23451: Fix socket deprecation warnings in socketmodule.c. Patch by
|
||
Segev Finer.
|
||
|
||
- bpo-30450: The build process on Windows no longer depends on Subversion,
|
||
instead pulling external code from GitHub via a Python script. If Python
|
||
3.6 is not found on the system (via ``py -3.6``), NuGet is used to
|
||
download a copy of 32-bit Python.
|
||
|
||
- bpo-29579: Removes readme.txt from the installer.
|
||
|
||
- bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)
|
||
|
||
- bpo-28896: Deprecate WindowsRegistryFinder and disable it by default
|
||
|
||
- bpo-28522: Fixes mishandled buffer reallocation in getpathp.c
|
||
|
||
- bpo-28402: Adds signed catalog files for stdlib on Windows.
|
||
|
||
- bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk
|
||
Sun)
|
||
|
||
- bpo-28251: Improvements to help manuals on Windows.
|
||
|
||
- bpo-28110: launcher.msi has different product codes between 32-bit and
|
||
64-bit
|
||
|
||
- bpo-28161: Opening CON for write access fails
|
||
|
||
- bpo-28162: WindowsConsoleIO readall() fails if first line starts with
|
||
Ctrl+Z
|
||
|
||
- bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle
|
||
|
||
- bpo-28164: _PyIO_get_console_type fails for various paths
|
||
|
||
- bpo-28137: Renames Windows path file to ._pth
|
||
|
||
- bpo-28138: Windows ._pth file should allow import site
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-31493: IDLE code context -- fix code update and font update timers.
|
||
Canceling timers prevents a warning message when test_idle completes.
|
||
|
||
- bpo-31488: IDLE - Update non-key options in former extension classes. When
|
||
applying configdialog changes, call .reload for each feature class. Change
|
||
ParenMatch so updated options affect existing instances attached to
|
||
existing editor windows.
|
||
|
||
- bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace
|
||
strips more than blank spaces. Multiline string literals are not skipped.
|
||
|
||
- bpo-31480: IDLE - make tests pass with zzdummy extension disabled by
|
||
default.
|
||
|
||
- bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk
|
||
update in the background in order to make live interaction and
|
||
experimentation with tkinter applications much easier.
|
||
|
||
- bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an
|
||
int entry is not the same as deleting and inserting because int('') will
|
||
fail.
|
||
|
||
- bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and
|
||
Help sections.
|
||
|
||
- bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor.
|
||
Move some data and functions from the class to module level. Patch by
|
||
Cheryl Sabella.
|
||
|
||
- bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.
|
||
|
||
- bpo-27099: Convert IDLE's built-in 'extensions' to regular features. About
|
||
10 IDLE features were implemented as supposedly optional extensions. Their
|
||
different behavior could be confusing or worse for users and not good for
|
||
maintenance. Hence the conversion. The main difference for users is that
|
||
user configurable key bindings for builtin features are now handled
|
||
uniformly. Now, editing a binding in a keyset only affects its value in
|
||
the keyset. All bindings are defined together in the system-specific
|
||
default keysets in config-extensions.def. All custom keysets are saved as
|
||
a whole in config-extension.cfg. All take effect as soon as one clicks
|
||
Apply or Ok. The affected events are '<<force-open-completions>>',
|
||
'<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>',
|
||
'<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and
|
||
'<<zoom-height>>'. Any (global) customizations made before 3.6.3 will not
|
||
affect their keyset-specific customization after 3.6.3. and vice versa.
|
||
Initial patch by Charles Wohlganger.
|
||
|
||
- bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by
|
||
Cheryl Sabella.
|
||
|
||
- bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl
|
||
Sabella.
|
||
|
||
- bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The
|
||
slightly modified tests continue to pass. Patch by Cheryl Sabella.
|
||
|
||
- bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.
|
||
|
||
- bpo-19903: IDLE: Calltips use `inspect.signature` instead of
|
||
`inspect.getfullargspec`. This improves calltips for builtins converted to
|
||
use Argument Clinic. Patch by Louie Lu.
|
||
|
||
- bpo-31083: IDLE - Add an outline of a TabPage class in configdialog.
|
||
Update existing classes to match outline. Initial patch by Cheryl Sabella.
|
||
|
||
- bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly
|
||
modified tests continue to pass. Patch by Cheryl Sabella.
|
||
|
||
- bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly
|
||
modified tests continue to pass. Fix General tests. Patch mostly by Cheryl
|
||
Sabella.
|
||
|
||
- bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan
|
||
Reedy and Cheryl Sabella.
|
||
|
||
- bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping
|
||
methods pertaining to each tab and the buttons will aid writing tests and
|
||
improving the tabs and will enable splitting the groups into classes.
|
||
|
||
- bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog. Instance
|
||
tracers manages pairs consisting of a tk variable and a callback function.
|
||
When tracing is turned on, setting the variable calls the function. Test
|
||
coverage for the new class is 100%.
|
||
|
||
- bpo-31003: IDLE: Add more tests for General tab.
|
||
|
||
- bpo-30993: IDLE - Improve configdialog font page and tests. In
|
||
configdialog: Document causal pathways in create_font_tab docstring.
|
||
Simplify some attribute names. Move set_samples calls to var_changed_font
|
||
(idea from Cheryl Sabella). Move related functions to positions after the
|
||
create widgets function. In test_configdialog: Fix test_font_set so not
|
||
order dependent. Fix renamed test_indent_scale so it tests the widget.
|
||
Adjust tests for movement of set_samples call. Add tests for load
|
||
functions. Put all font tests in one class and tab indent tests in
|
||
another. Except for two lines, these tests completely cover the related
|
||
functions.
|
||
|
||
- bpo-30981: IDLE -- Add more configdialog font page tests.
|
||
|
||
- bpo-28523: IDLE: replace 'colour' with 'color' in configdialog.
|
||
|
||
- bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from
|
||
46% to 96%. Patch by Louie Lu.
|
||
|
||
- bpo-30934: Document coverage details for idlelib tests. Add section to
|
||
idlelib/idle-test/README.txt. Include check that branches are taken both
|
||
ways. Exclude IDLE-specific code that does not run during unit tests.
|
||
|
||
- bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in
|
||
docstrings This will facilitate improving the dialog and splitting up the
|
||
class. Original patch by Cheryl Sabella.
|
||
|
||
- bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by
|
||
Louie Lu.
|
||
|
||
- bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.
|
||
|
||
- bpo-30851: IDLE: Remove unused variables in configdialog. One is a
|
||
duplicate, one is set but cannot be altered by users. Patch by Cheryl
|
||
Sabella.
|
||
|
||
- bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as
|
||
well as mouse. Initial patch by Louie Lu.
|
||
|
||
- bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.
|
||
|
||
- bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in
|
||
config; test. * In config, put dump test code in a function; run it and
|
||
unittest in 'if __name__ == '__main__'. * Add class config.ConfigChanges
|
||
based on changes_class_v4.py on bpo issue. * Add class
|
||
test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise
|
||
configdialog to use ConfigChanges; see tracker msg297804. * Revise
|
||
test_configdialog to match configdialog changes. * Remove configdialog
|
||
functions unused or moved to ConfigChanges. Cheryl Sabella contributed
|
||
parts of the patch.
|
||
|
||
- bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by
|
||
Cheryl Sabella.
|
||
|
||
- bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more
|
||
tests. Patch by Cheryl Sabella.
|
||
|
||
- bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens'
|
||
style to highlight both opener and closer. Make 'default' style, which is
|
||
not default, a synonym for 'opener'. Make time-delay work the same with
|
||
all styles. Add help for config dialog extensions tab, including help for
|
||
parenmatch. Add new tests. Original patch by Charles Wohlganger.
|
||
|
||
- bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella
|
||
|
||
- bpo-21519: IDLE's basic custom key entry dialog now detects duplicates
|
||
properly. Original patch by Saimadhav Heblikar.
|
||
|
||
- bpo-29910: IDLE no longer deletes a character after commenting out a
|
||
region by a key shortcut. Add ``return 'break'`` for this and other
|
||
potential conflicts between IDLE and default key bindings.
|
||
|
||
- bpo-30728: Review and change idlelib.configdialog names. Lowercase method
|
||
and attribute names. Replace 'colour' with 'color', expand overly cryptic
|
||
names, delete unneeded underscores. Replace ``import *`` with specific
|
||
imports. Patches by Cheryl Sabella.
|
||
|
||
- bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them
|
||
with tk. Add tests for all 3 validation functions. Original patch by G
|
||
Polo. Tests added by Cheryl Sabella.
|
||
|
||
- bpo-15786: Fix several problems with IDLE's autocompletion box. The
|
||
following should now work: clicking on selection box items; using the
|
||
scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no
|
||
longer happen. Patch by Louie Lu.
|
||
|
||
- bpo-25514: Add doc subsubsection about IDLE failure to start. Popup
|
||
no-connection message directs users to this section.
|
||
|
||
- bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and
|
||
Terry Jan Reedy.
|
||
|
||
- bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by
|
||
Cheryl Sabella and Terry Jan Reedy.
|
||
|
||
- bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to
|
||
100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.
|
||
|
||
- bpo-30303: Add _utest option to textview; add new tests. Increase coverage
|
||
to 100%. Patches by Louie Lu and Terry Jan Reedy.
|
||
|
||
- bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).
|
||
|
||
- bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and
|
||
augment description of the configuration system.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared
|
||
builds now, too. :pep:`523` introduced _PyEval_EvalFrameDefault which
|
||
inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the
|
||
ability to use py-bt, py-up, and a few other Python-specific gdb
|
||
integrations. The problem is fixed by only looking for
|
||
_PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno
|
||
"Polaco" Penteado.
|
||
|
||
- bpo-29748: Added the slice index converter in Argument Clinic.
|
||
|
||
- bpo-24037: Argument Clinic now uses the converter `bool(accept={int})`
|
||
rather than `int` for semantical booleans. This avoids repeating the
|
||
default value for Python and C and will help in converting to `bool` in
|
||
future.
|
||
|
||
- bpo-29367: python-gdb.py now supports also ``method-wrapper``
|
||
(``wrapperobject``) objects.
|
||
|
||
- bpo-28023: Fix python-gdb.py didn't support new dict implementation.
|
||
|
||
- bpo-15369: The pybench and pystone microbenchmark have been removed from
|
||
Tools. Please use the new Python benchmark suite
|
||
https://github.com/python/performance which is more reliable and includes
|
||
a portable version of pybench working on Python 2 and Python 3.
|
||
|
||
- bpo-28102: The zipfile module CLI now prints usage to stderr. Patch by
|
||
Stephen J. Turnbull.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-31338: Added the ``Py_UNREACHABLE()`` macro for code paths which are
|
||
never expected to be reached. This and a few other useful macros are now
|
||
documented in the C API manual.
|
||
|
||
- bpo-30832: Remove own implementation for thread-local storage. CPython has
|
||
provided the own implementation for thread-local storage (TLS) on
|
||
Python/thread.c, it's used in the case which a platform has not supplied
|
||
native TLS. However, currently all supported platforms (Windows and
|
||
pthreads) have provided native TLS and defined the Py_HAVE_NATIVE_TLS
|
||
macro with unconditional in any case.
|
||
|
||
- bpo-30708: PyUnicode_AsWideCharString() now raises a ValueError if the
|
||
second argument is NULL and the wchar_t\* string contains null characters.
|
||
|
||
- bpo-16500: Deprecate PyOS_AfterFork() and add PyOS_BeforeFork(),
|
||
PyOS_AfterFork_Parent() and PyOS_AfterFork_Child().
|
||
|
||
- bpo-6532: The type of results of PyThread_start_new_thread() and
|
||
PyThread_get_thread_ident(), and the id parameter of
|
||
PyThreadState_SetAsyncExc() changed from "long" to "unsigned long".
|
||
|
||
- bpo-27867: Function PySlice_GetIndicesEx() is deprecated and replaced with
|
||
a macro if Py_LIMITED_API is not set or set to the value between
|
||
0x03050400 and 0x03060000 (not including) or 0x03060100 or higher. Added
|
||
functions PySlice_Unpack() and PySlice_AdjustIndices().
|
||
|
||
- bpo-29083: Fixed the declaration of some public API functions.
|
||
PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
|
||
limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
|
||
Py_BuildValue() were not available in limited API of version < 3.3 when
|
||
PY_SSIZE_T_CLEAN is defined.
|
||
|
||
- bpo-28769: The result of PyUnicode_AsUTF8AndSize() and PyUnicode_AsUTF8()
|
||
is now of type ``const char *`` rather of ``char *``.
|
||
|
||
- bpo-29058: All stable API extensions added after Python 3.2 are now
|
||
available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of
|
||
the minimum Python version supporting this API.
|
||
|
||
- bpo-28822: The index parameters *start* and *end* of PyUnicode_FindChar()
|
||
are now adjusted to behave like ``str[start:end]``.
|
||
|
||
- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
|
||
|
||
- bpo-28761: The fields name and doc of structures PyMemberDef, PyGetSetDef,
|
||
PyStructSequence_Field, PyStructSequence_Desc, and wrapperbase are now of
|
||
type ``const char *`` rather of ``char *``.
|
||
|
||
- bpo-28748: Private variable _Py_PackageContext is now of type ``const char
|
||
*`` rather of ``char *``.
|
||
|
||
- bpo-19569: Compiler warnings are now emitted if use most of deprecated
|
||
functions.
|
||
|
||
- bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
|
||
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
|
||
PyUnicode_AsEncodedUnicode().
|
||
|
||
|
||
What's New in Python 3.6.6 final?
|
||
=================================
|
||
|
||
*Release date: 2018-06-27*
|
||
|
||
There were no new changes in version 3.6.6.
|
||
|
||
|
||
|
||
What's New in Python 3.6.6 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2018-06-11*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-33786: Fix asynchronous generators to handle GeneratorExit in athrow()
|
||
correctly
|
||
|
||
- bpo-30654: Fixed reset of the SIGINT handler to SIG_DFL on interpreter
|
||
shutdown even when there was a custom handler set previously. Patch by
|
||
Philipp Kerling.
|
||
|
||
- bpo-33622: Fixed a leak when the garbage collector fails to add an object
|
||
with the ``__del__`` method or referenced by it into the
|
||
:data:`gc.garbage` list. :c:func:`PyGC_Collect` can now be called when an
|
||
exception is set and preserves it.
|
||
|
||
- bpo-31849: Fix signed/unsigned comparison warning in pyhash.c.
|
||
|
||
- bpo-33391: Fix a leak in set_symmetric_difference().
|
||
|
||
- bpo-28055: Fix unaligned accesses in siphash24(). Patch by Rolf Eike Beer.
|
||
|
||
- bpo-33231: Fix potential memory leak in ``normalizestring()``.
|
||
|
||
- bpo-29922: Improved error messages in 'async with' when ``__aenter__()``
|
||
or ``__aexit__()`` return non-awaitable object.
|
||
|
||
- bpo-33199: Fix ``ma_version_tag`` in dict implementation is uninitialized
|
||
when copying from key-sharing dict.
|
||
|
||
- bpo-33041: Fixed jumping when the function contains an ``async for`` loop.
|
||
|
||
- bpo-32282: Fix an unnecessary ifdef in the include of VersionHelpers.h in
|
||
socketmodule on Windows.
|
||
|
||
- bpo-21983: Fix a crash in `ctypes.cast()` in case the type argument is a
|
||
ctypes structured data type. Patch by Eryk Sun and Oren Milman.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-30167: Prevent site.main() exception if PYTHONSTARTUP is set. Patch by
|
||
Steve Weber.
|
||
|
||
- bpo-33812: Datetime instance d with non-None tzinfo, but with
|
||
d.tzinfo.utcoffset(d) returning None is now treated as naive by the
|
||
astimezone() method.
|
||
|
||
- bpo-30805: Avoid race condition with debug logging
|
||
|
||
- bpo-33767: The concatenation (``+``) and repetition (``*``) sequence
|
||
operations now raise :exc:`TypeError` instead of :exc:`SystemError` when
|
||
performed on :class:`mmap.mmap` objects. Patch by Zackery Spytz.
|
||
|
||
- bpo-32684: Fix gather to propagate cancellation of itself even with
|
||
return_exceptions.
|
||
|
||
- bpo-33674: Fix a race condition in SSLProtocol.connection_made() of
|
||
asyncio.sslproto: start immediately the handshake instead of using
|
||
call_soon(). Previously, data_received() could be called before the
|
||
handshake started, causing the handshake to hang or fail.
|
||
|
||
- bpo-31647: Fixed bug where calling write_eof() on a
|
||
_SelectorSocketTransport after it's already closed raises AttributeError.
|
||
|
||
- bpo-33672: Fix Task.__repr__ crash with Cython's bogus coroutines
|
||
|
||
- bpo-33469: Fix RuntimeError after closing loop that used run_in_executor
|
||
|
||
- bpo-11874: Use a better regex when breaking usage into wrappable parts.
|
||
Avoids bogus assertion errors from custom metavar strings.
|
||
|
||
- bpo-30877: Fixed a bug in the Python implementation of the JSON decoder
|
||
that prevented the cache of parsed strings from clearing after finishing
|
||
the decoding. Based on patch by c-fos.
|
||
|
||
- bpo-33548: tempfile._candidate_tempdir_list should consider common TEMP
|
||
locations
|
||
|
||
- bpo-33542: Prevent ``uuid.get_node`` from using a DUID instead of a MAC on
|
||
Windows. Patch by Zvi Effron
|
||
|
||
- bpo-26819: Fix race condition with `ReadTransport.resume_reading` in
|
||
Windows proactor event loop.
|
||
|
||
- bpo-28556: Minor fixes in typing module: add annotations to
|
||
``NamedTuple.__new__``, pass ``*args`` and ``**kwds`` in
|
||
``Generic.__new__``. Original PRs by Paulius Šarka and Chad Dombrova.
|
||
|
||
- bpo-20087: Updated alias mapping with glibc 2.27 supported locales.
|
||
|
||
- bpo-33422: Fix trailing quotation marks getting deleted when looking up
|
||
byte/string literals on pydoc. Patch by Andrés Delfino.
|
||
|
||
- bpo-33197: Update error message when constructing invalid
|
||
inspect.Parameters Patch by Dong-hee Na.
|
||
|
||
- bpo-33383: Fixed crash in the get() method of the :mod:`dbm.ndbm` database
|
||
object when it is called with a single argument.
|
||
|
||
- bpo-33329: Fix multiprocessing regression on newer glibcs
|
||
|
||
- bpo-991266: Fix quoting of the ``Comment`` attribute of
|
||
:class:`http.cookies.SimpleCookie`.
|
||
|
||
- bpo-33131: Upgrade bundled version of pip to 10.0.1.
|
||
|
||
- bpo-33308: Fixed a crash in the :mod:`parser` module when converting an ST
|
||
object to a tree of tuples or lists with ``line_info=False`` and
|
||
``col_info=True``.
|
||
|
||
- bpo-33263: Fix FD leak in `_SelectorSocketTransport` Patch by Vlad
|
||
Starostin.
|
||
|
||
- bpo-33256: Fix display of ``<module>`` call in the html produced by
|
||
``cgitb.html()``. Patch by Stéphane Blondon.
|
||
|
||
- bpo-33203: ``random.Random.choice()`` now raises ``IndexError`` for empty
|
||
sequences consistently even when called from subclasses without a
|
||
``getrandbits()`` implementation.
|
||
|
||
- bpo-33224: Update difflib.mdiff() for :pep:`479`. Convert an uncaught
|
||
StopIteration in a generator into a return-statement.
|
||
|
||
- bpo-33209: End framing at the end of C implementation of
|
||
:func:`pickle.Pickler.dump`.
|
||
|
||
- bpo-32861: The urllib.robotparser's ``__str__`` representation now
|
||
includes wildcard entries and the "Crawl-delay" and "Request-rate" fields.
|
||
Patch by Michael Lazar.
|
||
|
||
- bpo-33096: Allow ttk.Treeview.insert to insert iid that has a false
|
||
boolean value. Note iid=0 and iid=False would be same. Patch by Garvit
|
||
Khatri.
|
||
|
||
- bpo-33127: The ssl module now compiles with LibreSSL 2.7.1.
|
||
|
||
- bpo-33021: Release the GIL during fstat() calls, avoiding hang of all
|
||
threads when calling mmap.mmap(), os.urandom(), and random.seed(). Patch
|
||
by Nir Soffer.
|
||
|
||
- bpo-27683: Fix a regression in :mod:`ipaddress` that result of
|
||
:meth:`hosts` is empty when the network is constructed by a tuple
|
||
containing an integer mask and only 1 bit left for addresses.
|
||
|
||
- bpo-32844: Fix wrong redirection of a low descriptor (0 or 1) to stderr in
|
||
subprocess if another low descriptor is closed.
|
||
|
||
- bpo-31908: Fix output of cover files for ``trace`` module command-line
|
||
tool. Previously emitted cover files only when ``--missing`` option was
|
||
used. Patch by Michael Selik.
|
||
|
||
- bpo-31457: If nested log adapters are used, the inner ``process()``
|
||
methods are no longer omitted.
|
||
|
||
- bpo-16865: Support arrays >=2GiB in :mod:`ctypes`. Patch by Segev Finer.
|
||
|
||
- bpo-31238: pydoc: the stop() method of the private ServerThread class now
|
||
waits until DocServer.serve_until_quit() completes and then explicitly
|
||
sets its docserver attribute to None to break a reference cycle.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-33503: Fix broken pypi link
|
||
|
||
- bpo-33421: Add missing documentation for ``typing.AsyncContextManager``.
|
||
|
||
- bpo-33378: Add Korean language switcher for https://docs.python.org/3/
|
||
|
||
- bpo-33276: Clarify that the ``__path__`` attribute on modules cannot be
|
||
just any value.
|
||
|
||
- bpo-33201: Modernize documentation for writing C extension types.
|
||
|
||
- bpo-33195: Deprecate ``Py_UNICODE`` usage in ``c-api/arg`` document.
|
||
``Py_UNICODE`` related APIs are deprecated since Python 3.3, but it is
|
||
missed in the document.
|
||
|
||
- bpo-33126: Document PyBuffer_ToContiguous().
|
||
|
||
- bpo-27212: Modify documentation for the :func:`islice` recipe to consume
|
||
initial values up to the start index.
|
||
|
||
- bpo-28247: Update :mod:`zipapp` documentation to describe how to make
|
||
standalone applications.
|
||
|
||
- bpo-18802: Documentation changes for ipaddress. Patch by Jon Foster and
|
||
Berker Peksag.
|
||
|
||
- bpo-27428: Update documentation to clarify that ``WindowsRegistryFinder``
|
||
implements ``MetaPathFinder``. (Patch by Himanshu Lakhara)
|
||
|
||
- bpo-8243: Add a note about curses.addch and curses.addstr exception
|
||
behavior when writing outside a window, or pad.
|
||
|
||
- bpo-31432: Clarify meaning of CERT_NONE, CERT_OPTIONAL, and CERT_REQUIRED
|
||
flags for ssl.SSLContext.verify_mode.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-33655: Ignore test_posix_fallocate failures on BSD platforms that
|
||
might be due to running on ZFS.
|
||
|
||
- bpo-19417: Add test_bdb.py.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-5755: Move ``-Wstrict-prototypes`` option to ``CFLAGS_NODIST`` from
|
||
``OPT``. This option emitted annoying warnings when building extension
|
||
modules written in C++.
|
||
|
||
- bpo-33614: Ensures module definition files for the stable ABI on Windows
|
||
are correctly regenerated.
|
||
|
||
- bpo-33522: Enable CI builds on Visual Studio Team Services at
|
||
https://python.visualstudio.com/cpython
|
||
|
||
- bpo-33012: Add ``-Wno-cast-function-type`` for gcc 8 for silencing
|
||
warnings about function casts like casting to PyCFunction in method
|
||
definition lists.
|
||
|
||
- bpo-33394: Enable the verbose build for extension modules, when GNU make
|
||
is passed macros on the command line.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-33184: Update Windows installer to OpenSSL 1.0.2o.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-33184: Update macOS installer build to use OpenSSL 1.0.2o.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-33656: On Windows, add API call saying that tk scales for DPI. On
|
||
Windows 8.1+ or 10, with DPI compatibility properties of the Python binary
|
||
unchanged, and a monitor resolution greater than 96 DPI, this should make
|
||
text and lines sharper. It should otherwise have no effect.
|
||
|
||
- bpo-33768: Clicking on a context line moves that line to the top of the
|
||
editor window.
|
||
|
||
- bpo-33763: IDLE: Use read-only text widget for code context instead of
|
||
label widget.
|
||
|
||
- bpo-33664: Scroll IDLE editor text by lines. Previously, the mouse wheel
|
||
and scrollbar slider moved text by a fixed number of pixels, resulting in
|
||
partial lines at the top of the editor box. The change also applies to
|
||
the shell and grep output windows, but not to read-only text views.
|
||
|
||
- bpo-33679: Enable theme-specific color configuration for Code Context. Use
|
||
the Highlights tab to see the setting for built-in themes or add settings
|
||
to custom themes.
|
||
|
||
- bpo-33642: Display up to maxlines non-blank lines for Code Context. If
|
||
there is no current context, show a single blank line.
|
||
|
||
- bpo-33628: IDLE: Cleanup codecontext.py and its test.
|
||
|
||
- bpo-33564: IDLE's code context now recognizes async as a block opener.
|
||
|
||
- bpo-29706: IDLE now colors async and await as keywords in 3.6. They become
|
||
full keywords in 3.7.
|
||
|
||
- bpo-21474: Update word/identifier definition from ascii to unicode. In
|
||
text and entry boxes, this affects selection by double-click, movement
|
||
left/right by control-left/right, and deletion left/right by
|
||
control-BACKSPACE/DEL.
|
||
|
||
- bpo-33204: IDLE: consistently color invalid string prefixes. A 'u' string
|
||
prefix cannot be paired with either 'r' or 'f'. Consistently color as much
|
||
of the prefix, starting at the right, as is valid. Revise and extend
|
||
colorizer test.
|
||
|
||
- bpo-32831: Add docstrings and tests for codecontext.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-33189: :program:`pygettext.py` now recognizes only literal strings as
|
||
docstrings and translatable strings, and rejects bytes literals and
|
||
f-string expressions.
|
||
|
||
- bpo-31920: Fixed handling directories as arguments in the ``pygettext``
|
||
script. Based on patch by Oleg Krasnikov.
|
||
|
||
- bpo-29673: Fix pystackv and pystack gdbinit macros.
|
||
|
||
- bpo-32885: Add an ``-n`` flag for ``Tools/scripts/pathfix.py`` to disable
|
||
automatic backup creation (files with ``~`` suffix).
|
||
|
||
- bpo-31583: Fix 2to3 for using with --add-suffix option but without
|
||
--output-dir option for relative path to files in current directory.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-32374: Document that m_traverse for multi-phase initialized modules
|
||
can be called with m_state=NULL, and add a sanity check
|
||
|
||
|
||
What's New in Python 3.6.5 final?
|
||
=================================
|
||
|
||
*Release date: 2018-03-28*
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-32872: Avoid regrtest compatibility issue with namespace packages.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-33163: Upgrade pip to 9.0.3 and setuptools to v39.0.1.
|
||
|
||
|
||
What's New in Python 3.6.5 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2018-03-13*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-33001: Minimal fix to prevent buffer overrun in os.symlink on Windows
|
||
|
||
- bpo-32981: Regexes in difflib and poplib were vulnerable to catastrophic
|
||
backtracking. These regexes formed potential DOS vectors (REDOS). They
|
||
have been refactored. This resolves CVE-2018-1060 and CVE-2018-1061. Patch
|
||
by Jamie Davis.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-33026: Fixed jumping out of "with" block by setting f_lineno.
|
||
|
||
- bpo-17288: Prevent jumps from 'return' and 'exception' trace events.
|
||
|
||
- bpo-32889: Update Valgrind suppression list to account for the rename of
|
||
``Py_ADDRESS_IN_RANG`` to ``address_in_range``.
|
||
|
||
- bpo-32650: Pdb and other debuggers dependent on bdb.py will correctly step
|
||
over (next command) native coroutines. Patch by Pablo Galindo.
|
||
|
||
- bpo-32685: Improve suggestion when the Python 2 form of print statement is
|
||
either present on the same line as the header of a compound statement or
|
||
else terminated by a semi-colon instead of a newline. Patch by Nitish
|
||
Chandra.
|
||
|
||
- bpo-32583: Fix possible crashing in builtin Unicode decoders caused by
|
||
write out-of-bound errors when using customized decode error handlers.
|
||
|
||
- bpo-26163: Improved frozenset() hash to create more distinct hash values
|
||
when faced with datasets containing many similar values.
|
||
|
||
- bpo-27169: The ``__debug__`` constant is now optimized out at compile
|
||
time. This fixes also bpo-22091.
|
||
|
||
- bpo-32329: ``sys.flags.hash_randomization`` is now properly set to 0 when
|
||
hash randomization is turned off by ``PYTHONHASHSEED=0``.
|
||
|
||
- bpo-30416: The optimizer is now protected from spending much time doing
|
||
complex calculations and consuming much memory for creating large
|
||
constants in constant folding.
|
||
|
||
- bpo-18533: ``repr()`` on a dict containing its own ``values()`` or
|
||
``items()`` no longer raises ``RecursionError``; OrderedDict similarly.
|
||
Instead, use ``...``, as for other recursive structures. Patch by Ben
|
||
North.
|
||
|
||
- bpo-32028: Leading whitespace is now correctly ignored when generating
|
||
suggestions for converting Py2 print statements to Py3 builtin print
|
||
function calls. Patch by Sanyam Khurana.
|
||
|
||
- bpo-32137: The repr of deeply nested dict now raises a RecursionError
|
||
instead of crashing due to a stack overflow.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-33064: lib2to3 now properly supports trailing commas after ``*args``
|
||
and ``**kwargs`` in function signatures.
|
||
|
||
- bpo-31804: Avoid failing in multiprocessing.Process if the standard
|
||
streams are closed or None at exit.
|
||
|
||
- bpo-33037: Skip sending/receiving data after SSL transport closing.
|
||
|
||
- bpo-30353: Fix ctypes pass-by-value for structs on 64-bit Cygwin/MinGW.
|
||
|
||
- bpo-33009: Fix inspect.signature() for single-parameter partialmethods.
|
||
|
||
- bpo-32969: Expose several missing constants in zlib and fix corresponding
|
||
documentation.
|
||
|
||
- bpo-32713: Fixed tarfile.itn handling of out-of-bounds float values. Patch
|
||
by Joffrey Fuhrer.
|
||
|
||
- bpo-30622: The ssl module now detects missing NPN support in LibreSSL.
|
||
|
||
- bpo-32922: dbm.open() now encodes filename with the filesystem encoding
|
||
rather than default encoding.
|
||
|
||
- bpo-32859: In ``os.dup2``, don't check every call whether the ``dup3``
|
||
syscall exists or not.
|
||
|
||
- bpo-21060: Rewrite confusing message from setup.py upload from "No dist
|
||
file created in earlier command" to the more helpful "Must create and
|
||
upload files in one command".
|
||
|
||
- bpo-32857: In :mod:`tkinter`, ``after_cancel(None)`` now raises a
|
||
:exc:`ValueError` instead of canceling the first scheduled function.
|
||
Patch by Cheryl Sabella.
|
||
|
||
- bpo-32852: Make sure sys.argv remains as a list when running trace.
|
||
|
||
- bpo-32841: Fixed `asyncio.Condition` issue which silently ignored
|
||
cancellation after notifying and cancelling a conditional lock. Patch by
|
||
Bar Harel.
|
||
|
||
- bpo-31787: Fixed refleaks of ``__init__()`` methods in various modules.
|
||
(Contributed by Oren Milman)
|
||
|
||
- bpo-30157: Fixed guessing quote and delimiter in csv.Sniffer.sniff() when
|
||
only the last field is quoted. Patch by Jake Davis.
|
||
|
||
- bpo-32394: socket: Remove TCP_FASTOPEN, TCP_KEEPCNT flags on older version
|
||
Windows during run-time.
|
||
|
||
- bpo-32777: Fix a rare but potential pre-exec child process deadlock in
|
||
subprocess on POSIX systems when marking file descriptors inheritable on
|
||
exec in the child process. This bug appears to have been introduced in
|
||
3.4.
|
||
|
||
- bpo-32647: The ctypes module used to depend on indirect linking for
|
||
dlopen. The shared extension is now explicitly linked against libdl on
|
||
platforms with dl.
|
||
|
||
- bpo-32734: Fixed ``asyncio.Lock()`` safety issue which allowed acquiring
|
||
and locking the same lock multiple times, without it being free. Patch by
|
||
Bar Harel.
|
||
|
||
- bpo-32727: Do not include name field in SMTP envelope from address. Patch
|
||
by Stéphane Wirtel
|
||
|
||
- bpo-27931: Fix email address header parsing error when the username is an
|
||
empty quoted string. Patch by Xiang Zhang.
|
||
|
||
- bpo-32304: distutils' upload command no longer corrupts tar files ending
|
||
with a CR byte, and no longer tries to convert CR to CRLF in any of the
|
||
upload text fields.
|
||
|
||
- bpo-32502: uuid.uuid1 no longer raises an exception if a 64-bit hardware
|
||
address is encountered.
|
||
|
||
- bpo-31848: Fix the error handling in Aifc_read.initfp() when the SSND
|
||
chunk is not found. Patch by Zackery Spytz.
|
||
|
||
- bpo-32555: On FreeBSD and Solaris, os.strerror() now always decode the
|
||
byte string from the current locale encoding, rather than using
|
||
ASCII/surrogateescape in some cases.
|
||
|
||
- bpo-32521: The nis module is now compatible with new libnsl and headers
|
||
location.
|
||
|
||
- bpo-32473: Improve ABCMeta._dump_registry() output readability
|
||
|
||
- bpo-32521: glibc has removed Sun RPC. Use replacement libtirpc headers and
|
||
library in nis module.
|
||
|
||
- bpo-32228: Ensure that ``truncate()`` preserves the file position (as
|
||
reported by ``tell()``) after writes longer than the buffer size.
|
||
|
||
- bpo-26133: Don't unsubscribe signals in asyncio UNIX event loop on
|
||
interpreter shutdown.
|
||
|
||
- bpo-32185: The SSL module no longer sends IP addresses in SNI TLS
|
||
extension on platforms with OpenSSL 1.0.2+ or inet_pton.
|
||
|
||
- bpo-32323: :func:`urllib.parse.urlsplit()` does not convert zone-id
|
||
(scope) to lower case for scoped IPv6 addresses in hostnames now.
|
||
|
||
- bpo-32302: Fix bdist_wininst of distutils for CRT v142: it binary
|
||
compatible with CRT v140.
|
||
|
||
- bpo-32255: A single empty field is now always quoted when written into a
|
||
CSV file. This allows to distinguish an empty row from a row consisting of
|
||
a single empty field. Patch by Licht Takeuchi.
|
||
|
||
- bpo-32277: Raise ``NotImplementedError`` instead of ``SystemError`` on
|
||
platforms where ``chmod(..., follow_symlinks=False)`` is not supported.
|
||
Patch by Anthony Sottile.
|
||
|
||
- bpo-32199: The getnode() ip getter now uses 'ip link' instead of 'ip link
|
||
list'.
|
||
|
||
- bpo-27456: Ensure TCP_NODELAY is set on Linux. Tests by Victor Stinner.
|
||
|
||
- bpo-31900: The :func:`locale.localeconv` function now sets temporarily the
|
||
``LC_CTYPE`` locale to the ``LC_NUMERIC`` locale to decode
|
||
``decimal_point`` and ``thousands_sep`` byte strings if they are non-ASCII
|
||
or longer than 1 byte, and the ``LC_NUMERIC`` locale is different than the
|
||
``LC_CTYPE`` locale. This temporary change affects other threads. Same
|
||
change for the :meth:`str.format` method when formatting a number
|
||
(:class:`int`, :class:`float`, :class:`float` and subclasses) with the
|
||
``n`` type (ex: ``'{:n}'.format(1234)``).
|
||
|
||
- bpo-31802: Importing native path module (``posixpath``, ``ntpath``) now
|
||
works even if the ``os`` module still is not imported.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-17232: Clarify docs for -O and -OO. Patch by Terry Reedy.
|
||
|
||
- bpo-32800: Update link to w3c doc for xml default namespaces.
|
||
|
||
- bpo-8722: Document :meth:`__getattr__` behavior when property :meth:`get`
|
||
method raises :exc:`AttributeError`.
|
||
|
||
- bpo-32614: Modify RE examples in documentation to use raw strings to
|
||
prevent :exc:`DeprecationWarning` and add text to REGEX HOWTO to highlight
|
||
the deprecation.
|
||
|
||
- bpo-31972: Improve docstrings for `pathlib.PurePath` subclasses.
|
||
|
||
- bpo-17799: Explain real behaviour of sys.settrace and sys.setprofile and
|
||
their C-API counterparts regarding which type of events are received in
|
||
each function. Patch by Pablo Galindo Salgado.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-32517: Fix failing ``test_asyncio`` on macOS 10.12.2+ due to transport
|
||
of ``KqueueSelector`` loop was not being closed.
|
||
|
||
- bpo-32721: Fix test_hashlib to not fail if the _md5 module is not built.
|
||
|
||
- bpo-32252: Fix faulthandler_suppress_crash_report() used to prevent core
|
||
dump files when testing crashes. getrlimit() returns zero on success.
|
||
|
||
- bpo-31518: Debian Unstable has disabled TLS 1.0 and 1.1 for
|
||
SSLv23_METHOD(). Change TLS/SSL protocol of some tests to PROTOCOL_TLS or
|
||
PROTOCOL_TLSv1_2 to make them pass on Debian.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-32635: Fix segfault of the crypt module when libxcrypt is provided
|
||
instead of libcrypt at the system.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-33016: Fix potential use of uninitialized memory in
|
||
nt._getfinalpathname
|
||
|
||
- bpo-32903: Fix a memory leak in os.chdir() on Windows if the current
|
||
directory is set to a UNC path.
|
||
|
||
- bpo-31966: Fixed WindowsConsoleIO.write() for writing empty data.
|
||
|
||
- bpo-32409: Ensures activate.bat can handle Unicode contents.
|
||
|
||
- bpo-32457: Improves handling of denormalized executable path when
|
||
launching Python.
|
||
|
||
- bpo-32370: Use the correct encoding for ipconfig output in the uuid
|
||
module. Patch by Segev Finer.
|
||
|
||
- bpo-29248: Fix :func:`os.readlink` on Windows, which was mistakenly
|
||
treating the ``PrintNameOffset`` field of the reparse data buffer as a
|
||
number of characters instead of bytes. Patch by Craig Holmquist and SSE4.
|
||
|
||
- bpo-32588: Create standalone _distutils_findvs module.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-32726: Provide an additional, more modern macOS installer variant that
|
||
supports macOS 10.9+ systems in 64-bit mode only. Upgrade the supplied
|
||
third-party libraries to OpenSSL 1.0.2n, XZ 5.2.3, and SQLite 3.22.0. The
|
||
10.9+ installer now links with and supplies its own copy of Tcl/Tk 8.6.8.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-32984: Set ``__file__`` while running a startup file. Like Python,
|
||
IDLE optionally runs one startup file in the Shell window before
|
||
presenting the first interactive input prompt. For IDLE, ``-s`` runs a
|
||
file named in environmental variable :envvar:`IDLESTARTUP` or
|
||
:envvar:`PYTHONSTARTUP`; ``-r file`` runs ``file``. Python sets
|
||
``__file__`` to the startup file name before running the file and unsets
|
||
it before the first prompt. IDLE now does the same when run normally,
|
||
without the ``-n`` option.
|
||
|
||
- bpo-32940: Simplify and rename StringTranslatePseudoMapping in pyparse.
|
||
|
||
- bpo-32916: Change ``str`` to ``code`` in pyparse.
|
||
|
||
- bpo-32905: Remove unused code in pyparse module.
|
||
|
||
- bpo-32874: Add tests for pyparse.
|
||
|
||
- bpo-32837: Using the system and place-dependent default encoding for
|
||
open() is a bad idea for IDLE's system and location-independent files.
|
||
|
||
- bpo-32826: Add "encoding=utf-8" to open() in IDLE's test_help_about. GUI
|
||
test test_file_buttons() only looks at initial ascii-only lines, but
|
||
failed on systems where open() defaults to 'ascii' because readline()
|
||
internally reads and decodes far enough ahead to encounter a non-ascii
|
||
character in CREDITS.txt.
|
||
|
||
- bpo-32765: Update configdialog General tab docstring to add new widgets to
|
||
the widget list.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-24960: 2to3 and lib2to3 can now read pickled grammar files using
|
||
pkgutil.get_data() rather than probing the filesystem. This lets 2to3 and
|
||
lib2to3 work when run from a zipfile.
|
||
|
||
- bpo-32222: Fix pygettext not extracting docstrings for functions with type
|
||
annotated arguments. Patch by Toby Harradine.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-29084: Undocumented C API for OrderedDict has been excluded from the
|
||
limited C API. It was added by mistake and actually never worked in the
|
||
limited C API.
|
||
|
||
|
||
What's New in Python 3.6.4 final?
|
||
=================================
|
||
|
||
*Release date: 2017-12-18*
|
||
|
||
There were no new code changes in version 3.6.4 since v3.6.4rc1.
|
||
|
||
|
||
|
||
What's New in Python 3.6.4 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2017-12-05*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-32176: co_flags.CO_NOFREE is now always set correctly by the code
|
||
object constructor based on freevars and cellvars, rather than needing to
|
||
be set correctly by the caller. This ensures it will be cleared
|
||
automatically when additional cell references are injected into a modified
|
||
code object and function.
|
||
|
||
- bpo-31949: Fixed several issues in printing tracebacks
|
||
(PyTraceBack_Print()). Setting sys.tracebacklimit to 0 or less now
|
||
suppresses printing tracebacks. Setting sys.tracebacklimit to None now
|
||
causes using the default limit. Setting sys.tracebacklimit to an integer
|
||
larger than LONG_MAX now means using the limit LONG_MAX rather than the
|
||
default limit. Fixed integer overflows in the case of more than ``2**31``
|
||
traceback items on Windows. Fixed output errors handling.
|
||
|
||
- bpo-30696: Fix the interactive interpreter looping endlessly when no
|
||
memory.
|
||
|
||
- bpo-20047: Bytearray methods partition() and rpartition() now accept only
|
||
bytes-like objects as separator, as documented. In particular they now
|
||
raise TypeError rather of returning a bogus result when an integer is
|
||
passed as a separator.
|
||
|
||
- bpo-31852: Fix a segmentation fault caused by a combination of the async
|
||
soft keyword and continuation lines.
|
||
|
||
- bpo-21720: BytesWarning no longer emitted when the *fromlist* argument of
|
||
``__import__()`` or the ``__all__`` attribute of the module contain bytes
|
||
instances.
|
||
|
||
- bpo-31825: Fixed OverflowError in the 'unicode-escape' codec and in
|
||
codecs.escape_decode() when decode an escaped non-ascii byte.
|
||
|
||
- bpo-28603: Print the full context/cause chain of exceptions on interpreter
|
||
exit, even if an exception in the chain is unhashable or compares equal to
|
||
later ones. Patch by Zane Bitter.
|
||
|
||
- bpo-31786: Fix timeout rounding in the select module to round correctly
|
||
negative timeouts between -1.0 and 0.0. The functions now block waiting
|
||
for events as expected. Previously, the call was incorrectly non-blocking.
|
||
Patch by Pablo Galindo.
|
||
|
||
- bpo-31642: Restored blocking "from package import module" by setting
|
||
sys.modules["package.module"] to None.
|
||
|
||
- bpo-31626: Fixed a bug in debug memory allocator. There was a write to
|
||
freed memory after shrinking a memory block.
|
||
|
||
- bpo-31619: Fixed a ValueError when convert a string with large number of
|
||
underscores to integer with binary base.
|
||
|
||
- bpo-31592: Fixed an assertion failure in Python parser in case of a bad
|
||
`unicodedata.normalize()`. Patch by Oren Milman.
|
||
|
||
- bpo-31588: Raise a `TypeError` with a helpful error message when class
|
||
creation fails due to a metaclass with a bad ``__prepare__()`` method.
|
||
Patch by Oren Milman.
|
||
|
||
- bpo-31566: Fix an assertion failure in `_warnings.warn()` in case of a bad
|
||
``__name__`` global. Patch by Oren Milman.
|
||
|
||
- bpo-31505: Fix an assertion failure in `json`, in case
|
||
`_json.make_encoder()` received a bad `encoder()` argument. Patch by Oren
|
||
Milman.
|
||
|
||
- bpo-31492: Fix assertion failures in case of failing to import from a
|
||
module with a bad ``__name__`` attribute, and in case of failing to access
|
||
an attribute of such a module. Patch by Oren Milman.
|
||
|
||
- bpo-31490: Fix an assertion failure in `ctypes` class definition, in case
|
||
the class has an attribute whose name is specified in ``_anonymous_`` but
|
||
not in ``_fields_``. Patch by Oren Milman.
|
||
|
||
- bpo-31478: Fix an assertion failure in `_random.Random.seed()` in case the
|
||
argument has a bad ``__abs__()`` method. Patch by Oren Milman.
|
||
|
||
- bpo-31315: Fix an assertion failure in imp.create_dynamic(), when
|
||
spec.name is not a string. Patch by Oren Milman.
|
||
|
||
- bpo-31311: Fix a crash in the ``__setstate__()`` method of
|
||
`ctypes._CData`, in case of a bad ``__dict__``. Patch by Oren Milman.
|
||
|
||
- bpo-31293: Fix crashes in true division and multiplication of a timedelta
|
||
object by a float with a bad as_integer_ratio() method. Patch by Oren
|
||
Milman.
|
||
|
||
- bpo-31285: Fix an assertion failure in `warnings.warn_explicit`, when the
|
||
return value of the received loader's get_source() has a bad splitlines()
|
||
method. Patch by Oren Milman.
|
||
|
||
- bpo-30817: `PyErr_PrintEx()` clears now the ignored exception that may be
|
||
raised by `_PySys_SetObjectId()`, for example when no memory.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-28556: Two minor fixes for ``typing`` module: allow shallow copying
|
||
instances of generic classes, improve interaction of ``__init_subclass__``
|
||
with generics. Original PRs by Ivan Levkivskyi.
|
||
|
||
- bpo-27240: The header folding algorithm for the new email policies has
|
||
been rewritten, which also fixes bpo-30788, bpo-31831, and bpo-32182. In
|
||
particular, RFC2231 folding is now done correctly.
|
||
|
||
- bpo-32186: io.FileIO.readall() and io.FileIO.read() now release the GIL
|
||
when getting the file size. Fixed hang of all threads with inaccessible
|
||
NFS server. Patch by Nir Soffer.
|
||
|
||
- bpo-12239: Make :meth:`msilib.SummaryInformation.GetProperty` return
|
||
``None`` when the value of property is ``VT_EMPTY``. Initial patch by
|
||
Mark Mc Mahon.
|
||
|
||
- bpo-31325: Fix wrong usage of :func:`collections.namedtuple` in the
|
||
:meth:`RobotFileParser.parse() <urllib.robotparser.RobotFileParser.parse>`
|
||
method. Initial patch by Robin Wellner.
|
||
|
||
- bpo-12382: :func:`msilib.OpenDatabase` now raises a better exception
|
||
message when it couldn't open or create an MSI file. Initial patch by
|
||
William Tisäter.
|
||
|
||
- bpo-32110: ``codecs.StreamReader.read(n)`` now returns not more than *n*
|
||
characters/bytes for non-negative *n*. This makes it compatible with
|
||
``read()`` methods of other file-like objects.
|
||
|
||
- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays.
|
||
Identical objects will be saved only once. Equal references will be load
|
||
as identical objects. Added support for saving and loading recursive data
|
||
structures.
|
||
|
||
- bpo-32034: Make asyncio.IncompleteReadError and LimitOverrunError
|
||
pickleable.
|
||
|
||
- bpo-32015: Fixed the looping of asyncio in the case of reconnection the
|
||
socket during waiting async read/write from/to the socket.
|
||
|
||
- bpo-32011: Restored support of loading marshal files with the TYPE_INT64
|
||
code. These files can be produced in Python 2.7.
|
||
|
||
- bpo-31970: Reduce performance overhead of asyncio debug mode.
|
||
|
||
- bpo-9678: Fixed determining the MAC address in the uuid module: Using
|
||
ifconfig on NetBSD and OpenBSD. Using arp on Linux, FreeBSD, NetBSD and
|
||
OpenBSD. Based on patch by Takayuki Shimizukawa.
|
||
|
||
- bpo-30057: Fix potential missed signal in signal.signal().
|
||
|
||
- bpo-31933: Fix Blake2 params leaf_size and node_offset on big endian
|
||
platforms. Patch by Jack O'Connor.
|
||
|
||
- bpo-31927: Fixed compilation of the socket module on NetBSD 8. Fixed
|
||
assertion failure or reading arbitrary data when parse a AF_BLUETOOTH
|
||
address on NetBSD and DragonFly BSD.
|
||
|
||
- bpo-27666: Fixed stack corruption in curses.box() and curses.ungetmouse()
|
||
when the size of types chtype or mmask_t is less than the size of C long.
|
||
curses.box() now accepts characters as arguments. Based on patch by Steve
|
||
Fink.
|
||
|
||
- bpo-31897: plistlib now catches more errors when read binary plists and
|
||
raises InvalidFileException instead of unexpected exceptions.
|
||
|
||
- bpo-25720: Fix the method for checking pad state of curses WINDOW. Patch
|
||
by Masayuki Yamamoto.
|
||
|
||
- bpo-31893: Fixed the layout of the kqueue_event structure on OpenBSD and
|
||
NetBSD. Fixed the comparison of the kqueue_event objects.
|
||
|
||
- bpo-31891: Fixed building the curses module on NetBSD.
|
||
|
||
- bpo-28416: Instances of pickle.Pickler subclass with the persistent_id()
|
||
method and pickle.Unpickler subclass with the persistent_load() method no
|
||
longer create reference cycles.
|
||
|
||
- bpo-28326: Fix multiprocessing.Process when stdout and/or stderr is closed
|
||
or None.
|
||
|
||
- bpo-31457: If nested log adapters are used, the inner ``process()``
|
||
methods are no longer omitted.
|
||
|
||
- bpo-31457: The ``manager`` property on LoggerAdapter objects is now
|
||
properly settable.
|
||
|
||
- bpo-31806: Fix timeout rounding in time.sleep(), threading.Lock.acquire()
|
||
and socket.socket.settimeout() to round correctly negative timeouts
|
||
between -1.0 and 0.0. The functions now block waiting for events as
|
||
expected. Previously, the call was incorrectly non-blocking. Patch by
|
||
Pablo Galindo.
|
||
|
||
- bpo-28603: traceback: Fix a TypeError that occurred during printing of
|
||
exception tracebacks when either the current exception or an exception in
|
||
its context/cause chain is unhashable. Patch by Zane Bitter.
|
||
|
||
- bpo-30058: Fixed buffer overflow in select.kqueue.control().
|
||
|
||
- bpo-31770: Prevent a crash when calling the ``__init__()`` method of a
|
||
``sqlite3.Cursor`` object more than once. Patch by Oren Milman.
|
||
|
||
- bpo-31672: ``idpattern`` in ``string.Template`` matched some non-ASCII
|
||
characters. Now it uses ``-i`` regular expression local flag to avoid
|
||
non-ASCII characters.
|
||
|
||
- bpo-31764: Prevent a crash in ``sqlite3.Cursor.close()`` in case the
|
||
``Cursor`` object is uninitialized. Patch by Oren Milman.
|
||
|
||
- bpo-31752: Fix possible crash in timedelta constructor called with custom
|
||
integers.
|
||
|
||
- bpo-31701: On Windows, faulthandler.enable() now ignores MSC and COM
|
||
exceptions.
|
||
|
||
- bpo-31728: Prevent crashes in `_elementtree` due to unsafe cleanup of
|
||
`Element.text` and `Element.tail`. Patch by Oren Milman.
|
||
|
||
- bpo-31620: an empty asyncio.Queue now doesn't leak memory when queue.get
|
||
pollers timeout
|
||
|
||
- bpo-31632: Fix method set_protocol() of class _SSLProtocolTransport in
|
||
asyncio module. This method was previously modifying a wrong reference to
|
||
the protocol.
|
||
|
||
- bpo-31675: Fixed memory leaks in Tkinter's methods splitlist() and split()
|
||
when pass a string larger than 2 GiB.
|
||
|
||
- bpo-31673: Fixed typo in the name of Tkinter's method adderrorinfo().
|
||
|
||
- bpo-30806: Fix the string representation of a netrc object.
|
||
|
||
- bpo-15037: Added a workaround for getkey() in curses for ncurses 5.7 and
|
||
earlier.
|
||
|
||
- bpo-25351: Avoid venv activate failures with undefined variables
|
||
|
||
- bpo-25532: inspect.unwrap() will now only try to unwrap an object
|
||
sys.getrecursionlimit() times, to protect against objects which create a
|
||
new object on every attribute access.
|
||
|
||
- bpo-30347: Stop crashes when concurrently iterate over itertools.groupby()
|
||
iterators.
|
||
|
||
- bpo-31516: ``threading.current_thread()`` should not return a dummy thread
|
||
at shutdown.
|
||
|
||
- bpo-31351: python -m ensurepip now exits with non-zero exit code if pip
|
||
bootstrapping has failed.
|
||
|
||
- bpo-31482: ``random.seed()`` now works with bytes in version=1
|
||
|
||
- bpo-31334: Fix ``poll.poll([timeout])`` in the ``select`` module for
|
||
arbitrary negative timeouts on all OSes where it can only be a
|
||
non-negative integer or -1. Patch by Riccardo Coccioli.
|
||
|
||
- bpo-31310: multiprocessing's semaphore tracker should be launched again if
|
||
crashed.
|
||
|
||
- bpo-31308: Make multiprocessing's forkserver process immune to Ctrl-C and
|
||
other user interruptions. If it crashes, restart it when necessary.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-32105: Added asyncio.BaseEventLoop.connect_accepted_socket
|
||
versionadded marker.
|
||
|
||
- bpo-31537: Fix incorrect usage of ``get_history_length`` in readline
|
||
documentation example code. Patch by Brad Smith.
|
||
|
||
- bpo-30085: The operator functions without double underscores are preferred
|
||
for clarity. The one with underscores are only kept for
|
||
back-compatibility.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-31380: Skip test_httpservers test_undecodable_file on macOS: fails on
|
||
APFS.
|
||
|
||
- bpo-31705: Skip test_socket.test_sha256() on Linux kernel older than 4.5.
|
||
The test fails with ENOKEY on kernel 3.10 (on ppc64le). A fix was merged
|
||
into the kernel 4.5.
|
||
|
||
- bpo-31174: Fix test_tools.test_unparse: DirectoryTestCase now stores the
|
||
names sample to always test the same files. It prevents false alarms when
|
||
hunting reference leaks.
|
||
|
||
- bpo-30695: Add the `set_nomemory(start, stop)` and `remove_mem_hooks()`
|
||
functions to the _testcapi module.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-32059: ``detect_modules()`` in ``setup.py`` now also searches the
|
||
sysroot paths when cross-compiling.
|
||
|
||
- bpo-31957: Fixes Windows SDK version detection when building for Windows.
|
||
|
||
- bpo-31609: Fixes quotes in PCbuild/clean.bat
|
||
|
||
- bpo-31934: Abort the build when building out of a not clean source tree.
|
||
|
||
- bpo-31926: Fixed Argument Clinic sometimes causing compilation errors when
|
||
there was more than one function and/or method in a .c file with the same
|
||
name.
|
||
|
||
- bpo-28791: Update Windows builds to use SQLite 3.21.0.
|
||
|
||
- bpo-28791: Update OS X installer to use SQLite 3.21.0.
|
||
|
||
- bpo-22140: Prevent double substitution of prefix in python-config.sh.
|
||
|
||
- bpo-31536: Avoid wholesale rebuild after `make regen-all` if nothing
|
||
changed.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-1102: Return ``None`` when ``View.Fetch()`` returns
|
||
``ERROR_NO_MORE_ITEMS`` instead of raising ``MSIError``. Initial patch by
|
||
Anthony Tuininga.
|
||
|
||
- bpo-31944: Fixes Modify button in Apps and Features dialog.
|
||
|
||
macOS
|
||
-----
|
||
|
||
- bpo-31392: Update macOS installer to use OpenSSL 1.0.2m
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-32207: Improve tk event exception tracebacks in IDLE. When tk event
|
||
handling is driven by IDLE's run loop, a confusing and distracting
|
||
queue.EMPTY traceback context is no longer added to tk event exception
|
||
tracebacks. The traceback is now the same as when event handling is
|
||
driven by user code. Patch based on a suggestion by Serhiy Storchaka.
|
||
|
||
- bpo-32164: Delete unused file idlelib/tabbedpages.py. Use of TabbedPageSet
|
||
in configdialog was replaced by ttk.Notebook.
|
||
|
||
- bpo-32100: IDLE: Fix old and new bugs in pathbrowser; improve tests. Patch
|
||
mostly by Cheryl Sabella.
|
||
|
||
- bpo-31858: IDLE -- Restrict shell prompt manipulation to the shell. Editor
|
||
and output windows only see an empty last prompt line. This simplifies
|
||
the code and fixes a minor bug when newline is inserted. Sys.ps1, if
|
||
present, is read on Shell start-up, but is not set or changed.
|
||
|
||
- bpo-31860: The font sample in the IDLE configuration dialog is now
|
||
editable. Changes persist while IDLE remains open
|
||
|
||
- bpo-31836: Test_code_module now passes if run after test_idle, which sets
|
||
ps1. The code module uses sys.ps1 if present or sets it to '>>> ' if not.
|
||
Test_code_module now properly tests both behaviors. Ditto for ps2.
|
||
|
||
- bpo-28603: Fix a TypeError that caused a shell restart when printing a
|
||
traceback that includes an exception that is unhashable. Patch by Zane
|
||
Bitter.
|
||
|
||
- bpo-13802: Use non-Latin characters in the IDLE's Font settings sample.
|
||
Even if one selects a font that defines a limited subset of the unicode
|
||
Basic Multilingual Plane, tcl/tk will use other fonts that define a
|
||
character. The expanded example give users of non-Latin characters a
|
||
better idea of what they might see in IDLE's shell and editors. To make
|
||
room for the expanded sample, frames on the Font tab are re-arranged. The
|
||
Font/Tabs help explains a bit about the additions.
|
||
|
||
- bpo-31460: Simplify the API of IDLE's Module Browser. Passing a widget
|
||
instead of an flist with a root widget opens the option of creating a
|
||
browser frame that is only part of a window. Passing a full file name
|
||
instead of pieces assumed to come from a .py file opens the possibility of
|
||
browsing python files that do not end in .py.
|
||
|
||
- bpo-31649: IDLE - Make _htest, _utest parameters keyword only.
|
||
|
||
- bpo-31559: Remove test order dependence in idle_test.test_browser.
|
||
|
||
- bpo-31459: Rename IDLE's module browser from Class Browser to Module
|
||
Browser. The original module-level class and method browser became a
|
||
module browser, with the addition of module-level functions, years ago.
|
||
Nested classes and functions were added yesterday. For
|
||
back-compatibility, the virtual event <<open-class-browser>>, which
|
||
appears on the Keys tab of the Settings dialog, is not changed. Patch by
|
||
Cheryl Sabella.
|
||
|
||
- bpo-31500: Default fonts now are scaled on HiDPI displays.
|
||
|
||
- bpo-1612262: IDLE module browser now shows nested classes and functions.
|
||
Original patches for code and tests by Guilherme Polo and Cheryl Sabella,
|
||
respectively.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-30722: Make redemo work with Python 3.6 and newer versions. Also,
|
||
remove the ``LOCALE`` option since it doesn't work with string patterns in
|
||
Python 3. Patch by Christoph Sarnowski.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-20891: Fix PyGILState_Ensure(). When PyGILState_Ensure() is called in
|
||
a non-Python thread before PyEval_InitThreads(), only call
|
||
PyEval_InitThreads() after calling PyThreadState_New() to fix a crash.
|
||
|
||
- bpo-31532: Fix memory corruption due to allocator mix in getpath.c between
|
||
Py_GetPath() and Py_SetPath()
|
||
|
||
- bpo-30697: The `PyExc_RecursionErrorInst` singleton is removed and
|
||
`PyErr_NormalizeException()` does not use it anymore. This singleton is
|
||
persistent and its members being never cleared may cause a segfault during
|
||
finalization of the interpreter. See also issue #22898.
|
||
|
||
|
||
What's New in Python 3.6.3 final?
|
||
=================================
|
||
|
||
*Release date: 2017-10-03*
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-31641: Re-allow arbitrary iterables in
|
||
`concurrent.futures.as_completed()`. Fixes regression in 3.6.3rc1.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-31662: Fix typos in Windows ``uploadrelease.bat`` script. Fix Windows
|
||
Doc build issues in ``Doc/make.bat``.
|
||
|
||
- bpo-31423: Fix building the PDF documentation with newer versions of
|
||
Sphinx.
|
||
|
||
|
||
What's New in Python 3.6.3 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2017-09-18*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-29781: SSLObject.version() now correctly returns None when handshake
|
||
over BIO has not been performed yet.
|
||
|
||
- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
|
||
get security fixes.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-31471: Fix an assertion failure in `subprocess.Popen()` on Windows, in
|
||
case the env argument has a bad keys() method. Patch by Oren Milman.
|
||
|
||
- bpo-31418: Fix an assertion failure in `PyErr_WriteUnraisable()` in case
|
||
of an exception with a bad ``__module__`` attribute. Patch by Oren Milman.
|
||
|
||
- bpo-31416: Fix assertion failures in case of a bad warnings.filters or
|
||
warnings.defaultaction. Patch by Oren Milman.
|
||
|
||
- bpo-31411: Raise a TypeError instead of SystemError in case
|
||
warnings.onceregistry is not a dictionary. Patch by Oren Milman.
|
||
|
||
- bpo-31373: Fix several possible instances of undefined behavior due to
|
||
floating-point demotions.
|
||
|
||
- bpo-30465: Location information (``lineno`` and ``col_offset``) in
|
||
f-strings is now (mostly) correct. This fixes tools like flake8 from
|
||
showing warnings on the wrong line (typically the first line of the file).
|
||
|
||
- bpo-31343: Include sys/sysmacros.h for major(), minor(), and makedev().
|
||
GNU C libray plans to remove the functions from sys/types.h.
|
||
|
||
- bpo-31291: Fix an assertion failure in `zipimport.zipimporter.get_data` on
|
||
Windows, when the return value of ``pathname.replace('/','\\')`` isn't a
|
||
string. Patch by Oren Milman.
|
||
|
||
- bpo-31271: Fix an assertion failure in the write() method of
|
||
`io.TextIOWrapper`, when the encoder doesn't return a bytes object. Patch
|
||
by Oren Milman.
|
||
|
||
- bpo-31243: Fix a crash in some methods of `io.TextIOWrapper`, when the
|
||
decoder's state is invalid. Patch by Oren Milman.
|
||
|
||
- bpo-30721: ``print`` now shows correct usage hint for using Python 2
|
||
redirection syntax. Patch by Sanyam Khurana.
|
||
|
||
- bpo-31070: Fix a race condition in importlib _get_module_lock().
|
||
|
||
- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
|
||
doesn't call ``PyObject_GC_UnTrack()``.
|
||
|
||
- bpo-31071: Avoid masking original TypeError in call with * unpacking when
|
||
other arguments are passed.
|
||
|
||
- bpo-30978: str.format_map() now passes key lookup exceptions through.
|
||
Previously any exception was replaced with a KeyError exception.
|
||
|
||
- bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state.
|
||
|
||
- bpo-30876: Relative import from unloaded package now reimports the package
|
||
instead of failing with SystemError. Relative import from non-package now
|
||
fails with ImportError rather than SystemError.
|
||
|
||
- bpo-30703: Improve signal delivery. Avoid using Py_AddPendingCall from
|
||
signal handler, to avoid calling signal-unsafe functions. The tests I'm
|
||
adding here fail without the rest of the patch, on Linux and OS X. This
|
||
means our signal delivery logic had defects (some signals could be lost).
|
||
|
||
- bpo-30765: Avoid blocking in pthread_mutex_lock() when
|
||
PyThread_acquire_lock() is asked not to block.
|
||
|
||
- bpo-31161: Make sure the 'Missing parentheses' syntax error message is
|
||
only applied to SyntaxError, not to subclasses. Patch by Martijn Pieters.
|
||
|
||
- bpo-30814: Fixed a race condition when import a submodule from a package.
|
||
|
||
- bpo-30597: ``print`` now shows expected input in custom error message when
|
||
used as a Python 2 statement. Patch by Sanyam Khurana.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-31499: xml.etree: Fix a crash when a parser is part of a reference
|
||
cycle.
|
||
|
||
- bpo-28556: typing.get_type_hints now finds the right globalns for classes
|
||
and modules by default (when no ``globalns`` was specified by the caller).
|
||
|
||
- bpo-28556: Speed improvements to the ``typing`` module. Original PRs by
|
||
Ivan Levkivskyi and Mitar.
|
||
|
||
- bpo-31544: The C accelerator module of ElementTree ignored exceptions
|
||
raised when looking up TreeBuilder target methods in XMLParser().
|
||
|
||
- bpo-31234: socket.create_connection() now fixes manually a reference
|
||
cycle: clear the variable storing the last exception on success.
|
||
|
||
- bpo-31457: LoggerAdapter objects can now be nested.
|
||
|
||
- bpo-31400: Improves SSL error handling to avoid losing error numbers.
|
||
|
||
- bpo-28958: ssl.SSLContext() now uses OpenSSL error information when a
|
||
context cannot be instantiated.
|
||
|
||
- bpo-27340: SSLSocket.sendall() now uses memoryview to create slices of
|
||
data. This fixes support for all bytes-like object. It is also more
|
||
efficient and avoids costly copies.
|
||
|
||
- bpo-31178: Fix string concatenation bug in rare error path in the
|
||
subprocess module
|
||
|
||
- bpo-31350: Micro-optimize :func:`asyncio._get_running_loop` to become up
|
||
to 10% faster.
|
||
|
||
- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
|
||
partial characters for UTF-8 input (libexpat bug 115):
|
||
https://github.com/libexpat/libexpat/issues/115
|
||
|
||
- bpo-29136: Add TLS 1.3 cipher suites and OP_NO_TLSv1_3.
|
||
|
||
- bpo-29212: Fix concurrent.futures.thread.ThreadPoolExecutor threads to
|
||
have a non repr() based thread name by default when no thread_name_prefix
|
||
is supplied. They will now identify themselves as
|
||
"ThreadPoolExecutor-y_n".
|
||
|
||
- bpo-9146: Fix a segmentation fault in _hashopenssl when standard hash
|
||
functions such as md5 are not available in the linked OpenSSL library. As
|
||
in some special FIPS-140 build environments.
|
||
|
||
- bpo-27144: The ``map()`` and ``as_completed()`` iterators in
|
||
``concurrent.futures`` now avoid keeping a reference to yielded objects.
|
||
|
||
- bpo-10746: Fix ctypes producing wrong :pep:`3118` type codes for integer
|
||
types.
|
||
|
||
- bpo-22536: The subprocess module now sets the filename when
|
||
FileNotFoundError is raised on POSIX systems due to the executable or cwd
|
||
not being found.
|
||
|
||
- bpo-31249: concurrent.futures: WorkItem.run() used by ThreadPoolExecutor
|
||
now breaks a reference cycle between an exception object and the WorkItem
|
||
object.
|
||
|
||
- bpo-31247: xmlrpc.server now explicitly breaks reference cycles when using
|
||
sys.exc_info() in code handling exceptions.
|
||
|
||
- bpo-30102: The ssl and hashlib modules now call
|
||
OPENSSL_add_all_algorithms_noconf() on OpenSSL < 1.1.0. The function
|
||
detects CPU features and enables optimizations on some CPU architectures
|
||
such as POWER8. Patch is based on research from Gustavo Serra Scalet.
|
||
|
||
- bpo-31185: Fixed miscellaneous errors in asyncio speedup module.
|
||
|
||
- bpo-31135: ttk: fix the destroy() method of LabeledScale and OptionMenu
|
||
classes. Call the parent destroy() method even if the used attribute
|
||
doesn't exist. The LabeledScale.destroy() method now also explicitly
|
||
clears label and scale attributes to help the garbage collector to destroy
|
||
all widgets.
|
||
|
||
- bpo-31107: Fix `copyreg._slotnames()` mangled attribute calculation for
|
||
classes whose name begins with an underscore. Patch by Shane Harvey.
|
||
|
||
- bpo-31061: Fixed a crash when using asyncio and threads.
|
||
|
||
- bpo-30502: Fix handling of long oids in ssl. Based on patch by Christian
|
||
Heimes.
|
||
|
||
- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
|
||
contains CR or LF. Patch by Dong-hee Na.
|
||
|
||
- bpo-30595: multiprocessing.Queue.get() with a timeout now polls its reader
|
||
in non-blocking mode if it succeeded to acquire the lock but the acquire
|
||
took longer than the timeout.
|
||
|
||
- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
|
||
builtin functions. Patch by Aaron Gallagher.
|
||
|
||
- bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
|
||
|
||
- bpo-25684: Change ``ttk.OptionMenu`` radiobuttons to be unique across
|
||
instances of ``OptionMenu``.
|
||
|
||
- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
|
||
thread completes, even if the thread was started by the same process which
|
||
created the queue.
|
||
|
||
- bpo-29854: Fix segfault in readline when using readline's history-size
|
||
option. Patch by Nir Soffer.
|
||
|
||
- bpo-30319: socket.close() now ignores ECONNRESET error.
|
||
|
||
- bpo-30828: Fix out of bounds write in
|
||
`asyncio.CFuture.remove_done_callback()`.
|
||
|
||
- bpo-30807: signal.setitimer() may disable the timer when passed a tiny
|
||
value. Tiny values (such as 1e-6) are valid non-zero values for
|
||
setitimer(), which is specified as taking microsecond-resolution
|
||
intervals. However, on some platform, our conversion routine could convert
|
||
1e-6 into a zero interval, therefore disabling the timer instead of
|
||
(re-)scheduling it.
|
||
|
||
- bpo-30441: Fix bug when modifying os.environ while iterating over it
|
||
|
||
- bpo-30532: Fix email header value parser dropping folding white space in
|
||
certain cases.
|
||
|
||
- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
|
||
with bytes-like argument.
|
||
|
||
- bpo-30746: Prohibited the '=' character in environment variable names in
|
||
``os.putenv()`` and ``os.spawn*()``.
|
||
|
||
- bpo-29755: Fixed the lgettext() family of functions in the gettext module.
|
||
They now always return bytes.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-31294: Fix incomplete code snippet in the ZeroMQSocketListener and
|
||
ZeroMQSocketHandler examples and adapt them to Python 3.
|
||
|
||
- bpo-21649: Add RFC 7525 and Mozilla server side TLS links to SSL
|
||
documentation.
|
||
|
||
- bpo-30803: Clarify doc on truth value testing. Original patch by Peter
|
||
Thomassen.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-31320: Silence traceback in test_ssl
|
||
|
||
- bpo-25674: Remove sha256.tbs-internet.com ssl test
|
||
|
||
- bpo-30715: Address ALPN callback changes for OpenSSL 1.1.0f. The latest
|
||
version behaves like OpenSSL 1.0.2 and no longer aborts handshake.
|
||
|
||
- bpo-30822: regrtest: Exclude tzdata from regrtest --all. When running the
|
||
test suite using --use=all / -u all, exclude tzdata since it makes
|
||
test_datetime too slow (15-20 min on some buildbots) which then times out
|
||
on some buildbots. Fix also regrtest command line parser to allow passing
|
||
-u extralargefile to run test_zipfile64.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-30854: Fix compile error when compiling --without-threads. Patch by
|
||
Masayuki Yamamoto.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-30389: Adds detection of Visual Studio 2017 to distutils on Windows.
|
||
|
||
- bpo-31340: Change to building with MSVC v141 (included with Visual Studio
|
||
2017)
|
||
|
||
- bpo-30581: os.cpu_count() now returns the correct number of processors on
|
||
Windows when the number of logical processors is greater than 64.
|
||
|
||
- bpo-30731: Add a missing xmlns to python.manifest so that it matches the
|
||
schema.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-31493: IDLE code context -- fix code update and font update timers.
|
||
Canceling timers prevents a warning message when test_idle completes.
|
||
|
||
- bpo-31488: IDLE - Update non-key options in former extension classes. When
|
||
applying configdialog changes, call .reload for each feature class. Change
|
||
ParenMatch so updated options affect existing instances attached to
|
||
existing editor windows.
|
||
|
||
- bpo-31477: IDLE - Improve rstrip entry in doc. Strip trailing whitespace
|
||
strips more than blank spaces. Multiline string literals are not skipped.
|
||
|
||
- bpo-31480: IDLE - make tests pass with zzdummy extension disabled by
|
||
default.
|
||
|
||
- bpo-31421: Document how IDLE runs tkinter programs. IDLE calls tcl/tk
|
||
update in the background in order to make live interaction and
|
||
experimentation with tkinter applications much easier.
|
||
|
||
- bpo-31414: IDLE -- fix tk entry box tests by deleting first. Adding to an
|
||
int entry is not the same as deleting and inserting because int('') will
|
||
fail.
|
||
|
||
- bpo-31051: Rearrange IDLE configdialog GenPage into Window, Editor, and
|
||
Help sections.
|
||
|
||
- bpo-30617: IDLE - Add docstrings and tests for outwin subclass of editor.
|
||
Move some data and functions from the class to module level. Patch by
|
||
Cheryl Sabella.
|
||
|
||
- bpo-31287: IDLE - Do not modify tkinter.message in test_configdialog.
|
||
|
||
- bpo-27099: Convert IDLE's built-in 'extensions' to regular features. About
|
||
10 IDLE features were implemented as supposedly optional extensions. Their
|
||
different behavior could be confusing or worse for users and not good for
|
||
maintenance. Hence the conversion. The main difference for users is that
|
||
user configurable key bindings for builtin features are now handled
|
||
uniformly. Now, editing a binding in a keyset only affects its value in
|
||
the keyset. All bindings are defined together in the system-specific
|
||
default keysets in config-extensions.def. All custom keysets are saved as
|
||
a whole in config-extension.cfg. All take effect as soon as one clicks
|
||
Apply or Ok. The affected events are '<<force-open-completions>>',
|
||
'<<expand-word>>', '<<force-open-calltip>>', '<<flash-paren>>',
|
||
'<<format-paragraph>>', '<<run-module>>', '<<check-module>>', and
|
||
'<<zoom-height>>'. Any (global) customizations made before 3.6.3 will not
|
||
affect their keyset-specific customization after 3.6.3. and vice versa.
|
||
Initial patch by Charles Wohlganger.
|
||
|
||
- bpo-31206: IDLE: Factor HighPage(Frame) class from ConfigDialog. Patch by
|
||
Cheryl Sabella.
|
||
|
||
- bpo-31001: Add tests for configdialog highlight tab. Patch by Cheryl
|
||
Sabella.
|
||
|
||
- bpo-31205: IDLE: Factor KeysPage(Frame) class from ConfigDialog. The
|
||
slightly modified tests continue to pass. Patch by Cheryl Sabella.
|
||
|
||
- bpo-31130: IDLE -- stop leaks in test_configdialog. Initial patch by
|
||
Victor Stinner.
|
||
|
||
- bpo-31002: Add tests for configdialog keys tab. Patch by Cheryl Sabella.
|
||
|
||
- bpo-19903: IDLE: Calltips use `inspect.signature` instead of
|
||
`inspect.getfullargspec`. This improves calltips for builtins converted to
|
||
use Argument Clinic. Patch by Louie Lu.
|
||
|
||
- bpo-31083: IDLE - Add an outline of a TabPage class in configdialog.
|
||
Update existing classes to match outline. Initial patch by Cheryl Sabella.
|
||
|
||
- bpo-31050: Factor GenPage(Frame) class from ConfigDialog. The slightly
|
||
modified tests continue to pass. Patch by Cheryl Sabella.
|
||
|
||
- bpo-31004: IDLE - Factor FontPage(Frame) class from ConfigDialog. Slightly
|
||
modified tests continue to pass. Fix General tests. Patch mostly by Cheryl
|
||
Sabella.
|
||
|
||
- bpo-30781: IDLE - Use ttk widgets in ConfigDialog. Patches by Terry Jan
|
||
Reedy and Cheryl Sabella.
|
||
|
||
- bpo-31060: IDLE - Finish rearranging methods of ConfigDialog Grouping
|
||
methods pertaining to each tab and the buttons will aid writing tests and
|
||
improving the tabs and will enable splitting the groups into classes.
|
||
|
||
- bpo-30853: IDLE -- Factor a VarTrace class out of ConfigDialog. Instance
|
||
tracers manages pairs consisting of a tk variable and a callback function.
|
||
When tracing is turned on, setting the variable calls the function. Test
|
||
coverage for the new class is 100%.
|
||
|
||
- bpo-31003: IDLE: Add more tests for General tab.
|
||
|
||
- bpo-30993: IDLE - Improve configdialog font page and tests. In
|
||
configdialog: Document causal pathways in create_font_tab docstring.
|
||
Simplify some attribute names. Move set_samples calls to var_changed_font
|
||
(idea from Cheryl Sabella). Move related functions to positions after the
|
||
create widgets function. In test_configdialog: Fix test_font_set so not
|
||
order dependent. Fix renamed test_indent_scale so it tests the widget.
|
||
Adjust tests for movement of set_samples call. Add tests for load
|
||
functions. Put all font tests in one class and tab indent tests in
|
||
another. Except for two lines, these tests completely cover the related
|
||
functions.
|
||
|
||
- bpo-30981: IDLE -- Add more configdialog font page tests.
|
||
|
||
- bpo-28523: IDLE: replace 'colour' with 'color' in configdialog.
|
||
|
||
- bpo-30917: Add tests for idlelib.config.IdleConf. Increase coverage from
|
||
46% to 96%. Patch by Louie Lu.
|
||
|
||
- bpo-30934: Document coverage details for idlelib tests. Add section to
|
||
idlelib/idle-test/README.txt. Include check that branches are taken both
|
||
ways. Exclude IDLE-specific code that does not run during unit tests.
|
||
|
||
- bpo-30913: IDLE: Document ConfigDialog tk Vars, methods, and widgets in
|
||
docstrings This will facilitate improving the dialog and splitting up the
|
||
class. Original patch by Cheryl Sabella.
|
||
|
||
- bpo-30899: IDLE: Add tests for ConfigParser subclasses in config. Patch by
|
||
Louie Lu.
|
||
|
||
- bpo-30881: IDLE: Add docstrings to browser.py. Patch by Cheryl Sabella.
|
||
|
||
- bpo-30851: IDLE: Remove unused variables in configdialog. One is a
|
||
duplicate, one is set but cannot be altered by users. Patch by Cheryl
|
||
Sabella.
|
||
|
||
- bpo-30870: IDLE: In Settings dialog, select font with Up, Down keys as
|
||
well as mouse. Initial patch by Louie Lu.
|
||
|
||
- bpo-8231: IDLE: call config.IdleConf.GetUserCfgDir only once.
|
||
|
||
- bpo-30779: IDLE: Factor ConfigChanges class from configdialog, put in
|
||
config; test. * In config, put dump test code in a function; run it and
|
||
unittest in 'if __name__ == '__main__'. * Add class config.ConfigChanges
|
||
based on changes_class_v4.py on bpo issue. * Add class
|
||
test_config.ChangesTest, partly using configdialog_tests_v1.py. * Revise
|
||
configdialog to use ConfigChanges; see tracker msg297804. * Revise
|
||
test_configdialog to match configdialog changes. * Remove configdialog
|
||
functions unused or moved to ConfigChanges. Cheryl Sabella contributed
|
||
parts of the patch.
|
||
|
||
- bpo-30777: IDLE: configdialog - Add docstrings and fix comments. Patch by
|
||
Cheryl Sabella.
|
||
|
||
- bpo-30495: IDLE: Improve textview with docstrings, PEP8 names, and more
|
||
tests. Patch by Cheryl Sabella.
|
||
|
||
- bpo-30723: IDLE: Make several improvements to parenmatch. Add 'parens'
|
||
style to highlight both opener and closer. Make 'default' style, which is
|
||
not default, a synonym for 'opener'. Make time-delay work the same with
|
||
all styles. Add help for config dialog extensions tab, including help for
|
||
parenmatch. Add new tests. Original patch by Charles Wohlganger.
|
||
|
||
- bpo-30674: IDLE: add docstrings to grep module. Patch by Cheryl Sabella
|
||
|
||
- bpo-21519: IDLE's basic custom key entry dialog now detects duplicates
|
||
properly. Original patch by Saimadhav Heblikar.
|
||
|
||
- bpo-29910: IDLE no longer deletes a character after commenting out a
|
||
region by a key shortcut. Add ``return 'break'`` for this and other
|
||
potential conflicts between IDLE and default key bindings.
|
||
|
||
- bpo-30728: Review and change idlelib.configdialog names. Lowercase method
|
||
and attribute names. Replace 'colour' with 'color', expand overly cryptic
|
||
names, delete unneeded underscores. Replace ``import *`` with specific
|
||
imports. Patches by Cheryl Sabella.
|
||
|
||
- bpo-6739: IDLE: Verify user-entered key sequences by trying to bind them
|
||
with tk. Add tests for all 3 validation functions. Original patch by G
|
||
Polo. Tests added by Cheryl Sabella.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-30983: gdb integration commands (py-bt, etc.) work on optimized shared
|
||
builds now, too. :pep:`523` introduced _PyEval_EvalFrameDefault which
|
||
inlines PyEval_EvalFrameEx on non-debug shared builds. This broke the
|
||
ability to use py-bt, py-up, and a few other Python-specific gdb
|
||
integrations. The problem is fixed by only looking for
|
||
_PyEval_EvalFrameDefault frames in python-gdb.py. Original patch by Bruno
|
||
"Polaco" Penteado.
|
||
|
||
|
||
What's New in Python 3.6.2 final?
|
||
=================================
|
||
|
||
*Release date: 2017-07-17*
|
||
|
||
No changes since release candidate 2
|
||
|
||
|
||
|
||
What's New in Python 3.6.2 release candidate 2?
|
||
===============================================
|
||
|
||
*Release date: 2017-07-07*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-30730: Prevent environment variables injection in subprocess on
|
||
Windows. Prevent passing other environment variables and command
|
||
arguments.
|
||
|
||
- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
|
||
security vulnerabilities including: CVE-2017-9233 (External entity
|
||
infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
|
||
CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
|
||
CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
|
||
CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
|
||
impact Python, since Python already gets entropy from the OS to set the
|
||
expat secret using ``XML_SetHashSalt()``.
|
||
|
||
- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
|
||
example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
|
||
``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
|
||
authentication (``login@host``).
|
||
|
||
|
||
What's New in Python 3.6.2 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2017-06-17*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
|
||
CVE-2016-0718 and CVE-2016-4472. See
|
||
https://sourceforge.net/p/expat/bugs/537/ for more information.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-30682: Removed a too-strict assertion that failed for certain
|
||
f-strings, such as eval("f'\\\n'") and eval("f'\\\r'").
|
||
|
||
- bpo-30604: Move co_extra_freefuncs to not be per-thread to avoid crashes
|
||
|
||
- bpo-29104: Fixed parsing backslashes in f-strings.
|
||
|
||
- bpo-27945: Fixed various segfaults with dict when input collections are
|
||
mutated during searching, inserting or comparing. Based on patches by
|
||
Duane Griffin and Tim Mitchell.
|
||
|
||
- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
|
||
non-interned attribute names. Based on patch by Eryk Sun.
|
||
|
||
- bpo-30039: If a KeyboardInterrupt happens when the interpreter is in the
|
||
middle of resuming a chain of nested 'yield from' or 'await' calls, it's
|
||
now correctly delivered to the innermost frame.
|
||
|
||
- bpo-12414: sys.getsizeof() on a code object now returns the sizes which
|
||
includes the code struct and sizes of objects which it references. Patch
|
||
by Dong-hee Na.
|
||
|
||
- bpo-29949: Fix memory usage regression of set and frozenset object.
|
||
|
||
- bpo-29935: Fixed error messages in the index() method of tuple, list and
|
||
deque when pass indices of wrong type.
|
||
|
||
- bpo-29859: Show correct error messages when any of the pthread_* calls in
|
||
thread_pthread.h fails.
|
||
|
||
- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
|
||
:exc:`OverflowError`.
|
||
|
||
- bpo-29600: Fix wrapping coroutine return values in StopIteration.
|
||
|
||
- bpo-28856: Fix an oversight that %b format for bytes should support
|
||
objects follow the buffer protocol.
|
||
|
||
- bpo-29714: Fix a regression that bytes format may fail when containing
|
||
zero bytes inside.
|
||
|
||
- bpo-29478: If max_line_length=None is specified while using the Compat32
|
||
policy, it is no longer ignored. Patch by Mircea Cosbuc.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-30616: Functional API of enum allows to create empty enums. Patched by
|
||
Dong-hee Na
|
||
|
||
- bpo-30038: Fix race condition between signal delivery and wakeup file
|
||
descriptor. Patch by Nathaniel Smith.
|
||
|
||
- bpo-23894: lib2to3 now recognizes ``rb'...'`` and ``f'...'`` strings.
|
||
|
||
- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
|
||
reference cycle to not keep objects alive longer than expected.
|
||
|
||
- bpo-30149: inspect.signature() now supports callables with
|
||
variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
|
||
Na.
|
||
|
||
- bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases
|
||
when a package is only shipped with bytecodes. Patch by Alexandru
|
||
Ardelean.
|
||
|
||
- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
|
||
Patch by Sanjay Sundaresan.
|
||
|
||
- bpo-30605: re.compile() no longer raises a BytesWarning when compiling a
|
||
bytes instance with misplaced inline modifier. Patch by Roy Williams.
|
||
|
||
- bpo-24484: Avoid race condition in multiprocessing cleanup (#2159)
|
||
|
||
- bpo-28994: The traceback no longer displayed for SystemExit raised in a
|
||
callback registered by atexit.
|
||
|
||
- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
|
||
called.
|
||
|
||
- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
|
||
support for ContextManager on all versions. Original PRs by Jelle Zijlstra
|
||
and Ivan Levkivskyi
|
||
|
||
- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
|
||
implementation. Patch by Michaël Sghaïer.
|
||
|
||
- bpo-29743: Closing transport during handshake process leaks open socket.
|
||
Patch by Nikolay Kim
|
||
|
||
- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
|
||
Sornay.
|
||
|
||
- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
|
||
EINVAL on stdin.write() if the child process is still running but closed
|
||
the pipe.
|
||
|
||
- bpo-29822: inspect.isabstract() now works during __init_subclass__. Patch
|
||
by Nate Soares.
|
||
|
||
- bpo-29581: ABCMeta.__new__ now accepts ``**kwargs``, allowing abstract
|
||
base classes to use keyword parameters in __init_subclass__. Patch by Nate
|
||
Soares.
|
||
|
||
- bpo-30557: faulthandler now correctly filters and displays exception codes
|
||
on Windows
|
||
|
||
- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
|
||
handle IPv6 addresses.
|
||
|
||
- bpo-29960: Preserve generator state when _random.Random.setstate() raises
|
||
an exception. Patch by Bryan Olson.
|
||
|
||
- bpo-30414: multiprocessing.Queue._feed background running thread do not
|
||
break from main loop on exception.
|
||
|
||
- bpo-30003: Fix handling escape characters in HZ codec. Based on patch by
|
||
Ma Lin.
|
||
|
||
- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
|
||
and *forkserver* start methods.
|
||
|
||
- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
|
||
(code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
|
||
This error occurs sometimes on SSL connections.
|
||
|
||
- bpo-30375: Warnings emitted when compile a regular expression now always
|
||
point to the line in the user code. Previously they could point into
|
||
inners of the re module if emitted from inside of groups or conditionals.
|
||
|
||
- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
|
||
coroutine and the coroutine returned without any more ``await``.
|
||
|
||
- bpo-30266: contextlib.AbstractContextManager now supports
|
||
anti-registration by setting __enter__ = None or __exit__ = None,
|
||
following the pattern introduced in bpo-25958. Patch by Jelle Zijlstra.
|
||
|
||
- bpo-30298: Weaken the condition of deprecation warnings for inline
|
||
modifiers. Now allowed several subsequential inline modifiers at the start
|
||
of the pattern (e.g. ``'(?i)(?s)...'``). In verbose mode whitespaces and
|
||
comments now are allowed before and between inline modifiers (e.g. ``'(?x)
|
||
(?i) (?s)...'``).
|
||
|
||
- bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma
|
||
Lin.
|
||
|
||
- bpo-26293: Change resulted because of zipfile breakage. (See also:
|
||
bpo-29094)
|
||
|
||
- bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
|
||
Misusing them could cause memory leaks or crashes. Now scanner and
|
||
encoder objects are completely initialized in the __new__ methods.
|
||
|
||
- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
|
||
when Ctrl-C is received.
|
||
|
||
- bpo-28556: Various updates to typing module: add typing.NoReturn type, use
|
||
WrapperDescriptorType, minor bug-fixes. Original PRs by Jim
|
||
Fasarakis-Hilliard and Ivan Levkivskyi.
|
||
|
||
- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
|
||
|
||
- bpo-30070: Fixed leaks and crashes in errors handling in the parser
|
||
module.
|
||
|
||
- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
|
||
readline() or __next__() respectively return non-sizeable object. Fixed
|
||
possible other errors caused by not checking results of PyObject_Size(),
|
||
PySequence_Size(), or PyMapping_Size().
|
||
|
||
- bpo-30017: Allowed calling the close() method of the zip entry writer
|
||
object multiple times. Writing to a closed writer now always produces a
|
||
ValueError.
|
||
|
||
- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
|
||
is present.
|
||
|
||
- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
|
||
Patch by Armin Rigo.
|
||
|
||
- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
|
||
contextlib.contextmanager. Patch by Siddharth Velankar.
|
||
|
||
- bpo-29998: Pickling and copying ImportError now preserves name and path
|
||
attributes.
|
||
|
||
- bpo-29953: Fixed memory leaks in the replace() method of datetime and time
|
||
objects when pass out of bound fold argument.
|
||
|
||
- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
|
||
long runs of empty iterables.
|
||
|
||
- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
|
||
and wrong types.
|
||
|
||
- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
|
||
exception at the very first of an iterable may swallow the exception or
|
||
make the program hang. Patch by Davin Potts and Xiang Zhang.
|
||
|
||
- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
|
||
the OS gives priority to errors such as EACCES over EEXIST.
|
||
|
||
- bpo-29861: Release references to tasks, their arguments and their results
|
||
as soon as they are finished in multiprocessing.Pool.
|
||
|
||
- bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
|
||
Patch by Christophe Zeitouny.
|
||
|
||
- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
|
||
|
||
- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
|
||
are not strings. Patch by Michael Seifert.
|
||
|
||
- bpo-29742: get_extra_info() raises exception if get called on closed ssl
|
||
transport. Patch by Nikolay Kim.
|
||
|
||
- bpo-8256: Fixed possible failing or crashing input() if attributes
|
||
"encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
|
||
strings.
|
||
|
||
- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
|
||
big intables (objects that have __int__) as elements. Patch by Oren
|
||
Milman.
|
||
|
||
- bpo-28231: The zipfile module now accepts path-like objects for external
|
||
paths.
|
||
|
||
- bpo-26915: index() and count() methods of collections.abc.Sequence now
|
||
check identity before checking equality when do comparisons.
|
||
|
||
- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
|
||
exception) to exception(s) raised in the dispatched methods. Patch by Petr
|
||
Motejlek.
|
||
|
||
- bpo-30177: path.resolve(strict=False) no longer cuts the path after the
|
||
first element not present in the filesystem. Patch by Antoine Pietri.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-15786: Fix several problems with IDLE's autocompletion box. The
|
||
following should now work: clicking on selection box items; using the
|
||
scrollbar; selecting an item by hitting Return. Hangs on MacOSX should no
|
||
longer happen. Patch by Louie Lu.
|
||
|
||
- bpo-25514: Add doc subsubsection about IDLE failure to start. Popup
|
||
no-connection message directs users to this section.
|
||
|
||
- bpo-30642: Fix reference leaks in IDLE tests. Patches by Louie Lu and
|
||
Terry Jan Reedy.
|
||
|
||
- bpo-30495: Add docstrings for textview.py and use PEP8 names. Patches by
|
||
Cheryl Sabella and Terry Jan Reedy.
|
||
|
||
- bpo-30290: Help-about: use pep8 names and add tests. Increase coverage to
|
||
100%. Patches by Louie Lu, Cheryl Sabella, and Terry Jan Reedy.
|
||
|
||
- bpo-30303: Add _utest option to textview; add new tests. Increase coverage
|
||
to 100%. Patches by Louie Lu and Terry Jan Reedy.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-27867: Function PySlice_GetIndicesEx() no longer replaced with a macro
|
||
if Py_LIMITED_API is not set.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-29941: Add ``--with-assertions`` configure flag to explicitly enable C
|
||
``assert()`` checks. Defaults to off. ``--with-pydebug`` implies
|
||
``--with-assertions``.
|
||
|
||
- bpo-28787: Fix out-of-tree builds of Python when configured with
|
||
``--with--dtrace``.
|
||
|
||
- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
|
||
``make install`` and some other make targets when configured with
|
||
``--enable-optimizations``.
|
||
|
||
- bpo-23404: Don't regenerate generated files based on file modification
|
||
time anymore: the action is now explicit. Replace ``make touch`` with
|
||
``make regen-all``.
|
||
|
||
- bpo-29643: Fix ``--enable-optimization`` didn't work.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-30176: Add missing attribute related constants in curses
|
||
documentation.
|
||
|
||
- bpo-30052: the link targets for :func:`bytes` and :func:`bytearray` are
|
||
now their respective type definitions, rather than the corresponding
|
||
builtin function entries. Use :ref:`bytes <func-bytes>` and
|
||
:ref:`bytearray <func-bytearray>` to reference the latter. In order to
|
||
ensure this and future cross-reference updates are applied automatically,
|
||
the daily documentation builds now disable the default output caching
|
||
features in Sphinx.
|
||
|
||
- bpo-26985: Add missing info of code object in inspect documentation.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-29367: python-gdb.py now supports also ``method-wrapper``
|
||
(``wrapperobject``) objects.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-30357: test_thread: setUp() now uses support.threading_setup() and
|
||
support.threading_cleanup() to wait until threads complete to avoid random
|
||
side effects on following tests. Initial patch written by Grzegorz
|
||
Grzywacz.
|
||
|
||
- bpo-30197: Enhanced functions swap_attr() and swap_item() in the
|
||
test.support module. They now work when delete replaced attribute or item
|
||
inside the with statement. The old value of the attribute or item (or
|
||
None if it doesn't exist) now will be assigned to the target of the "as"
|
||
clause, if there is one.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-30687: Locate msbuild.exe on Windows when building rather than
|
||
vcvarsall.bat
|
||
|
||
- bpo-30450: The build process on Windows no longer depends on Subversion,
|
||
instead pulling external code from GitHub via a Python script. If Python
|
||
3.6 is not found on the system (via ``py -3.6``), NuGet is used to
|
||
download a copy of 32-bit Python.
|
||
|
||
|
||
What's New in Python 3.6.1 final?
|
||
=================================
|
||
|
||
*Release date: 2017-03-21*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-29723: The ``sys.path[0]`` initialization change for bpo-29139 caused
|
||
a regression by revealing an inconsistency in how sys.path is initialized
|
||
when executing ``__main__`` from a zipfile, directory, or other import
|
||
location. The interpreter now consistently avoids ever adding the import
|
||
location's parent directory to ``sys.path``, and ensures no other
|
||
``sys.path`` entries are inadvertently modified when inserting the import
|
||
location named on the command line.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-27593: fix format of git information used in sys.version
|
||
|
||
- Fix incompatible comment in python.h
|
||
|
||
|
||
What's New in Python 3.6.1 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2017-03-04*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-28893: Set correct __cause__ for errors about invalid awaitables
|
||
returned from __aiter__ and __anext__.
|
||
|
||
- bpo-29683: Fixes to memory allocation in _PyCode_SetExtra. Patch by Brian
|
||
Coleman.
|
||
|
||
- bpo-29684: Fix minor regression of PyEval_CallObjectWithKeywords. It
|
||
should raise TypeError when kwargs is not a dict. But it might cause segv
|
||
when args=NULL and kwargs is not a dict.
|
||
|
||
- bpo-28598: Support __rmod__ for subclasses of str being called before
|
||
str.__mod__. Patch by Martijn Pieters.
|
||
|
||
- bpo-29607: Fix stack_effect computation for CALL_FUNCTION_EX. Patch by
|
||
Matthieu Dartiailh.
|
||
|
||
- bpo-29602: Fix incorrect handling of signed zeros in complex constructor
|
||
for complex subclasses and for inputs having a __complex__ method. Patch
|
||
by Serhiy Storchaka.
|
||
|
||
- bpo-29347: Fixed possibly dereferencing undefined pointers when creating
|
||
weakref objects.
|
||
|
||
- bpo-29438: Fixed use-after-free problem in key sharing dict.
|
||
|
||
- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
|
||
|
||
- bpo-29337: Fixed possible BytesWarning when compare the code objects.
|
||
Warnings could be emitted at compile time.
|
||
|
||
- bpo-29327: Fixed a crash when pass the iterable keyword argument to
|
||
sorted().
|
||
|
||
- bpo-29034: Fix memory leak and use-after-free in os module
|
||
(path_converter).
|
||
|
||
- bpo-29159: Fix regression in bytes(x) when x.__index__() raises Exception.
|
||
|
||
- bpo-28932: Do not include <sys/random.h> if it does not exist.
|
||
|
||
- bpo-25677: Correct the positioning of the syntax error caret for indented
|
||
blocks. Based on patch by Michael Layzell.
|
||
|
||
- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
|
||
form.
|
||
|
||
- bpo-26919: On Android, operating system data is now always encoded/decoded
|
||
to/from UTF-8, instead of the locale encoding to avoid inconsistencies
|
||
with os.fsencode() and os.fsdecode() which are already using UTF-8.
|
||
|
||
- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
|
||
bug triggerable by a monkey-patched len() function.
|
||
|
||
- bpo-28739: f-string expressions are no longer accepted as docstrings and
|
||
by ast.literal_eval() even if they do not include expressions.
|
||
|
||
- bpo-28512: Fixed setting the offset attribute of SyntaxError by
|
||
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
|
||
|
||
- bpo-28918: Fix the cross compilation of xxlimited when Python has been
|
||
built with Py_DEBUG defined.
|
||
|
||
- bpo-28731: Optimize _PyDict_NewPresized() to create correct size dict.
|
||
Improve speed of dict literal with constant keys up to 30%.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-29169: Update zlib to 1.2.11.
|
||
|
||
- bpo-29623: Allow use of path-like object as a single argument in
|
||
ConfigParser.read(). Patch by David Ellis.
|
||
|
||
- bpo-28963: Fix out of bound iteration in
|
||
asyncio.Future.remove_done_callback implemented in C.
|
||
|
||
- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
|
||
before all pipes are closed.
|
||
|
||
- bpo-29271: Fix Task.current_task and Task.all_tasks implemented in C to
|
||
accept None argument as their pure Python implementation.
|
||
|
||
- bpo-29703: Fix asyncio to support instantiation of new event loops in
|
||
child processes.
|
||
|
||
- bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
|
||
|
||
- bpo-28624: Add a test that checks that cwd parameter of Popen() accepts
|
||
PathLike objects. Patch by Sayan Chowdhury.
|
||
|
||
- bpo-28518: Start a transaction implicitly before a DML statement. Patch by
|
||
Aviv Palivoda.
|
||
|
||
- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
|
||
longer affects a partial object after creation.
|
||
|
||
- bpo-29110: Fix file object leak in aifc.open() when file is given as a
|
||
filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
|
||
|
||
- bpo-28556: Various updates to typing module: typing.Counter,
|
||
typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
|
||
Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
|
||
|
||
- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
|
||
3.6.0: check minimum and maximum years.
|
||
|
||
- bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when
|
||
used with a rare combination of multiprocessing and custom codecs.
|
||
|
||
- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
|
||
|
||
- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
|
||
match object. Based on patch by WGH.
|
||
|
||
- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
|
||
to a stopped instead of terminated state (ex: when under ptrace).
|
||
|
||
- bpo-29290: Fix a regression in argparse that help messages would wrap at
|
||
non-breaking spaces.
|
||
|
||
- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
|
||
|
||
- bpo-29316: Restore the provisional status of typing module, add
|
||
corresponding note to documentation. Patch by Ivan L.
|
||
|
||
- bpo-29219: Fixed infinite recursion in the repr of uninitialized
|
||
ctypes.CDLL instances.
|
||
|
||
- bpo-29011: Fix an important omission by adding Deque to the typing module.
|
||
|
||
- bpo-28969: Fixed race condition in C implementation of
|
||
functools.lru_cache. KeyError could be raised when cached function with
|
||
full cache was simultaneously called from different threads with the same
|
||
uncached arguments.
|
||
|
||
- bpo-29142: In urllib.request, suffixes in no_proxy environment variable
|
||
with leading dots could match related hostnames again (e.g. .b.c matches
|
||
a.b.c). Patch by Milan Oberkirch.
|
||
|
||
- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
|
||
anymore. Patch written by Jiajun Huang.
|
||
|
||
- bpo-29203: functools.lru_cache() now respects :pep:`468` and preserves the
|
||
order of keyword arguments. f(a=1, b=2) is now cached separately from
|
||
f(b=2, a=1) since both calls could potentially give different results.
|
||
|
||
- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
|
||
context. Patch by Sam Breese.
|
||
|
||
- bpo-29094: Offsets in a ZIP file created with extern file object and modes
|
||
"w" and "x" now are relative to the start of the file.
|
||
|
||
- bpo-29085: Allow random.Random.seed() to use high quality OS randomness
|
||
rather than the pid and time.
|
||
|
||
- bpo-29061: Fixed bug in secrets.randbelow() which would hang when given a
|
||
negative input. Patch by Brendan Donegan.
|
||
|
||
- bpo-29079: Prevent infinite loop in pathlib.resolve() on Windows
|
||
|
||
- bpo-13051: Fixed recursion errors in large or resized
|
||
curses.textpad.Textbox. Based on patch by Tycho Andersen.
|
||
|
||
- bpo-29119: Fix weakrefs in the pure python version of
|
||
collections.OrderedDict move_to_end() method. Contributed by Andra
|
||
Bogildea.
|
||
|
||
- bpo-9770: curses.ascii predicates now work correctly with negative
|
||
integers.
|
||
|
||
- bpo-28427: old keys should not remove new values from WeakValueDictionary
|
||
when collecting from another thread.
|
||
|
||
- bpo-28923: Remove editor artifacts from Tix.py.
|
||
|
||
- bpo-29055: Neaten-up empty population error on random.choice() by
|
||
suppressing the upstream exception.
|
||
|
||
- bpo-28871: Fixed a crash when deallocate deep ElementTree.
|
||
|
||
- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
|
||
WeakValueDictionary.pop() when a GC collection happens in another thread.
|
||
|
||
- bpo-20191: Fixed a crash in resource.prlimit() when passing a sequence
|
||
that doesn't own its elements as limits.
|
||
|
||
- bpo-28779: multiprocessing.set_forkserver_preload() would crash the
|
||
forkserver process if a preloaded module instantiated some multiprocessing
|
||
objects such as locks.
|
||
|
||
- bpo-28847: dbm.dumb now supports reading read-only files and no longer
|
||
writes the index file when it is not changed.
|
||
|
||
- bpo-26937: The chown() method of the tarfile.TarFile class does not fail
|
||
now when the grp module cannot be imported, as for example on Android
|
||
platforms.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-29071: IDLE colors f-string prefixes (but not invalid ur prefixes).
|
||
|
||
- bpo-28572: Add 10% to coverage of IDLE's test_configdialog. Update and
|
||
augment description of the configuration system.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-29579: Removes readme.txt from the installer
|
||
|
||
- bpo-29326: Ignores blank lines in ._pth files (Patch by Alexey Izbyshev)
|
||
|
||
- bpo-28164: Correctly handle special console filenames (patch by Eryk Sun)
|
||
|
||
- bpo-29409: Implement :pep:`529` for io.FileIO (Patch by Eryk Sun)
|
||
|
||
- bpo-29392: Prevent crash when passing invalid arguments into msvcrt
|
||
module.
|
||
|
||
- bpo-25778: winreg does not truncate string correctly (Patch by Eryk Sun)
|
||
|
||
- bpo-28896: Deprecate WindowsRegistryFinder and disable it by default.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if
|
||
Py_LIMITED_API is not set or set to the value between 0x03050400 and
|
||
0x03060000 (not including) or 0x03060100 or higher.
|
||
|
||
- bpo-29083: Fixed the declaration of some public API functions.
|
||
PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
|
||
limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
|
||
Py_BuildValue() were not available in limited API of version < 3.3 when
|
||
PY_SSIZE_T_CLEAN is defined.
|
||
|
||
- bpo-29058: All stable API extensions added after Python 3.2 are now
|
||
available only when Py_LIMITED_API is set to the PY_VERSION_HEX value of
|
||
the minimum Python version supporting this API.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-28929: Link the documentation to its source file on GitHub.
|
||
|
||
- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
|
||
to aiosmtpd, a third-party asyncio-based replacement.
|
||
|
||
- bpo-26355: Add canonical header link on each page to corresponding major
|
||
version of the documentation. Patch by Matthias Bussonnier.
|
||
|
||
- bpo-29349: Fix Python 2 syntax in code for building the documentation.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip
|
||
some tests of select.poll when running on macOS due to unresolved issues
|
||
with the underlying system poll function on some macOS versions.
|
||
|
||
- bpo-29571: to match the behaviour of the ``re.LOCALE`` flag,
|
||
test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)``
|
||
to determine the candidate encoding for the test regex (allowing it to
|
||
correctly skip the test when the default locale encoding is a multi-byte
|
||
encoding)
|
||
|
||
- bpo-28950: Disallow -j0 to be combined with -T/-l in regrtest command line
|
||
arguments.
|
||
|
||
- bpo-28683: Fix the tests that bind() a unix socket and raise
|
||
PermissionError on Android for a non-root user.
|
||
|
||
- bpo-26939: Add the support.setswitchinterval() function to fix
|
||
test_functools hanging on the Android armv7 qemu emulator.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-27593: sys.version and the platform module python_build(),
|
||
python_branch(), and python_revision() functions now use git information
|
||
rather than hg when building from a repo.
|
||
|
||
- bpo-29572: Update Windows build and OS X installers to use OpenSSL 1.0.2k.
|
||
|
||
- bpo-26851: Set Android compilation and link flags.
|
||
|
||
- bpo-28768: Fix implicit declaration of function _setmode. Patch by
|
||
Masayuki Yamamoto
|
||
|
||
- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
|
||
|
||
- bpo-23903: Added missed names to PC/python3.def.
|
||
|
||
- bpo-28762: lockf() is available on Android API level 24, but the F_LOCK
|
||
macro is not defined in android-ndk-r13.
|
||
|
||
- bpo-28538: Fix the compilation error that occurs because if_nameindex() is
|
||
available on Android API level 24, but the if_nameindex structure is not
|
||
defined.
|
||
|
||
- bpo-20211: Do not add the directory for installing C header files and the
|
||
directory for installing object code libraries to the cross compilation
|
||
search paths. Original patch by Thomas Petazzoni.
|
||
|
||
- bpo-28849: Do not define sys.implementation._multiarch on Android.
|
||
|
||
|
||
What's New in Python 3.6.0 final?
|
||
=================================
|
||
|
||
*Release date: 2016-12-23*
|
||
|
||
No changes since release candidate 2
|
||
|
||
|
||
|
||
What's New in Python 3.6.0 release candidate 2?
|
||
===============================================
|
||
|
||
*Release date: 2016-12-16*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
|
||
not convert combined table into split table. Patch written by INADA Naoki.
|
||
|
||
- bpo-28990: Fix asyncio SSL hanging if connection is closed before
|
||
handshake is completed. (Patch by HoHo-Ho)
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-28770: Fix python-gdb.py for fastcalls.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-28896: Deprecate WindowsRegistryFinder.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-28898: Prevent gdb build errors due to HAVE_LONG_LONG redefinition.
|
||
|
||
|
||
What's New in Python 3.6.0 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2016-12-06*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-23722: Rather than silently producing a class that doesn't support
|
||
zero-argument ``super()`` in methods, failing to pass the new
|
||
``__classcell__`` namespace entry up to ``type.__new__`` now results in a
|
||
``DeprecationWarning`` and a class that supports zero-argument
|
||
``super()``.
|
||
|
||
- bpo-28797: Modifying the class __dict__ inside the __set_name__ method of
|
||
a descriptor that is used inside that class no longer prevents calling the
|
||
__set_name__ method of other descriptors.
|
||
|
||
- bpo-28782: Fix a bug in the implementation ``yield from`` when checking if
|
||
the next instruction is YIELD_FROM. Regression introduced by WORDCODE
|
||
(issue #26647).
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-27030: Unknown escapes in re.sub() replacement template are allowed
|
||
again. But they still are deprecated and will be disabled in 3.7.
|
||
|
||
- bpo-28835: Fix a regression introduced in warnings.catch_warnings(): call
|
||
warnings.showwarning() if it was overridden inside the context manager.
|
||
|
||
- bpo-27172: To assist with upgrades from 2.7, the previously documented
|
||
deprecation of ``inspect.getfullargspec()`` has been reversed. This
|
||
decision may be revisited again after the Python 2.7 branch is no longer
|
||
officially supported.
|
||
|
||
- bpo-26273: Add new :data:`socket.TCP_CONGESTION` (Linux 2.6.13) and
|
||
:data:`socket.TCP_USER_TIMEOUT` (Linux 2.6.37) constants. Patch written by
|
||
Omar Sandoval.
|
||
|
||
- bpo-24142: Reading a corrupt config file left configparser in an invalid
|
||
state. Original patch by Florian Höch.
|
||
|
||
- bpo-28843: Fix asyncio C Task to handle exceptions __traceback__.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-23722: The data model reference and the porting section in the What's
|
||
New guide now cover the additional ``__classcell__`` handling needed for
|
||
custom metaclasses to fully support :pep:`487` and zero-argument
|
||
``super()``.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-28023: Fix python-gdb.py didn't support new dict implementation.
|
||
|
||
|
||
What's New in Python 3.6.0 beta 4?
|
||
==================================
|
||
|
||
*Release date: 2016-11-21*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-28532: Show sys.version when -V option is supplied twice.
|
||
|
||
- bpo-27100: The with-statement now checks for __enter__ before it checks
|
||
for __exit__. This gives less confusing error messages when both methods
|
||
are missing. Patch by Jonathan Ellington.
|
||
|
||
- bpo-28746: Fix the set_inheritable() file descriptor method on platforms
|
||
that do not have the ioctl FIOCLEX and FIONCLEX commands.
|
||
|
||
- bpo-26920: Fix not getting the locale's charset upon initializing the
|
||
interpreter, on platforms that do not have langinfo.
|
||
|
||
- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
|
||
when decode astral characters. Patch by Xiang Zhang.
|
||
|
||
- bpo-19398: Extra slash no longer added to sys.path components in case of
|
||
empty compile-time PYTHONPATH components.
|
||
|
||
- bpo-28665: Improve speed of the STORE_DEREF opcode by 40%.
|
||
|
||
- bpo-28583: PyDict_SetDefault didn't combine split table when needed. Patch
|
||
by Xiang Zhang.
|
||
|
||
- bpo-27243: Change PendingDeprecationWarning -> DeprecationWarning. As it
|
||
was agreed in the issue, __aiter__ returning an awaitable should result in
|
||
PendingDeprecationWarning in 3.5 and in DeprecationWarning in 3.6.
|
||
|
||
- bpo-26182: Fix a refleak in code that raises DeprecationWarning.
|
||
|
||
- bpo-28721: Fix asynchronous generators aclose() and athrow() to handle
|
||
StopAsyncIteration propagation properly.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-28752: Restored the __reduce__() methods of datetime objects.
|
||
|
||
- bpo-28727: Regular expression patterns, _sre.SRE_Pattern objects created
|
||
by re.compile(), become comparable (only x==y and x!=y operators). This
|
||
change should fix the issue #18383: don't duplicate warning filters when
|
||
the warnings module is reloaded (thing usually only done in unit tests).
|
||
|
||
- bpo-20572: The subprocess.Popen.wait method's undocumented endtime
|
||
parameter now raises a DeprecationWarning.
|
||
|
||
- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
|
||
from_buffer_copy() methods on abstract classes like Array.
|
||
|
||
- bpo-19717: Makes Path.resolve() succeed on paths that do not exist. Patch
|
||
by Vajrasky Kok
|
||
|
||
- bpo-28563: Fixed possible DoS and arbitrary code execution when handle
|
||
plural form selections in the gettext module. The expression parser now
|
||
supports exact syntax supported by GNU gettext.
|
||
|
||
- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
|
||
garbage collector is invoked in other thread. Based on patch by Sebastian
|
||
Cufre.
|
||
|
||
- bpo-28600: Optimize loop.call_soon.
|
||
|
||
- bpo-28613: Fix get_event_loop() return the current loop if called from
|
||
coroutines/callbacks.
|
||
|
||
- bpo-28634: Fix asyncio.isfuture() to support unittest.Mock.
|
||
|
||
- bpo-26081: Fix refleak in _asyncio.Future.__iter__().throw.
|
||
|
||
- bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin
|
||
Mayfield.
|
||
|
||
- bpo-28652: Make loop methods reject socket kinds they do not support.
|
||
|
||
- bpo-28653: Fix a refleak in functools.lru_cache.
|
||
|
||
- bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.
|
||
|
||
- bpo-28704: Fix create_unix_server to support Path-like objects (PEP 519).
|
||
|
||
- bpo-28720: Add collections.abc.AsyncGenerator.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-28513: Documented command-line interface of zipfile.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-28666: Now test.support.rmtree is able to remove unwritable or
|
||
unreadable directories.
|
||
|
||
- bpo-23839: Various caches now are cleared before running every test file.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and
|
||
Michael Haubenwallner.
|
||
|
||
- bpo-26359: Rename --with-optimiations to --enable-optimizations.
|
||
|
||
- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
|
||
Patch by Gareth Rees.
|
||
|
||
|
||
What's New in Python 3.6.0 beta 3?
|
||
==================================
|
||
|
||
*Release date: 2016-10-31*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-28128: Deprecation warning for invalid str and byte escape sequences
|
||
now prints better information about where the error occurs. Patch by
|
||
Serhiy Storchaka and Eric Smith.
|
||
|
||
- bpo-28509: dict.update() no longer allocate unnecessary large memory.
|
||
|
||
- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
|
||
build.
|
||
|
||
- bpo-28517: Fixed of-by-one error in the peephole optimizer that caused
|
||
keeping unreachable code.
|
||
|
||
- bpo-28214: Improved exception reporting for problematic __set_name__
|
||
attributes.
|
||
|
||
- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
|
||
loss in PyTraceBack_Here().
|
||
|
||
- bpo-28471: Fix "Python memory allocator called without holding the GIL"
|
||
crash in socket.setblocking.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
|
||
given empty data twice. Patch by Benjamin Fogle.
|
||
|
||
- bpo-28549: Fixed segfault in curses's addch() with ncurses6.
|
||
|
||
- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
|
||
file with compression before trying to open it without compression.
|
||
Otherwise it had 50% chance failed with ignore_zeros=True.
|
||
|
||
- bpo-23262: The webbrowser module now supports Firefox 36+ and derived
|
||
browsers. Based on patch by Oleg Broytman.
|
||
|
||
- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
|
||
by representing the scale as float value internally in Tk. tkinter.IntVar
|
||
now works if float value is set to underlying Tk variable.
|
||
|
||
- bpo-18844: The various ways of specifying weights for random.choices() now
|
||
produce the same result sequences.
|
||
|
||
- bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at
|
||
the start of new line after printing a month's calendar. Patch by Xiang
|
||
Zhang.
|
||
|
||
- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
|
||
Based on patch by Kaarle Ritvanen.
|
||
|
||
- bpo-28353: os.fwalk() no longer fails on broken links.
|
||
|
||
- bpo-28430: Fix iterator of C implemented asyncio.Future doesn't accept
|
||
non-None value is passed to it.send(val).
|
||
|
||
- bpo-27025: Generated names for Tkinter widgets now start by the "!" prefix
|
||
for readability.
|
||
|
||
- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
|
||
workaround to Tix library bug.
|
||
|
||
- bpo-28488: shutil.make_archive() no longer adds entry "./" to ZIP archive.
|
||
|
||
- bpo-25953: re.sub() now raises an error for invalid numerical group
|
||
reference in replacement template even if the pattern is not found in the
|
||
string. Error message for invalid group reference now includes the group
|
||
index and the position of the reference. Based on patch by SilentGhost.
|
||
|
||
- bpo-18219: Optimize csv.DictWriter for large number of columns. Patch by
|
||
Mariatta Wijaya.
|
||
|
||
- bpo-28448: Fix C implemented asyncio.Future didn't work on Windows.
|
||
|
||
- bpo-28480: Fix error building socket module when multithreading is
|
||
disabled.
|
||
|
||
- bpo-24452: Make webbrowser support Chrome on Mac OS X.
|
||
|
||
- bpo-20766: Fix references leaked by pdb in the handling of SIGINT
|
||
handlers.
|
||
|
||
- bpo-28492: Fix how StopIteration exception is raised in _asyncio.Future.
|
||
|
||
- bpo-28500: Fix asyncio to handle async gens GC from another thread.
|
||
|
||
- bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children
|
||
are done. Patch by Johannes Ebke.
|
||
|
||
- bpo-26796: Don't configure the number of workers for default threadpool
|
||
executor. Initial patch by Hans Lawrenz.
|
||
|
||
- bpo-28544: Implement asyncio.Task in C.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-28522: Fixes mishandled buffer reallocation in getpathp.c
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-28444: Fix missing extensions modules when cross compiling.
|
||
|
||
- bpo-28208: Update Windows build and OS X installers to use SQLite 3.14.2.
|
||
|
||
- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-26944: Fix test_posix for Android where 'id -G' is entirely wrong or
|
||
missing the effective gid.
|
||
|
||
- bpo-28409: regrtest: fix the parser of command line arguments.
|
||
|
||
|
||
What's New in Python 3.6.0 beta 2?
|
||
==================================
|
||
|
||
*Release date: 2016-10-10*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-28183: Optimize and cleanup dict iteration.
|
||
|
||
- bpo-26081: Added C implementation of asyncio.Future. Original patch by
|
||
Yury Selivanov.
|
||
|
||
- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
|
||
Patch by Xiang Zhang.
|
||
|
||
- bpo-28376: The type of long range iterator is now registered as Iterator.
|
||
Patch by Oren Milman.
|
||
|
||
- bpo-28376: Creating instances of range_iterator by calling range_iterator
|
||
type now is deprecated. Patch by Oren Milman.
|
||
|
||
- bpo-28376: The constructor of range_iterator now checks that step is not
|
||
0. Patch by Oren Milman.
|
||
|
||
- bpo-26906: Resolving special methods of uninitialized type now causes
|
||
implicit initialization of the type instead of a fail.
|
||
|
||
- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
|
||
patch by Niklas Koep.
|
||
|
||
- bpo-24098: Fixed possible crash when AST is changed in process of
|
||
compiling it.
|
||
|
||
- bpo-28201: Dict reduces possibility of 2nd conflict in hash table when
|
||
hashes have same lower bits.
|
||
|
||
- bpo-28350: String constants with null character no longer interned.
|
||
|
||
- bpo-26617: Fix crash when GC runs during weakref callbacks.
|
||
|
||
- bpo-27942: String constants now interned recursively in tuples and
|
||
frozensets.
|
||
|
||
- bpo-21578: Fixed misleading error message when ImportError called with
|
||
invalid keyword args.
|
||
|
||
- bpo-28203: Fix incorrect type in complex(1.0, {2:3}) error message. Patch
|
||
by Soumya Sharma.
|
||
|
||
- bpo-28086: Single var-positional argument of tuple subtype was passed
|
||
unscathed to the C-defined function. Now it is converted to exact tuple.
|
||
|
||
- bpo-28214: Now __set_name__ is looked up on the class instead of the
|
||
instance.
|
||
|
||
- bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
|
||
syscall fails with EPERM, for example when blocked by SECCOMP.
|
||
|
||
- bpo-28192: Don't import readline in isolated mode.
|
||
|
||
- Upgrade internal unicode databases to Unicode version 9.0.0.
|
||
|
||
- bpo-28131: Fix a regression in zipimport's compile_source(). zipimport
|
||
should use the same optimization level as the interpreter.
|
||
|
||
- bpo-28126: Replace Py_MEMCPY with memcpy(). Visual Studio can properly
|
||
optimize memcpy().
|
||
|
||
- bpo-28120: Fix dict.pop() for splitted dictionary when trying to remove a
|
||
"pending key" (Not yet inserted in split-table). Patch by Xiang Zhang.
|
||
|
||
- bpo-26182: Raise DeprecationWarning when async and await keywords are used
|
||
as variable/attribute/class/function name.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-27998: Fixed bytes path support in os.scandir() on Windows. Patch by
|
||
Eryk Sun.
|
||
|
||
- bpo-28317: The disassembler now decodes FORMAT_VALUE argument.
|
||
|
||
- bpo-26293: Fixed writing ZIP files that starts not from the start of the
|
||
file. Offsets in ZIP file now are relative to the start of the archive in
|
||
conforming to the specification.
|
||
|
||
- bpo-28380: unittest.mock Mock autospec functions now properly support
|
||
assert_called, assert_not_called, and assert_called_once.
|
||
|
||
- bpo-27181: remove statistics.geometric_mean and defer until 3.7.
|
||
|
||
- bpo-28229: lzma module now supports pathlib.
|
||
|
||
- bpo-28321: Fixed writing non-BMP characters with binary format in
|
||
plistlib.
|
||
|
||
- bpo-28225: bz2 module now supports pathlib. Initial patch by Ethan
|
||
Furman.
|
||
|
||
- bpo-28227: gzip now supports pathlib. Patch by Ethan Furman.
|
||
|
||
- bpo-27358: Optimized merging var-keyword arguments and improved error
|
||
message when passing a non-mapping as a var-keyword argument.
|
||
|
||
- bpo-28257: Improved error message when passing a non-iterable as a
|
||
var-positional argument. Added opcode BUILD_TUPLE_UNPACK_WITH_CALL.
|
||
|
||
- bpo-28322: Fixed possible crashes when unpickle itertools objects from
|
||
incorrect pickle data. Based on patch by John Leitch.
|
||
|
||
- bpo-28228: imghdr now supports pathlib.
|
||
|
||
- bpo-28226: compileall now supports pathlib.
|
||
|
||
- bpo-28314: Fix function declaration (C flags) for the getiterator() method
|
||
of xml.etree.ElementTree.Element.
|
||
|
||
- bpo-28148: Stop using localtime() and gmtime() in the time module.
|
||
Introduced platform independent _PyTime_localtime API that is similar to
|
||
POSIX localtime_r, but available on all platforms. Patch by Ed Schouten.
|
||
|
||
- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
|
||
9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so
|
||
that they don't call itermonthdates() which can cause datetime.date
|
||
under/overflow.
|
||
|
||
- bpo-28275: Fixed possible use after free in the decompress() methods of
|
||
the LZMADecompressor and BZ2Decompressor classes. Original patch by John
|
||
Leitch.
|
||
|
||
- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
|
||
if pass invalid string-like object as a name. Patch by Xiang Zhang.
|
||
|
||
- bpo-18844: random.choices() now has k as a keyword-only argument to
|
||
improve the readability of common cases and come into line with the
|
||
signature used in other languages.
|
||
|
||
- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
|
||
Patch by Madison May.
|
||
|
||
- bpo-27611: Fixed support of default root window in the tkinter.tix module.
|
||
Added the master parameter in the DisplayStyle constructor.
|
||
|
||
- bpo-27348: In the traceback module, restore the formatting of exception
|
||
messages like "Exception: None". This fixes a regression introduced in
|
||
3.5a2.
|
||
|
||
- bpo-25651: Allow falsy values to be used for msg parameter of subTest().
|
||
|
||
- bpo-27778: Fix a memory leak in os.getrandom() when the getrandom() is
|
||
interrupted by a signal and a signal handler raises a Python exception.
|
||
|
||
- bpo-28200: Fix memory leak on Windows in the os module (fix
|
||
path_converter() function).
|
||
|
||
- bpo-25400: RobotFileParser now correctly returns default values for
|
||
crawl_delay and request_rate. Initial patch by Peter Wirtz.
|
||
|
||
- bpo-27932: Prevent memory leak in win32_ver().
|
||
|
||
- Fix UnboundLocalError in socket._sendfile_use_sendfile.
|
||
|
||
- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
|
||
os.stat(). Patch by Eryk Sun.
|
||
|
||
- bpo-22493: Warning message emitted by using inline flags in the middle of
|
||
regular expression now contains a (truncated) regex pattern. Patch by Tim
|
||
Graham.
|
||
|
||
- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
|
||
empty bytestring is passed.
|
||
|
||
- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
|
||
|
||
- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
|
||
Gergely Imreh and Markus Holtermann.
|
||
|
||
- bpo-28114: Fix a crash in parse_envlist() when env contains byte strings.
|
||
Patch by Eryk Sun.
|
||
|
||
- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
|
||
binascii.a2b_qp().
|
||
|
||
- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
|
||
Kevin Conway.
|
||
|
||
- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
|
||
Seth Michael Larson.
|
||
|
||
- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
|
||
iceboy.
|
||
|
||
- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
|
||
|
||
- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
|
||
|
||
- bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
|
||
Patch by Mark Williams.
|
||
|
||
- bpo-28368: Refuse monitoring processes if the child watcher has no loop
|
||
attached. Patch by Vincent Michel.
|
||
|
||
- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
|
||
add_writer, etc.
|
||
|
||
- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
|
||
Марк.
|
||
|
||
- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
|
||
|
||
- bpo-28372: Fix asyncio to support formatting of non-python coroutines.
|
||
|
||
- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
|
||
Марк.
|
||
|
||
- bpo-27972: Prohibit Tasks to await on themselves.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-28402: Adds signed catalog files for stdlib on Windows.
|
||
|
||
- bpo-28333: Enables Unicode for ps1/ps2 and input() prompts. (Patch by Eryk
|
||
Sun)
|
||
|
||
- bpo-28251: Improvements to help manuals on Windows.
|
||
|
||
- bpo-28110: launcher.msi has different product codes between 32-bit and
|
||
64-bit
|
||
|
||
- bpo-28161: Opening CON for write access fails
|
||
|
||
- bpo-28162: WindowsConsoleIO readall() fails if first line starts with
|
||
Ctrl+Z
|
||
|
||
- bpo-28163: WindowsConsoleIO fileno() passes wrong flags to _open_osfhandle
|
||
|
||
- bpo-28164: _PyIO_get_console_type fails for various paths
|
||
|
||
- bpo-28137: Renames Windows path file to ._pth
|
||
|
||
- bpo-28138: Windows ._pth file should allow import site
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-28426: Deprecated undocumented functions PyUnicode_AsEncodedObject(),
|
||
PyUnicode_AsDecodedObject(), PyUnicode_AsDecodedUnicode() and
|
||
PyUnicode_AsEncodedUnicode().
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-28258: Fixed build with Estonian locale (python-config and distclean
|
||
targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
|
||
|
||
- bpo-26661: setup.py now detects system libffi with multiarch wrapper.
|
||
|
||
- bpo-15819: Remove redundant include search directory option for building
|
||
outside the source tree.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-28217: Adds _testconsole module to test console input.
|
||
|
||
|
||
What's New in Python 3.6.0 beta 1?
|
||
==================================
|
||
|
||
*Release date: 2016-09-12*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-23722: The __class__ cell used by zero-argument super() is now
|
||
initialized from type.__new__ rather than __build_class__, so class
|
||
methods relying on that will now work correctly when called from metaclass
|
||
methods during class creation. Patch by Martin Teichmann.
|
||
|
||
- bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is
|
||
compiled with NSMALLPOSINTS = 0.
|
||
|
||
- bpo-27080: Implement formatting support for :pep:`515`. Initial patch by
|
||
Chris Angelico.
|
||
|
||
- bpo-27199: In tarfile, expose copyfileobj bufsize to improve throughput.
|
||
Patch by Jason Fried.
|
||
|
||
- bpo-27948: In f-strings, only allow backslashes inside the braces (where
|
||
the expressions are). This is a breaking change from the 3.6 alpha
|
||
releases, where backslashes are allowed anywhere in an f-string. Also,
|
||
require that expressions inside f-strings be enclosed within literal
|
||
braces, and not escapes like ``f'\x7b"hi"\x7d'``.
|
||
|
||
- bpo-28046: Remove platform-specific directories from sys.path.
|
||
|
||
- bpo-28071: Add early-out for differencing from an empty set.
|
||
|
||
- bpo-25758: Prevents zipimport from unnecessarily encoding a filename
|
||
(patch by Eryk Sun)
|
||
|
||
- bpo-25856: The __module__ attribute of extension classes and functions now
|
||
is interned. This leads to more compact pickle data with protocol 4.
|
||
|
||
- bpo-27213: Rework CALL_FUNCTION* opcodes to produce shorter and more
|
||
efficient bytecode. Patch by Demur Rumed, design by Serhiy Storchaka,
|
||
reviewed by Serhiy Storchaka and Victor Stinner.
|
||
|
||
- bpo-26331: Implement tokenizing support for :pep:`515`. Patch by Georg
|
||
Brandl.
|
||
|
||
- bpo-27999: Make "global after use" a SyntaxError, and ditto for nonlocal.
|
||
Patch by Ivan Levkivskyi.
|
||
|
||
- bpo-28003: Implement :pep:`525` -- Asynchronous Generators.
|
||
|
||
- bpo-27985: Implement :pep:`526` -- Syntax for Variable Annotations. Patch
|
||
by Ivan Levkivskyi.
|
||
|
||
- bpo-26058: Add a new private version to the builtin dict type, incremented
|
||
at each dictionary creation and at each dictionary change. Implementation
|
||
of the PEP 509.
|
||
|
||
- bpo-27364: A backslash-character pair that is not a valid escape sequence
|
||
now generates a DeprecationWarning. Patch by Emanuel Barry.
|
||
|
||
- bpo-27350: `dict` implementation is changed like PyPy. It is more compact
|
||
and preserves insertion order. (Concept developed by Raymond Hettinger and
|
||
patch by Inada Naoki.)
|
||
|
||
- bpo-27911: Remove unnecessary error checks in
|
||
``exec_builtin_or_dynamic()``.
|
||
|
||
- bpo-27078: Added BUILD_STRING opcode. Optimized f-strings evaluation.
|
||
|
||
- bpo-17884: Python now requires systems with inttypes.h and stdint.h
|
||
|
||
- bpo-27961: Require platforms to support ``long long``. Python hasn't
|
||
compiled without ``long long`` for years, so this is basically a
|
||
formality.
|
||
|
||
- bpo-27355: Removed support for Windows CE. It was never finished, and
|
||
Windows CE is no longer a relevant platform for Python.
|
||
|
||
- Implement :pep:`523`.
|
||
|
||
- bpo-27870: A left shift of zero by a large integer no longer attempts to
|
||
allocate large amounts of memory.
|
||
|
||
- bpo-25402: In int-to-decimal-string conversion, improve the estimate of
|
||
the intermediate memory required, and remove an unnecessarily strict
|
||
overflow check. Patch by Serhiy Storchaka.
|
||
|
||
- bpo-27214: In long_invert, be more careful about modifying object returned
|
||
by long_add, and remove an unnecessary check for small longs. Thanks Oren
|
||
Milman for analysis and patch.
|
||
|
||
- bpo-27506: Support passing the bytes/bytearray.translate() "delete"
|
||
argument by keyword.
|
||
|
||
- bpo-27812: Properly clear out a generator's frame's backreference to the
|
||
generator to prevent crashes in frame.clear().
|
||
|
||
- bpo-27811: Fix a crash when a coroutine that has not been awaited is
|
||
finalized with warnings-as-errors enabled.
|
||
|
||
- bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after
|
||
use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes.
|
||
|
||
- bpo-27792: The modulo operation applied to ``bool`` and other ``int``
|
||
subclasses now always returns an ``int``. Previously the return type
|
||
depended on the input values. Patch by Xiang Zhang.
|
||
|
||
- bpo-26984: int() now always returns an instance of exact int.
|
||
|
||
- bpo-25604: Fix a minor bug in integer true division; this bug could
|
||
potentially have caused off-by-one-ulp results on platforms with
|
||
unreliable ldexp implementations.
|
||
|
||
- bpo-24254: Make class definition namespace ordered by default.
|
||
|
||
- bpo-27662: Fix an overflow check in ``List_New``: the original code was
|
||
checking against ``Py_SIZE_MAX`` instead of the correct upper bound of
|
||
``Py_SSIZE_T_MAX``. Patch by Xiang Zhang.
|
||
|
||
- bpo-27782: Multi-phase extension module import now correctly allows the
|
||
``m_methods`` field to be used to add module level functions to instances
|
||
of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang.
|
||
|
||
- bpo-27936: The round() function accepted a second None argument for some
|
||
types but not for others. Fixed the inconsistency by accepting None for
|
||
all numeric types.
|
||
|
||
- bpo-27487: Warn if a submodule argument to "python -m" or
|
||
runpy.run_module() is found in sys.modules after parent packages are
|
||
imported, but before the submodule is executed.
|
||
|
||
- bpo-27157: Make only type() itself accept the one-argument form. Patch by
|
||
Eryk Sun and Emanuel Barry.
|
||
|
||
- bpo-27558: Fix a SystemError in the implementation of "raise" statement.
|
||
In a brand new thread, raise a RuntimeError since there is no active
|
||
exception to reraise. Patch written by Xiang Zhang.
|
||
|
||
- bpo-28008: Implement :pep:`530` -- asynchronous comprehensions.
|
||
|
||
- bpo-27942: Fix memory leak in codeobject.c
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-28732: Fix crash in os.spawnv() with no elements in args
|
||
|
||
- bpo-28485: Always raise ValueError for negative
|
||
compileall.compile_dir(workers=...) parameter, even when multithreading is
|
||
unavailable.
|
||
|
||
- bpo-28037: Use sqlite3_get_autocommit() instead of setting
|
||
Connection->inTransaction manually.
|
||
|
||
- bpo-25283: Attributes tm_gmtoff and tm_zone are now available on all
|
||
platforms in the return values of time.localtime() and time.gmtime().
|
||
|
||
- bpo-24454: Regular expression match object groups are now accessible using
|
||
__getitem__. "mo[x]" is equivalent to "mo.group(x)".
|
||
|
||
- bpo-10740: sqlite3 no longer implicitly commit an open transaction before
|
||
DDL statements.
|
||
|
||
- bpo-17941: Add a *module* parameter to collections.namedtuple().
|
||
|
||
- bpo-22493: Inline flags now should be used only at the start of the
|
||
regular expression. Deprecation warning is emitted if uses them in the
|
||
middle of the regular expression.
|
||
|
||
- bpo-26885: xmlrpc now supports unmarshalling additional data types used by
|
||
Apache XML-RPC implementation for numerics and None.
|
||
|
||
- bpo-28070: Fixed parsing inline verbose flag in regular expressions.
|
||
|
||
- bpo-19500: Add client-side SSL session resumption to the ssl module.
|
||
|
||
- bpo-28022: Deprecate ssl-related arguments in favor of SSLContext. The
|
||
deprecation include manual creation of SSLSocket and certfile/keyfile (or
|
||
similar) in ftplib, httplib, imaplib, smtplib, poplib and urllib.
|
||
|
||
- bpo-28043: SSLContext has improved default settings: OP_NO_SSLv2,
|
||
OP_NO_SSLv3, OP_NO_COMPRESSION, OP_CIPHER_SERVER_PREFERENCE,
|
||
OP_SINGLE_DH_USE, OP_SINGLE_ECDH_USE and HIGH ciphers without MD5.
|
||
|
||
- bpo-24693: Changed some RuntimeError's in the zipfile module to more
|
||
appropriate types. Improved some error messages and debugging output.
|
||
|
||
- bpo-17909: ``json.load`` and ``json.loads`` now support binary input
|
||
encoded as UTF-8, UTF-16 or UTF-32. Patch by Serhiy Storchaka.
|
||
|
||
- bpo-27137: the pure Python fallback implementation of
|
||
``functools.partial`` now matches the behaviour of its accelerated C
|
||
counterpart for subclassing, pickling and text representation purposes.
|
||
Patch by Emanuel Barry and Serhiy Storchaka.
|
||
|
||
- Fix possible integer overflows and crashes in the mmap module with unusual
|
||
usage patterns.
|
||
|
||
- bpo-1703178: Fix the ability to pass the --link-objects option to the
|
||
distutils build_ext command.
|
||
|
||
- bpo-28019: itertools.count() no longer rounds non-integer step in range
|
||
between 1.0 and 2.0 to 1.
|
||
|
||
- bpo-18401: Pdb now supports the 'readrc' keyword argument to control
|
||
whether .pdbrc files should be read. Patch by Martin Matusiak and Sam
|
||
Kimbrel.
|
||
|
||
- bpo-25969: Update the lib2to3 grammar to handle the unpacking
|
||
generalizations added in 3.5.
|
||
|
||
- bpo-14977: mailcap now respects the order of the lines in the mailcap
|
||
files ("first match"), as required by RFC 1542. Patch by Michael Lazar.
|
||
|
||
- bpo-28082: Convert re flag constants to IntFlag.
|
||
|
||
- bpo-28025: Convert all ssl module constants to IntEnum and IntFlags.
|
||
SSLContext properties now return flags and enums.
|
||
|
||
- bpo-23591: Add Flag, IntFlag, and auto() to enum module.
|
||
|
||
- bpo-433028: Added support of modifier spans in regular expressions.
|
||
|
||
- bpo-24594: Validates persist parameter when opening MSI database
|
||
|
||
- bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes
|
||
(Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.)
|
||
|
||
- bpo-28047: Fixed calculation of line length used for the base64 CTE in the
|
||
new email policies.
|
||
|
||
- bpo-27576: Fix call order in OrderedDict.__init__().
|
||
|
||
- email.generator.DecodedGenerator now supports the policy keyword.
|
||
|
||
- bpo-28027: Remove undocumented modules from ``Lib/plat-*``: IN, CDROM,
|
||
DLFCN, TYPES, CDIO, and STROPTS.
|
||
|
||
- bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by
|
||
Claude Paroz.
|
||
|
||
- bpo-24277: The new email API is no longer provisional, and the docs have
|
||
been reorganized and rewritten to emphasize the new API.
|
||
|
||
- bpo-22450: urllib now includes an ``Accept: */*`` header among the default
|
||
headers. This makes the results of REST API requests more consistent and
|
||
predictable especially when proxy servers are involved.
|
||
|
||
- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
|
||
between runs given the same Grammar.txt input regardless of the hash
|
||
randomization setting.
|
||
|
||
- bpo-28005: Allow ImportErrors in encoding implementation to propagate.
|
||
|
||
- bpo-26667: Support path-like objects in importlib.util.
|
||
|
||
- bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers
|
||
in the "ctypes" and "array" modules.
|
||
|
||
- bpo-22233: Break email header lines *only* on the RFC specified CR and LF
|
||
characters, not on arbitrary unicode line breaks. This also fixes a bug
|
||
in HTTP header parsing.
|
||
|
||
- bpo-27331: The email.mime classes now all accept an optional policy
|
||
keyword.
|
||
|
||
- bpo-27988: Fix email iter_attachments incorrect mutation of payload list.
|
||
|
||
- bpo-16113: Add SHA-3 and SHAKE support to hashlib module.
|
||
|
||
- Eliminate a tautological-pointer-compare warning in _scproxy.c.
|
||
|
||
- bpo-27776: The :func:`os.urandom` function does now block on Linux 3.17
|
||
and newer until the system urandom entropy pool is initialized to increase
|
||
the security. This change is part of the :pep:`524`.
|
||
|
||
- bpo-27778: Expose the Linux ``getrandom()`` syscall as a new
|
||
:func:`os.getrandom` function. This change is part of the :pep:`524`.
|
||
|
||
- bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name
|
||
fields in X.509 certs.
|
||
|
||
- bpo-18844: Add random.choices().
|
||
|
||
- bpo-25761: Improved error reporting about truncated pickle data in C
|
||
implementation of unpickler. UnpicklingError is now raised instead of
|
||
AttributeError and ValueError in some cases.
|
||
|
||
- bpo-26798: Add BLAKE2 (blake2b and blake2s) to hashlib.
|
||
|
||
- bpo-26032: Optimized globbing in pathlib by using os.scandir(); it is now
|
||
about 1.5--4 times faster.
|
||
|
||
- bpo-25596: Optimized glob() and iglob() functions in the glob module; they
|
||
are now about 3--6 times faster.
|
||
|
||
- bpo-27928: Add scrypt (password-based key derivation function) to hashlib
|
||
module (requires OpenSSL 1.1.0).
|
||
|
||
- bpo-27850: Remove 3DES from ssl module's default cipher list to counter
|
||
measure sweet32 attack (CVE-2016-2183).
|
||
|
||
- bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list.
|
||
(Required OpenSSL 1.1.0 or LibreSSL).
|
||
|
||
- bpo-25387: Check return value of winsound.MessageBeep.
|
||
|
||
- bpo-27866: Add SSLContext.get_ciphers() method to get a list of all
|
||
enabled ciphers.
|
||
|
||
- bpo-27744: Add AF_ALG (Linux Kernel crypto) to socket module.
|
||
|
||
- bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.
|
||
|
||
- bpo-11620: Fix support for SND_MEMORY in winsound.PlaySound. Based on a
|
||
patch by Tim Lesher.
|
||
|
||
- bpo-11734: Add support for IEEE 754 half-precision floats to the struct
|
||
module. Based on a patch by Eli Stevens.
|
||
|
||
- bpo-27919: Deprecated ``extra_path`` distribution option in distutils
|
||
packaging.
|
||
|
||
- bpo-23229: Add new ``cmath`` constants: ``cmath.inf`` and ``cmath.nan`` to
|
||
match ``math.inf`` and ``math.nan``, and also ``cmath.infj`` and
|
||
``cmath.nanj`` to match the format used by complex repr.
|
||
|
||
- bpo-27842: The csv.DictReader now returns rows of type OrderedDict.
|
||
(Contributed by Steve Holden.)
|
||
|
||
- Remove support for passing a file descriptor to os.access. It never worked
|
||
but previously didn't raise.
|
||
|
||
- bpo-12885: Fix error when distutils encounters symlink.
|
||
|
||
- bpo-27881: Fixed possible bugs when setting
|
||
sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.
|
||
|
||
- bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
|
||
creates not a cursor. Patch by Xiang Zhang.
|
||
|
||
- bpo-19884: Avoid spurious output on OS X with Gnu Readline.
|
||
|
||
- bpo-27706: Restore deterministic behavior of random.Random().seed() for
|
||
string seeds using seeding version 1. Allows sequences of calls to
|
||
random() to exactly match those obtained in Python 2. Patch by Nofar
|
||
Schnider.
|
||
|
||
- bpo-10513: Fix a regression in Connection.commit(). Statements should not
|
||
be reset after a commit.
|
||
|
||
- bpo-12319: Chunked transfer encoding support added to
|
||
http.client.HTTPConnection requests. The
|
||
urllib.request.AbstractHTTPHandler class does not enforce a Content-Length
|
||
header any more. If a HTTP request has a file or iterable body, but no
|
||
Content-Length header, the library now falls back to use chunked
|
||
transfer-encoding.
|
||
|
||
- A new version of typing.py from https://github.com/python/typing: -
|
||
Collection (only for 3.6) (Issue #27598) - Add FrozenSet to __all__
|
||
(upstream #261) - fix crash in _get_type_vars() (upstream #259) - Remove
|
||
the dict constraint in ForwardRef._eval_type (upstream #252)
|
||
|
||
- bpo-27832: Make ``_normalize`` parameter to ``Fraction`` constructor
|
||
keyword-only, so that ``Fraction(2, 3, 4)`` now raises ``TypeError``.
|
||
|
||
- bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of
|
||
negative exponent and negative base.
|
||
|
||
- bpo-21718: cursor.description is now available for queries using CTEs.
|
||
|
||
- bpo-27819: In distutils sdists, simply produce the "gztar" (gzipped tar
|
||
format) distributions on all platforms unless "formats" is supplied.
|
||
|
||
- bpo-2466: posixpath.ismount now correctly recognizes mount points which
|
||
the user does not have permission to access.
|
||
|
||
- bpo-9998: On Linux, ctypes.util.find_library now looks in LD_LIBRARY_PATH
|
||
for shared libraries.
|
||
|
||
- bpo-27573: exit message for code.interact is now configurable.
|
||
|
||
- bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to
|
||
Paulo Andrade and Petr Viktorin for the analysis and patch.
|
||
|
||
- bpo-6766: Distributed reference counting added to multiprocessing to
|
||
support nesting of shared values / proxy objects.
|
||
|
||
- bpo-21201: Improves readability of multiprocessing error message. Thanks
|
||
to Wojciech Walczak for patch.
|
||
|
||
- asyncio: Add set_protocol / get_protocol to Transports.
|
||
|
||
- bpo-27456: asyncio: Set TCP_NODELAY by default.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger
|
||
Serwy, updated by Bayard Randel.
|
||
|
||
- bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen.
|
||
|
||
- bpo-27891: Consistently group and sort imports within idlelib modules.
|
||
|
||
- bpo-17642: add larger font sizes for classroom projection.
|
||
|
||
- Add version to title of IDLE help window.
|
||
|
||
- bpo-25564: In section on IDLE -- console differences, mention that using
|
||
exec means that __builtins__ is defined for each statement.
|
||
|
||
- bpo-27821: Fix 3.6.0a3 regression that prevented custom key sets from
|
||
being selected when no custom theme was defined.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-26900: Excluded underscored names and other private API from limited
|
||
API.
|
||
|
||
- bpo-26027: Add support for path-like objects in PyUnicode_FSConverter() &
|
||
PyUnicode_FSDecoder().
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-27427: Additional tests for the math module. Patch by Francisco Couzo.
|
||
|
||
- bpo-27953: Skip math and cmath tests that fail on OS X 10.4 due to a poor
|
||
libm implementation of tan.
|
||
|
||
- bpo-26040: Improve test_math and test_cmath coverage and rigour. Patch by
|
||
Jeff Allen.
|
||
|
||
- bpo-27787: Call gc.collect() before checking each test for "dangling
|
||
threads", since the dangling threads are weak references.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)
|
||
|
||
- bpo-27705: Update message in validate_ucrtbase.py
|
||
|
||
- bpo-27976: Deprecate building _ctypes with the bundled copy of libffi on
|
||
non-OSX UNIX platforms.
|
||
|
||
- bpo-27983: Cause lack of llvm-profdata tool when using clang as required
|
||
for PGO linking to be a configure time error rather than make time when
|
||
``--with-optimizations`` is enabled. Also improve our ability to find the
|
||
llvm-profdata tool on MacOS and some Linuxes.
|
||
|
||
- bpo-21590: Support for DTrace and SystemTap probes.
|
||
|
||
- bpo-26307: The profile-opt build now applies PGO to the built-in modules.
|
||
|
||
- bpo-26359: Add the --with-optimizations flag to turn on LTO and PGO build
|
||
support when available.
|
||
|
||
- bpo-27917: Set platform triplets for Android builds.
|
||
|
||
- bpo-25825: Update references to the $(LIBPL) installation path on AIX.
|
||
This path was changed in 3.2a4.
|
||
|
||
- Update OS X installer to use SQLite 3.14.1 and XZ 5.2.2.
|
||
|
||
- bpo-21122: Fix LTO builds on OS X.
|
||
|
||
- bpo-17128: Build OS X installer with a private copy of OpenSSL. Also
|
||
provide a sample Install Certificates command script to install a set of
|
||
root certificates from the third-party certifi module.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the
|
||
current "re" module, avoid invalid Python backslash escapes, and fix a bug
|
||
parsing escaped C quote signs.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-28065: Update xz dependency to 5.2.2 and build it from source.
|
||
|
||
- bpo-25144: Ensures TargetDir is set before continuing with custom install.
|
||
|
||
- bpo-1602: Windows console doesn't input or print Unicode (PEP 528)
|
||
|
||
- bpo-27781: Change file system encoding on Windows to UTF-8 (PEP 529)
|
||
|
||
- bpo-27731: Opt-out of MAX_PATH on Windows 10
|
||
|
||
- bpo-6135: Adds encoding and errors parameters to subprocess.
|
||
|
||
- bpo-27959: Adds oem encoding, alias ansi to mbcs, move aliasmbcs to codec
|
||
lookup.
|
||
|
||
- bpo-27982: The functions of the winsound module now accept keyword
|
||
arguments.
|
||
|
||
- bpo-20366: Build full text search support into SQLite on Windows.
|
||
|
||
- bpo-27756: Adds new icons for Python files and processes on Windows.
|
||
Designs by Cherry Wang.
|
||
|
||
- bpo-27883: Update sqlite to 3.14.1.0 on Windows.
|
||
|
||
|
||
What's New in Python 3.6.0 alpha 4?
|
||
===================================
|
||
|
||
*Release date: 2016-08-15*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-27704: Optimized creating bytes and bytearray from byte-like objects
|
||
and iterables. Speed up to 3 times for short objects. Original patch by
|
||
Naoki Inada.
|
||
|
||
- bpo-26823: Large sections of repeated lines in tracebacks are now
|
||
abbreviated as "[Previous line repeated {count} more times]" by the
|
||
builtin traceback rendering. Patch by Emanuel Barry.
|
||
|
||
- bpo-27574: Decreased an overhead of parsing keyword arguments in functions
|
||
implemented with using Argument Clinic.
|
||
|
||
- bpo-22557: Now importing already imported modules is up to 2.5 times
|
||
faster.
|
||
|
||
- bpo-17596: Include <wincrypt.h> to help with Min GW building.
|
||
|
||
- bpo-17599: On Windows, rename the privately defined REPARSE_DATA_BUFFER
|
||
structure to avoid conflicting with the definition from Min GW.
|
||
|
||
- bpo-27507: Add integer overflow check in bytearray.extend(). Patch by
|
||
Xiang Zhang.
|
||
|
||
- bpo-27581: Don't rely on wrapping for overflow check in
|
||
PySequence_Tuple(). Patch by Xiang Zhang.
|
||
|
||
- bpo-1621: Avoid signed integer overflow in list and tuple operations.
|
||
Patch by Xiang Zhang.
|
||
|
||
- bpo-27419: Standard __import__() no longer look up "__import__" in globals
|
||
or builtins for importing submodules or "from import". Fixed a crash if
|
||
raise a warning about unabling to resolve package from __spec__ or
|
||
__package__.
|
||
|
||
- bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.
|
||
|
||
- bpo-27514: Make having too many statically nested blocks a SyntaxError
|
||
instead of SystemError.
|
||
|
||
- bpo-27366: Implemented :pep:`487` (Simpler customization of class
|
||
creation). Upon subclassing, the __init_subclass__ classmethod is called
|
||
on the base class. Descriptors are initialized with __set_name__ after
|
||
class creation.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-26027: Add :pep:`519`/__fspath__() support to the os and os.path
|
||
modules. Includes code from Jelle Zijlstra. (See also: bpo-27524)
|
||
|
||
- bpo-27598: Add Collections to collections.abc. Patch by Ivan Levkivskyi,
|
||
docs by Neil Girdhar.
|
||
|
||
- bpo-25958: Support "anti-registration" of special methods from various
|
||
ABCs, like __hash__, __iter__ or __len__. All these (and several more)
|
||
can be set to None in an implementation class and the behavior will be as
|
||
if the method is not defined at all. (Previously, this mechanism existed
|
||
only for __hash__, to make mutable classes unhashable.) Code contributed
|
||
by Andrew Barnert and Ivan Levkivskyi.
|
||
|
||
- bpo-16764: Support keyword arguments to zlib.decompress(). Patch by Xiang
|
||
Zhang.
|
||
|
||
- bpo-27736: Prevent segfault after interpreter re-initialization due to ref
|
||
count problem introduced in code for Issue #27038 in 3.6.0a3. Patch by
|
||
Xiang Zhang.
|
||
|
||
- bpo-25628: The *verbose* and *rename* parameters for
|
||
collections.namedtuple are now keyword-only.
|
||
|
||
- bpo-12345: Add mathematical constant tau to math and cmath. See also
|
||
:pep:`628`.
|
||
|
||
- bpo-26823: traceback.StackSummary.format now abbreviates large sections of
|
||
repeated lines as "[Previous line repeated {count} more times]" (this
|
||
change then further affects other traceback display operations in the
|
||
module). Patch by Emanuel Barry.
|
||
|
||
- bpo-27664: Add to concurrent.futures.thread.ThreadPoolExecutor() the
|
||
ability to specify a thread name prefix.
|
||
|
||
- bpo-27181: Add geometric_mean and harmonic_mean to statistics module.
|
||
|
||
- bpo-27573: code.interact now prints an message when exiting.
|
||
|
||
- bpo-6422: Add autorange method to timeit.Timer objects.
|
||
|
||
- bpo-27773: Correct some memory management errors server_hostname in
|
||
_ssl.wrap_socket().
|
||
|
||
- bpo-26750: unittest.mock.create_autospec() now works properly for
|
||
subclasses of property() and other data descriptors. Removes the never
|
||
publicly used, never documented unittest.mock.DescriptorTypes tuple.
|
||
|
||
- bpo-26754: Undocumented support of general bytes-like objects as path in
|
||
compile() and similar functions is now deprecated.
|
||
|
||
- bpo-26800: Undocumented support of general bytes-like objects as paths in
|
||
os functions is now deprecated.
|
||
|
||
- bpo-26981: Add _order_ compatibility shim to enum.Enum for Python 2/3 code
|
||
bases.
|
||
|
||
- bpo-27661: Added tzinfo keyword argument to datetime.combine.
|
||
|
||
- In the curses module, raise an error if window.getstr() or window.instr()
|
||
is passed a negative value.
|
||
|
||
- bpo-27783: Fix possible usage of uninitialized memory in
|
||
operator.methodcaller.
|
||
|
||
- bpo-27774: Fix possible Py_DECREF on unowned object in _sre.
|
||
|
||
- bpo-27760: Fix possible integer overflow in binascii.b2a_qp.
|
||
|
||
- bpo-27758: Fix possible integer overflow in the _csv module for large
|
||
record lengths.
|
||
|
||
- bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
|
||
HTTP_PROXY variable when REQUEST_METHOD environment is set, which
|
||
indicates that the script is in CGI mode.
|
||
|
||
- bpo-7063: Remove dead code from the "array" module's slice handling. Patch
|
||
by Chuck.
|
||
|
||
- bpo-27656: Do not assume sched.h defines any SCHED_* constants.
|
||
|
||
- bpo-27130: In the "zlib" module, fix handling of large buffers (typically
|
||
4 GiB) when compressing and decompressing. Previously, inputs were
|
||
limited to 4 GiB, and compression and decompression operations did not
|
||
properly handle results of 4 GiB.
|
||
|
||
- bpo-24773: Implemented :pep:`495` (Local Time Disambiguation).
|
||
|
||
- Expose the EPOLLEXCLUSIVE constant (when it is defined) in the select
|
||
module.
|
||
|
||
- bpo-27567: Expose the EPOLLRDHUP and POLLRDHUP constants in the select
|
||
module.
|
||
|
||
- bpo-1621: Avoid signed int negation overflow in the "audioop" module.
|
||
|
||
- bpo-27533: Release GIL in nt._isdir
|
||
|
||
- bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original
|
||
patch by Alexandre Vassalotti.
|
||
|
||
- bpo-27522: Avoid an unintentional reference cycle in email.feedparser.
|
||
|
||
- bpo-27512: Fix a segfault when os.fspath() called an __fspath__() method
|
||
that raised an exception. Patch by Xiang Zhang.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-27714: text_textview and test_autocomplete now pass when re-run in the
|
||
same process. This occurs when test_idle fails when run with the -w
|
||
option but without -jn. Fix warning from test_config.
|
||
|
||
- bpo-27621: Put query response validation error messages in the query box
|
||
itself instead of in a separate messagebox. Redo tests to match. Add Mac
|
||
OSX refinements. Original patch by Mark Roseman.
|
||
|
||
- bpo-27620: Escape key now closes Query box as cancelled.
|
||
|
||
- bpo-27609: IDLE: tab after initial whitespace should tab, not
|
||
autocomplete. This fixes problem with writing docstrings at least twice
|
||
indented.
|
||
|
||
- bpo-27609: Explicitly return None when there are also non-None returns. In
|
||
a few cases, reverse a condition and eliminate a return.
|
||
|
||
- bpo-25507: IDLE no longer runs buggy code because of its tkinter imports.
|
||
Users must include the same imports required to run directly in Python.
|
||
|
||
- bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the
|
||
default key set depend on the platform. Add tests for the changes to the
|
||
config module.
|
||
|
||
- bpo-27452: add line counter and crc to IDLE configHandler test dump.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-25805: Skip a test in test_pkgutil as needed that doesn't work when
|
||
``__name__ == __main__``. Patch by SilentGhost.
|
||
|
||
- bpo-27472: Add test.support.unix_shell as the path to the default shell.
|
||
|
||
- bpo-27369: In test_pyexpat, avoid testing an error message detail that
|
||
changed in Expat 2.2.0.
|
||
|
||
- bpo-27594: Prevent assertion error when running test_ast with coverage
|
||
enabled: ensure code object has a valid first line number. Patch suggested
|
||
by Ivan Levkivskyi.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-27647: Update bundled Tcl/Tk to 8.6.6.
|
||
|
||
- bpo-27610: Adds :pep:`514` metadata to Windows installer
|
||
|
||
- bpo-27469: Adds a shell extension to the launcher so that drag and drop
|
||
works correctly.
|
||
|
||
- bpo-27309: Enables proper Windows styles in python[w].exe manifest.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-27713: Suppress spurious build warnings when updating importlib's
|
||
bootstrap files. Patch by Xiang Zhang
|
||
|
||
- bpo-25825: Correct the references to Modules/python.exp, which is required
|
||
on AIX. The references were accidentally changed in 3.5.0a1.
|
||
|
||
- bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi
|
||
Hsuan Yen.
|
||
|
||
- bpo-27641: The configure script now inserts comments into the makefile to
|
||
prevent the pgen and _freeze_importlib executables from being
|
||
cross-compiled.
|
||
|
||
- bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be
|
||
used for file generation during the build.
|
||
|
||
- bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update
|
||
FreedBSD version checks for the original ctype UTF-8 workaround.
|
||
|
||
|
||
What's New in Python 3.6.0 alpha 3?
|
||
===================================
|
||
|
||
*Release date: 2016-07-11*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-27278: Fix os.urandom() implementation using getrandom() on Linux.
|
||
Truncate size to INT_MAX and loop until we collected enough random bytes,
|
||
instead of casting a directly Py_ssize_t to int.
|
||
|
||
- bpo-22636: Avoid shell injection problems with ctypes.util.find_library().
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-27473: Fixed possible integer overflow in bytes and bytearray
|
||
concatenations. Patch by Xiang Zhang.
|
||
|
||
- bpo-23034: The output of a special Python build with defined COUNT_ALLOCS,
|
||
SHOW_ALLOC_COUNT or SHOW_TRACK_COUNT macros is now off by default. It
|
||
can be re-enabled using the "-X showalloccount" option. It now outputs to
|
||
stderr instead of stdout.
|
||
|
||
- bpo-27443: __length_hint__() of bytearray iterators no longer return a
|
||
negative integer for a resized bytearray.
|
||
|
||
- bpo-27007: The fromhex() class methods of bytes and bytearray subclasses
|
||
now return an instance of corresponding subclass.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-26844: Fix error message for imp.find_module() to refer to 'path'
|
||
instead of 'name'. Patch by Lev Maximov.
|
||
|
||
- bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an
|
||
error about unclean EOF.
|
||
|
||
- bpo-27466: Change time format returned by http.cookie.time2netscape,
|
||
confirming the netscape cookie format and making it consistent with
|
||
documentation.
|
||
|
||
- bpo-21708: Deprecated dbm.dumb behavior that differs from common dbm
|
||
behavior: creating a database in 'r' and 'w' modes and modifying a
|
||
database in 'r' mode.
|
||
|
||
- bpo-26721: Change the socketserver.StreamRequestHandler.wfile attribute to
|
||
implement BufferedIOBase. In particular, the write() method no longer does
|
||
partial writes.
|
||
|
||
- bpo-22115: Added methods trace_add, trace_remove and trace_info in the
|
||
tkinter.Variable class. They replace old methods trace_variable, trace,
|
||
trace_vdelete and trace_vinfo that use obsolete Tcl commands and might not
|
||
work in future versions of Tcl. Fixed old tracing methods:
|
||
trace_vdelete() with wrong mode no longer break tracing, trace_vinfo() now
|
||
always returns a list of pairs of strings, tracing in the "u" mode now
|
||
works.
|
||
|
||
- bpo-26243: Only the level argument to zlib.compress() is keyword argument
|
||
now. The first argument is positional-only.
|
||
|
||
- bpo-27038: Expose the DirEntry type as os.DirEntry. Code patch by Jelle
|
||
Zijlstra.
|
||
|
||
- bpo-27186: Update os.fspath()/PyOS_FSPath() to check the return value of
|
||
__fspath__() to be either str or bytes.
|
||
|
||
- bpo-18726: All optional parameters of the dump(), dumps(), load() and
|
||
loads() functions and JSONEncoder and JSONDecoder class constructors in
|
||
the json module are now keyword-only.
|
||
|
||
- bpo-27319: Methods selection_set(), selection_add(), selection_remove()
|
||
and selection_toggle() of ttk.TreeView now allow passing multiple items as
|
||
multiple arguments instead of passing them as a tuple. Deprecated
|
||
undocumented ability of calling the selection() method with arguments.
|
||
|
||
- bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and
|
||
ispunct().
|
||
|
||
- bpo-27294: Numerical state in the repr for Tkinter event objects is now
|
||
represented as a combination of known flags.
|
||
|
||
- bpo-27177: Match objects in the re module now support index-like objects
|
||
as group indices. Based on patches by Jeroen Demeyer and Xiang Zhang.
|
||
|
||
- bpo-26754: Some functions (compile() etc) accepted a filename argument
|
||
encoded as an iterable of integers. Now only strings and byte-like objects
|
||
are accepted.
|
||
|
||
- bpo-26536: socket.ioctl now supports SIO_LOOPBACK_FAST_PATH. Patch by
|
||
Daniel Stokes.
|
||
|
||
- bpo-27048: Prevents distutils failing on Windows when environment
|
||
variables contain non-ASCII characters
|
||
|
||
- bpo-27330: Fixed possible leaks in the ctypes module.
|
||
|
||
- bpo-27238: Got rid of bare excepts in the turtle module. Original patch
|
||
by Jelle Zijlstra.
|
||
|
||
- bpo-27122: When an exception is raised within the context being managed by
|
||
a contextlib.ExitStack() and one of the exit stack generators catches and
|
||
raises it in a chain, do not re-raise the original exception when exiting,
|
||
let the new chained one through. This avoids the :pep:`479` bug described
|
||
in issue25782.
|
||
|
||
- bpo-16864: sqlite3.Cursor.lastrowid now supports REPLACE statement.
|
||
Initial patch by Alex LordThorsen.
|
||
|
||
- bpo-26386: Fixed ttk.TreeView selection operations with item id's
|
||
containing spaces.
|
||
|
||
- bpo-8637: Honor a pager set by the env var MANPAGER (in preference to one
|
||
set by the env var PAGER).
|
||
|
||
- bpo-16182: Fix various functions in the "readline" module to use the
|
||
locale encoding, and fix get_begidx() and get_endidx() to return code
|
||
point indexes.
|
||
|
||
- bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-27477: IDLE search dialogs now use ttk widgets.
|
||
|
||
- bpo-27173: Add 'IDLE Modern Unix' to the built-in key sets. Make the
|
||
default key set depend on the platform. Add tests for the changes to the
|
||
config module.
|
||
|
||
- bpo-27452: make command line "idle-test> python test_help.py" work.
|
||
__file__ is relative when python is started in the file's directory.
|
||
|
||
- bpo-27452: add line counter and crc to IDLE configHandler test dump.
|
||
|
||
- bpo-27380: IDLE: add query.py with base Query dialog and ttk widgets.
|
||
Module had subclasses SectionName, ModuleName, and HelpSource, which are
|
||
used to get information from users by configdialog and file =>Load Module.
|
||
Each subclass has itw own validity checks. Using ModuleName allows users
|
||
to edit bad module names instead of starting over. Add tests and delete
|
||
the two files combined into the new one.
|
||
|
||
- bpo-27372: Test_idle no longer changes the locale.
|
||
|
||
- bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.
|
||
|
||
- bpo-27245: IDLE: Cleanly delete custom themes and key bindings.
|
||
Previously, when IDLE was started from a console or by import, a cascade
|
||
of warnings was emitted. Patch by Serhiy Storchaka.
|
||
|
||
- bpo-24137: Run IDLE, test_idle, and htest with tkinter default root
|
||
disabled. Fix code and tests that fail with this restriction. Fix htests
|
||
to not create a second and redundant root and mainloop.
|
||
|
||
- bpo-27310: Fix IDLE.app failure to launch on OS X due to vestigial import.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as
|
||
an iterable of integers. Now only strings and byte-like objects are
|
||
accepted.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-28066: Fix the logic that searches build directories for generated
|
||
include files when building outside the source tree.
|
||
|
||
- bpo-27442: Expose the Android API level that python was built against, in
|
||
sysconfig.get_config_vars() as 'ANDROID_API_LEVEL'.
|
||
|
||
- bpo-27434: The interpreter that runs the cross-build, found in PATH, must
|
||
now be of the same feature version (e.g. 3.6) as the source being built.
|
||
|
||
- bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.
|
||
|
||
- bpo-23968: Rename the platform directory from plat-$(MACHDEP) to
|
||
plat-$(PLATFORM_TRIPLET). Rename the config directory (LIBPL) from
|
||
config-$(LDVERSION) to config-$(LDVERSION)-$(PLATFORM_TRIPLET). Install
|
||
the platform specific _sysconfigdata module into the platform directory
|
||
and rename it to include the ABIFLAGS.
|
||
|
||
- Don't use largefile support for GNU/Hurd.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-27332: Fixed the type of the first argument of module-level functions
|
||
generated by Argument Clinic. Patch by Petr Viktorin.
|
||
|
||
- bpo-27418: Fixed Tools/importbench/importbench.py.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-19489: Moved the search box from the sidebar to the header and footer
|
||
of each page. Patch by Ammar Askar.
|
||
|
||
- bpo-27285: Update documentation to reflect the deprecation of ``pyvenv``
|
||
and normalize on the term "virtual environment". Patch by Steve Piercy.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-27027: Added test.support.is_android that is True when this is an
|
||
Android build.
|
||
|
||
|
||
What's New in Python 3.6.0 alpha 2?
|
||
===================================
|
||
|
||
*Release date: 2016-06-13*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.
|
||
|
||
- Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by
|
||
Team Oststrom.
|
||
|
||
- bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with
|
||
``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom
|
||
entropy pool is not initialized yet. Patch written by Colm Buckley.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-27095: Simplified MAKE_FUNCTION and removed MAKE_CLOSURE opcodes.
|
||
Patch by Demur Rumed.
|
||
|
||
- bpo-27190: Raise NotSupportedError if sqlite3 is older than 3.3.1. Patch
|
||
by Dave Sawyer.
|
||
|
||
- bpo-27286: Fixed compiling BUILD_MAP_UNPACK_WITH_CALL opcode. Calling
|
||
function with generalized unpacking (PEP 448) and conflicting keyword
|
||
names could cause undefined behavior.
|
||
|
||
- bpo-27140: Added BUILD_CONST_KEY_MAP opcode.
|
||
|
||
- bpo-27186: Add support for os.PathLike objects to open() (part of
|
||
:pep:`519`).
|
||
|
||
- bpo-27066: Fixed SystemError if a custom opener (for open()) returns a
|
||
negative number without setting an exception.
|
||
|
||
- bpo-26983: float() now always return an instance of exact float. The
|
||
deprecation warning is emitted if __float__ returns an instance of a
|
||
strict subclass of float. In a future versions of Python this can be an
|
||
error.
|
||
|
||
- bpo-27097: Python interpreter is now about 7% faster due to optimized
|
||
instruction decoding. Based on patch by Demur Rumed.
|
||
|
||
- bpo-26647: Python interpreter now uses 16-bit wordcode instead of
|
||
bytecode. Patch by Demur Rumed.
|
||
|
||
- bpo-23275: Allow assigning to an empty target list in round brackets: () =
|
||
iterable.
|
||
|
||
- bpo-27243: Update the __aiter__ protocol: instead of returning an
|
||
awaitable that resolves to an asynchronous iterator, the asynchronous
|
||
iterator should be returned directly. Doing the former will trigger a
|
||
PendingDeprecationWarning.
|
||
|
||
Library
|
||
-------
|
||
|
||
- Comment out socket (SO_REUSEPORT) and posix (O_SHLOCK, O_EXLOCK) constants
|
||
exposed on the API which are not implemented on GNU/Hurd. They would not
|
||
work at runtime anyway.
|
||
|
||
- bpo-27025: Generated names for Tkinter widgets are now more meaningful and
|
||
recognizable.
|
||
|
||
- bpo-25455: Fixed crashes in repr of recursive ElementTree.Element and
|
||
functools.partial objects.
|
||
|
||
- bpo-27294: Improved repr for Tkinter event objects.
|
||
|
||
- bpo-20508: Improve exception message of IPv{4,6}Network.__getitem__. Patch
|
||
by Gareth Rees.
|
||
|
||
- bpo-21386: Implement missing IPv4Address.is_global property. It was
|
||
documented since 07a5610bae9d. Initial patch by Roger Luethi.
|
||
|
||
- bpo-27029: Removed deprecated support of universal newlines mode from
|
||
ZipFile.open().
|
||
|
||
- bpo-27030: Unknown escapes consisting of ``'\'`` and an ASCII letter in
|
||
regular expressions now are errors. The re.LOCALE flag now can be used
|
||
only with bytes patterns.
|
||
|
||
- bpo-27186: Add os.PathLike support to DirEntry (part of :pep:`519`).
|
||
Initial patch by Jelle Zijlstra.
|
||
|
||
- bpo-20900: distutils register command now decodes HTTP responses
|
||
correctly. Initial patch by ingrid.
|
||
|
||
- bpo-27186: Add os.PathLike support to pathlib, removing its provisional
|
||
status (part of PEP 519). Initial patch by Dusty Phillips.
|
||
|
||
- bpo-27186: Add support for os.PathLike objects to os.fsencode() and
|
||
os.fsdecode() (part of :pep:`519`).
|
||
|
||
- bpo-27186: Introduce os.PathLike and os.fspath() (part of :pep:`519`).
|
||
|
||
- A new version of typing.py provides several new classes and features:
|
||
@overload outside stubs, Reversible, DefaultDict, Text, ContextManager,
|
||
Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some
|
||
of the new features are not yet implemented in mypy or other static
|
||
analyzers). Also classes for :pep:`492` (Awaitable, AsyncIterable,
|
||
AsyncIterator) have been added (in fact they made it into 3.5.1 but were
|
||
never mentioned).
|
||
|
||
- bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from
|
||
sending a message body for 205 Reset Content. Also, don't send Content
|
||
header fields in responses that don't have a body. Patch by Susumu
|
||
Koshiba.
|
||
|
||
- bpo-21313: Fix the "platform" module to tolerate when sys.version contains
|
||
truncated build information.
|
||
|
||
- bpo-23883: Added missing APIs to __all__ to match the documented APIs for
|
||
the following modules: cgi, mailbox, mimetypes, plistlib and smtpd.
|
||
Patches by Jacek Kołodziej.
|
||
|
||
- bpo-27164: In the zlib module, allow decompressing raw Deflate streams
|
||
with a predefined zdict. Based on patch by Xiang Zhang.
|
||
|
||
- bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely
|
||
write data to the client. Previously it could do partial writes and
|
||
truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout
|
||
doing partial writes, but this is deprecated.
|
||
|
||
- bpo-21272: Use _sysconfigdata.py to initialize distutils.sysconfig.
|
||
|
||
- bpo-19611: :mod:`inspect` now reports the implicit ``.0`` parameters
|
||
generated by the compiler for comprehension and generator expression
|
||
scopes as if they were positional-only parameters called ``implicit0``.
|
||
Patch by Jelle Zijlstra.
|
||
|
||
- bpo-26809: Add ``__all__`` to :mod:`string`. Patch by Emanuel Barry.
|
||
|
||
- bpo-26373: subprocess.Popen.communicate now correctly ignores
|
||
BrokenPipeError when the child process dies before .communicate() is
|
||
called in more/all circumstances.
|
||
|
||
- signal, socket, and ssl module IntEnum constant name lookups now return a
|
||
consistent name for values having multiple names. Ex: signal.Signals(6)
|
||
now refers to itself as signal.SIGALRM rather than flipping between that
|
||
and signal.SIGIOT based on the interpreter's hash randomization seed.
|
||
|
||
- bpo-27167: Clarify the subprocess.CalledProcessError error message text
|
||
when the child process died due to a signal.
|
||
|
||
- bpo-25931: Don't define socketserver.Forking* names on platforms such as
|
||
Windows that do not support os.fork().
|
||
|
||
- bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch
|
||
by Claudiu Popa.
|
||
|
||
- bpo-26526: Replace custom parse tree validation in the parser module with
|
||
a simple DFA validator.
|
||
|
||
- bpo-27114: Fix SSLContext._load_windows_store_certs fails with
|
||
PermissionError
|
||
|
||
- bpo-18383: Avoid creating duplicate filters when using filterwarnings and
|
||
simplefilter. Based on patch by Alex Shkop.
|
||
|
||
- bpo-23026: winreg.QueryValueEx() now return an integer for REG_QWORD type.
|
||
|
||
- bpo-26741: subprocess.Popen destructor now emits a ResourceWarning warning
|
||
if the child process is still running.
|
||
|
||
- bpo-27056: Optimize pickle.load() and pickle.loads(), up to 10% faster to
|
||
deserialize a lot of small objects.
|
||
|
||
- bpo-21271: New keyword only parameters in reset_mock call.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-5124: Paste with text selected now replaces the selection on X11. This
|
||
matches how paste works on Windows, Mac, most modern Linux apps, and ttk
|
||
widgets. Original patch by Serhiy Storchaka.
|
||
|
||
- bpo-24750: Switch all scrollbars in IDLE to ttk versions. Where needed,
|
||
minimal tests are added to cover changes.
|
||
|
||
- bpo-24759: IDLE requires tk 8.5 and availability ttk widgets. Delete now
|
||
unneeded tk version tests and code for older versions. Add test for IDLE
|
||
syntax colorizer.
|
||
|
||
- bpo-27239: idlelib.macosx.isXyzTk functions initialize as needed.
|
||
|
||
- bpo-27262: move Aqua unbinding code, which enable context menus, to
|
||
macosx.
|
||
|
||
- bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is
|
||
a private implementation of test.test_idle and tool for maintainers.
|
||
|
||
- bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These
|
||
persisted after other warnings were suppressed in #20567. Apply Serhiy
|
||
Storchaka's update_idletasks solution to four test files. Record this
|
||
additional advice in idle_test/README.txt
|
||
|
||
- bpo-20567: Revise idle_test/README.txt with advice about avoiding tk
|
||
warning messages from tests. Apply advice to several IDLE tests.
|
||
|
||
- bpo-24225: Update idlelib/README.txt with new file names and event
|
||
handlers.
|
||
|
||
- bpo-27156: Remove obsolete code not used by IDLE.
|
||
|
||
- bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move
|
||
code for configuring text widget colors to a new function.
|
||
|
||
- bpo-24225: Rename many `idlelib/*.py` and `idle_test/test_*.py` files.
|
||
Edit files to replace old names with new names when the old name referred
|
||
to the module rather than the class it contained. See the issue and IDLE
|
||
section in What's New in 3.6 for more.
|
||
|
||
- bpo-26673: When tk reports font size as 0, change to size 10. Such fonts
|
||
on Linux prevented the configuration dialog from opening.
|
||
|
||
- bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav
|
||
Heblikar.
|
||
|
||
- bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav
|
||
Heblikar.
|
||
|
||
- bpo-18410: Add test for IDLE's search dialog. Original patch by Westley
|
||
Martínez.
|
||
|
||
- bpo-21703: Add test for undo delegator. Patch mostly by Saimadhav
|
||
Heblikar .
|
||
|
||
- bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
|
||
|
||
- bpo-23977: Add more asserts to test_delegator.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-16484: Change the default PYTHONDOCS URL to "https:", and fix the
|
||
resulting links to use lowercase. Patch by Sean Rodman, test by Kaushik
|
||
Nadikuditi.
|
||
|
||
- bpo-24136: Document the new :pep:`448` unpacking syntax of 3.5.
|
||
|
||
- bpo-22558: Add remaining doc links to source code for Python-coded
|
||
modules. Patch by Yoni Lavi.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-25285: regrtest now uses subprocesses when the -j1 command line option
|
||
is used: each test file runs in a fresh child process. Before, the -j1
|
||
option was ignored.
|
||
|
||
- bpo-25285: Tools/buildbot/test.bat script now uses -j1 by default to run
|
||
each test file in fresh child process.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-27064: The py.exe launcher now defaults to Python 3. The Windows
|
||
launcher ``py.exe`` no longer prefers an installed Python 2 version over
|
||
Python 3 by default when used interactively.
|
||
|
||
- bpo-17500: Remove unused and outdated icons. (See also:
|
||
https://github.com/python/pythondotorg/issues/945)
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by
|
||
Xavier de Gaye.
|
||
|
||
- bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with
|
||
OpenSSL 1.0.2h.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-27186: Add the PyOS_FSPath() function (part of :pep:`519`).
|
||
|
||
- bpo-26282: PyArg_ParseTupleAndKeywords() now supports positional-only
|
||
parameters.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-26282: Argument Clinic now supports positional-only and keyword
|
||
parameters in the same function.
|
||
|
||
|
||
What's New in Python 3.6.0 alpha 1?
|
||
===================================
|
||
|
||
*Release date: 2016-05-16*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-26657: Fix directory traversal vulnerability with http.server on
|
||
Windows. This fixes a regression that was introduced in 3.3.4rc1 and
|
||
3.4.0rc1. Based on patch by Philipp Hagemeister.
|
||
|
||
- bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is
|
||
empty. Patch by Baji.
|
||
|
||
- bpo-25939: On Windows open the cert store readonly in
|
||
ssl.enum_certificates.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by
|
||
Xavier de Gaye.
|
||
|
||
- bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N"
|
||
format unit.
|
||
|
||
- bpo-26991: Fix possible refleak when creating a function with annotations.
|
||
|
||
- bpo-27039: Fixed bytearray.remove() for values greater than 127. Based on
|
||
patch by Joe Jevnik.
|
||
|
||
- bpo-23640: int.from_bytes() no longer bypasses constructors for
|
||
subclasses.
|
||
|
||
- bpo-27005: Optimized the float.fromhex() class method for exact float. It
|
||
is now 2 times faster.
|
||
|
||
- bpo-18531: Single var-keyword argument of dict subtype was passed
|
||
unscathed to the C-defined function. Now it is converted to exact dict.
|
||
|
||
- bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL
|
||
pointer.
|
||
|
||
- bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for
|
||
interpolation unintentionally added with move to Python 3. Behavior no
|
||
longer does any interpolation in .pypirc files, matching behavior in
|
||
Python 2.7 and Setuptools 19.0.
|
||
|
||
- bpo-26249: Memory functions of the :c:func:`PyMem_Malloc` domain
|
||
(:c:data:`PYMEM_DOMAIN_MEM`) now use the :ref:`pymalloc allocator
|
||
<pymalloc>` rather than system :c:func:`malloc`. Applications calling
|
||
:c:func:`PyMem_Malloc` without holding the GIL can now crash: use
|
||
``PYTHONMALLOC=debug`` environment variable to validate the usage of
|
||
memory allocators in your application.
|
||
|
||
- bpo-26802: Optimize function calls only using unpacking like
|
||
``func(*tuple)`` (no other positional argument, no keyword): avoid copying
|
||
the tuple. Patch written by Joe Jevnik.
|
||
|
||
- bpo-26659: Make the builtin slice type support cycle collection.
|
||
|
||
- bpo-26718: super.__init__ no longer leaks memory if called multiple times.
|
||
NOTE: A direct call of super.__init__ is not endorsed!
|
||
|
||
- bpo-27138: Fix the doc comment for FileFinder.find_spec().
|
||
|
||
- bpo-27147: Mention :pep:`420` in the importlib docs.
|
||
|
||
- bpo-25339: PYTHONIOENCODING now has priority over locale in setting the
|
||
error handler for stdin and stdout.
|
||
|
||
- bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes
|
||
are generic sequence iterators, iterators of str, bytes, bytearray, list,
|
||
tuple, set, frozenset, dict, OrderedDict, corresponding views and
|
||
os.scandir() iterator.
|
||
|
||
- bpo-26574: Optimize ``bytes.replace(b'', b'.')`` and
|
||
``bytearray.replace(b'', b'.')``. Patch written by Josh Snider.
|
||
|
||
- bpo-26581: If coding cookie is specified multiple times on a line in
|
||
Python source code file, only the first one is taken to account.
|
||
|
||
- bpo-19711: Add tests for reloading namespace packages.
|
||
|
||
- bpo-21099: Switch applicable importlib tests to use :pep:`451` API.
|
||
|
||
- bpo-26563: Debug hooks on Python memory allocators now raise a fatal error
|
||
if functions of the :c:func:`PyMem_Malloc` family are called without
|
||
holding the GIL.
|
||
|
||
- bpo-26564: On error, the debug hooks on Python memory allocators now use
|
||
the :mod:`tracemalloc` module to get the traceback where a memory block
|
||
was allocated.
|
||
|
||
- bpo-26558: The debug hooks on Python memory allocator
|
||
:c:func:`PyObject_Malloc` now detect when functions are called without
|
||
holding the GIL.
|
||
|
||
- bpo-26516: Add :envvar:`PYTHONMALLOC` environment variable to set the
|
||
Python memory allocators and/or install debug hooks.
|
||
|
||
- bpo-26516: The :c:func:`PyMem_SetupDebugHooks` function can now also be
|
||
used on Python compiled in release mode.
|
||
|
||
- bpo-26516: The :envvar:`PYTHONMALLOCSTATS` environment variable can now
|
||
also be used on Python compiled in release mode. It now has no effect if
|
||
set to an empty string.
|
||
|
||
- bpo-26516: In debug mode, debug hooks are now also installed on Python
|
||
memory allocators when Python is configured without pymalloc.
|
||
|
||
- bpo-26464: Fix str.translate() when string is ASCII and first replacements
|
||
removes character, but next replacement uses a non-ASCII character or a
|
||
string longer than 1 character. Regression introduced in Python 3.5.0.
|
||
|
||
- bpo-22836: Ensure exception reports from PyErr_Display() and
|
||
PyErr_WriteUnraisable() are sensible even when formatting them produces
|
||
secondary errors. This affects the reports produced by
|
||
sys.__excepthook__() and when __del__() raises an exception.
|
||
|
||
- bpo-26302: Correct behavior to reject comma as a legal character for
|
||
cookie names.
|
||
|
||
- bpo-26136: Upgrade the warning when a generator raises StopIteration from
|
||
PendingDeprecationWarning to DeprecationWarning. Patch by Anish Shah.
|
||
|
||
- bpo-26204: The compiler now ignores all constant statements: bytes, str,
|
||
int, float, complex, name constants (None, False, True), Ellipsis and
|
||
ast.Constant; not only str and int. For example, ``1.0`` is now ignored in
|
||
``def f(): 1.0``.
|
||
|
||
- bpo-4806: Avoid masking the original TypeError exception when using star
|
||
(``*``) unpacking in function calls. Based on patch by Hagen Fürstenau
|
||
and Daniel Urban.
|
||
|
||
- bpo-26146: Add a new kind of AST node: ``ast.Constant``. It can be used by
|
||
external AST optimizers, but the compiler does not emit directly such
|
||
node.
|
||
|
||
- bpo-23601: Sped-up allocation of dict key objects by using Python's small
|
||
object allocator. (Contributed by Julian Taylor.)
|
||
|
||
- bpo-18018: Import raises ImportError instead of SystemError if a relative
|
||
import is attempted without a known parent package.
|
||
|
||
- bpo-25843: When compiling code, don't merge constants if they are equal
|
||
but have a different types. For example, ``f1, f2 = lambda: 1, lambda:
|
||
1.0`` is now correctly compiled to two different functions: ``f1()``
|
||
returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``float``), even if
|
||
``1`` and ``1.0`` are equal.
|
||
|
||
- bpo-26107: The format of the ``co_lnotab`` attribute of code objects
|
||
changes to support negative line number delta.
|
||
|
||
- bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get
|
||
the current Python thread state, but don't issue a fatal error if it is
|
||
NULL. This new function must be used instead of accessing directly the
|
||
_PyThreadState_Current variable. The variable is no more exposed since
|
||
Python 3.5.1 to hide the exact implementation of atomic C types, to avoid
|
||
compiler issues.
|
||
|
||
- bpo-25791: If __package__ != __spec__.parent or if neither __package__ or
|
||
__spec__ are defined then ImportWarning is raised.
|
||
|
||
- bpo-22995: [UPDATE] Comment out the one of the pickleability tests in
|
||
_PyObject_GetState() due to regressions observed in Cython-based projects.
|
||
|
||
- bpo-25961: Disallowed null characters in the type name.
|
||
|
||
- bpo-25973: Fix segfault when an invalid nonlocal statement binds a name
|
||
starting with two underscores.
|
||
|
||
- bpo-22995: Instances of extension types with a state that aren't
|
||
subclasses of list or dict and haven't implemented any pickle-related
|
||
methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or
|
||
__getstate__), can no longer be pickled. Including memoryview.
|
||
|
||
- bpo-20440: Massive replacing unsafe attribute setting code with special
|
||
macro Py_SETREF.
|
||
|
||
- bpo-25766: Special method __bytes__() now works in str subclasses.
|
||
|
||
- bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size.
|
||
This allows sys.getsize() to work correctly with their subclasses with
|
||
__slots__ defined.
|
||
|
||
- bpo-25709: Fixed problem with in-place string concatenation and utf-8
|
||
cache.
|
||
|
||
- bpo-5319: New Py_FinalizeEx() API allowing Python to set an exit status of
|
||
120 on failure to flush buffered streams.
|
||
|
||
- bpo-25485: telnetlib.Telnet is now a context manager.
|
||
|
||
- bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside
|
||
__getattr__.
|
||
|
||
- bpo-24731: Fixed crash on converting objects with special methods
|
||
__bytes__, __trunc__, and __float__ returning instances of subclasses of
|
||
bytes, int, and float to subclasses of bytes, int, and float
|
||
correspondingly.
|
||
|
||
- bpo-25630: Fix a possible segfault during argument parsing in functions
|
||
that accept filesystem paths.
|
||
|
||
- bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess
|
||
internals regarding how fds_to_pass were passed to the child. The bug had
|
||
no actual impact as subprocess.py already avoided it.
|
||
|
||
- bpo-25388: Fixed tokenizer crash when processing undecodable source code
|
||
with a null byte.
|
||
|
||
- bpo-25462: The hash of the key now is calculated only once in most
|
||
operations in C implementation of OrderedDict.
|
||
|
||
- bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now
|
||
rejects builtin types with not defined __new__.
|
||
|
||
- bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec()
|
||
and eval() are passed bytes-like objects. These objects are not
|
||
necessarily terminated by a null byte, but the functions assumed they
|
||
were.
|
||
|
||
- bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node
|
||
when compiling AST from Python objects.
|
||
|
||
- bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that
|
||
was mutated by direct calls of dict methods.
|
||
|
||
- bpo-25449: Iterating OrderedDict with keys with unstable hash now raises
|
||
KeyError in C implementations as well as in Python implementation.
|
||
|
||
- bpo-25395: Fixed crash when highly nested OrderedDict structures were
|
||
garbage collected.
|
||
|
||
- bpo-25401: Optimize bytes.fromhex() and bytearray.fromhex(): they are now
|
||
between 2x and 3.5x faster.
|
||
|
||
- bpo-25399: Optimize bytearray % args using the new private _PyBytesWriter
|
||
API. Formatting is now between 2.5 and 5 times faster.
|
||
|
||
- bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new
|
||
recursion limit is too low depending at the current recursion depth.
|
||
Modify also the "lower-water mark" formula to make it monotonic. This mark
|
||
is used to decide when the overflowed flag of the thread state is reset.
|
||
|
||
- bpo-24402: Fix input() to prompt to the redirected stdout when
|
||
sys.stdout.fileno() fails.
|
||
|
||
- bpo-25349: Optimize bytes % args using the new private _PyBytesWriter API.
|
||
Formatting is now up to 2 times faster.
|
||
|
||
- bpo-24806: Prevent builtin types that are not allowed to be subclassed
|
||
from being subclassed through multiple inheritance.
|
||
|
||
- bpo-25301: The UTF-8 decoder is now up to 15 times as fast for error
|
||
handlers: ``ignore``, ``replace`` and ``surrogateescape``.
|
||
|
||
- bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.
|
||
|
||
- bpo-25267: The UTF-8 encoder is now up to 75 times as fast for error
|
||
handlers: ``ignore``, ``replace``, ``surrogateescape``, ``surrogatepass``.
|
||
Patch co-written with Serhiy Storchaka.
|
||
|
||
- bpo-25280: Import trace messages emitted in verbose (-v) mode are no
|
||
longer formatted twice.
|
||
|
||
- bpo-25227: Optimize ASCII and latin1 encoders with the ``surrogateescape``
|
||
error handler: the encoders are now up to 3 times as fast. Initial patch
|
||
written by Serhiy Storchaka.
|
||
|
||
- bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom()
|
||
function instead of the getentropy() function. The getentropy() function
|
||
is blocking to generate very good quality entropy, os.urandom() doesn't
|
||
need such high-quality entropy.
|
||
|
||
- bpo-9232: Modify Python's grammar to allow trailing commas in the argument
|
||
list of a function declaration. For example, "def f(\*, a = 3,): pass" is
|
||
now legal. Patch from Mark Dickinson.
|
||
|
||
- bpo-24965: Implement :pep:`498` "Literal String Interpolation". This
|
||
allows you to embed expressions inside f-strings, which are converted to
|
||
normal strings at run time. Given x=3, then f'value={x}' == 'value=3'.
|
||
Patch by Eric V. Smith.
|
||
|
||
- bpo-26478: Fix semantic bugs when using binary operators with dictionary
|
||
views and tuples.
|
||
|
||
- bpo-26171: Fix possible integer overflow and heap corruption in
|
||
zipimporter.get_data().
|
||
|
||
- bpo-25660: Fix TAB key behaviour in REPL with readline.
|
||
|
||
- bpo-26288: Optimize PyLong_AsDouble.
|
||
|
||
- bpo-26289: Optimize floor and modulo division for single-digit longs.
|
||
Microbenchmarks show 2-2.5x improvement. Built-in 'divmod' function is
|
||
now also ~10% faster. (See also: bpo-26315)
|
||
|
||
- bpo-25887: Raise a RuntimeError when a coroutine object is awaited more
|
||
than once.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by
|
||
SELinux and fails with EACCESS. The function now falls back to fcntl().
|
||
Patch written by Michał Bednarski.
|
||
|
||
- bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!
|
||
|
||
- bpo-27031: Removed dummy methods in Tkinter widget classes: tk_menuBar()
|
||
and tk_bindForTraversal().
|
||
|
||
- bpo-14132: Fix urllib.request redirect handling when the target only has a
|
||
query string. Original fix by Ján Janech.
|
||
|
||
- bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes
|
||
found in redirect target URLs. Some servers send Location header fields
|
||
with non-ASCII bytes, but "http.client" requires the request target to be
|
||
ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch
|
||
by Christian Heimes.
|
||
|
||
- bpo-27033: The default value of the decode_data parameter for
|
||
smtpd.SMTPChannel and smtpd.SMTPServer constructors is changed to False.
|
||
|
||
- bpo-27034: Removed deprecated class asynchat.fifo.
|
||
|
||
- bpo-26870: Added readline.set_auto_history(), which can stop entries being
|
||
automatically added to the history list. Based on patch by Tyler
|
||
Crompton.
|
||
|
||
- bpo-26039: zipfile.ZipFile.open() can now be used to write data into a ZIP
|
||
file, as well as for extracting data. Patch by Thomas Kluyver.
|
||
|
||
- bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch
|
||
contributed by Chi Hsuan Yen.
|
||
|
||
- bpo-22274: In the subprocess module, allow stderr to be redirected to
|
||
stdout even when stdout is not redirected. Patch by Akira Li.
|
||
|
||
- bpo-26807: mock_open 'files' no longer error on readline at end of file.
|
||
Patch from Yolanda Robla.
|
||
|
||
- bpo-25745: Fixed leaking a userptr in curses panel destructor.
|
||
|
||
- bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper
|
||
in statistics.pvariance.
|
||
|
||
- bpo-26002: Use bisect in statistics.median instead of a linear search.
|
||
Patch by Upendra Kuma.
|
||
|
||
- bpo-25974: Make use of new Decimal.as_integer_ratio() method in statistics
|
||
module. Patch by Stefan Krah.
|
||
|
||
- bpo-26996: Add secrets module as described in :pep:`506`.
|
||
|
||
- bpo-26881: The modulefinder module now supports extended opcode arguments.
|
||
|
||
- bpo-23815: Fixed crashes related to directly created instances of types in
|
||
_tkinter and curses.panel modules.
|
||
|
||
- bpo-17765: weakref.ref() no longer silently ignores keyword arguments.
|
||
Patch by Georg Brandl.
|
||
|
||
- bpo-26873: xmlrpc now raises ResponseError on unsupported type tags
|
||
instead of silently return incorrect result.
|
||
|
||
- bpo-26915: The __contains__ methods in the collections ABCs now check for
|
||
identity before checking equality. This better matches the behavior of
|
||
the concrete classes, allows sensible handling of NaNs, and makes it
|
||
easier to reason about container invariants.
|
||
|
||
- bpo-26711: Fixed the comparison of plistlib.Data with other types.
|
||
|
||
- bpo-24114: Fix an uninitialized variable in `ctypes.util`. The bug only
|
||
occurs on SunOS when the ctypes implementation searches for the `crle`
|
||
program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos.
|
||
|
||
- bpo-26864: In urllib.request, change the proxy bypass host checking
|
||
against no_proxy to be case-insensitive, and to not match unrelated host
|
||
names that happen to have a bypassed hostname as a suffix. Patch by Xiang
|
||
Zhang.
|
||
|
||
- bpo-24902: Print server URL on http.server startup. Initial patch by
|
||
Felix Kaiser.
|
||
|
||
- bpo-25788: fileinput.hook_encoded() now supports an "errors" argument for
|
||
passing to open. Original patch by Joseph Hackman.
|
||
|
||
- bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by
|
||
Xiang Zhang.
|
||
|
||
- bpo-26804: urllib.request will prefer lower_case proxy environment
|
||
variables over UPPER_CASE or Mixed_Case ones. Patch contributed by
|
||
Hans-Peter Jansen.
|
||
|
||
- bpo-26837: assertSequenceEqual() now correctly outputs non-stringified
|
||
differing items (like bytes in the -b mode). This affects
|
||
assertListEqual() and assertTupleEqual().
|
||
|
||
- bpo-26041: Remove "will be removed in Python 3.7" from deprecation
|
||
messages of platform.dist() and platform.linux_distribution(). Patch by
|
||
Kumaripaba Miyurusara Athukorala.
|
||
|
||
- bpo-26822: itemgetter, attrgetter and methodcaller objects no longer
|
||
silently ignore keyword arguments.
|
||
|
||
- bpo-26733: Disassembling a class now disassembles class and static
|
||
methods. Patch by Xiang Zhang.
|
||
|
||
- bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch
|
||
:exc:`AttributeError` instead of :exc:`NameError`. Patch written by
|
||
Emanuel Barry.
|
||
|
||
- bpo-24838: tarfile's ustar and gnu formats now correctly calculate name
|
||
and link field limits for multibyte character encodings like utf-8.
|
||
|
||
- bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by
|
||
Anthony Sottile.
|
||
|
||
- bpo-26782: Add STARTUPINFO to subprocess.__all__ on Windows.
|
||
|
||
- bpo-26404: Add context manager to socketserver. Patch by Aviv Palivoda.
|
||
|
||
- bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
|
||
more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
|
||
1024 bytes per call.
|
||
|
||
- bpo-26585: Eliminate http.server._quote_html() and use
|
||
html.escape(quote=False). Patch by Xiang Zhang.
|
||
|
||
- bpo-26685: Raise OSError if closing a socket fails.
|
||
|
||
- bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'.
|
||
|
||
- bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.
|
||
|
||
- bpo-26587: the site module now allows .pth files to specify files to be
|
||
added to sys.path (e.g. zip files).
|
||
|
||
- bpo-25609: Introduce contextlib.AbstractContextManager and
|
||
typing.ContextManager.
|
||
|
||
- bpo-26709: Fixed Y2038 problem in loading binary PLists.
|
||
|
||
- bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our
|
||
own SIGWINCH handler. Patch by Eric Price.
|
||
|
||
- bpo-25951: Change SSLSocket.sendall() to return None, as explicitly
|
||
documented for plain socket objects. Patch by Aviv Palivoda.
|
||
|
||
- bpo-26586: In http.server, respond with "413 Request header fields too
|
||
large" if there are too many header fields to parse, rather than killing
|
||
the connection and raising an unhandled exception. Patch by Xiang Zhang.
|
||
|
||
- bpo-26676: Added missing XMLPullParser to ElementTree.__all__.
|
||
|
||
- bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable()
|
||
to always return False.
|
||
|
||
- bpo-26492: Exhausted iterator of array.array now conforms with the
|
||
behavior of iterators of other mutable sequences: it lefts exhausted even
|
||
if iterated array is extended.
|
||
|
||
- bpo-26641: doctest.DocFileTest and doctest.testfile() now support packages
|
||
(module splitted into multiple directories) for the package parameter.
|
||
|
||
- bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of
|
||
tuple (changeset 3603bae63c13 only works for classes) so we need to
|
||
implement __ne__ ourselves. Patch by Andrew Plummer.
|
||
|
||
- bpo-26644: Raise ValueError rather than SystemError when a negative length
|
||
is passed to SSLSocket.recv() or read().
|
||
|
||
- bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes
|
||
instead of up to 1024.
|
||
|
||
- bpo-26616: Fixed a bug in datetime.astimezone() method.
|
||
|
||
- bpo-26637: The :mod:`importlib` module now emits an :exc:`ImportError`
|
||
rather than a :exc:`TypeError` if :func:`__import__` is tried during the
|
||
Python shutdown process but :data:`sys.path` is already cleared (set to
|
||
``None``).
|
||
|
||
- bpo-21925: :func:`warnings.formatwarning` now catches exceptions when
|
||
calling :func:`linecache.getline` and
|
||
:func:`tracemalloc.get_object_traceback` to be able to log
|
||
:exc:`ResourceWarning` emitted late during the Python shutdown process.
|
||
|
||
- bpo-23848: On Windows, faulthandler.enable() now also installs an
|
||
exception handler to dump the traceback of all Python threads on any
|
||
Windows exception, not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).
|
||
|
||
- bpo-26530: Add C functions :c:func:`_PyTraceMalloc_Track` and
|
||
:c:func:`_PyTraceMalloc_Untrack` to track memory blocks using the
|
||
:mod:`tracemalloc` module. Add :c:func:`_PyTraceMalloc_GetTraceback` to
|
||
get the traceback of an object.
|
||
|
||
- bpo-26588: The _tracemalloc now supports tracing memory allocations of
|
||
multiple address spaces (domains).
|
||
|
||
- bpo-24266: Ctrl+C during Readline history search now cancels the search
|
||
mode when compiled with Readline 7.
|
||
|
||
- bpo-26590: Implement a safe finalizer for the _socket.socket type. It now
|
||
releases the GIL to close the socket.
|
||
|
||
- bpo-18787: spwd.getspnam() now raises a PermissionError if the user
|
||
doesn't have privileges.
|
||
|
||
- bpo-26560: Avoid potential ValueError in BaseHandler.start_response.
|
||
Initial patch by Peter Inglesby.
|
||
|
||
- bpo-26567: Add a new function :c:func:`PyErr_ResourceWarning` function to
|
||
pass the destroyed object. Add a *source* attribute to
|
||
:class:`warnings.WarningMessage`. Add warnings._showwarnmsg() which uses
|
||
tracemalloc to get the traceback where source object was allocated.
|
||
|
||
- bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex`
|
||
to support importing packages.
|
||
|
||
- bpo-26499: Account for remaining Content-Length in HTTPResponse.readline()
|
||
and read1(). Based on patch by Silent Ghost. Also document that
|
||
HTTPResponse now supports these methods.
|
||
|
||
- bpo-25320: Handle sockets in directories unittest discovery is scanning.
|
||
Patch from Victor van den Elzen.
|
||
|
||
- bpo-16181: cookiejar.http2time() now returns None if year is higher than
|
||
datetime.MAXYEAR.
|
||
|
||
- bpo-26513: Fixes platform module detection of Windows Server
|
||
|
||
- bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by
|
||
Tamás Bence Gedai.
|
||
|
||
- bpo-26323: Add Mock.assert_called() and Mock.assert_called_once() methods
|
||
to unittest.mock. Patch written by Amit Saha.
|
||
|
||
- bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise
|
||
NotImplementedError instead of ImportError.
|
||
|
||
- bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
|
||
|
||
- bpo-15068: Got rid of excessive buffering in fileinput. The bufsize
|
||
parameter is now deprecated and ignored.
|
||
|
||
- bpo-19475: Added an optional argument timespec to the datetime isoformat()
|
||
method to choose the precision of the time component.
|
||
|
||
- bpo-2202: Fix UnboundLocalError in
|
||
AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu
|
||
Dupuy.
|
||
|
||
- bpo-26167: Minimized overhead in copy.copy() and copy.deepcopy().
|
||
Optimized copying and deepcopying bytearrays, NotImplemented, slices,
|
||
short lists, tuples, dicts, sets.
|
||
|
||
- bpo-25718: Fixed pickling and copying the accumulate() iterator with total
|
||
is None.
|
||
|
||
- bpo-26475: Fixed debugging output for regular expressions with the (?x)
|
||
flag.
|
||
|
||
- bpo-26482: Allowed pickling recursive dequeues.
|
||
|
||
- bpo-26335: Make mmap.write() return the number of bytes written like other
|
||
write methods. Patch by Jakub Stasiak.
|
||
|
||
- bpo-26457: Fixed the subnets() methods in IP network classes for the case
|
||
when resulting prefix length is equal to maximal prefix length. Based on
|
||
patch by Xiang Zhang.
|
||
|
||
- bpo-26385: Remove the file if the internal open() call in
|
||
NamedTemporaryFile() fails. Patch by Silent Ghost.
|
||
|
||
- bpo-26402: Fix XML-RPC client to retry when the server shuts down a
|
||
persistent connection. This was a regression related to the new
|
||
http.client.RemoteDisconnected exception in 3.5.0a4.
|
||
|
||
- bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with
|
||
adobe=True. Patch by Swati Jaiswal.
|
||
|
||
- bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.
|
||
|
||
- bpo-26367: importlib.__import__() raises ImportError like
|
||
builtins.__import__() when ``level`` is specified but without an
|
||
accompanying package specified.
|
||
|
||
- bpo-26309: In the "socketserver" module, shut down the request (closing
|
||
the connected socket) when verify_request() returns false. Patch by Aviv
|
||
Palivoda.
|
||
|
||
- bpo-23430: Change the socketserver module to only catch exceptions raised
|
||
from a request handler that are derived from Exception (instead of
|
||
BaseException). Therefore SystemExit and KeyboardInterrupt no longer
|
||
trigger the handle_error() method, and will now to stop a single-threaded
|
||
server.
|
||
|
||
- bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.
|
||
|
||
- bpo-25994: Added the close() method and the support of the context manager
|
||
protocol for the os.scandir() iterator.
|
||
|
||
- bpo-23992: multiprocessing: make MapResult not fail-fast upon exception.
|
||
|
||
- bpo-26243: Support keyword arguments to zlib.compress(). Patch by Aviv
|
||
Palivoda.
|
||
|
||
- bpo-26117: The os.scandir() iterator now closes file descriptor not only
|
||
when the iteration is finished, but when it was failed with error.
|
||
|
||
- bpo-25949: __dict__ for an OrderedDict instance is now created only when
|
||
needed.
|
||
|
||
- bpo-25911: Restored support of bytes paths in os.walk() on Windows.
|
||
|
||
- bpo-26045: Add UTF-8 suggestion to error message when posting a
|
||
non-Latin-1 string with http.client.
|
||
|
||
- bpo-26039: Added zipfile.ZipInfo.from_file() and zipinfo.ZipInfo.is_dir().
|
||
Patch by Thomas Kluyver.
|
||
|
||
- bpo-12923: Reset FancyURLopener's redirect counter even if there is an
|
||
exception. Based on patches by Brian Brazil and Daniel Rocco.
|
||
|
||
- bpo-25945: Fixed a crash when unpickle the functools.partial object with
|
||
wrong state. Fixed a leak in failed functools.partial constructor. "args"
|
||
and "keywords" attributes of functools.partial have now always types tuple
|
||
and dict correspondingly.
|
||
|
||
- bpo-26202: copy.deepcopy() now correctly copies range() objects with
|
||
non-atomic attributes.
|
||
|
||
- bpo-23076: Path.glob() now raises a ValueError if it's called with an
|
||
invalid pattern. Patch by Thomas Nyberg.
|
||
|
||
- bpo-19883: Fixed possible integer overflows in zipimport.
|
||
|
||
- bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and
|
||
gethostbyname_ex() functions of the socket module now decode the hostname
|
||
from the ANSI code page rather than UTF-8.
|
||
|
||
- bpo-26099: The site module now writes an error into stderr if
|
||
sitecustomize module can be imported but executing the module raise an
|
||
ImportError. Same change for usercustomize.
|
||
|
||
- bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8
|
||
encoding.
|
||
|
||
- bpo-25935: Garbage collector now breaks reference loops with OrderedDict.
|
||
|
||
- bpo-16620: Fixed AttributeError in msilib.Directory.glob().
|
||
|
||
- bpo-26013: Added compatibility with broken protocol 2 pickles created in
|
||
old Python 3 versions (3.4.3 and lower).
|
||
|
||
- bpo-26129: Deprecated accepting non-integers in grp.getgrgid().
|
||
|
||
- bpo-25850: Use cross-compilation by default for 64-bit Windows.
|
||
|
||
- bpo-25822: Add docstrings to the fields of urllib.parse results. Patch
|
||
contributed by Swati Jaiswal.
|
||
|
||
- bpo-22642: Convert trace module option parsing mechanism to argparse.
|
||
Patch contributed by SilentGhost.
|
||
|
||
- bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing
|
||
before $() vars.
|
||
|
||
- bpo-26069: Remove the deprecated apis in the trace module.
|
||
|
||
- bpo-22138: Fix mock.patch behavior when patching descriptors. Restore
|
||
original values after patching. Patch contributed by Sean McCully.
|
||
|
||
- bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode
|
||
option if it is safe to do so.
|
||
|
||
- bpo-26012: Don't traverse into symlinks for ``**`` pattern in
|
||
pathlib.Path.[r]glob().
|
||
|
||
- bpo-24120: Ignore PermissionError when traversing a tree with
|
||
pathlib.Path.[r]glob(). Patch by Ulrich Petri.
|
||
|
||
- bpo-21815: Accept ] characters in the data portion of imap responses, in
|
||
order to handle the flags with square brackets accepted and produced by
|
||
servers such as gmail.
|
||
|
||
- bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer
|
||
attribute (restores backward compatibility).
|
||
|
||
- bpo-25971: Optimized creating Fractions from floats by 2 times and from
|
||
Decimals by 3 times.
|
||
|
||
- bpo-25802: Document as deprecated the remaining implementations of
|
||
importlib.abc.Loader.load_module().
|
||
|
||
- bpo-25928: Add Decimal.as_integer_ratio().
|
||
|
||
- bpo-25447: Copying the lru_cache() wrapper object now always works,
|
||
independently from the type of the wrapped object (by returning the
|
||
original object unchanged).
|
||
|
||
- bpo-25768: Have the functions in compileall return booleans instead of
|
||
ints and add proper documentation and tests for the return values.
|
||
|
||
- bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.
|
||
|
||
- bpo-25860: os.fwalk() no longer skips remaining directories when error
|
||
occurs. Original patch by Samson Lee.
|
||
|
||
- bpo-25914: Fixed and simplified OrderedDict.__sizeof__.
|
||
|
||
- bpo-25869: Optimized deepcopying ElementTree; it is now 20 times faster.
|
||
|
||
- bpo-25873: Optimized iterating ElementTree. Iterating elements
|
||
Element.iter() is now 40% faster, iterating text Element.itertext() is now
|
||
up to 2.5 times faster.
|
||
|
||
- bpo-25902: Fixed various refcount issues in ElementTree iteration.
|
||
|
||
- bpo-22227: The TarFile iterator is reimplemented using generator. This
|
||
implementation is simpler that using class.
|
||
|
||
- bpo-25638: Optimized ElementTree.iterparse(); it is now 2x faster.
|
||
Optimized ElementTree parsing; it is now 10% faster.
|
||
|
||
- bpo-25761: Improved detecting errors in broken pickle data.
|
||
|
||
- bpo-25717: Restore the previous behaviour of tolerating most fstat()
|
||
errors when opening files. This was a regression in 3.5a1, and stopped
|
||
anonymous temporary files from working in special cases.
|
||
|
||
- bpo-24903: Fix regression in number of arguments compileall accepts when
|
||
'-d' is specified. The check on the number of arguments has been dropped
|
||
completely as it never worked correctly anyway.
|
||
|
||
- bpo-25764: In the subprocess module, preserve any exception caused by
|
||
fork() failure when preexec_fn is used.
|
||
|
||
- bpo-25771: Tweak the exception message for importlib.util.resolve_name()
|
||
when 'package' isn't specified but necessary.
|
||
|
||
- bpo-6478: _strptime's regexp cache now is reset after changing timezone
|
||
with time.tzset().
|
||
|
||
- bpo-14285: When executing a package with the "python -m package" option,
|
||
and package initialization fails, a proper traceback is now reported. The
|
||
"runpy" module now lets exceptions from package initialization pass back
|
||
to the caller, rather than raising ImportError.
|
||
|
||
- bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message
|
||
". . . is a package and cannot be directly executed" if the package could
|
||
not even be initialized (e.g. due to a bad ``*.pyc`` file).
|
||
|
||
- bpo-25177: Fixed problem with the mean of very small and very large
|
||
numbers. As a side effect, statistics.mean and statistics.variance should
|
||
be significantly faster.
|
||
|
||
- bpo-25718: Fixed copying object with state with boolean value is false.
|
||
|
||
- bpo-10131: Fixed deep copying of minidom documents. Based on patch by
|
||
Marian Ganisin.
|
||
|
||
- bpo-7990: dir() on ElementTree.Element now lists properties: "tag",
|
||
"text", "tail" and "attrib". Original patch by Santoso Wijaya.
|
||
|
||
- bpo-25725: Fixed a reference leak in pickle.loads() when unpickling
|
||
invalid data including tuple instructions.
|
||
|
||
- bpo-25663: In the Readline completer, avoid listing duplicate global
|
||
names, and search the global namespace before searching builtins.
|
||
|
||
- bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.
|
||
|
||
- bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.
|
||
|
||
- bpo-25691: Fixed crash on deleting ElementTree.Element attributes.
|
||
|
||
- bpo-25624: ZipFile now always writes a ZIP_STORED header for directory
|
||
entries. Patch by Dingyuan Wang.
|
||
|
||
- bpo-25626: Change three zlib functions to accept sizes that fit in
|
||
Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a
|
||
regression in 3.5 where GzipFile.read() failed to read chunks larger than
|
||
2 or 4 GiB. The change affects the zlib.Decompress.decompress()
|
||
max_length parameter, the zlib.decompress() bufsize parameter, and the
|
||
zlib.Decompress.flush() length parameter.
|
||
|
||
- bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
|
||
when the OS gives priority to errors such as EACCES over EEXIST.
|
||
|
||
- bpo-25593: Change semantics of EventLoop.stop() in asyncio.
|
||
|
||
- bpo-6973: When we know a subprocess.Popen process has died, do not allow
|
||
the send_signal(), terminate(), or kill() methods to do anything as they
|
||
could potentially signal a different process.
|
||
|
||
- bpo-23883: Added missing APIs to __all__ to match the documented APIs for
|
||
the following modules: calendar, csv, enum, fileinput, ftplib, logging,
|
||
optparse, tarfile, threading and wave. Also added a
|
||
test.support.check__all__() helper. Patches by Jacek Kołodziej, Mauro S.
|
||
M. Rodrigues and Joel Taddei.
|
||
|
||
- bpo-25590: In the Readline completer, only call getattr() once per
|
||
attribute. Also complete names of attributes such as properties and slots
|
||
which are listed by dir() but not yet created on an instance.
|
||
|
||
- bpo-25498: Fix a crash when garbage-collecting ctypes objects created by
|
||
wrapping a memoryview. This was a regression made in 3.5a1. Based on
|
||
patch by Eryksun.
|
||
|
||
- bpo-25584: Added "escape" to the __all__ list in the glob module.
|
||
|
||
- bpo-25584: Fixed recursive glob() with patterns starting with ``**``.
|
||
|
||
- bpo-25446: Fix regression in smtplib's AUTH LOGIN support.
|
||
|
||
- bpo-18010: Fix the pydoc web server's module search function to handle
|
||
exceptions from importing packages.
|
||
|
||
- bpo-25554: Got rid of circular references in regular expression parsing.
|
||
|
||
- bpo-18973: Command-line interface of the calendar module now uses argparse
|
||
instead of optparse.
|
||
|
||
- bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at
|
||
the end if the FileInput was opened with binary mode. Patch by Ryosuke
|
||
Ito.
|
||
|
||
- bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties.
|
||
Original patch by John Mark Vandenberg.
|
||
|
||
- bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.
|
||
|
||
- bpo-21827: Fixed textwrap.dedent() for the case when largest common
|
||
whitespace is a substring of smallest leading whitespace. Based on patch
|
||
by Robert Li.
|
||
|
||
- bpo-25447: The lru_cache() wrapper objects now can be copied and pickled
|
||
(by returning the original object unchanged).
|
||
|
||
- bpo-25390: typing: Don't crash on Union[str, Pattern].
|
||
|
||
- bpo-25441: asyncio: Raise error from drain() when socket is closed.
|
||
|
||
- bpo-25410: Cleaned up and fixed minor bugs in C implementation of
|
||
OrderedDict.
|
||
|
||
- bpo-25411: Improved Unicode support in SMTPHandler through better use of
|
||
the email package. Thanks to user simon04 for the patch.
|
||
|
||
- Move the imp module from a PendingDeprecationWarning to
|
||
DeprecationWarning.
|
||
|
||
- bpo-25407: Remove mentions of the formatter module being removed in Python
|
||
3.6.
|
||
|
||
- bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
|
||
that caused segmentation fault or hang in iterating after moving several
|
||
items to the start of ordered dict.
|
||
|
||
- bpo-25382: pickletools.dis() now outputs implicit memo index for the
|
||
MEMOIZE opcode.
|
||
|
||
- bpo-25357: Add an optional newline parameter to binascii.b2a_base64().
|
||
base64.b64encode() uses it to avoid a memory copy.
|
||
|
||
- bpo-24164: Objects that need calling ``__new__`` with keyword arguments,
|
||
can now be pickled using pickle protocols older than protocol version 4.
|
||
|
||
- bpo-25364: zipfile now works in threads disabled builds.
|
||
|
||
- bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both
|
||
decode_data and enable_SMTPUTF8 are set to true.
|
||
|
||
- bpo-16099: RobotFileParser now supports Crawl-delay and Request-rate
|
||
extensions. Patch by Nikolay Bogoychev.
|
||
|
||
- bpo-25316: distutils raises OSError instead of DistutilsPlatformError when
|
||
MSVC is not installed.
|
||
|
||
- bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in
|
||
pickletools.opcodes.
|
||
|
||
- bpo-23972: Updates asyncio datagram create method allowing reuseport and
|
||
reuseaddr socket options to be set prior to binding the socket. Mirroring
|
||
the existing asyncio create_server method the reuseaddr option for
|
||
datagram sockets defaults to True if the O/S is 'posix' (except if the
|
||
platform is Cygwin). Patch by Chris Laws.
|
||
|
||
- bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a
|
||
coroutine to a loop from another thread, returning a
|
||
concurrent.futures.Future. By Vincent Michel.
|
||
|
||
- bpo-25232: Fix CGIRequestHandler to split the query from the URL at the
|
||
first question mark (?) rather than the last. Patch from Xiang Zhang.
|
||
|
||
- bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query
|
||
part of the URL as if it were a path. Patch from Xiang Zhang.
|
||
|
||
- bpo-25287: Don't add crypt.METHOD_CRYPT to crypt.methods if it's not
|
||
supported. Check if it is supported, it may not be supported on OpenBSD
|
||
for example.
|
||
|
||
- bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong
|
||
results in some cases.
|
||
|
||
- bpo-25203: Failed readline.set_completer_delims() no longer left the
|
||
module in inconsistent state.
|
||
|
||
- bpo-25011: rlcompleter now omits private and special attribute names
|
||
unless the prefix starts with underscores.
|
||
|
||
- bpo-25209: rlcompleter now can add a space or a colon after completed
|
||
keyword.
|
||
|
||
- bpo-22241: timezone.utc name is now plain 'UTC', not 'UTC-00:00'.
|
||
|
||
- bpo-23517: fromtimestamp() and utcfromtimestamp() methods of
|
||
datetime.datetime now round microseconds to nearest with ties going to
|
||
nearest even integer (ROUND_HALF_EVEN), as round(float), instead of
|
||
rounding towards -Infinity (ROUND_FLOOR).
|
||
|
||
- bpo-23552: Timeit now warns when there is substantial (4x) variance
|
||
between best and worst times. Patch from Serhiy Storchaka.
|
||
|
||
- bpo-24633: site-packages/README -> README.txt.
|
||
|
||
- bpo-24879: help() and pydoc can now list named tuple fields in the order
|
||
they were defined rather than alphabetically. The ordering is determined
|
||
by the _fields attribute if present.
|
||
|
||
- bpo-24874: Improve speed of itertools.cycle() and make its pickle more
|
||
compact.
|
||
|
||
- Fix crash in itertools.cycle.__setstate__() when the first argument wasn't
|
||
a list.
|
||
|
||
- bpo-20059: urllib.parse raises ValueError on all invalid ports. Patch by
|
||
Martin Panter.
|
||
|
||
- bpo-24360: Improve __repr__ of argparse.Namespace() for invalid
|
||
identifiers. Patch by Matthias Bussonnier.
|
||
|
||
- bpo-23426: run_setup was broken in distutils. Patch from Alexander
|
||
Belopolsky.
|
||
|
||
- bpo-13938: 2to3 converts StringTypes to a tuple. Patch from Mark Hammond.
|
||
|
||
- bpo-2091: open() accepted a 'U' mode string containing '+', but 'U' can
|
||
only be used with 'r'. Patch from Jeff Balogh and John O'Connor.
|
||
|
||
- bpo-8585: improved tests for zipimporter2. Patch from Mark Lawrence.
|
||
|
||
- bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
|
||
Patch from Nicola Palumbo and Laurent De Buyst.
|
||
|
||
- bpo-24426: Fast searching optimization in regular expressions now works
|
||
for patterns that starts with capturing groups. Fast searching
|
||
optimization now can't be disabled at compile time.
|
||
|
||
- bpo-23661: unittest.mock side_effects can now be exceptions again. This
|
||
was a regression vs Python 3.4. Patch from Ignacio Rossi
|
||
|
||
- bpo-13248: Remove deprecated inspect.getmoduleinfo function.
|
||
|
||
- bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().
|
||
|
||
- bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating
|
||
ssl.SSLContext.
|
||
|
||
- bpo-25569: Fix memory leak in SSLSocket.getpeercert().
|
||
|
||
- bpo-25471: Sockets returned from accept() shouldn't appear to be
|
||
nonblocking.
|
||
|
||
- bpo-25319: When threading.Event is reinitialized, the underlying condition
|
||
should use a regular lock rather than a recursive lock.
|
||
|
||
- Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu
|
||
Davis.
|
||
|
||
- bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк
|
||
Коренберг.
|
||
|
||
- bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X
|
||
versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
|
||
|
||
- bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
|
||
current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.
|
||
|
||
- bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input.
|
||
Patch by Jack O'Connor.
|
||
|
||
- bpo-27040: Add loop.get_exception_handler method
|
||
|
||
- bpo-27041: asyncio: Add loop.create_future method
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav
|
||
Heblikar.
|
||
|
||
- In the 'IDLE-console differences' section of the IDLE doc, clarify how
|
||
running with IDLE affects sys.modules and the standard streams.
|
||
|
||
- bpo-25507: fix incorrect change in IOBinding that prevented printing.
|
||
Augment IOBinding htest to include all major IOBinding functions.
|
||
|
||
- bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
|
||
MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode
|
||
CREDITS.txt to utf-8 and open it with 'utf-8'.
|
||
|
||
- bpo-15348: Stop the debugger engine (normally in a user process) before
|
||
closing the debugger window (running in the IDLE process). This prevents
|
||
the RuntimeErrors that were being caught and ignored.
|
||
|
||
- bpo-24455: Prevent IDLE from hanging when a) closing the shell while the
|
||
debugger is active (15347); b) closing the debugger with the [X] button
|
||
(15348); and c) activating the debugger when already active (24455). The
|
||
patch by Mark Roseman does this by making two changes. 1. Suspend and
|
||
resume the gui.interaction method with the tcl vwait mechanism intended
|
||
for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow
|
||
any existing interaction to terminate first.
|
||
|
||
- Change 'The program' to 'Your program' in an IDLE 'kill program?' message
|
||
to make it clearer that the program referred to is the currently running
|
||
user program, not IDLE itself.
|
||
|
||
- bpo-24750: Improve the appearance of the IDLE editor window status bar.
|
||
Patch by Mark Roseman.
|
||
|
||
- bpo-25313: Change the handling of new built-in text color themes to better
|
||
address the compatibility problem introduced by the addition of IDLE Dark.
|
||
Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
|
||
|
||
- bpo-24782: Extension configuration is now a tab in the IDLE Preferences
|
||
dialog rather than a separate dialog. The former tabs are now a sorted
|
||
list. Patch by Mark Roseman.
|
||
|
||
- bpo-22726: Re-activate the config dialog help button with some content
|
||
about the other buttons and the new IDLE Dark theme.
|
||
|
||
- bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is
|
||
more or less IDLE Classic inverted, with a cobalt blue background.
|
||
Strings, comments, keywords, ... are still green, red, orange, ... . To
|
||
use it with IDLEs released before November 2015, hit the 'Save as New
|
||
Custom Theme' button and enter a new name, such as 'Custom Dark'. The
|
||
custom theme will work with any IDLE release, and can be modified.
|
||
|
||
- bpo-25224: README.txt is now an idlelib index for IDLE developers and
|
||
curious users. The previous user content is now in the IDLE doc chapter.
|
||
'IDLE' now means 'Integrated Development and Learning Environment'.
|
||
|
||
- bpo-24820: Users can now set breakpoint colors in Settings -> Custom
|
||
Highlighting. Original patch by Mark Roseman.
|
||
|
||
- bpo-24972: Inactive selection background now matches active selection
|
||
background, as configured by users, on all systems. Found items are now
|
||
always highlighted on Windows. Initial patch by Mark Roseman.
|
||
|
||
- bpo-24570: Idle: make calltip and completion boxes appear on Macs affected
|
||
by a tk regression. Initial patch by Mark Roseman.
|
||
|
||
- bpo-24988: Idle ScrolledList context menus (used in debugger) now work on
|
||
Mac Aqua. Patch by Mark Roseman.
|
||
|
||
- bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by
|
||
Mark Roseman.
|
||
|
||
- bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac
|
||
OSX, make them a 'sheet'. Patch by Mark Roseman.
|
||
|
||
- bpo-25198: Enhance the initial html viewer now used for Idle Help.
|
||
Properly indent fixed-pitch text (patch by Mark Roseman). Give code
|
||
snippet a very Sphinx-like light blueish-gray background. Re-use initial
|
||
width and height set by users for shell and editor. When the Table of
|
||
Contents (TOC) menu is used, put the section header at the top of the
|
||
screen.
|
||
|
||
- bpo-25225: Condense and rewrite Idle doc section on text colors.
|
||
|
||
- bpo-21995: Explain some differences between IDLE and console Python.
|
||
|
||
- bpo-22820: Explain need for *print* when running file from Idle editor.
|
||
|
||
- bpo-25224: Doc: augment Idle feature list and no-subprocess section.
|
||
|
||
- bpo-25219: Update doc for Idle command line options. Some were missing and
|
||
notes were not correct.
|
||
|
||
- bpo-24861: Most of idlelib is private and subject to change. Use
|
||
idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
|
||
|
||
- bpo-25199: Idle: add synchronization comments for future maintainers.
|
||
|
||
- bpo-16893: Replace help.txt with help.html for Idle doc display. The new
|
||
idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks
|
||
better than help.txt and will better document Idle as released. The
|
||
tkinter html viewer that works for this file was written by Rose Roseman.
|
||
The now unused EditorWindow.HelpDialog class and helt.txt file are
|
||
deprecated.
|
||
|
||
- bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
|
||
|
||
- bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-26736: Used HTTPS for external links in the documentation if possible.
|
||
|
||
- bpo-6953: Rework the Readline module documentation to group related
|
||
functions together, and add more details such as what underlying Readline
|
||
functions and variables are accessed.
|
||
|
||
- bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.
|
||
|
||
- bpo-24952: Clarify the default size argument of stack_size() in the
|
||
"threading" and "_thread" modules. Patch from Mattip.
|
||
|
||
- bpo-26014: Update 3.x packaging documentation: * "See also" links to the
|
||
new docs are now provided in the legacy pages * links to setuptools
|
||
documentation have been updated
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory
|
||
Loyse and Jelle Zijlstra.
|
||
|
||
- bpo-26295: When using "python3 -m test --testdir=TESTDIR", regrtest
|
||
doesn't add "test." prefix to test module names.
|
||
|
||
- bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool)
|
||
was untested.
|
||
|
||
- bpo-26015: Added new tests for pickling iterators of mutable sequences.
|
||
|
||
- bpo-26325: Added test.support.check_no_resource_warning() to check that no
|
||
ResourceWarning is emitted.
|
||
|
||
- bpo-25940: Changed test_ssl to use its internal local server more. This
|
||
avoids relying on svn.python.org, which recently changed root certificate.
|
||
|
||
- bpo-25616: Tests for OrderedDict are extracted from test_collections into
|
||
separate file test_ordered_dict.
|
||
|
||
- bpo-25449: Added tests for OrderedDict subclasses.
|
||
|
||
- bpo-25188: Add -P/--pgo to test.regrtest to suppress error output when
|
||
running the test suite for the purposes of a PGO build. Initial patch by
|
||
Alecsandru Patrascu.
|
||
|
||
- bpo-22806: Add ``python -m test --list-tests`` command to list tests.
|
||
|
||
- bpo-18174: ``python -m test --huntrleaks ...`` now also checks for leak of
|
||
file descriptors. Patch written by Richard Oudkerk.
|
||
|
||
- bpo-25260: Fix ``python -m test --coverage`` on Windows. Remove the list
|
||
of ignored directories.
|
||
|
||
- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass
|
||
along to regrtest.py. Previously there was a limit of 9.
|
||
|
||
- bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files
|
||
cannot be written.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-21277: Don't try to link _ctypes with a ffi_convenience library.
|
||
|
||
- bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier
|
||
de Gaye.
|
||
|
||
- bpo-26932: Fixed support of RTLD_* constants defined as enum values, not
|
||
via macros (in particular on Android). Patch by Chi Hsuan Yen.
|
||
|
||
- bpo-22359: Disable the rules for running _freeze_importlib and pgen when
|
||
cross-compiling. The output of these programs is normally saved with the
|
||
source code anyway, and is still regenerated when doing a native build.
|
||
Patch by Xavier de Gaye.
|
||
|
||
- bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except
|
||
on Mac OS X. Patch written by Chi Hsuan Yen.
|
||
|
||
- bpo-25702: A --with-lto configure option has been added that will enable
|
||
link time optimizations at build time during a make profile-opt. Some
|
||
compilers and toolchains are known to not produce stable code when using
|
||
LTO, be sure to test things thoroughly before relying on it. It can
|
||
provide a few % speed up over profile-opt alone.
|
||
|
||
- bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old
|
||
versions.
|
||
|
||
- bpo-17603: Avoid error about nonexistent fileblocks.o file by using a
|
||
lower-level check for st_blocks in struct stat.
|
||
|
||
- bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern
|
||
Thiel.
|
||
|
||
- bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.
|
||
|
||
- bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to
|
||
``PCbuild\build.bat`` for building with Profile-Guided Optimization. The
|
||
old ``PCbuild\build_pgo.bat`` script is removed.
|
||
|
||
- bpo-25827: Add support for building with ICC to ``configure``, including a
|
||
new ``--with-icc`` flag.
|
||
|
||
- bpo-25696: Fix installation of Python on UNIX with make -j9.
|
||
|
||
- bpo-24986: It is now possible to build Python on Windows without errors
|
||
when external libraries are not available.
|
||
|
||
- bpo-24421: Compile Modules/_math.c once, before building extensions.
|
||
Previously it could fail to compile properly if the math and cmath builds
|
||
were concurrent.
|
||
|
||
- bpo-26465: Update OS X 10.5+ 32-bit-only installer to build and link with
|
||
OpenSSL 1.0.2g.
|
||
|
||
- bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.
|
||
|
||
- bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries.
|
||
|
||
- bpo-24324: Do not enable unreachable code warnings when using gcc as the
|
||
option does not work correctly in older versions of gcc and has been
|
||
silently removed as of gcc-4.5.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-27053: Updates make_zip.py to correctly generate library ZIP file.
|
||
|
||
- bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases
|
||
that don't include the contents of the include directory (that is, 1.0.2e
|
||
and later).
|
||
|
||
- bpo-26071: bdist_wininst created binaries fail to start and find 32bit
|
||
Python
|
||
|
||
- bpo-26073: Update the list of magic numbers in launcher
|
||
|
||
- bpo-26065: Excludes venv from library when generating embeddable distro.
|
||
|
||
- bpo-25022: Removed very outdated PC/example_nt/ directory.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-26799: Fix python-gdb.py: don't get C types once when the Python code
|
||
is loaded, but get C types on demand. The C types can change if
|
||
python-gdb.py is loaded before the Python executable. Patch written by
|
||
Thomas Ilsche.
|
||
|
||
- bpo-26271: Fix the Freeze tool to properly use flags passed through
|
||
configure. Patch by Daniel Shaulov.
|
||
|
||
- bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py.
|
||
Patch by Guo Ci Teo.
|
||
|
||
- bpo-26316: Fix variable name typo in Argument Clinic.
|
||
|
||
- bpo-25440: Fix output of python-config --extension-suffix.
|
||
|
||
- bpo-25154: The pyvenv script has been deprecated in favour of `python3 -m
|
||
venv`.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-26312: SystemError is now raised in all programming bugs with using
|
||
PyArg_ParseTupleAndKeywords(). RuntimeError did raised before in some
|
||
programming bugs.
|
||
|
||
- bpo-26198: ValueError is now raised instead of TypeError on buffer
|
||
overflow in parsing "es#" and "et#" format units. SystemError is now
|
||
raised instead of TypeError on programmatical error in parsing format
|
||
string.
|
||
|
||
|
||
What's New in Python 3.5.5 final?
|
||
=================================
|
||
|
||
*Release date: 2018-02-04*
|
||
|
||
There were no new changes in version 3.5.5.
|
||
|
||
|
||
|
||
What's New in Python 3.5.5 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2018-01-23*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-32551: The ``sys.path[0]`` initialization change for bpo-29139 caused
|
||
a regression by revealing an inconsistency in how sys.path is initialized
|
||
when executing ``__main__`` from a zipfile, directory, or other import
|
||
location. This is considered a potential security issue, as it may lead to
|
||
privileged processes unexpectedly loading code from user controlled
|
||
directories in situations where that was not previously the case. The
|
||
interpreter now consistently avoids ever adding the import location's
|
||
parent directory to ``sys.path``, and ensures no other ``sys.path``
|
||
entries are inadvertently modified when inserting the import location
|
||
named on the command line. (Originally reported as bpo-29723 against
|
||
Python 3.6rc1, but it was missed at the time that the then upcoming Python
|
||
3.5.4 release would also be affected)
|
||
|
||
- bpo-30657: Fixed possible integer overflow in PyBytes_DecodeEscape,
|
||
CVE-2017-1000158. Original patch by Jay Bosamiya; rebased to Python 3 by
|
||
Miro Hrončok.
|
||
|
||
- bpo-30947: Upgrade libexpat embedded copy from version 2.2.1 to 2.2.3 to
|
||
get security fixes.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-31095: Fix potential crash during GC caused by ``tp_dealloc`` which
|
||
doesn't call ``PyObject_GC_UnTrack()``.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-32072: Fixed issues with binary plists: Fixed saving bytearrays.
|
||
Identical objects will be saved only once. Equal references will be load
|
||
as identical objects. Added support for saving and loading recursive data
|
||
structures.
|
||
|
||
- bpo-31170: expat: Update libexpat from 2.2.3 to 2.2.4. Fix copying of
|
||
partial characters for UTF-8 input (libexpat bug 115):
|
||
https://github.com/libexpat/libexpat/issues/115
|
||
|
||
|
||
What's New in Python 3.5.4 final?
|
||
=================================
|
||
|
||
*Release date: 2017-08-07*
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-30119: ftplib.FTP.putline() now throws ValueError on commands that
|
||
contains CR or LF. Patch by Dong-hee Na.
|
||
|
||
|
||
What's New in Python 3.5.4 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2017-07-23*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-30730: Prevent environment variables injection in subprocess on
|
||
Windows. Prevent passing other environment variables and command
|
||
arguments.
|
||
|
||
- bpo-30694: Upgrade expat copy from 2.2.0 to 2.2.1 to get fixes of multiple
|
||
security vulnerabilities including: CVE-2017-9233 (External entity
|
||
infinite loop DoS), CVE-2016-9063 (Integer overflow, re-fix),
|
||
CVE-2016-0718 (Fix regression bugs from 2.2.0's fix to CVE-2016-0718) and
|
||
CVE-2012-0876 (Counter hash flooding with SipHash). Note: the
|
||
CVE-2016-5300 (Use os-specific entropy sources like getrandom) doesn't
|
||
impact Python, since Python already gets entropy from the OS to set the
|
||
expat secret using ``XML_SetHashSalt()``.
|
||
|
||
- bpo-30500: Fix urllib.parse.splithost() to correctly parse fragments. For
|
||
example, ``splithost('//127.0.0.1#@evil.com/')`` now correctly returns the
|
||
``127.0.0.1`` host, instead of treating ``@evil.com`` as the host in an
|
||
authentication (``login@host``).
|
||
|
||
- bpo-29591: Update expat copy from 2.1.1 to 2.2.0 to get fixes of
|
||
CVE-2016-0718 and CVE-2016-4472. See
|
||
https://sourceforge.net/p/expat/bugs/537/ for more information.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-30876: Relative import from unloaded package now reimports the package
|
||
instead of failing with SystemError. Relative import from non-package now
|
||
fails with ImportError rather than SystemError.
|
||
|
||
- bpo-30765: Avoid blocking in pthread_mutex_lock() when
|
||
PyThread_acquire_lock() is asked not to block.
|
||
|
||
- bpo-27945: Fixed various segfaults with dict when input collections are
|
||
mutated during searching, inserting or comparing. Based on patches by
|
||
Duane Griffin and Tim Mitchell.
|
||
|
||
- bpo-25794: Fixed type.__setattr__() and type.__delattr__() for
|
||
non-interned attribute names. Based on patch by Eryk Sun.
|
||
|
||
- bpo-29935: Fixed error messages in the index() method of tuple, list and
|
||
deque when pass indices of wrong type.
|
||
|
||
- bpo-28876: ``bool(range)`` works even if ``len(range)`` raises
|
||
:exc:`OverflowError`.
|
||
|
||
- bpo-29600: Fix wrapping coroutine return values in StopIteration.
|
||
|
||
- bpo-29537: Restore runtime compatibility with bytecode files generated by
|
||
CPython 3.5.0 to 3.5.2, and adjust the eval loop to avoid the problems
|
||
that could be caused by the malformed variant of the
|
||
BUILD_MAP_UNPACK_WITH_CALL opcode that they may contain. Patch by Petr
|
||
Viktorin, Serhiy Storchaka, and Nick Coghlan.
|
||
|
||
- bpo-28598: Support __rmod__ for subclasses of str being called before
|
||
str.__mod__. Patch by Martijn Pieters.
|
||
|
||
- bpo-29602: Fix incorrect handling of signed zeros in complex constructor
|
||
for complex subclasses and for inputs having a __complex__ method. Patch
|
||
by Serhiy Storchaka.
|
||
|
||
- bpo-29347: Fixed possibly dereferencing undefined pointers when creating
|
||
weakref objects.
|
||
|
||
- bpo-29438: Fixed use-after-free problem in key sharing dict.
|
||
|
||
- bpo-29319: Prevent RunMainFromImporter overwriting sys.path[0].
|
||
|
||
- bpo-29337: Fixed possible BytesWarning when compare the code objects.
|
||
Warnings could be emitted at compile time.
|
||
|
||
- bpo-29478: If max_line_length=None is specified while using the Compat32
|
||
policy, it is no longer ignored. Patch by Mircea Cosbuc.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-29403: Fix ``unittest.mock``'s autospec to not fail on method-bound
|
||
builtin functions. Patch by Aaron Gallagher.
|
||
|
||
- bpo-30961: Fix decrementing a borrowed reference in tracemalloc.
|
||
|
||
- bpo-30886: Fix multiprocessing.Queue.join_thread(): it now waits until the
|
||
thread completes, even if the thread was started by the same process which
|
||
created the queue.
|
||
|
||
- bpo-29854: Fix segfault in readline when using readline's history-size
|
||
option. Patch by Nir Soffer.
|
||
|
||
- bpo-30807: signal.setitimer() may disable the timer when passed a tiny
|
||
value. Tiny values (such as 1e-6) are valid non-zero values for
|
||
setitimer(), which is specified as taking microsecond-resolution
|
||
intervals. However, on some platform, our conversion routine could convert
|
||
1e-6 into a zero interval, therefore disabling the timer instead of
|
||
(re-)scheduling it.
|
||
|
||
- bpo-30441: Fix bug when modifying os.environ while iterating over it
|
||
|
||
- bpo-30532: Fix email header value parser dropping folding white space in
|
||
certain cases.
|
||
|
||
- bpo-29169: Update zlib to 1.2.11.
|
||
|
||
- bpo-30879: os.listdir() and os.scandir() now emit bytes names when called
|
||
with bytes-like argument.
|
||
|
||
- bpo-30746: Prohibited the '=' character in environment variable names in
|
||
``os.putenv()`` and ``os.spawn*()``.
|
||
|
||
- bpo-29755: Fixed the lgettext() family of functions in the gettext module.
|
||
They now always return bytes.
|
||
|
||
- bpo-30645: Fix path calculation in imp.load_package(), fixing it for cases
|
||
when a package is only shipped with bytecodes. Patch by Alexandru
|
||
Ardelean.
|
||
|
||
- bpo-23890: unittest.TestCase.assertRaises() now manually breaks a
|
||
reference cycle to not keep objects alive longer than expected.
|
||
|
||
- bpo-30149: inspect.signature() now supports callables with
|
||
variable-argument parameters wrapped with partialmethod. Patch by Dong-hee
|
||
Na.
|
||
|
||
- bpo-29931: Fixed comparison check for ipaddress.ip_interface objects.
|
||
Patch by Sanjay Sundaresan.
|
||
|
||
- bpo-24484: Avoid race condition in multiprocessing cleanup.
|
||
|
||
- bpo-28994: The traceback no longer displayed for SystemExit raised in a
|
||
callback registered by atexit.
|
||
|
||
- bpo-30508: Don't log exceptions if Task/Future "cancel()" method was
|
||
called.
|
||
|
||
- bpo-28556: Updates to typing module: Add generic AsyncContextManager, add
|
||
support for ContextManager on all versions. Original PRs by Jelle Zijlstra
|
||
and Ivan Levkivskyi
|
||
|
||
- bpo-29870: Fix ssl sockets leaks when connection is aborted in asyncio/ssl
|
||
implementation. Patch by Michaël Sghaïer.
|
||
|
||
- bpo-29743: Closing transport during handshake process leaks open socket.
|
||
Patch by Nikolay Kim
|
||
|
||
- bpo-27585: Fix waiter cancellation in asyncio.Lock. Patch by Mathieu
|
||
Sornay.
|
||
|
||
- bpo-30418: On Windows, subprocess.Popen.communicate() now also ignore
|
||
EINVAL on stdin.write() if the child process is still running but closed
|
||
the pipe.
|
||
|
||
- bpo-30378: Fix the problem that logging.handlers.SysLogHandler cannot
|
||
handle IPv6 addresses.
|
||
|
||
- bpo-29960: Preserve generator state when _random.Random.setstate() raises
|
||
an exception. Patch by Bryan Olson.
|
||
|
||
- bpo-30414: multiprocessing.Queue._feed background running thread do not
|
||
break from main loop on exception.
|
||
|
||
- bpo-30003: Fix handling escape characters in HZ codec. Based on patch by
|
||
Ma Lin.
|
||
|
||
- bpo-30301: Fix AttributeError when using SimpleQueue.empty() under *spawn*
|
||
and *forkserver* start methods.
|
||
|
||
- bpo-30329: imaplib and poplib now catch the Windows socket WSAEINVAL error
|
||
(code 10022) on shutdown(SHUT_RDWR): An invalid operation was attempted.
|
||
This error occurs sometimes on SSL connections.
|
||
|
||
- bpo-30375: Warnings emitted when compile a regular expression now always
|
||
point to the line in the user code. Previously they could point into
|
||
inners of the re module if emitted from inside of groups or conditionals.
|
||
|
||
- bpo-30048: Fixed ``Task.cancel()`` can be ignored when the task is running
|
||
coroutine and the coroutine returned without any more ``await``.
|
||
|
||
- bpo-29990: Fix range checking in GB18030 decoder. Original patch by Ma
|
||
Lin.
|
||
|
||
- bpo-26293: Change resulted because of zipfile breakage. (See also:
|
||
bpo-29094)
|
||
|
||
- bpo-30243: Removed the __init__ methods of _json's scanner and encoder.
|
||
Misusing them could cause memory leaks or crashes. Now scanner and
|
||
encoder objects are completely initialized in the __new__ methods.
|
||
|
||
- bpo-30185: Avoid KeyboardInterrupt tracebacks in forkserver helper process
|
||
when Ctrl-C is received.
|
||
|
||
- bpo-28556: Various updates to typing module: add typing.NoReturn type, use
|
||
WrapperDescriptorType, minor bug-fixes. Original PRs by Jim
|
||
Fasarakis-Hilliard and Ivan Levkivskyi.
|
||
|
||
- bpo-30205: Fix getsockname() for unbound AF_UNIX sockets on Linux.
|
||
|
||
- bpo-30070: Fixed leaks and crashes in errors handling in the parser
|
||
module.
|
||
|
||
- bpo-30061: Fixed crashes in IOBase methods __next__() and readlines() when
|
||
readline() or __next__() respectively return non-sizeable object. Fixed
|
||
possible other errors caused by not checking results of PyObject_Size(),
|
||
PySequence_Size(), or PyMapping_Size().
|
||
|
||
- bpo-30068: _io._IOBase.readlines will check if it's closed first when hint
|
||
is present.
|
||
|
||
- bpo-29694: Fixed race condition in pathlib mkdir with flags parents=True.
|
||
Patch by Armin Rigo.
|
||
|
||
- bpo-29692: Fixed arbitrary unchaining of RuntimeError exceptions in
|
||
contextlib.contextmanager. Patch by Siddharth Velankar.
|
||
|
||
- bpo-29998: Pickling and copying ImportError now preserves name and path
|
||
attributes.
|
||
|
||
- bpo-29942: Fix a crash in itertools.chain.from_iterable when encountering
|
||
long runs of empty iterables.
|
||
|
||
- bpo-27863: Fixed multiple crashes in ElementTree caused by race conditions
|
||
and wrong types.
|
||
|
||
- bpo-28699: Fixed a bug in pools in multiprocessing.pool that raising an
|
||
exception at the very first of an iterable may swallow the exception or
|
||
make the program hang. Patch by Davin Potts and Xiang Zhang.
|
||
|
||
- bpo-25803: Avoid incorrect errors raised by Path.mkdir(exist_ok=True) when
|
||
the OS gives priority to errors such as EACCES over EEXIST.
|
||
|
||
- bpo-29861: Release references to tasks, their arguments and their results
|
||
as soon as they are finished in multiprocessing.Pool.
|
||
|
||
- bpo-29884: faulthandler: Restore the old sigaltstack during teardown.
|
||
Patch by Christophe Zeitouny.
|
||
|
||
- bpo-25455: Fixed crashes in repr of recursive buffered file-like objects.
|
||
|
||
- bpo-29800: Fix crashes in partial.__repr__ if the keys of partial.keywords
|
||
are not strings. Patch by Michael Seifert.
|
||
|
||
- bpo-29742: get_extra_info() raises exception if get called on closed ssl
|
||
transport. Patch by Nikolay Kim.
|
||
|
||
- bpo-8256: Fixed possible failing or crashing input() if attributes
|
||
"encoding" or "errors" of sys.stdin or sys.stdout are not set or are not
|
||
strings.
|
||
|
||
- bpo-28298: Fix a bug that prevented array 'Q', 'L' and 'I' from accepting
|
||
big intables (objects that have __int__) as elements. Patch by Oren
|
||
Milman.
|
||
|
||
- bpo-29615: SimpleXMLRPCDispatcher no longer chains KeyError (or any other
|
||
exception) to exception(s) raised in the dispatched methods. Patch by Petr
|
||
Motejlek.
|
||
|
||
- bpo-29704: asyncio.subprocess.SubprocessStreamProtocol no longer closes
|
||
before all pipes are closed.
|
||
|
||
- bpo-29703: Fix asyncio to support instantiation of new event loops in
|
||
child processes.
|
||
|
||
- bpo-29376: Fix assertion error in threading._DummyThread.is_alive().
|
||
|
||
- bpo-29110: Fix file object leak in aifc.open() when file is given as a
|
||
filesystem path and is not in valid AIFF format. Patch by Anthony Zhang.
|
||
|
||
- bpo-28961: Fix unittest.mock._Call helper: don't ignore the name parameter
|
||
anymore. Patch written by Jiajun Huang.
|
||
|
||
- bpo-29532: Altering a kwarg dictionary passed to functools.partial() no
|
||
longer affects a partial object after creation.
|
||
|
||
- bpo-28556: Various updates to typing module: typing.Counter,
|
||
typing.ChainMap, improved ABC caching, etc. Original PRs by Jelle
|
||
Zijlstra, Ivan Levkivskyi, Manuel Krebber, and Łukasz Langa.
|
||
|
||
- bpo-29100: Fix datetime.fromtimestamp() regression introduced in Python
|
||
3.6.0: check minimum and maximum years.
|
||
|
||
- bpo-29519: Fix weakref spewing exceptions during interpreter shutdown when
|
||
used with a rare combination of multiprocessing and custom codecs.
|
||
|
||
- bpo-29416: Prevent infinite loop in pathlib.Path.mkdir
|
||
|
||
- bpo-29444: Fixed out-of-bounds buffer access in the group() method of the
|
||
match object. Based on patch by WGH.
|
||
|
||
- bpo-29335: Fix subprocess.Popen.wait() when the child process has exited
|
||
to a stopped instead of terminated state (ex: when under ptrace).
|
||
|
||
- bpo-29290: Fix a regression in argparse that help messages would wrap at
|
||
non-breaking spaces.
|
||
|
||
- bpo-28735: Fixed the comparison of mock.MagickMock with mock.ANY.
|
||
|
||
- bpo-29011: Fix an important omission by adding Deque to the typing module.
|
||
|
||
- bpo-29219: Fixed infinite recursion in the repr of uninitialized
|
||
ctypes.CDLL instances.
|
||
|
||
- bpo-28969: Fixed race condition in C implementation of
|
||
functools.lru_cache. KeyError could be raised when cached function with
|
||
full cache was simultaneously called from different threads with the same
|
||
uncached arguments.
|
||
|
||
- bpo-29142: In urllib.request, suffixes in no_proxy environment variable
|
||
with leading dots could match related hostnames again (e.g. .b.c matches
|
||
a.b.c). Patch by Milan Oberkirch.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-30176: Add missing attribute related constants in curses
|
||
documentation.
|
||
|
||
- bpo-26985: Add missing info of code object in inspect documentation.
|
||
|
||
- bpo-28929: Link the documentation to its source file on GitHub.
|
||
|
||
- bpo-25008: Document smtpd.py as effectively deprecated and add a pointer
|
||
to aiosmtpd, a third-party asyncio-based replacement.
|
||
|
||
- bpo-26355: Add canonical header link on each page to corresponding major
|
||
version of the documentation. Patch by Matthias Bussonnier.
|
||
|
||
- bpo-29349: Fix Python 2 syntax in code for building the documentation.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-30822: Fix regrtest command line parser to allow passing -u
|
||
extralargefile to run test_zipfile64.
|
||
|
||
- bpo-30383: regrtest: Enhance regrtest and backport features from the
|
||
master branch. Add options: --coverage, --testdir, --list-tests (list test
|
||
files, don't run them), --list-cases (list test identifiers, don't run
|
||
them, :issue:`30523`), --matchfile (load a list of test filters from a
|
||
text file, :issue:`30540`), --slowest (alias to --slow). Enhance output:
|
||
add timestamp, test result, currently running tests, "Tests result: xxx"
|
||
summary with total duration, etc. Fix reference leak hunting in regrtest,
|
||
--huntrleaks: regrtest now warms up caches, create explicitly all internal
|
||
singletons which are created on demand to prevent false positives when
|
||
checking for reference leaks. (:issue:`30675`).
|
||
|
||
- bpo-30357: test_thread: setUp() now uses support.threading_setup() and
|
||
support.threading_cleanup() to wait until threads complete to avoid random
|
||
side effects on following tests. Initial patch written by Grzegorz
|
||
Grzywacz.
|
||
|
||
- bpo-28087: Skip test_asyncore and test_eintr poll failures on macOS. Skip
|
||
some tests of select.poll when running on macOS due to unresolved issues
|
||
with the underlying system poll function on some macOS versions.
|
||
|
||
- bpo-30197: Enhanced functions swap_attr() and swap_item() in the
|
||
test.support module. They now work when delete replaced attribute or item
|
||
inside the with statement. The old value of the attribute or item (or
|
||
None if it doesn't exist) now will be assigned to the target of the "as"
|
||
clause, if there is one.
|
||
|
||
- bpo-29571: to match the behaviour of the ``re.LOCALE`` flag,
|
||
test_re.test_locale_flag now uses ``locale.getpreferredencoding(False)``
|
||
to determine the candidate encoding for the test regex (allowing it to
|
||
correctly skip the test when the default locale encoding is a multi-byte
|
||
encoding)
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-29243: Prevent unnecessary rebuilding of Python during ``make test``,
|
||
``make install`` and some other make targets when configured with
|
||
``--enable-optimizations``.
|
||
|
||
- bpo-23404: Don't regenerate generated files based on file modification
|
||
time anymore: the action is now explicit. Replace ``make touch`` with
|
||
``make regen-all``.
|
||
|
||
- bpo-29643: Fix ``--enable-optimization`` didn't work.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-30687: Locate msbuild.exe on Windows when building rather than
|
||
vcvarsall.bat
|
||
|
||
- bpo-29392: Prevent crash when passing invalid arguments into msvcrt
|
||
module.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-27867: Function PySlice_GetIndicesEx() is replaced with a macro if
|
||
Py_LIMITED_API is set to the value between 0x03050400 and 0x03060000 (not
|
||
including) or 0x03060100 or higher.
|
||
|
||
- bpo-29083: Fixed the declaration of some public API functions.
|
||
PyArg_VaParse() and PyArg_VaParseTupleAndKeywords() were not available in
|
||
limited API. PyArg_ValidateKeywordArguments(), PyArg_UnpackTuple() and
|
||
Py_BuildValue() were not available in limited API of version < 3.3 when
|
||
PY_SSIZE_T_CLEAN is defined.
|
||
|
||
|
||
What's New in Python 3.5.3 final?
|
||
=================================
|
||
|
||
*Release date: 2017-01-17*
|
||
|
||
There were no code changes between 3.5.3rc1 and 3.5.3 final.
|
||
|
||
|
||
|
||
What's New in Python 3.5.3 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2017-01-02*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-27278: Fix os.urandom() implementation using getrandom() on Linux.
|
||
Truncate size to INT_MAX and loop until we collected enough random bytes,
|
||
instead of casting a directly Py_ssize_t to int.
|
||
|
||
- bpo-22636: Avoid shell injection problems with ctypes.util.find_library().
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-29073: bytearray formatting no longer truncates on first null byte.
|
||
|
||
- bpo-28932: Do not include <sys/random.h> if it does not exist.
|
||
|
||
- bpo-28147: Fix a memory leak in split-table dictionaries: setattr() must
|
||
not convert combined table into split table.
|
||
|
||
- bpo-25677: Correct the positioning of the syntax error caret for indented
|
||
blocks. Based on patch by Michael Layzell.
|
||
|
||
- bpo-29000: Fixed bytes formatting of octals with zero padding in alternate
|
||
form.
|
||
|
||
- bpo-28512: Fixed setting the offset attribute of SyntaxError by
|
||
PyErr_SyntaxLocationEx() and PyErr_SyntaxLocationObject().
|
||
|
||
- bpo-28991: functools.lru_cache() was susceptible to an obscure reentrancy
|
||
bug caused by a monkey-patched len() function.
|
||
|
||
- bpo-28648: Fixed crash in Py_DecodeLocale() in debug build on Mac OS X
|
||
when decode astral characters. Patch by Xiang Zhang.
|
||
|
||
- bpo-19398: Extra slash no longer added to sys.path components in case of
|
||
empty compile-time PYTHONPATH components.
|
||
|
||
- bpo-28426: Fixed potential crash in PyUnicode_AsDecodedObject() in debug
|
||
build.
|
||
|
||
- bpo-23782: Fixed possible memory leak in _PyTraceback_Add() and exception
|
||
loss in PyTraceBack_Here().
|
||
|
||
- bpo-28379: Added sanity checks and tests for PyUnicode_CopyCharacters().
|
||
Patch by Xiang Zhang.
|
||
|
||
- bpo-28376: The type of long range iterator is now registered as Iterator.
|
||
Patch by Oren Milman.
|
||
|
||
- bpo-28376: The constructor of range_iterator now checks that step is not
|
||
0. Patch by Oren Milman.
|
||
|
||
- bpo-26906: Resolving special methods of uninitialized type now causes
|
||
implicit initialization of the type instead of a fail.
|
||
|
||
- bpo-18287: PyType_Ready() now checks that tp_name is not NULL. Original
|
||
patch by Niklas Koep.
|
||
|
||
- bpo-24098: Fixed possible crash when AST is changed in process of
|
||
compiling it.
|
||
|
||
- bpo-28350: String constants with null character no longer interned.
|
||
|
||
- bpo-26617: Fix crash when GC runs during weakref callbacks.
|
||
|
||
- bpo-27942: String constants now interned recursively in tuples and
|
||
frozensets.
|
||
|
||
- bpo-21578: Fixed misleading error message when ImportError called with
|
||
invalid keyword args.
|
||
|
||
- bpo-28203: Fix incorrect type in error message from ``complex(1.0,
|
||
{2:3})``. Patch by Soumya Sharma.
|
||
|
||
- bpo-27955: Fallback on reading /dev/urandom device when the getrandom()
|
||
syscall fails with EPERM, for example when blocked by SECCOMP.
|
||
|
||
- bpo-28131: Fix a regression in zipimport's compile_source(). zipimport
|
||
should use the same optimization level as the interpreter.
|
||
|
||
- bpo-25221: Fix corrupted result from PyLong_FromLong(0) when Python is
|
||
compiled with NSMALLPOSINTS = 0.
|
||
|
||
- bpo-25758: Prevents zipimport from unnecessarily encoding a filename
|
||
(patch by Eryk Sun)
|
||
|
||
- bpo-28189: dictitems_contains no longer swallows compare errors. (Patch by
|
||
Xiang Zhang)
|
||
|
||
- bpo-27812: Properly clear out a generator's frame's backreference to the
|
||
generator to prevent crashes in frame.clear().
|
||
|
||
- bpo-27811: Fix a crash when a coroutine that has not been awaited is
|
||
finalized with warnings-as-errors enabled.
|
||
|
||
- bpo-27587: Fix another issue found by PVS-Studio: Null pointer check after
|
||
use of 'def' in _PyState_AddModule(). Initial patch by Christian Heimes.
|
||
|
||
- bpo-26020: set literal evaluation order did not match documented
|
||
behaviour.
|
||
|
||
- bpo-27782: Multi-phase extension module import now correctly allows the
|
||
``m_methods`` field to be used to add module level functions to instances
|
||
of non-module types returned from ``Py_create_mod``. Patch by Xiang Zhang.
|
||
|
||
- bpo-27936: The round() function accepted a second None argument for some
|
||
types but not for others. Fixed the inconsistency by accepting None for
|
||
all numeric types.
|
||
|
||
- bpo-27487: Warn if a submodule argument to "python -m" or
|
||
runpy.run_module() is found in sys.modules after parent packages are
|
||
imported, but before the submodule is executed.
|
||
|
||
- bpo-27558: Fix a SystemError in the implementation of "raise" statement.
|
||
In a brand new thread, raise a RuntimeError since there is no active
|
||
exception to reraise. Patch written by Xiang Zhang.
|
||
|
||
- bpo-27419: Standard __import__() no longer look up "__import__" in globals
|
||
or builtins for importing submodules or "from import". Fixed handling an
|
||
error of non-string package name.
|
||
|
||
- bpo-27083: Respect the PYTHONCASEOK environment variable under Windows.
|
||
|
||
- bpo-27514: Make having too many statically nested blocks a SyntaxError
|
||
instead of SystemError.
|
||
|
||
- bpo-27473: Fixed possible integer overflow in bytes and bytearray
|
||
concatenations. Patch by Xiang Zhang.
|
||
|
||
- bpo-27507: Add integer overflow check in bytearray.extend(). Patch by
|
||
Xiang Zhang.
|
||
|
||
- bpo-27581: Don't rely on wrapping for overflow check in
|
||
PySequence_Tuple(). Patch by Xiang Zhang.
|
||
|
||
- bpo-27443: __length_hint__() of bytearray iterators no longer return a
|
||
negative integer for a resized bytearray.
|
||
|
||
- bpo-27942: Fix memory leak in codeobject.c
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-15812: inspect.getframeinfo() now correctly shows the first line of a
|
||
context. Patch by Sam Breese.
|
||
|
||
- bpo-29094: Offsets in a ZIP file created with extern file object and modes
|
||
"w" and "x" now are relative to the start of the file.
|
||
|
||
- bpo-13051: Fixed recursion errors in large or resized
|
||
curses.textpad.Textbox. Based on patch by Tycho Andersen.
|
||
|
||
- bpo-29119: Fix weakrefs in the pure python version of
|
||
collections.OrderedDict move_to_end() method. Contributed by Andra
|
||
Bogildea.
|
||
|
||
- bpo-9770: curses.ascii predicates now work correctly with negative
|
||
integers.
|
||
|
||
- bpo-28427: old keys should not remove new values from WeakValueDictionary
|
||
when collecting from another thread.
|
||
|
||
- bpo-28923: Remove editor artifacts from Tix.py.
|
||
|
||
- bpo-28871: Fixed a crash when deallocate deep ElementTree.
|
||
|
||
- bpo-19542: Fix bugs in WeakValueDictionary.setdefault() and
|
||
WeakValueDictionary.pop() when a GC collection happens in another thread.
|
||
|
||
- bpo-20191: Fixed a crash in resource.prlimit() when pass a sequence that
|
||
doesn't own its elements as limits.
|
||
|
||
- bpo-28779: multiprocessing.set_forkserver_preload() would crash the
|
||
forkserver process if a preloaded module instantiated some multiprocessing
|
||
objects such as locks.
|
||
|
||
- bpo-28847: dbm.dumb now supports reading read-only files and no longer
|
||
writes the index file when it is not changed.
|
||
|
||
- bpo-25659: In ctypes, prevent a crash calling the from_buffer() and
|
||
from_buffer_copy() methods on abstract classes like Array.
|
||
|
||
- bpo-28732: Fix crash in os.spawnv() with no elements in args
|
||
|
||
- bpo-28485: Always raise ValueError for negative
|
||
compileall.compile_dir(workers=...) parameter, even when multithreading is
|
||
unavailable.
|
||
|
||
- bpo-28387: Fixed possible crash in _io.TextIOWrapper deallocator when the
|
||
garbage collector is invoked in other thread. Based on patch by Sebastian
|
||
Cufre.
|
||
|
||
- bpo-27517: LZMA compressor and decompressor no longer raise exceptions if
|
||
given empty data twice. Patch by Benjamin Fogle.
|
||
|
||
- bpo-28549: Fixed segfault in curses's addch() with ncurses6.
|
||
|
||
- bpo-28449: tarfile.open() with mode "r" or "r:" now tries to open a tar
|
||
file with compression before trying to open it without compression.
|
||
Otherwise it had 50% chance failed with ignore_zeros=True.
|
||
|
||
- bpo-23262: The webbrowser module now supports Firefox 36+ and derived
|
||
browsers. Based on patch by Oleg Broytman.
|
||
|
||
- bpo-27939: Fixed bugs in tkinter.ttk.LabeledScale and tkinter.Scale caused
|
||
by representing the scale as float value internally in Tk. tkinter.IntVar
|
||
now works if float value is set to underlying Tk variable.
|
||
|
||
- bpo-28255: calendar.TextCalendar().prmonth() no longer prints a space at
|
||
the start of new line after printing a month's calendar. Patch by Xiang
|
||
Zhang.
|
||
|
||
- bpo-20491: The textwrap.TextWrapper class now honors non-breaking spaces.
|
||
Based on patch by Kaarle Ritvanen.
|
||
|
||
- bpo-28353: os.fwalk() no longer fails on broken links.
|
||
|
||
- bpo-25464: Fixed HList.header_exists() in tkinter.tix module by addin a
|
||
workaround to Tix library bug.
|
||
|
||
- bpo-28488: shutil.make_archive() no longer add entry "./" to ZIP archive.
|
||
|
||
- bpo-24452: Make webbrowser support Chrome on Mac OS X.
|
||
|
||
- bpo-20766: Fix references leaked by pdb in the handling of SIGINT
|
||
handlers.
|
||
|
||
- bpo-26293: Fixed writing ZIP files that starts not from the start of the
|
||
file. Offsets in ZIP file now are relative to the start of the archive in
|
||
conforming to the specification.
|
||
|
||
- bpo-28321: Fixed writing non-BMP characters with binary format in
|
||
plistlib.
|
||
|
||
- bpo-28322: Fixed possible crashes when unpickle itertools objects from
|
||
incorrect pickle data. Based on patch by John Leitch.
|
||
|
||
- Fix possible integer overflows and crashes in the mmap module with unusual
|
||
usage patterns.
|
||
|
||
- bpo-1703178: Fix the ability to pass the --link-objects option to the
|
||
distutils build_ext command.
|
||
|
||
- bpo-28253: Fixed calendar functions for extreme months: 0001-01 and
|
||
9999-12. Methods itermonthdays() and itermonthdays2() are reimplemented so
|
||
that they don't call itermonthdates() which can cause datetime.date
|
||
under/overflow.
|
||
|
||
- bpo-28275: Fixed possible use after free in the decompress() methods of
|
||
the LZMADecompressor and BZ2Decompressor classes. Original patch by John
|
||
Leitch.
|
||
|
||
- bpo-27897: Fixed possible crash in sqlite3.Connection.create_collation()
|
||
if pass invalid string-like object as a name. Patch by Xiang Zhang.
|
||
|
||
- bpo-18893: Fix invalid exception handling in Lib/ctypes/macholib/dyld.py.
|
||
Patch by Madison May.
|
||
|
||
- bpo-27611: Fixed support of default root window in the tkinter.tix module.
|
||
|
||
- bpo-27348: In the traceback module, restore the formatting of exception
|
||
messages like "Exception: None". This fixes a regression introduced in
|
||
3.5a2.
|
||
|
||
- bpo-25651: Allow falsy values to be used for msg parameter of subTest().
|
||
|
||
- bpo-27932: Prevent memory leak in win32_ver().
|
||
|
||
- Fix UnboundLocalError in socket._sendfile_use_sendfile.
|
||
|
||
- bpo-28075: Check for ERROR_ACCESS_DENIED in Windows implementation of
|
||
os.stat(). Patch by Eryk Sun.
|
||
|
||
- bpo-25270: Prevent codecs.escape_encode() from raising SystemError when an
|
||
empty bytestring is passed.
|
||
|
||
- bpo-28181: Get antigravity over HTTPS. Patch by Kaartic Sivaraam.
|
||
|
||
- bpo-25895: Enable WebSocket URL schemes in urllib.parse.urljoin. Patch by
|
||
Gergely Imreh and Markus Holtermann.
|
||
|
||
- bpo-27599: Fixed buffer overrun in binascii.b2a_qp() and
|
||
binascii.a2b_qp().
|
||
|
||
- bpo-19003: m email.generator now replaces only ``\r`` and/or ``\n`` line
|
||
endings, per the RFC, instead of all unicode line endings.
|
||
|
||
- bpo-28019: itertools.count() no longer rounds non-integer step in range
|
||
between 1.0 and 2.0 to 1.
|
||
|
||
- bpo-25969: Update the lib2to3 grammar to handle the unpacking
|
||
generalizations added in 3.5.
|
||
|
||
- bpo-14977: mailcap now respects the order of the lines in the mailcap
|
||
files ("first match"), as required by RFC 1542. Patch by Michael Lazar.
|
||
|
||
- bpo-24594: Validates persist parameter when opening MSI database
|
||
|
||
- bpo-17582: xml.etree.ElementTree nows preserves whitespaces in attributes
|
||
(Patch by Duane Griffin. Reviewed and approved by Stefan Behnel.)
|
||
|
||
- bpo-28047: Fixed calculation of line length used for the base64 CTE in the
|
||
new email policies.
|
||
|
||
- bpo-27445: Don't pass str(_charset) to MIMEText.set_payload(). Patch by
|
||
Claude Paroz.
|
||
|
||
- bpo-22450: urllib now includes an ``Accept: */*`` header among the default
|
||
headers. This makes the results of REST API requests more consistent and
|
||
predictable especially when proxy servers are involved.
|
||
|
||
- lib2to3.pgen3.driver.load_grammar() now creates a stable cache file
|
||
between runs given the same Grammar.txt input regardless of the hash
|
||
randomization setting.
|
||
|
||
- bpo-27570: Avoid zero-length memcpy() etc calls with null source pointers
|
||
in the "ctypes" and "array" modules.
|
||
|
||
- bpo-22233: Break email header lines *only* on the RFC specified CR and LF
|
||
characters, not on arbitrary unicode line breaks. This also fixes a bug
|
||
in HTTP header parsing.
|
||
|
||
- bpo-27988: Fix email iter_attachments incorrect mutation of payload list.
|
||
|
||
- bpo-27691: Fix ssl module's parsing of GEN_RID subject alternative name
|
||
fields in X.509 certs.
|
||
|
||
- bpo-27850: Remove 3DES from ssl module's default cipher list to counter
|
||
measure sweet32 attack (CVE-2016-2183).
|
||
|
||
- bpo-27766: Add ChaCha20 Poly1305 to ssl module's default cipher list.
|
||
(Required OpenSSL 1.1.0 or LibreSSL).
|
||
|
||
- bpo-26470: Port ssl and hashlib module to OpenSSL 1.1.0.
|
||
|
||
- Remove support for passing a file descriptor to os.access. It never worked
|
||
but previously didn't raise.
|
||
|
||
- bpo-12885: Fix error when distutils encounters symlink.
|
||
|
||
- bpo-27881: Fixed possible bugs when setting
|
||
sqlite3.Connection.isolation_level. Based on patch by Xiang Zhang.
|
||
|
||
- bpo-27861: Fixed a crash in sqlite3.Connection.cursor() when a factory
|
||
creates not a cursor. Patch by Xiang Zhang.
|
||
|
||
- bpo-19884: Avoid spurious output on OS X with Gnu Readline.
|
||
|
||
- bpo-27706: Restore deterministic behavior of random.Random().seed() for
|
||
string seeds using seeding version 1. Allows sequences of calls to
|
||
random() to exactly match those obtained in Python 2. Patch by Nofar
|
||
Schnider.
|
||
|
||
- bpo-10513: Fix a regression in Connection.commit(). Statements should not
|
||
be reset after a commit.
|
||
|
||
- A new version of typing.py from https://github.com/python/typing:
|
||
Collection (only for 3.6) (Issue #27598). Add FrozenSet to __all__
|
||
(upstream #261). Fix crash in _get_type_vars() (upstream #259). Remove the
|
||
dict constraint in ForwardRef._eval_type (upstream #252).
|
||
|
||
- bpo-27539: Fix unnormalised ``Fraction.__pow__`` result in the case of
|
||
negative exponent and negative base.
|
||
|
||
- bpo-21718: cursor.description is now available for queries using CTEs.
|
||
|
||
- bpo-2466: posixpath.ismount now correctly recognizes mount points which
|
||
the user does not have permission to access.
|
||
|
||
- bpo-27773: Correct some memory management errors server_hostname in
|
||
_ssl.wrap_socket().
|
||
|
||
- bpo-26750: unittest.mock.create_autospec() now works properly for
|
||
subclasses of property() and other data descriptors.
|
||
|
||
- In the curses module, raise an error if window.getstr() or window.instr()
|
||
is passed a negative value.
|
||
|
||
- bpo-27783: Fix possible usage of uninitialized memory in
|
||
operator.methodcaller.
|
||
|
||
- bpo-27774: Fix possible Py_DECREF on unowned object in _sre.
|
||
|
||
- bpo-27760: Fix possible integer overflow in binascii.b2a_qp.
|
||
|
||
- bpo-27758: Fix possible integer overflow in the _csv module for large
|
||
record lengths.
|
||
|
||
- bpo-27568: Prevent HTTPoxy attack (CVE-2016-1000110). Ignore the
|
||
HTTP_PROXY variable when REQUEST_METHOD environment is set, which
|
||
indicates that the script is in CGI mode.
|
||
|
||
- bpo-27656: Do not assume sched.h defines any SCHED_* constants.
|
||
|
||
- bpo-27130: In the "zlib" module, fix handling of large buffers (typically
|
||
4 GiB) when compressing and decompressing. Previously, inputs were
|
||
limited to 4 GiB, and compression and decompression operations did not
|
||
properly handle results of 4 GiB.
|
||
|
||
- bpo-27533: Release GIL in nt._isdir
|
||
|
||
- bpo-17711: Fixed unpickling by the persistent ID with protocol 0. Original
|
||
patch by Alexandre Vassalotti.
|
||
|
||
- bpo-27522: Avoid an unintentional reference cycle in email.feedparser.
|
||
|
||
- bpo-26844: Fix error message for imp.find_module() to refer to 'path'
|
||
instead of 'name'. Patch by Lev Maximov.
|
||
|
||
- bpo-23804: Fix SSL zero-length recv() calls to not block and not raise an
|
||
error about unclean EOF.
|
||
|
||
- bpo-27466: Change time format returned by http.cookie.time2netscape,
|
||
confirming the netscape cookie format and making it consistent with
|
||
documentation.
|
||
|
||
- bpo-26664: Fix activate.fish by removing mis-use of ``$``.
|
||
|
||
- bpo-22115: Fixed tracing Tkinter variables: trace_vdelete() with wrong
|
||
mode no longer break tracing, trace_vinfo() now always returns a list of
|
||
pairs of strings, tracing in the "u" mode now works.
|
||
|
||
- Fix a scoping issue in importlib.util.LazyLoader which triggered an
|
||
UnboundLocalError when lazy-loading a module that was already put into
|
||
sys.modules.
|
||
|
||
- bpo-27079: Fixed curses.ascii functions isblank(), iscntrl() and
|
||
ispunct().
|
||
|
||
- bpo-26754: Some functions (compile() etc) accepted a filename argument
|
||
encoded as an iterable of integers. Now only strings and byte-like objects
|
||
are accepted.
|
||
|
||
- bpo-27048: Prevents distutils failing on Windows when environment
|
||
variables contain non-ASCII characters
|
||
|
||
- bpo-27330: Fixed possible leaks in the ctypes module.
|
||
|
||
- bpo-27238: Got rid of bare excepts in the turtle module. Original patch
|
||
by Jelle Zijlstra.
|
||
|
||
- bpo-27122: When an exception is raised within the context being managed by
|
||
a contextlib.ExitStack() and one of the exit stack generators catches and
|
||
raises it in a chain, do not re-raise the original exception when exiting,
|
||
let the new chained one through. This avoids the :pep:`479` bug described
|
||
in issue25782.
|
||
|
||
- bpo-26386: Fixed ttk.TreeView selection operations with item id's
|
||
containing spaces.
|
||
|
||
- bpo-16182: Fix various functions in the "readline" module to use the
|
||
locale encoding, and fix get_begidx() and get_endidx() to return code
|
||
point indexes.
|
||
|
||
- bpo-27392: Add loop.connect_accepted_socket(). Patch by Jim Fulton.
|
||
|
||
- bpo-27930: Improved behaviour of logging.handlers.QueueListener. Thanks to
|
||
Paulo Andrade and Petr Viktorin for the analysis and patch.
|
||
|
||
- bpo-21201: Improves readability of multiprocessing error message. Thanks
|
||
to Wojciech Walczak for patch.
|
||
|
||
- bpo-27456: asyncio: Set TCP_NODELAY by default.
|
||
|
||
- bpo-27906: Fix socket accept exhaustion during high TCP traffic. Patch by
|
||
Kevin Conway.
|
||
|
||
- bpo-28174: Handle when SO_REUSEPORT isn't properly supported. Patch by
|
||
Seth Michael Larson.
|
||
|
||
- bpo-26654: Inspect functools.partial in asyncio.Handle.__repr__. Patch by
|
||
iceboy.
|
||
|
||
- bpo-26909: Fix slow pipes IO in asyncio. Patch by INADA Naoki.
|
||
|
||
- bpo-28176: Fix callbacks race in asyncio.SelectorLoop.sock_connect.
|
||
|
||
- bpo-27759: Fix selectors incorrectly retain invalid file descriptors.
|
||
Patch by Mark Williams.
|
||
|
||
- bpo-28368: Refuse monitoring processes if the child watcher has no loop
|
||
attached. Patch by Vincent Michel.
|
||
|
||
- bpo-28369: Raise RuntimeError when transport's FD is used with add_reader,
|
||
add_writer, etc.
|
||
|
||
- bpo-28370: Speedup asyncio.StreamReader.readexactly. Patch by Коренберг
|
||
Марк.
|
||
|
||
- bpo-28371: Deprecate passing asyncio.Handles to run_in_executor.
|
||
|
||
- bpo-28372: Fix asyncio to support formatting of non-python coroutines.
|
||
|
||
- bpo-28399: Remove UNIX socket from FS before binding. Patch by Коренберг
|
||
Марк.
|
||
|
||
- bpo-27972: Prohibit Tasks to await on themselves.
|
||
|
||
- bpo-26923: Fix asyncio.Gather to refuse being cancelled once all children
|
||
are done. Patch by Johannes Ebke.
|
||
|
||
- bpo-26796: Don't configure the number of workers for default threadpool
|
||
executor. Initial patch by Hans Lawrenz.
|
||
|
||
- bpo-28600: Optimize loop.call_soon().
|
||
|
||
- bpo-28613: Fix get_event_loop() return the current loop if called from
|
||
coroutines/callbacks.
|
||
|
||
- bpo-28639: Fix inspect.isawaitable to always return bool Patch by Justin
|
||
Mayfield.
|
||
|
||
- bpo-28652: Make loop methods reject socket kinds they do not support.
|
||
|
||
- bpo-28653: Fix a refleak in functools.lru_cache.
|
||
|
||
- bpo-28703: Fix asyncio.iscoroutinefunction to handle Mock objects.
|
||
|
||
- bpo-24142: Reading a corrupt config file left the parser in an invalid
|
||
state. Original patch by Florian Höch.
|
||
|
||
- bpo-28990: Fix SSL hanging if connection is closed before handshake
|
||
completed. (Patch by HoHo-Ho)
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-15308: Add 'interrupt execution' (^C) to Shell menu. Patch by Roger
|
||
Serwy, updated by Bayard Randel.
|
||
|
||
- bpo-27922: Stop IDLE tests from 'flashing' gui widgets on the screen.
|
||
|
||
- Add version to title of IDLE help window.
|
||
|
||
- bpo-25564: In section on IDLE -- console differences, mention that using
|
||
exec means that __builtins__ is defined for each statement.
|
||
|
||
- bpo-27714: text_textview and test_autocomplete now pass when re-run in the
|
||
same process. This occurs when test_idle fails when run with the -w
|
||
option but without -jn. Fix warning from test_config.
|
||
|
||
- bpo-25507: IDLE no longer runs buggy code because of its tkinter imports.
|
||
Users must include the same imports required to run directly in Python.
|
||
|
||
- bpo-27452: add line counter and crc to IDLE configHandler test dump.
|
||
|
||
- bpo-27365: Allow non-ascii chars in IDLE NEWS.txt, for contributor names.
|
||
|
||
- bpo-27245: IDLE: Cleanly delete custom themes and key bindings.
|
||
Previously, when IDLE was started from a console or by import, a cascade
|
||
of warnings was emitted. Patch by Serhiy Storchaka.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-28808: PyUnicode_CompareWithASCIIString() now never raises exceptions.
|
||
|
||
- bpo-26754: PyUnicode_FSDecoder() accepted a filename argument encoded as
|
||
an iterable of integers. Now only strings and bytes-like objects are
|
||
accepted.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-28513: Documented command-line interface of zipfile.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-28950: Disallow -j0 to be combined with -T/-l/-M in regrtest command
|
||
line arguments.
|
||
|
||
- bpo-28666: Now test.support.rmtree is able to remove unwritable or
|
||
unreadable directories.
|
||
|
||
- bpo-23839: Various caches now are cleared before running every test file.
|
||
|
||
- bpo-28409: regrtest: fix the parser of command line arguments.
|
||
|
||
- bpo-27787: Call gc.collect() before checking each test for "dangling
|
||
threads", since the dangling threads are weak references.
|
||
|
||
- bpo-27369: In test_pyexpat, avoid testing an error message detail that
|
||
changed in Expat 2.2.0.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-27952: Get Tools/scripts/fixcid.py working with Python 3 and the
|
||
current "re" module, avoid invalid Python backslash escapes, and fix a bug
|
||
parsing escaped C quote signs.
|
||
|
||
- bpo-27332: Fixed the type of the first argument of module-level functions
|
||
generated by Argument Clinic. Patch by Petr Viktorin.
|
||
|
||
- bpo-27418: Fixed Tools/importbench/importbench.py.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-28251: Improvements to help manuals on Windows.
|
||
|
||
- bpo-28110: launcher.msi has different product codes between 32-bit and
|
||
64-bit
|
||
|
||
- bpo-25144: Ensures TargetDir is set before continuing with custom install.
|
||
|
||
- bpo-27469: Adds a shell extension to the launcher so that drag and drop
|
||
works correctly.
|
||
|
||
- bpo-27309: Enabled proper Windows styles in python[w].exe manifest.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-29080: Removes hard dependency on hg.exe from PCBuild/build.bat
|
||
|
||
- bpo-23903: Added missed names to PC/python3.def.
|
||
|
||
- bpo-10656: Fix out-of-tree building on AIX. Patch by Tristan Carel and
|
||
Michael Haubenwallner.
|
||
|
||
- bpo-26359: Rename --with-optimiations to --enable-optimizations.
|
||
|
||
- bpo-28444: Fix missing extensions modules when cross compiling.
|
||
|
||
- bpo-28248: Update Windows build and OS X installers to use OpenSSL 1.0.2j.
|
||
|
||
- bpo-28258: Fixed build with Estonian locale (python-config and distclean
|
||
targets in Makefile). Patch by Arfrever Frehtes Taifersar Arahesis.
|
||
|
||
- bpo-26661: setup.py now detects system libffi with multiarch wrapper.
|
||
|
||
- bpo-28066: Fix the logic that searches build directories for generated
|
||
include files when building outside the source tree.
|
||
|
||
- bpo-15819: Remove redundant include search directory option for building
|
||
outside the source tree.
|
||
|
||
- bpo-27566: Fix clean target in freeze makefile (patch by Lisa Roach)
|
||
|
||
- bpo-27705: Update message in validate_ucrtbase.py
|
||
|
||
- bpo-27983: Cause lack of llvm-profdata tool when using clang as required
|
||
for PGO linking to be a configure time error rather than make time when
|
||
--with-optimizations is enabled. Also improve our ability to find the
|
||
llvm-profdata tool on MacOS and some Linuxes.
|
||
|
||
- bpo-26307: The profile-opt build now applies PGO to the built-in modules.
|
||
|
||
- bpo-26359: Add the --with-optimizations configure flag.
|
||
|
||
- bpo-27713: Suppress spurious build warnings when updating importlib's
|
||
bootstrap files. Patch by Xiang Zhang
|
||
|
||
- bpo-25825: Correct the references to Modules/python.exp and ld_so_aix,
|
||
which are required on AIX. This updates references to an installation
|
||
path that was changed in 3.2a4, and undoes changed references to the build
|
||
tree that were made in 3.5.0a1.
|
||
|
||
- bpo-27453: CPP invocation in configure must use CPPFLAGS. Patch by Chi
|
||
Hsuan Yen.
|
||
|
||
- bpo-27641: The configure script now inserts comments into the makefile to
|
||
prevent the pgen and _freeze_importlib executables from being
|
||
cross-compiled.
|
||
|
||
- bpo-26662: Set PYTHON_FOR_GEN in configure as the Python program to be
|
||
used for file generation during the build.
|
||
|
||
- bpo-10910: Avoid C++ compilation errors on FreeBSD and OS X. Also update
|
||
FreedBSD version checks for the original ctype UTF-8 workaround.
|
||
|
||
- bpo-28676: Prevent missing 'getentropy' declaration warning on macOS.
|
||
Patch by Gareth Rees.
|
||
|
||
|
||
What's New in Python 3.5.2 final?
|
||
=================================
|
||
|
||
*Release date: 2016-06-26*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-26930: Update Windows builds to use OpenSSL 1.0.2h.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-26867: Ubuntu's openssl OP_NO_SSLv3 is forced on by default; fix test.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-27365: Allow non-ascii in idlelib/NEWS.txt - minimal part for 3.5.2.
|
||
|
||
|
||
What's New in Python 3.5.2 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2016-06-12*
|
||
|
||
Security
|
||
--------
|
||
|
||
- bpo-26556: Update expat to 2.1.1, fixes CVE-2015-1283.
|
||
|
||
- Fix TLS stripping vulnerability in smtplib, CVE-2016-0772. Reported by
|
||
Team Oststrom
|
||
|
||
- bpo-26839: On Linux, :func:`os.urandom` now calls ``getrandom()`` with
|
||
``GRND_NONBLOCK`` to fall back on reading ``/dev/urandom`` if the urandom
|
||
entropy pool is not initialized yet. Patch written by Colm Buckley.
|
||
|
||
- bpo-26657: Fix directory traversal vulnerability with http.server on
|
||
Windows. This fixes a regression that was introduced in 3.3.4rc1 and
|
||
3.4.0rc1. Based on patch by Philipp Hagemeister.
|
||
|
||
- bpo-26313: ssl.py _load_windows_store_certs fails if windows cert store is
|
||
empty. Patch by Baji.
|
||
|
||
- bpo-25939: On Windows open the cert store readonly in
|
||
ssl.enum_certificates.
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-27066: Fixed SystemError if a custom opener (for open()) returns a
|
||
negative number without setting an exception.
|
||
|
||
- bpo-20041: Fixed TypeError when frame.f_trace is set to None. Patch by
|
||
Xavier de Gaye.
|
||
|
||
- bpo-26168: Fixed possible refleaks in failing Py_BuildValue() with the "N"
|
||
format unit.
|
||
|
||
- bpo-26991: Fix possible refleak when creating a function with annotations.
|
||
|
||
- bpo-27039: Fixed bytearray.remove() for values greater than 127. Patch by
|
||
Joe Jevnik.
|
||
|
||
- bpo-23640: int.from_bytes() no longer bypasses constructors for
|
||
subclasses.
|
||
|
||
- bpo-26811: gc.get_objects() no longer contains a broken tuple with NULL
|
||
pointer.
|
||
|
||
- bpo-20120: Use RawConfigParser for .pypirc parsing, removing support for
|
||
interpolation unintentionally added with move to Python 3. Behavior no
|
||
longer does any interpolation in .pypirc files, matching behavior in
|
||
Python 2.7 and Setuptools 19.0.
|
||
|
||
- bpo-26659: Make the builtin slice type support cycle collection.
|
||
|
||
- bpo-26718: super.__init__ no longer leaks memory if called multiple times.
|
||
NOTE: A direct call of super.__init__ is not endorsed!
|
||
|
||
- bpo-25339: PYTHONIOENCODING now has priority over locale in setting the
|
||
error handler for stdin and stdout.
|
||
|
||
- bpo-26494: Fixed crash on iterating exhausting iterators. Affected classes
|
||
are generic sequence iterators, iterators of str, bytes, bytearray, list,
|
||
tuple, set, frozenset, dict, OrderedDict, corresponding views and
|
||
os.scandir() iterator.
|
||
|
||
- bpo-26581: If coding cookie is specified multiple times on a line in
|
||
Python source code file, only the first one is taken to account.
|
||
|
||
- bpo-26464: Fix str.translate() when string is ASCII and first replacements
|
||
removes character, but next replacement uses a non-ASCII character or a
|
||
string longer than 1 character. Regression introduced in Python 3.5.0.
|
||
|
||
- bpo-22836: Ensure exception reports from PyErr_Display() and
|
||
PyErr_WriteUnraisable() are sensible even when formatting them produces
|
||
secondary errors. This affects the reports produced by
|
||
sys.__excepthook__() and when __del__() raises an exception.
|
||
|
||
- bpo-26302: Correct behavior to reject comma as a legal character for
|
||
cookie names.
|
||
|
||
- bpo-4806: Avoid masking the original TypeError exception when using star
|
||
(``*``) unpacking in function calls. Based on patch by Hagen Fürstenau
|
||
and Daniel Urban.
|
||
|
||
- bpo-27138: Fix the doc comment for FileFinder.find_spec().
|
||
|
||
- bpo-26154: Add a new private _PyThreadState_UncheckedGet() function to get
|
||
the current Python thread state, but don't issue a fatal error if it is
|
||
NULL. This new function must be used instead of accessing directly the
|
||
_PyThreadState_Current variable. The variable is no more exposed since
|
||
Python 3.5.1 to hide the exact implementation of atomic C types, to avoid
|
||
compiler issues.
|
||
|
||
- bpo-26194: Deque.insert() gave odd results for bounded deques that had
|
||
reached their maximum size. Now an IndexError will be raised when
|
||
attempting to insert into a full deque.
|
||
|
||
- bpo-25843: When compiling code, don't merge constants if they are equal
|
||
but have a different types. For example, ``f1, f2 = lambda: 1, lambda:
|
||
1.0`` is now correctly compiled to two different functions: ``f1()``
|
||
returns ``1`` (``int``) and ``f2()`` returns ``1.0`` (``int``), even if
|
||
``1`` and ``1.0`` are equal.
|
||
|
||
- bpo-22995: [UPDATE] Comment out the one of the pickleability tests in
|
||
_PyObject_GetState() due to regressions observed in Cython-based projects.
|
||
|
||
- bpo-25961: Disallowed null characters in the type name.
|
||
|
||
- bpo-25973: Fix segfault when an invalid nonlocal statement binds a name
|
||
starting with two underscores.
|
||
|
||
- bpo-22995: Instances of extension types with a state that aren't
|
||
subclasses of list or dict and haven't implemented any pickle-related
|
||
methods (__reduce__, __reduce_ex__, __getnewargs__, __getnewargs_ex__, or
|
||
__getstate__), can no longer be pickled. Including memoryview.
|
||
|
||
- bpo-20440: Massive replacing unsafe attribute setting code with special
|
||
macro Py_SETREF.
|
||
|
||
- bpo-25766: Special method __bytes__() now works in str subclasses.
|
||
|
||
- bpo-25421: __sizeof__ methods of builtin types now use dynamic basic size.
|
||
This allows sys.getsize() to work correctly with their subclasses with
|
||
__slots__ defined.
|
||
|
||
- bpo-25709: Fixed problem with in-place string concatenation and utf-8
|
||
cache.
|
||
|
||
- bpo-27147: Mention :pep:`420` in the importlib docs.
|
||
|
||
- bpo-24097: Fixed crash in object.__reduce__() if slot name is freed inside
|
||
__getattr__.
|
||
|
||
- bpo-24731: Fixed crash on converting objects with special methods
|
||
__bytes__, __trunc__, and __float__ returning instances of subclasses of
|
||
bytes, int, and float to subclasses of bytes, int, and float
|
||
correspondingly.
|
||
|
||
- bpo-26478: Fix semantic bugs when using binary operators with dictionary
|
||
views and tuples.
|
||
|
||
- bpo-26171: Fix possible integer overflow and heap corruption in
|
||
zipimporter.get_data().
|
||
|
||
- bpo-25660: Fix TAB key behaviour in REPL with readline.
|
||
|
||
- bpo-25887: Raise a RuntimeError when a coroutine object is awaited more
|
||
than once.
|
||
|
||
- bpo-27243: Update the __aiter__ protocol: instead of returning an
|
||
awaitable that resolves to an asynchronous iterator, the asynchronous
|
||
iterator should be returned directly. Doing the former will trigger a
|
||
PendingDeprecationWarning.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-21386: Implement missing IPv4Address.is_global property. It was
|
||
documented since 07a5610bae9d. Initial patch by Roger Luethi.
|
||
|
||
- bpo-20900: distutils register command now decodes HTTP responses
|
||
correctly. Initial patch by ingrid.
|
||
|
||
- A new version of typing.py provides several new classes and features:
|
||
@overload outside stubs, Reversible, DefaultDict, Text, ContextManager,
|
||
Type[], NewType(), TYPE_CHECKING, and numerous bug fixes (note that some
|
||
of the new features are not yet implemented in mypy or other static
|
||
analyzers). Also classes for :pep:`492` (Awaitable, AsyncIterable,
|
||
AsyncIterator) have been added (in fact they made it into 3.5.1 but were
|
||
never mentioned).
|
||
|
||
- bpo-25738: Stop http.server.BaseHTTPRequestHandler.send_error() from
|
||
sending a message body for 205 Reset Content. Also, don't send Content
|
||
header fields in responses that don't have a body. Patch by Susumu
|
||
Koshiba.
|
||
|
||
- bpo-21313: Fix the "platform" module to tolerate when sys.version contains
|
||
truncated build information.
|
||
|
||
- bpo-27164: In the zlib module, allow decompressing raw Deflate streams
|
||
with a predefined zdict. Based on patch by Xiang Zhang.
|
||
|
||
- bpo-24291: Fix wsgiref.simple_server.WSGIRequestHandler to completely
|
||
write data to the client. Previously it could do partial writes and
|
||
truncate data. Also, wsgiref.handler.ServerHandler can now handle stdout
|
||
doing partial writes, but this is deprecated.
|
||
|
||
- bpo-26809: Add ``__all__`` to :mod:`string`. Patch by Emanuel Barry.
|
||
|
||
- bpo-26373: subprocess.Popen.communicate now correctly ignores
|
||
BrokenPipeError when the child process dies before .communicate() is
|
||
called in more/all circumstances.
|
||
|
||
- bpo-21776: distutils.upload now correctly handles HTTPError. Initial patch
|
||
by Claudiu Popa.
|
||
|
||
- bpo-27114: Fix SSLContext._load_windows_store_certs fails with
|
||
PermissionError
|
||
|
||
- bpo-18383: Avoid creating duplicate filters when using filterwarnings and
|
||
simplefilter. Based on patch by Alex Shkop.
|
||
|
||
- bpo-27057: Fix os.set_inheritable() on Android, ioctl() is blocked by
|
||
SELinux and fails with EACCESS. The function now falls back to fcntl().
|
||
Patch written by Michał Bednarski.
|
||
|
||
- bpo-27014: Fix infinite recursion using typing.py. Thanks to Kalle Tuure!
|
||
|
||
- bpo-14132: Fix urllib.request redirect handling when the target only has a
|
||
query string. Original fix by Ján Janech.
|
||
|
||
- bpo-17214: The "urllib.request" module now percent-encodes non-ASCII bytes
|
||
found in redirect target URLs. Some servers send Location header fields
|
||
with non-ASCII bytes, but "http.client" requires the request target to be
|
||
ASCII-encodable, otherwise a UnicodeEncodeError is raised. Based on patch
|
||
by Christian Heimes.
|
||
|
||
- bpo-26892: Honor debuglevel flag in urllib.request.HTTPHandler. Patch
|
||
contributed by Chi Hsuan Yen.
|
||
|
||
- bpo-22274: In the subprocess module, allow stderr to be redirected to
|
||
stdout even when stdout is not redirected. Patch by Akira Li.
|
||
|
||
- bpo-26807: mock_open 'files' no longer error on readline at end of file.
|
||
Patch from Yolanda Robla.
|
||
|
||
- bpo-25745: Fixed leaking a userptr in curses panel destructor.
|
||
|
||
- bpo-26977: Removed unnecessary, and ignored, call to sum of squares helper
|
||
in statistics.pvariance.
|
||
|
||
- bpo-26881: The modulefinder module now supports extended opcode arguments.
|
||
|
||
- bpo-23815: Fixed crashes related to directly created instances of types in
|
||
_tkinter and curses.panel modules.
|
||
|
||
- bpo-17765: weakref.ref() no longer silently ignores keyword arguments.
|
||
Patch by Georg Brandl.
|
||
|
||
- bpo-26873: xmlrpc now raises ResponseError on unsupported type tags
|
||
instead of silently return incorrect result.
|
||
|
||
- bpo-26711: Fixed the comparison of plistlib.Data with other types.
|
||
|
||
- bpo-24114: Fix an uninitialized variable in `ctypes.util`. The bug only
|
||
occurs on SunOS when the ctypes implementation searches for the `crle`
|
||
program. Patch by Xiang Zhang. Tested on SunOS by Kees Bos.
|
||
|
||
- bpo-26864: In urllib.request, change the proxy bypass host checking
|
||
against no_proxy to be case-insensitive, and to not match unrelated host
|
||
names that happen to have a bypassed hostname as a suffix. Patch by Xiang
|
||
Zhang.
|
||
|
||
- bpo-26634: recursive_repr() now sets __qualname__ of wrapper. Patch by
|
||
Xiang Zhang.
|
||
|
||
- bpo-26804: urllib.request will prefer lower_case proxy environment
|
||
variables over UPPER_CASE or Mixed_Case ones. Patch contributed by
|
||
Hans-Peter Jansen.
|
||
|
||
- bpo-26837: assertSequenceEqual() now correctly outputs non-stringified
|
||
differing items (like bytes in the -b mode). This affects
|
||
assertListEqual() and assertTupleEqual().
|
||
|
||
- bpo-26041: Remove "will be removed in Python 3.7" from deprecation
|
||
messages of platform.dist() and platform.linux_distribution(). Patch by
|
||
Kumaripaba Miyurusara Athukorala.
|
||
|
||
- bpo-26822: itemgetter, attrgetter and methodcaller objects no longer
|
||
silently ignore keyword arguments.
|
||
|
||
- bpo-26733: Disassembling a class now disassembles class and static
|
||
methods. Patch by Xiang Zhang.
|
||
|
||
- bpo-26801: Fix error handling in :func:`shutil.get_terminal_size`, catch
|
||
:exc:`AttributeError` instead of :exc:`NameError`. Patch written by
|
||
Emanuel Barry.
|
||
|
||
- bpo-24838: tarfile's ustar and gnu formats now correctly calculate name
|
||
and link field limits for multibyte character encodings like utf-8.
|
||
|
||
- bpo-26717: Stop encoding Latin-1-ized WSGI paths with UTF-8. Patch by
|
||
Anthony Sottile.
|
||
|
||
- bpo-26735: Fix :func:`os.urandom` on Solaris 11.3 and newer when reading
|
||
more than 1,024 bytes: call ``getrandom()`` multiple times with a limit of
|
||
1024 bytes per call.
|
||
|
||
- bpo-16329: Add .webm to mimetypes.types_map. Patch by Giampaolo Rodola'.
|
||
|
||
- bpo-13952: Add .csv to mimetypes.types_map. Patch by Geoff Wilson.
|
||
|
||
- bpo-26709: Fixed Y2038 problem in loading binary PLists.
|
||
|
||
- bpo-23735: Handle terminal resizing with Readline 6.3+ by installing our
|
||
own SIGWINCH handler. Patch by Eric Price.
|
||
|
||
- bpo-26586: In http.server, respond with "413 Request header fields too
|
||
large" if there are too many header fields to parse, rather than killing
|
||
the connection and raising an unhandled exception. Patch by Xiang Zhang.
|
||
|
||
- bpo-22854: Change BufferedReader.writable() and BufferedWriter.readable()
|
||
to always return False.
|
||
|
||
- bpo-25195: Fix a regression in mock.MagicMock. _Call is a subclass of
|
||
tuple (changeset 3603bae63c13 only works for classes) so we need to
|
||
implement __ne__ ourselves. Patch by Andrew Plummer.
|
||
|
||
- bpo-26644: Raise ValueError rather than SystemError when a negative length
|
||
is passed to SSLSocket.recv() or read().
|
||
|
||
- bpo-23804: Fix SSL recv(0) and read(0) methods to return zero bytes
|
||
instead of up to 1024.
|
||
|
||
- bpo-26616: Fixed a bug in datetime.astimezone() method.
|
||
|
||
- bpo-21925: :func:`warnings.formatwarning` now catches exceptions on
|
||
``linecache.getline(...)`` to be able to log :exc:`ResourceWarning`
|
||
emitted late during the Python shutdown process.
|
||
|
||
- bpo-24266: Ctrl+C during Readline history search now cancels the search
|
||
mode when compiled with Readline 7.
|
||
|
||
- bpo-26560: Avoid potential ValueError in BaseHandler.start_response.
|
||
Initial patch by Peter Inglesby.
|
||
|
||
- bpo-26569: Fix :func:`pyclbr.readmodule` and :func:`pyclbr.readmodule_ex`
|
||
to support importing packages.
|
||
|
||
- bpo-26499: Account for remaining Content-Length in HTTPResponse.readline()
|
||
and read1(). Based on patch by Silent Ghost. Also document that
|
||
HTTPResponse now supports these methods.
|
||
|
||
- bpo-25320: Handle sockets in directories unittest discovery is scanning.
|
||
Patch from Victor van den Elzen.
|
||
|
||
- bpo-16181: cookiejar.http2time() now returns None if year is higher than
|
||
datetime.MAXYEAR.
|
||
|
||
- bpo-26513: Fixes platform module detection of Windows Server
|
||
|
||
- bpo-23718: Fixed parsing time in week 0 before Jan 1. Original patch by
|
||
Tamás Bence Gedai.
|
||
|
||
- bpo-20589: Invoking Path.owner() and Path.group() on Windows now raise
|
||
NotImplementedError instead of ImportError.
|
||
|
||
- bpo-26177: Fixed the keys() method for Canvas and Scrollbar widgets.
|
||
|
||
- bpo-15068: Got rid of excessive buffering in the fileinput module. The
|
||
bufsize parameter is no longer used.
|
||
|
||
- bpo-2202: Fix UnboundLocalError in
|
||
AbstractDigestAuthHandler.get_algorithm_impls. Initial patch by Mathieu
|
||
Dupuy.
|
||
|
||
- bpo-25718: Fixed pickling and copying the accumulate() iterator with total
|
||
is None.
|
||
|
||
- bpo-26475: Fixed debugging output for regular expressions with the (?x)
|
||
flag.
|
||
|
||
- bpo-26457: Fixed the subnets() methods in IP network classes for the case
|
||
when resulting prefix length is equal to maximal prefix length. Based on
|
||
patch by Xiang Zhang.
|
||
|
||
- bpo-26385: Remove the file if the internal open() call in
|
||
NamedTemporaryFile() fails. Patch by Silent Ghost.
|
||
|
||
- bpo-26402: Fix XML-RPC client to retry when the server shuts down a
|
||
persistent connection. This was a regression related to the new
|
||
http.client.RemoteDisconnected exception in 3.5.0a4.
|
||
|
||
- bpo-25913: Leading ``<~`` is optional now in base64.a85decode() with
|
||
adobe=True. Patch by Swati Jaiswal.
|
||
|
||
- bpo-26186: Remove an invalid type check in importlib.util.LazyLoader.
|
||
|
||
- bpo-26367: importlib.__import__() raises SystemError like
|
||
builtins.__import__() when ``level`` is specified but without an
|
||
accompanying package specified.
|
||
|
||
- bpo-26309: In the "socketserver" module, shut down the request (closing
|
||
the connected socket) when verify_request() returns false. Patch by Aviv
|
||
Palivoda.
|
||
|
||
- bpo-25995: os.walk() no longer uses FDs proportional to the tree depth.
|
||
|
||
- bpo-26117: The os.scandir() iterator now closes file descriptor not only
|
||
when the iteration is finished, but when it was failed with error.
|
||
|
||
- bpo-25911: Restored support of bytes paths in os.walk() on Windows.
|
||
|
||
- bpo-26045: Add UTF-8 suggestion to error message when posting a
|
||
non-Latin-1 string with http.client.
|
||
|
||
- bpo-12923: Reset FancyURLopener's redirect counter even if there is an
|
||
exception. Based on patches by Brian Brazil and Daniel Rocco.
|
||
|
||
- bpo-25945: Fixed a crash when unpickle the functools.partial object with
|
||
wrong state. Fixed a leak in failed functools.partial constructor. "args"
|
||
and "keywords" attributes of functools.partial have now always types tuple
|
||
and dict correspondingly.
|
||
|
||
- bpo-26202: copy.deepcopy() now correctly copies range() objects with
|
||
non-atomic attributes.
|
||
|
||
- bpo-23076: Path.glob() now raises a ValueError if it's called with an
|
||
invalid pattern. Patch by Thomas Nyberg.
|
||
|
||
- bpo-19883: Fixed possible integer overflows in zipimport.
|
||
|
||
- bpo-26227: On Windows, getnameinfo(), gethostbyaddr() and
|
||
gethostbyname_ex() functions of the socket module now decode the hostname
|
||
from the ANSI code page rather than UTF-8.
|
||
|
||
- bpo-26147: xmlrpc now works with strings not encodable with used non-UTF-8
|
||
encoding.
|
||
|
||
- bpo-25935: Garbage collector now breaks reference loops with OrderedDict.
|
||
|
||
- bpo-16620: Fixed AttributeError in msilib.Directory.glob().
|
||
|
||
- bpo-26013: Added compatibility with broken protocol 2 pickles created in
|
||
old Python 3 versions (3.4.3 and lower).
|
||
|
||
- bpo-25850: Use cross-compilation by default for 64-bit Windows.
|
||
|
||
- bpo-17633: Improve zipimport's support for namespace packages.
|
||
|
||
- bpo-24705: Fix sysconfig._parse_makefile not expanding ${} vars appearing
|
||
before $() vars.
|
||
|
||
- bpo-22138: Fix mock.patch behavior when patching descriptors. Restore
|
||
original values after patching. Patch contributed by Sean McCully.
|
||
|
||
- bpo-25672: In the ssl module, enable the SSL_MODE_RELEASE_BUFFERS mode
|
||
option if it is safe to do so.
|
||
|
||
- bpo-26012: Don't traverse into symlinks for ``**`` pattern in
|
||
pathlib.Path.[r]glob().
|
||
|
||
- bpo-24120: Ignore PermissionError when traversing a tree with
|
||
pathlib.Path.[r]glob(). Patch by Ulrich Petri.
|
||
|
||
- bpo-25447: fileinput now uses sys.stdin as-is if it does not have a buffer
|
||
attribute (restores backward compatibility).
|
||
|
||
- bpo-25447: Copying the lru_cache() wrapper object now always works,
|
||
independently from the type of the wrapped object (by returning the
|
||
original object unchanged).
|
||
|
||
- bpo-24103: Fixed possible use after free in ElementTree.XMLPullParser.
|
||
|
||
- bpo-25860: os.fwalk() no longer skips remaining directories when error
|
||
occurs. Original patch by Samson Lee.
|
||
|
||
- bpo-25914: Fixed and simplified OrderedDict.__sizeof__.
|
||
|
||
- bpo-25902: Fixed various refcount issues in ElementTree iteration.
|
||
|
||
- bpo-25717: Restore the previous behaviour of tolerating most fstat()
|
||
errors when opening files. This was a regression in 3.5a1, and stopped
|
||
anonymous temporary files from working in special cases.
|
||
|
||
- bpo-24903: Fix regression in number of arguments compileall accepts when
|
||
'-d' is specified. The check on the number of arguments has been dropped
|
||
completely as it never worked correctly anyway.
|
||
|
||
- bpo-25764: In the subprocess module, preserve any exception caused by
|
||
fork() failure when preexec_fn is used.
|
||
|
||
- bpo-6478: _strptime's regexp cache now is reset after changing timezone
|
||
with time.tzset().
|
||
|
||
- bpo-14285: When executing a package with the "python -m package" option,
|
||
and package initialization fails, a proper traceback is now reported. The
|
||
"runpy" module now lets exceptions from package initialization pass back
|
||
to the caller, rather than raising ImportError.
|
||
|
||
- bpo-19771: Also in runpy and the "-m" option, omit the irrelevant message
|
||
". . . is a package and cannot be directly executed" if the package could
|
||
not even be initialized (e.g. due to a bad ``*.pyc`` file).
|
||
|
||
- bpo-25177: Fixed problem with the mean of very small and very large
|
||
numbers. As a side effect, statistics.mean and statistics.variance should
|
||
be significantly faster.
|
||
|
||
- bpo-25718: Fixed copying object with state with boolean value is false.
|
||
|
||
- bpo-10131: Fixed deep copying of minidom documents. Based on patch by
|
||
Marian Ganisin.
|
||
|
||
- bpo-25725: Fixed a reference leak in pickle.loads() when unpickling
|
||
invalid data including tuple instructions.
|
||
|
||
- bpo-25663: In the Readline completer, avoid listing duplicate global
|
||
names, and search the global namespace before searching builtins.
|
||
|
||
- bpo-25688: Fixed file leak in ElementTree.iterparse() raising an error.
|
||
|
||
- bpo-23914: Fixed SystemError raised by unpickler on broken pickle data.
|
||
|
||
- bpo-25691: Fixed crash on deleting ElementTree.Element attributes.
|
||
|
||
- bpo-25624: ZipFile now always writes a ZIP_STORED header for directory
|
||
entries. Patch by Dingyuan Wang.
|
||
|
||
- Skip getaddrinfo if host is already resolved. Patch by A. Jesse Jiryu
|
||
Davis.
|
||
|
||
- bpo-26050: Add asyncio.StreamReader.readuntil() method. Patch by Марк
|
||
Коренберг.
|
||
|
||
- bpo-25924: Avoid unnecessary serialization of getaddrinfo(3) calls on OS X
|
||
versions 10.5 or higher. Original patch by A. Jesse Jiryu Davis.
|
||
|
||
- bpo-26406: Avoid unnecessary serialization of getaddrinfo(3) calls on
|
||
current versions of OpenBSD and NetBSD. Patch by A. Jesse Jiryu Davis.
|
||
|
||
- bpo-26848: Fix asyncio/subprocess.communicate() to handle empty input.
|
||
Patch by Jack O'Connor.
|
||
|
||
- bpo-27040: Add loop.get_exception_handler method
|
||
|
||
- bpo-27041: asyncio: Add loop.create_future method
|
||
|
||
- bpo-27223: asyncio: Fix _read_ready and _write_ready to respect
|
||
_conn_lost. Patch by Łukasz Langa.
|
||
|
||
- bpo-22970: asyncio: Fix inconsistency cancelling Condition.wait. Patch by
|
||
David Coles.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-5124: Paste with text selected now replaces the selection on X11. This
|
||
matches how paste works on Windows, Mac, most modern Linux apps, and ttk
|
||
widgets. Original patch by Serhiy Storchaka.
|
||
|
||
- bpo-24759: Make clear in idlelib.idle_test.__init__ that the directory is
|
||
a private implementation of test.test_idle and tool for maintainers.
|
||
|
||
- bpo-27196: Stop 'ThemeChanged' warnings when running IDLE tests. These
|
||
persisted after other warnings were suppressed in #20567. Apply Serhiy
|
||
Storchaka's update_idletasks solution to four test files. Record this
|
||
additional advice in idle_test/README.txt
|
||
|
||
- bpo-20567: Revise idle_test/README.txt with advice about avoiding tk
|
||
warning messages from tests. Apply advice to several IDLE tests.
|
||
|
||
- bpo-27117: Make colorizer htest and turtledemo work with dark themes. Move
|
||
code for configuring text widget colors to a new function.
|
||
|
||
- bpo-26673: When tk reports font size as 0, change to size 10. Such fonts
|
||
on Linux prevented the configuration dialog from opening.
|
||
|
||
- bpo-21939: Add test for IDLE's percolator. Original patch by Saimadhav
|
||
Heblikar.
|
||
|
||
- bpo-21676: Add test for IDLE's replace dialog. Original patch by Saimadhav
|
||
Heblikar.
|
||
|
||
- bpo-18410: Add test for IDLE's search dialog. Original patch by Westley
|
||
Martínez.
|
||
|
||
- bpo-21703: Add test for IDLE's undo delegator. Original patch by Saimadhav
|
||
Heblikar .
|
||
|
||
- bpo-27044: Add ConfigDialog.remove_var_callbacks to stop memory leaks.
|
||
|
||
- bpo-23977: Add more asserts to test_delegator.
|
||
|
||
- bpo-20640: Add tests for idlelib.configHelpSourceEdit. Patch by Saimadhav
|
||
Heblikar.
|
||
|
||
- In the 'IDLE-console differences' section of the IDLE doc, clarify how
|
||
running with IDLE affects sys.modules and the standard streams.
|
||
|
||
- bpo-25507: fix incorrect change in IOBinding that prevented printing.
|
||
Augment IOBinding htest to include all major IOBinding functions.
|
||
|
||
- bpo-25905: Revert unwanted conversion of ' to ’ RIGHT SINGLE QUOTATION
|
||
MARK in README.txt and open this and NEWS.txt with 'ascii'. Re-encode
|
||
CREDITS.txt to utf-8 and open it with 'utf-8'.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-19489: Moved the search box from the sidebar to the header and footer
|
||
of each page. Patch by Ammar Askar.
|
||
|
||
- bpo-24136: Document the new :pep:`448` unpacking syntax of 3.5.
|
||
|
||
- bpo-26736: Used HTTPS for external links in the documentation if possible.
|
||
|
||
- bpo-6953: Rework the Readline module documentation to group related
|
||
functions together, and add more details such as what underlying Readline
|
||
functions and variables are accessed.
|
||
|
||
- bpo-23606: Adds note to ctypes documentation regarding cdll.msvcrt.
|
||
|
||
- bpo-25500: Fix documentation to not claim that __import__ is searched for
|
||
in the global scope.
|
||
|
||
- bpo-26014: Update 3.x packaging documentation: * "See also" links to the
|
||
new docs are now provided in the legacy pages * links to setuptools
|
||
documentation have been updated
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-21916: Added tests for the turtle module. Patch by ingrid, Gregory
|
||
Loyse and Jelle Zijlstra.
|
||
|
||
- bpo-26523: The multiprocessing thread pool (multiprocessing.dummy.Pool)
|
||
was untested.
|
||
|
||
- bpo-26015: Added new tests for pickling iterators of mutable sequences.
|
||
|
||
- bpo-26325: Added test.support.check_no_resource_warning() to check that no
|
||
ResourceWarning is emitted.
|
||
|
||
- bpo-25940: Changed test_ssl to use self-signed.pythontest.net. This
|
||
avoids relying on svn.python.org, which recently changed root certificate.
|
||
|
||
- bpo-25616: Tests for OrderedDict are extracted from test_collections into
|
||
separate file test_ordered_dict.
|
||
|
||
- bpo-26583: Skip test_timestamp_overflow in test_import if bytecode files
|
||
cannot be written.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-26884: Fix linking extension modules for cross builds. Patch by Xavier
|
||
de Gaye.
|
||
|
||
- bpo-22359: Disable the rules for running _freeze_importlib and pgen when
|
||
cross-compiling. The output of these programs is normally saved with the
|
||
source code anyway, and is still regenerated when doing a native build.
|
||
Patch by Xavier de Gaye.
|
||
|
||
- bpo-27229: Fix the cross-compiling pgen rule for in-tree builds. Patch by
|
||
Xavier de Gaye.
|
||
|
||
- bpo-21668: Link audioop, _datetime, _ctypes_test modules to libm, except
|
||
on Mac OS X. Patch written by Xavier de Gaye.
|
||
|
||
- bpo-25702: A --with-lto configure option has been added that will enable
|
||
link time optimizations at build time during a make profile-opt. Some
|
||
compilers and toolchains are known to not produce stable code when using
|
||
LTO, be sure to test things thoroughly before relying on it. It can
|
||
provide a few % speed up over profile-opt alone.
|
||
|
||
- bpo-26624: Adds validation of ucrtbase[d].dll version with warning for old
|
||
versions.
|
||
|
||
- bpo-17603: Avoid error about nonexistent fileblocks.o file by using a
|
||
lower-level check for st_blocks in struct stat.
|
||
|
||
- bpo-26079: Fixing the build output folder for tix-8.4.3.6. Patch by Bjoern
|
||
Thiel.
|
||
|
||
- bpo-26465: Update Windows builds to use OpenSSL 1.0.2g.
|
||
|
||
- bpo-24421: Compile Modules/_math.c once, before building extensions.
|
||
Previously it could fail to compile properly if the math and cmath builds
|
||
were concurrent.
|
||
|
||
- bpo-25348: Added ``--pgo`` and ``--pgo-job`` arguments to
|
||
``PCbuild\build.bat`` for building with Profile-Guided Optimization. The
|
||
old ``PCbuild\build_pgo.bat`` script is now deprecated, and simply calls
|
||
``PCbuild\build.bat --pgo %*``.
|
||
|
||
- bpo-25827: Add support for building with ICC to ``configure``, including a
|
||
new ``--with-icc`` flag.
|
||
|
||
- bpo-25696: Fix installation of Python on UNIX with make -j9.
|
||
|
||
- bpo-26930: Update OS X 10.5+ 32-bit-only installer to build and link with
|
||
OpenSSL 1.0.2h.
|
||
|
||
- bpo-26268: Update Windows builds to use OpenSSL 1.0.2f.
|
||
|
||
- bpo-25136: Support Apple Xcode 7's new textual SDK stub libraries.
|
||
|
||
- bpo-24324: Do not enable unreachable code warnings when using gcc as the
|
||
option does not work correctly in older versions of gcc and has been
|
||
silently removed as of gcc-4.5.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-27053: Updates make_zip.py to correctly generate library ZIP file.
|
||
|
||
- bpo-26268: Update the prepare_ssl.py script to handle OpenSSL releases
|
||
that don't include the contents of the include directory (that is, 1.0.2e
|
||
and later).
|
||
|
||
- bpo-26071: bdist_wininst created binaries fail to start and find 32bit
|
||
Python
|
||
|
||
- bpo-26073: Update the list of magic numbers in launcher
|
||
|
||
- bpo-26065: Excludes venv from library when generating embeddable distro.
|
||
|
||
- bpo-17500: Remove unused and outdated icons. (See also:
|
||
https://github.com/python/pythondotorg/issues/945)
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-26799: Fix python-gdb.py: don't get C types once when the Python code
|
||
is loaded, but get C types on demand. The C types can change if
|
||
python-gdb.py is loaded before the Python executable. Patch written by
|
||
Thomas Ilsche.
|
||
|
||
- bpo-26271: Fix the Freeze tool to properly use flags passed through
|
||
configure. Patch by Daniel Shaulov.
|
||
|
||
- bpo-26489: Add dictionary unpacking support to Tools/parser/unparse.py.
|
||
Patch by Guo Ci Teo.
|
||
|
||
- bpo-26316: Fix variable name typo in Argument Clinic.
|
||
|
||
|
||
What's New in Python 3.5.1 final?
|
||
=================================
|
||
|
||
*Release date: 2015-12-06*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-25709: Fixed problem with in-place string concatenation and utf-8
|
||
cache.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-25715: Python 3.5.1 installer shows wrong upgrade path and incorrect
|
||
logic for launcher detection.
|
||
|
||
|
||
What's New in Python 3.5.1 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2015-11-22*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-25630: Fix a possible segfault during argument parsing in functions
|
||
that accept filesystem paths.
|
||
|
||
- bpo-23564: Fixed a partially broken sanity check in the _posixsubprocess
|
||
internals regarding how fds_to_pass were passed to the child. The bug had
|
||
no actual impact as subprocess.py already avoided it.
|
||
|
||
- bpo-25388: Fixed tokenizer crash when processing undecodable source code
|
||
with a null byte.
|
||
|
||
- bpo-25462: The hash of the key now is calculated only once in most
|
||
operations in C implementation of OrderedDict.
|
||
|
||
- bpo-22995: Default implementation of __reduce__ and __reduce_ex__ now
|
||
rejects builtin types with not defined __new__.
|
||
|
||
- bpo-25555: Fix parser and AST: fill lineno and col_offset of "arg" node
|
||
when compiling AST from Python objects.
|
||
|
||
- bpo-24802: Avoid buffer overreads when int(), float(), compile(), exec()
|
||
and eval() are passed bytes-like objects. These objects are not
|
||
necessarily terminated by a null byte, but the functions assumed they
|
||
were.
|
||
|
||
- bpo-24726: Fixed a crash and leaking NULL in repr() of OrderedDict that
|
||
was mutated by direct calls of dict methods.
|
||
|
||
- bpo-25449: Iterating OrderedDict with keys with unstable hash now raises
|
||
KeyError in C implementations as well as in Python implementation.
|
||
|
||
- bpo-25395: Fixed crash when highly nested OrderedDict structures were
|
||
garbage collected.
|
||
|
||
- bpo-25274: sys.setrecursionlimit() now raises a RecursionError if the new
|
||
recursion limit is too low depending at the current recursion depth.
|
||
Modify also the "lower-water mark" formula to make it monotonic. This mark
|
||
is used to decide when the overflowed flag of the thread state is reset.
|
||
|
||
- bpo-24402: Fix input() to prompt to the redirected stdout when
|
||
sys.stdout.fileno() fails.
|
||
|
||
- bpo-24806: Prevent builtin types that are not allowed to be subclassed
|
||
from being subclassed through multiple inheritance.
|
||
|
||
- bpo-24848: Fixed a number of bugs in UTF-7 decoding of misformed data.
|
||
|
||
- bpo-25280: Import trace messages emitted in verbose (-v) mode are no
|
||
longer formatted twice.
|
||
|
||
- bpo-25003: On Solaris 11.3 or newer, os.urandom() now uses the getrandom()
|
||
function instead of the getentropy() function. The getentropy() function
|
||
is blocking to generate very good quality entropy, os.urandom() doesn't
|
||
need such high-quality entropy.
|
||
|
||
- bpo-25182: The stdprinter (used as sys.stderr before the io module is
|
||
imported at startup) now uses the backslashreplace error handler.
|
||
|
||
- bpo-25131: Make the line number and column offset of set/dict literals and
|
||
comprehensions correspond to the opening brace.
|
||
|
||
- bpo-25150: Hide the private _Py_atomic_xxx symbols from the public
|
||
Python.h header to fix a compilation error with OpenMP.
|
||
PyThreadState_GET() becomes an alias to PyThreadState_Get() to avoid ABI
|
||
incompatibilities.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-25626: Change three zlib functions to accept sizes that fit in
|
||
Py_ssize_t, but internally cap those sizes to UINT_MAX. This resolves a
|
||
regression in 3.5 where GzipFile.read() failed to read chunks larger than
|
||
2 or 4 GiB. The change affects the zlib.Decompress.decompress()
|
||
max_length parameter, the zlib.decompress() bufsize parameter, and the
|
||
zlib.Decompress.flush() length parameter.
|
||
|
||
- bpo-25583: Avoid incorrect errors raised by os.makedirs(exist_ok=True)
|
||
when the OS gives priority to errors such as EACCES over EEXIST.
|
||
|
||
- bpo-25593: Change semantics of EventLoop.stop() in asyncio.
|
||
|
||
- bpo-6973: When we know a subprocess.Popen process has died, do not allow
|
||
the send_signal(), terminate(), or kill() methods to do anything as they
|
||
could potentially signal a different process.
|
||
|
||
- bpo-25590: In the Readline completer, only call getattr() once per
|
||
attribute.
|
||
|
||
- bpo-25498: Fix a crash when garbage-collecting ctypes objects created by
|
||
wrapping a memoryview. This was a regression made in 3.5a1. Based on
|
||
patch by Eryksun.
|
||
|
||
- bpo-25584: Added "escape" to the __all__ list in the glob module.
|
||
|
||
- bpo-25584: Fixed recursive glob() with patterns starting with ``**``.
|
||
|
||
- bpo-25446: Fix regression in smtplib's AUTH LOGIN support.
|
||
|
||
- bpo-18010: Fix the pydoc web server's module search function to handle
|
||
exceptions from importing packages.
|
||
|
||
- bpo-25554: Got rid of circular references in regular expression parsing.
|
||
|
||
- bpo-25510: fileinput.FileInput.readline() now returns b'' instead of '' at
|
||
the end if the FileInput was opened with binary mode. Patch by Ryosuke
|
||
Ito.
|
||
|
||
- bpo-25503: Fixed inspect.getdoc() for inherited docstrings of properties.
|
||
Original patch by John Mark Vandenberg.
|
||
|
||
- bpo-25515: Always use os.urandom as a source of randomness in uuid.uuid4.
|
||
|
||
- bpo-21827: Fixed textwrap.dedent() for the case when largest common
|
||
whitespace is a substring of smallest leading whitespace. Based on patch
|
||
by Robert Li.
|
||
|
||
- bpo-25447: The lru_cache() wrapper objects now can be copied and pickled
|
||
(by returning the original object unchanged).
|
||
|
||
- bpo-25390: typing: Don't crash on Union[str, Pattern].
|
||
|
||
- bpo-25441: asyncio: Raise error from drain() when socket is closed.
|
||
|
||
- bpo-25410: Cleaned up and fixed minor bugs in C implementation of
|
||
OrderedDict.
|
||
|
||
- bpo-25411: Improved Unicode support in SMTPHandler through better use of
|
||
the email package. Thanks to user simon04 for the patch.
|
||
|
||
- bpo-25407: Remove mentions of the formatter module being removed in Python
|
||
3.6.
|
||
|
||
- bpo-25406: Fixed a bug in C implementation of OrderedDict.move_to_end()
|
||
that caused segmentation fault or hang in iterating after moving several
|
||
items to the start of ordered dict.
|
||
|
||
- bpo-25364: zipfile now works in threads disabled builds.
|
||
|
||
- bpo-25328: smtpd's SMTPChannel now correctly raises a ValueError if both
|
||
decode_data and enable_SMTPUTF8 are set to true.
|
||
|
||
- bpo-25316: distutils raises OSError instead of DistutilsPlatformError when
|
||
MSVC is not installed.
|
||
|
||
- bpo-25380: Fixed protocol for the STACK_GLOBAL opcode in
|
||
pickletools.opcodes.
|
||
|
||
- bpo-23972: Updates asyncio datagram create method allowing reuseport and
|
||
reuseaddr socket options to be set prior to binding the socket. Mirroring
|
||
the existing asyncio create_server method the reuseaddr option for
|
||
datagram sockets defaults to True if the O/S is 'posix' (except if the
|
||
platform is Cygwin). Patch by Chris Laws.
|
||
|
||
- bpo-25304: Add asyncio.run_coroutine_threadsafe(). This lets you submit a
|
||
coroutine to a loop from another thread, returning a
|
||
concurrent.futures.Future. By Vincent Michel.
|
||
|
||
- bpo-25232: Fix CGIRequestHandler to split the query from the URL at the
|
||
first question mark (?) rather than the last. Patch from Xiang Zhang.
|
||
|
||
- bpo-24657: Prevent CGIRequestHandler from collapsing slashes in the query
|
||
part of the URL as if it were a path. Patch from Xiang Zhang.
|
||
|
||
- bpo-24483: C implementation of functools.lru_cache() now calculates key's
|
||
hash only once.
|
||
|
||
- bpo-22958: Constructor and update method of weakref.WeakValueDictionary
|
||
now accept the self and the dict keyword arguments.
|
||
|
||
- bpo-22609: Constructor of collections.UserDict now accepts the self
|
||
keyword argument.
|
||
|
||
- bpo-25111: Fixed comparison of traceback.FrameSummary.
|
||
|
||
- bpo-25262: Added support for BINBYTES8 opcode in Python implementation of
|
||
unpickler. Highest 32 bits of 64-bit size for BINUNICODE8 and BINBYTES8
|
||
opcodes no longer silently ignored on 32-bit platforms in C
|
||
implementation.
|
||
|
||
- bpo-25034: Fix string.Formatter problem with auto-numbering and nested
|
||
format_specs. Patch by Anthon van der Neut.
|
||
|
||
- bpo-25233: Rewrite the guts of asyncio.Queue and asyncio.Semaphore to be
|
||
more understandable and correct.
|
||
|
||
- bpo-25203: Failed readline.set_completer_delims() no longer left the
|
||
module in inconsistent state.
|
||
|
||
- bpo-23600: Default implementation of tzinfo.fromutc() was returning wrong
|
||
results in some cases.
|
||
|
||
- bpo-23329: Allow the ssl module to be built with older versions of
|
||
LibreSSL.
|
||
|
||
- Prevent overflow in _Unpickler_Read.
|
||
|
||
- bpo-25047: The XML encoding declaration written by Element Tree now
|
||
respects the letter case given by the user. This restores the ability to
|
||
write encoding names in uppercase like "UTF-8", which worked in Python 2.
|
||
|
||
- bpo-25135: Make deque_clear() safer by emptying the deque before clearing.
|
||
This helps avoid possible reentrancy issues.
|
||
|
||
- bpo-19143: platform module now reads Windows version from kernel32.dll to
|
||
avoid compatibility shims.
|
||
|
||
- bpo-25092: Fix datetime.strftime() failure when errno was already set to
|
||
EINVAL.
|
||
|
||
- bpo-23517: Fix rounding in fromtimestamp() and utcfromtimestamp() methods
|
||
of datetime.datetime: microseconds are now rounded to nearest with ties
|
||
going to nearest even integer (ROUND_HALF_EVEN), instead of being rounding
|
||
towards minus infinity (ROUND_FLOOR). It's important that these methods
|
||
use the same rounding mode than datetime.timedelta to keep the property:
|
||
(datetime(1970,1,1) + timedelta(seconds=t)) ==
|
||
datetime.utcfromtimestamp(t). It also the rounding mode used by
|
||
round(float) for example.
|
||
|
||
- bpo-25155: Fix datetime.datetime.now() and datetime.datetime.utcnow() on
|
||
Windows to support date after year 2038. It was a regression introduced in
|
||
Python 3.5.0.
|
||
|
||
- bpo-25108: Omitted internal frames in traceback functions print_stack(),
|
||
format_stack(), and extract_stack() called without arguments.
|
||
|
||
- bpo-25118: Fix a regression of Python 3.5.0 in os.waitpid() on Windows.
|
||
|
||
- bpo-24684: socket.socket.getaddrinfo() now calls
|
||
PyUnicode_AsEncodedString() instead of calling the encode() method of the
|
||
host, to handle correctly custom string with an encode() method which
|
||
doesn't return a byte string. The encoder of the IDNA codec is now called
|
||
directly instead of calling the encode() method of the string.
|
||
|
||
- bpo-25060: Correctly compute stack usage of the BUILD_MAP opcode.
|
||
|
||
- bpo-24857: Comparing call_args to a long sequence now correctly returns a
|
||
boolean result instead of raising an exception. Patch by A Kaptur.
|
||
|
||
- bpo-23144: Make sure that HTMLParser.feed() returns all the data, even
|
||
when convert_charrefs is True.
|
||
|
||
- bpo-24982: shutil.make_archive() with the "zip" format now adds entries
|
||
for directories (including empty directories) in ZIP file.
|
||
|
||
- bpo-25019: Fixed a crash caused by setting non-string key of expat parser.
|
||
Based on patch by John Leitch.
|
||
|
||
- bpo-16180: Exit pdb if file has syntax error, instead of trapping user in
|
||
an infinite loop. Patch by Xavier de Gaye.
|
||
|
||
- bpo-24891: Fix a race condition at Python startup if the file descriptor
|
||
of stdin (0), stdout (1) or stderr (2) is closed while Python is creating
|
||
sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set
|
||
to None if the creation of the object failed, instead of raising an
|
||
OSError exception. Initial patch written by Marco Paolini.
|
||
|
||
- bpo-24992: Fix error handling and a race condition (related to garbage
|
||
collection) in collections.OrderedDict constructor.
|
||
|
||
- bpo-24881: Fixed setting binary mode in Python implementation of FileIO on
|
||
Windows and Cygwin. Patch from Akira Li.
|
||
|
||
- bpo-25578: Fix (another) memory leak in SSLSocket.getpeercer().
|
||
|
||
- bpo-25530: Disable the vulnerable SSLv3 protocol by default when creating
|
||
ssl.SSLContext.
|
||
|
||
- bpo-25569: Fix memory leak in SSLSocket.getpeercert().
|
||
|
||
- bpo-25471: Sockets returned from accept() shouldn't appear to be
|
||
nonblocking.
|
||
|
||
- bpo-25319: When threading.Event is reinitialized, the underlying condition
|
||
should use a regular lock rather than a recursive lock.
|
||
|
||
- bpo-21112: Fix regression in unittest.expectedFailure on subclasses. Patch
|
||
from Berker Peksag.
|
||
|
||
- bpo-24764: cgi.FieldStorage.read_multi() now ignores the Content-Length
|
||
header in part headers. Patch written by Peter Landry and reviewed by
|
||
Pierre Quentel.
|
||
|
||
- bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and
|
||
Bryce Darling.
|
||
|
||
- bpo-24774: Fix docstring in http.server.test. Patch from Chiu-Hsiang Hsu.
|
||
|
||
- bpo-21159: Improve message in
|
||
configparser.InterpolationMissingOptionError. Patch from Łukasz Langa.
|
||
|
||
- bpo-20362: Honour TestCase.longMessage correctly in assertRegex. Patch
|
||
from Ilia Kurenkov.
|
||
|
||
- bpo-23572: Fixed functools.singledispatch on classes with falsy
|
||
metaclasses. Patch by Ethan Furman.
|
||
|
||
- asyncio: ensure_future() now accepts awaitable objects.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-15348: Stop the debugger engine (normally in a user process) before
|
||
closing the debugger window (running in the IDLE process). This prevents
|
||
the RuntimeErrors that were being caught and ignored.
|
||
|
||
- bpo-24455: Prevent IDLE from hanging when a) closing the shell while the
|
||
debugger is active (15347); b) closing the debugger with the [X] button
|
||
(15348); and c) activating the debugger when already active (24455). The
|
||
patch by Mark Roseman does this by making two changes. 1. Suspend and
|
||
resume the gui.interaction method with the tcl vwait mechanism intended
|
||
for this purpose (instead of root.mainloop & .quit). 2. In gui.run, allow
|
||
any existing interaction to terminate first.
|
||
|
||
- Change 'The program' to 'Your program' in an IDLE 'kill program?' message
|
||
to make it clearer that the program referred to is the currently running
|
||
user program, not IDLE itself.
|
||
|
||
- bpo-24750: Improve the appearance of the IDLE editor window status bar.
|
||
Patch by Mark Roseman.
|
||
|
||
- bpo-25313: Change the handling of new built-in text color themes to better
|
||
address the compatibility problem introduced by the addition of IDLE Dark.
|
||
Consistently use the revised idleConf.CurrentTheme everywhere in idlelib.
|
||
|
||
- bpo-24782: Extension configuration is now a tab in the IDLE Preferences
|
||
dialog rather than a separate dialog. The former tabs are now a sorted
|
||
list. Patch by Mark Roseman.
|
||
|
||
- bpo-22726: Re-activate the config dialog help button with some content
|
||
about the other buttons and the new IDLE Dark theme.
|
||
|
||
- bpo-24820: IDLE now has an 'IDLE Dark' built-in text color theme. It is
|
||
more or less IDLE Classic inverted, with a cobalt blue background.
|
||
Strings, comments, keywords, ... are still green, red, orange, ... . To
|
||
use it with IDLEs released before November 2015, hit the 'Save as New
|
||
Custom Theme' button and enter a new name, such as 'Custom Dark'. The
|
||
custom theme will work with any IDLE release, and can be modified.
|
||
|
||
- bpo-25224: README.txt is now an idlelib index for IDLE developers and
|
||
curious users. The previous user content is now in the IDLE doc chapter.
|
||
'IDLE' now means 'Integrated Development and Learning Environment'.
|
||
|
||
- bpo-24820: Users can now set breakpoint colors in Settings -> Custom
|
||
Highlighting. Original patch by Mark Roseman.
|
||
|
||
- bpo-24972: Inactive selection background now matches active selection
|
||
background, as configured by users, on all systems. Found items are now
|
||
always highlighted on Windows. Initial patch by Mark Roseman.
|
||
|
||
- bpo-24570: Idle: make calltip and completion boxes appear on Macs affected
|
||
by a tk regression. Initial patch by Mark Roseman.
|
||
|
||
- bpo-24988: Idle ScrolledList context menus (used in debugger) now work on
|
||
Mac Aqua. Patch by Mark Roseman.
|
||
|
||
- bpo-24801: Make right-click for context menu work on Mac Aqua. Patch by
|
||
Mark Roseman.
|
||
|
||
- bpo-25173: Associate tkinter messageboxes with a specific widget. For Mac
|
||
OSX, make them a 'sheet'. Patch by Mark Roseman.
|
||
|
||
- bpo-25198: Enhance the initial html viewer now used for Idle Help.
|
||
Properly indent fixed-pitch text (patch by Mark Roseman). Give code
|
||
snippet a very Sphinx-like light blueish-gray background. Re-use initial
|
||
width and height set by users for shell and editor. When the Table of
|
||
Contents (TOC) menu is used, put the section header at the top of the
|
||
screen.
|
||
|
||
- bpo-25225: Condense and rewrite Idle doc section on text colors.
|
||
|
||
- bpo-21995: Explain some differences between IDLE and console Python.
|
||
|
||
- bpo-22820: Explain need for *print* when running file from Idle editor.
|
||
|
||
- bpo-25224: Doc: augment Idle feature list and no-subprocess section.
|
||
|
||
- bpo-25219: Update doc for Idle command line options. Some were missing and
|
||
notes were not correct.
|
||
|
||
- bpo-24861: Most of idlelib is private and subject to change. Use
|
||
idleib.idle.* to start Idle. See idlelib.__init__.__doc__.
|
||
|
||
- bpo-25199: Idle: add synchronization comments for future maintainers.
|
||
|
||
- bpo-16893: Replace help.txt with help.html for Idle doc display. The new
|
||
idlelib/help.html is rstripped Doc/build/html/library/idle.html. It looks
|
||
better than help.txt and will better document Idle as released. The
|
||
tkinter html viewer that works for this file was written by Mark Roseman.
|
||
The now unused EditorWindow.HelpDialog class and helt.txt file are
|
||
deprecated.
|
||
|
||
- bpo-24199: Deprecate unused idlelib.idlever with possible removal in 3.6.
|
||
|
||
- bpo-24790: Remove extraneous code (which also create 2 & 3 conflicts).
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-22558: Add remaining doc links to source code for Python-coded
|
||
modules. Patch by Yoni Lavi.
|
||
|
||
- bpo-12067: Rewrite Comparisons section in the Expressions chapter of the
|
||
language reference. Some of the details of comparing mixed types were
|
||
incorrect or ambiguous. NotImplemented is only relevant at a lower level
|
||
than the Expressions chapter. Added details of comparing range() objects,
|
||
and default behaviour and consistency suggestions for user-defined
|
||
classes. Patch from Andy Maier.
|
||
|
||
- bpo-24952: Clarify the default size argument of stack_size() in the
|
||
"threading" and "_thread" modules. Patch from Mattip.
|
||
|
||
- bpo-23725: Overhaul tempfile docs. Note deprecated status of mktemp. Patch
|
||
from Zbigniew Jędrzejewski-Szmek.
|
||
|
||
- bpo-24808: Update the types of some PyTypeObject fields. Patch by Joseph
|
||
Weston.
|
||
|
||
- bpo-22812: Fix unittest discovery examples. Patch from Pam McA'Nulty.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-25449: Added tests for OrderedDict subclasses.
|
||
|
||
- bpo-25099: Make test_compileall not fail when an entry on sys.path cannot
|
||
be written to (commonly seen in administrative installs on Windows).
|
||
|
||
- bpo-23919: Prevents assert dialogs appearing in the test suite.
|
||
|
||
- ``PCbuild\rt.bat`` now accepts an unlimited number of arguments to pass
|
||
along to regrtest.py. Previously there was a limit of 9.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-24915: Add LLVM support for PGO builds and use the test suite to
|
||
generate the profile data. Initial patch by Alecsandru Patrascu of Intel.
|
||
|
||
- bpo-24910: Windows MSIs now have unique display names.
|
||
|
||
- bpo-24986: It is now possible to build Python on Windows without errors
|
||
when external libraries are not available.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-25450: Updates shortcuts to start Python in installation directory.
|
||
|
||
- bpo-25164: Changes default all-users install directory to match per-user
|
||
directory.
|
||
|
||
- bpo-25143: Improves installer error messages for unsupported platforms.
|
||
|
||
- bpo-25163: Display correct directory in installer when using non-default
|
||
settings.
|
||
|
||
- bpo-25361: Disables use of SSE2 instructions in Windows 32-bit build
|
||
|
||
- bpo-25089: Adds logging to installer for case where launcher is not
|
||
selected on upgrade.
|
||
|
||
- bpo-25165: Windows uninstallation should not remove launcher if other
|
||
versions remain
|
||
|
||
- bpo-25112: py.exe launcher is missing icons
|
||
|
||
- bpo-25102: Windows installer does not precompile for -O or -OO.
|
||
|
||
- bpo-25081: Makes Back button in installer go back to upgrade page when
|
||
upgrading.
|
||
|
||
- bpo-25091: Increases font size of the installer.
|
||
|
||
- bpo-25126: Clarifies that the non-web installer will download some
|
||
components.
|
||
|
||
- bpo-25213: Restores requestedExecutionLevel to manifest to disable UAC
|
||
virtualization.
|
||
|
||
- bpo-25022: Removed very outdated PC/example_nt/ directory.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-25440: Fix output of python-config --extension-suffix.
|
||
|
||
|
||
What's New in Python 3.5.0 final?
|
||
=================================
|
||
|
||
*Release date: 2015-09-13*
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-25071: Windows installer should not require TargetDir parameter when
|
||
installing quietly.
|
||
|
||
|
||
What's New in Python 3.5.0 release candidate 4?
|
||
===============================================
|
||
|
||
*Release date: 2015-09-09*
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-25029: Fixes MemoryError in test_strptime.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-25027: Reverts partial-static build options and adds vcruntime140.dll
|
||
to Windows installation.
|
||
|
||
|
||
What's New in Python 3.5.0 release candidate 3?
|
||
===============================================
|
||
|
||
*Release date: 2015-09-07*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-24305: Prevent import subsystem stack frames from being counted by the
|
||
warnings.warn(stacklevel=) parameter.
|
||
|
||
- bpo-24912: Prevent __class__ assignment to immutable built-in objects.
|
||
|
||
- bpo-24975: Fix AST compilation for :pep:`448` syntax.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-24917: time_strftime() buffer over-read.
|
||
|
||
- bpo-24748: To resolve a compatibility problem found with py2exe and
|
||
pywin32, imp.load_dynamic() once again ignores previously loaded modules
|
||
to support Python modules replacing themselves with extension modules.
|
||
Patch by Petr Viktorin.
|
||
|
||
- bpo-24635: Fixed a bug in typing.py where isinstance([], typing.Iterable)
|
||
would return True once, then False on subsequent calls.
|
||
|
||
- bpo-24989: Fixed buffer overread in BytesIO.readline() if a position is
|
||
set beyond size. Based on patch by John Leitch.
|
||
|
||
- bpo-24913: Fix overrun error in deque.index(). Found by John Leitch and
|
||
Bryce Darling.
|
||
|
||
|
||
What's New in Python 3.5.0 release candidate 2?
|
||
===============================================
|
||
|
||
*Release date: 2015-08-25*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-24769: Interpreter now starts properly when dynamic loading is
|
||
disabled. Patch by Petr Viktorin.
|
||
|
||
- bpo-21167: NAN operations are now handled correctly when python is
|
||
compiled with ICC even if -fp-model strict is not specified.
|
||
|
||
- bpo-24492: A "package" lacking a __name__ attribute when trying to perform
|
||
a ``from .. import ...`` statement will trigger an ImportError instead of
|
||
an AttributeError.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-24847: Removes vcruntime140.dll dependency from Tcl/Tk.
|
||
|
||
- bpo-24839: platform._syscmd_ver raises DeprecationWarning
|
||
|
||
- bpo-24867: Fix Task.get_stack() for 'async def' coroutines
|
||
|
||
|
||
What's New in Python 3.5.0 release candidate 1?
|
||
===============================================
|
||
|
||
*Release date: 2015-08-09*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-24667: Resize odict in all cases that the underlying dict resizes.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-24824: Signatures of codecs.encode() and codecs.decode() now are
|
||
compatible with pydoc.
|
||
|
||
- bpo-24634: Importing uuid should not try to load libc on Windows
|
||
|
||
- bpo-24798: _msvccompiler.py doesn't properly support manifests
|
||
|
||
- bpo-4395: Better testing and documentation of binary operators. Patch by
|
||
Martin Panter.
|
||
|
||
- bpo-23973: Update typing.py from GitHub repo.
|
||
|
||
- bpo-23004: mock_open() now reads binary data correctly when the type of
|
||
read_data is bytes. Initial patch by Aaron Hill.
|
||
|
||
- bpo-23888: Handle fractional time in cookie expiry. Patch by ssh.
|
||
|
||
- bpo-23652: Make it possible to compile the select module against the libc
|
||
headers from the Linux Standard Base, which do not include some EPOLL
|
||
macros. Patch by Matt Frank.
|
||
|
||
- bpo-22932: Fix timezones in email.utils.formatdate. Patch from Dmitry
|
||
Shachnev.
|
||
|
||
- bpo-23779: imaplib raises TypeError if authenticator tries to abort. Patch
|
||
from Craig Holmquist.
|
||
|
||
- bpo-23319: Fix ctypes.BigEndianStructure, swap correctly bytes. Patch
|
||
written by Matthieu Gautier.
|
||
|
||
- bpo-23254: Document how to close the TCPServer listening socket. Patch
|
||
from Martin Panter.
|
||
|
||
- bpo-19450: Update Windows and OS X installer builds to use SQLite 3.8.11.
|
||
|
||
- bpo-17527: Add PATCH to wsgiref.validator. Patch from Luca Sbardella.
|
||
|
||
- bpo-24791: Fix grammar regression for call syntax: 'g(\*a or b)'.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-23672: Allow Idle to edit and run files with astral chars in name.
|
||
Patch by Mohd Sanad Zaki Rizvi.
|
||
|
||
- bpo-24745: Idle editor default font. Switch from Courier to
|
||
platform-sensitive TkFixedFont. This should not affect current customized
|
||
font selections. If there is a problem, edit
|
||
$HOME/.idlerc/config-main.cfg and remove 'fontxxx' entries from [Editor
|
||
Window]. Patch by Mark Roseman.
|
||
|
||
- bpo-21192: Idle editor. When a file is run, put its name in the restart
|
||
bar. Do not print false prompts. Original patch by Adnan Umer.
|
||
|
||
- bpo-13884: Idle menus. Remove tearoff lines. Patch by Roger Serwy.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-24129: Clarify the reference documentation for name resolution. This
|
||
includes removing the assumption that readers will be familiar with the
|
||
name resolution scheme Python used prior to the introduction of lexical
|
||
scoping for function namespaces. Patch by Ivan Levkivskyi.
|
||
|
||
- bpo-20769: Improve reload() docs. Patch by Dorian Pula.
|
||
|
||
- bpo-23589: Remove duplicate sentence from the FAQ. Patch by Yongzhi Pan.
|
||
|
||
- bpo-24729: Correct IO tutorial to match implementation regarding encoding
|
||
parameter to open function.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-24751: When running regrtest with the ``-w`` command line option, a
|
||
test run is no longer marked as a failure if all tests succeed when
|
||
re-run.
|
||
|
||
|
||
What's New in Python 3.5.0 beta 4?
|
||
==================================
|
||
|
||
*Release date: 2015-07-26*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-23573: Restored optimization of bytes.rfind() and bytearray.rfind()
|
||
for single-byte argument on Linux.
|
||
|
||
- bpo-24569: Make :pep:`448` dictionary evaluation more consistent.
|
||
|
||
- bpo-24583: Fix crash when set is mutated while being updated.
|
||
|
||
- bpo-24407: Fix crash when dict is mutated while being updated.
|
||
|
||
- bpo-24619: New approach for tokenizing async/await. As a consequence, it
|
||
is now possible to have one-line 'async def foo(): await ..' functions.
|
||
|
||
- bpo-24687: Plug refleak on SyntaxError in function parameters annotations.
|
||
|
||
- bpo-15944: memoryview: Allow arbitrary formats when casting to bytes.
|
||
Patch by Martin Panter.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-23441: rcompleter now prints a tab character instead of displaying
|
||
possible completions for an empty word. Initial patch by Martin Sekera.
|
||
|
||
- bpo-24683: Fixed crashes in _json functions called with arguments of
|
||
inappropriate type.
|
||
|
||
- bpo-21697: shutil.copytree() now correctly handles symbolic links that
|
||
point to directories. Patch by Eduardo Seabra and Thomas Kluyver.
|
||
|
||
- bpo-14373: Fixed segmentation fault when gc.collect() is called during
|
||
constructing lru_cache (C implementation).
|
||
|
||
- bpo-24695: Fix a regression in traceback.print_exception(). If
|
||
exc_traceback is None we shouldn't print a traceback header like described
|
||
in the documentation.
|
||
|
||
- bpo-24620: Random.setstate() now validates the value of state last
|
||
element.
|
||
|
||
- bpo-22485: Fixed an issue that caused `inspect.getsource` to return
|
||
incorrect results on nested functions.
|
||
|
||
- bpo-22153: Improve unittest docs. Patch from Martin Panter and evilzero.
|
||
|
||
- bpo-24580: Symbolic group references to open group in re patterns now are
|
||
explicitly forbidden as well as numeric group references.
|
||
|
||
- bpo-24206: Fixed __eq__ and __ne__ methods of inspect classes.
|
||
|
||
- bpo-24631: Fixed regression in the timeit module with multiline setup.
|
||
|
||
- bpo-18622: unittest.mock.mock_open().reset_mock would recurse infinitely.
|
||
Patch from Nicola Palumbo and Laurent De Buyst.
|
||
|
||
- bpo-23661: unittest.mock side_effects can now be exceptions again. This
|
||
was a regression vs Python 3.4. Patch from Ignacio Rossi
|
||
|
||
- bpo-24608: chunk.Chunk.read() now always returns bytes, not str.
|
||
|
||
- bpo-18684: Fixed reading out of the buffer in the re module.
|
||
|
||
- bpo-24259: tarfile now raises a ReadError if an archive is truncated
|
||
inside a data segment.
|
||
|
||
- bpo-15014: SMTP.auth() and SMTP.login() now support RFC 4954's optional
|
||
initial-response argument to the SMTP AUTH command.
|
||
|
||
- bpo-24669: Fix inspect.getsource() for 'async def' functions. Patch by Kai
|
||
Groner.
|
||
|
||
- bpo-24688: ast.get_docstring() for 'async def' functions.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-24603: Update Windows builds and OS X 10.5 installer to use OpenSSL
|
||
1.0.2d.
|
||
|
||
|
||
What's New in Python 3.5.0 beta 3?
|
||
==================================
|
||
|
||
*Release date: 2015-07-05*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-24467: Fixed possible buffer over-read in bytearray. The bytearray
|
||
object now always allocates place for trailing null byte and it's buffer
|
||
now is always null-terminated.
|
||
|
||
- Upgrade to Unicode 8.0.0.
|
||
|
||
- bpo-24345: Add Py_tp_finalize slot for the stable ABI.
|
||
|
||
- bpo-24400: Introduce a distinct type for :pep:`492` coroutines; add
|
||
types.CoroutineType, inspect.getcoroutinestate,
|
||
inspect.getcoroutinelocals; coroutines no longer use CO_GENERATOR flag;
|
||
sys.set_coroutine_wrapper works only for 'async def' coroutines;
|
||
inspect.iscoroutine no longer uses collections.abc.Coroutine, it's
|
||
intended to test for pure 'async def' coroutines only; add new opcode:
|
||
GET_YIELD_FROM_ITER; fix generators wrapper used in types.coroutine to be
|
||
instance of collections.abc.Generator; collections.abc.Awaitable and
|
||
collections.abc.Coroutine can no longer be used to detect generator-based
|
||
coroutines--use inspect.isawaitable instead.
|
||
|
||
- bpo-24450: Add gi_yieldfrom to generators and cr_await to coroutines.
|
||
Contributed by Benno Leslie and Yury Selivanov.
|
||
|
||
- bpo-19235: Add new RecursionError exception. Patch by Georg Brandl.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-21750: mock_open.read_data can now be read from each instance, as it
|
||
could in Python 3.3.
|
||
|
||
- bpo-24552: Fix use after free in an error case of the _pickle module.
|
||
|
||
- bpo-24514: tarfile now tolerates number fields consisting of only
|
||
whitespace.
|
||
|
||
- bpo-19176: Fixed doctype() related bugs in C implementation of
|
||
ElementTree. A deprecation warning no longer issued by XMLParser subclass
|
||
with default doctype() method. Direct call of doctype() now issues a
|
||
warning. Parser's doctype() now is not called if target's doctype() is
|
||
called. Based on patch by Martin Panter.
|
||
|
||
- bpo-20387: Restore semantic round-trip correctness in tokenize/untokenize
|
||
for tab-indented blocks.
|
||
|
||
- bpo-24456: Fixed possible buffer over-read in adpcm2lin() and lin2adpcm()
|
||
functions of the audioop module.
|
||
|
||
- bpo-24336: The contextmanager decorator now works with functions with
|
||
keyword arguments called "func" and "self". Patch by Martin Panter.
|
||
|
||
- bpo-24522: Fix possible integer overflow in json accelerator module.
|
||
|
||
- bpo-24489: ensure a previously set C errno doesn't disturb cmath.polar().
|
||
|
||
- bpo-24408: Fixed AttributeError in measure() and metrics() methods of
|
||
tkinter.Font.
|
||
|
||
- bpo-14373: C implementation of functools.lru_cache() now can be used with
|
||
methods.
|
||
|
||
- bpo-24347: Set KeyError if PyDict_GetItemWithError returns NULL.
|
||
|
||
- bpo-24348: Drop superfluous incref/decref.
|
||
|
||
- bpo-24359: Check for changed OrderedDict size during iteration.
|
||
|
||
- bpo-24368: Support keyword arguments in OrderedDict methods.
|
||
|
||
- bpo-24362: Simplify the C OrderedDict fast nodes resize logic.
|
||
|
||
- bpo-24377: Fix a ref leak in OrderedDict.__repr__.
|
||
|
||
- bpo-24369: Defend against key-changes during iteration.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-24373: _testmultiphase and xxlimited now use tp_traverse and
|
||
tp_finalize to avoid reference leaks encountered when combining tp_dealloc
|
||
with PyType_FromSpec (see issue #16690 for details)
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-24458: Update documentation to cover multi-phase initialization for
|
||
extension modules (PEP 489). Patch by Petr Viktorin.
|
||
|
||
- bpo-24351: Clarify what is meant by "identifier" in the context of
|
||
string.Template instances.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-24432: Update Windows builds and OS X 10.5 installer to use OpenSSL
|
||
1.0.2c.
|
||
|
||
|
||
What's New in Python 3.5.0 beta 2?
|
||
==================================
|
||
|
||
*Release date: 2015-05-31*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-24284: The startswith and endswith methods of the str class no longer
|
||
return True when finding the empty string and the indexes are completely
|
||
out of range.
|
||
|
||
- bpo-24115: Update uses of PyObject_IsTrue(), PyObject_Not(),
|
||
PyObject_IsInstance(), PyObject_RichCompareBool() and _PyDict_Contains()
|
||
to check for and handle errors correctly.
|
||
|
||
- bpo-24328: Fix importing one character extension modules.
|
||
|
||
- bpo-11205: In dictionary displays, evaluate the key before the value.
|
||
|
||
- bpo-24285: Fixed regression that prevented importing extension modules
|
||
from inside packages. Patch by Petr Viktorin.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-23247: Fix a crash in the StreamWriter.reset() of CJK codecs.
|
||
|
||
- bpo-24270: Add math.isclose() and cmath.isclose() functions as per
|
||
:pep:`485`. Contributed by Chris Barker and Tal Einat.
|
||
|
||
- bpo-5633: Fixed timeit when the statement is a string and the setup is
|
||
not.
|
||
|
||
- bpo-24326: Fixed audioop.ratecv() with non-default weightB argument.
|
||
Original patch by David Moore.
|
||
|
||
- bpo-16991: Add a C implementation of OrderedDict.
|
||
|
||
- bpo-23934: Fix inspect.signature to fail correctly for builtin types
|
||
lacking signature information. Initial patch by James Powell.
|
||
|
||
|
||
What's New in Python 3.5.0 beta 1?
|
||
==================================
|
||
|
||
*Release date: 2015-05-24*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-24276: Fixed optimization of property descriptor getter.
|
||
|
||
- bpo-24268: PEP 489: Multi-phase extension module initialization. Patch by
|
||
Petr Viktorin.
|
||
|
||
- bpo-23955: Add pyvenv.cfg option to suppress registry/environment lookup
|
||
for generating sys.path on Windows.
|
||
|
||
- bpo-24257: Fixed system error in the comparison of faked
|
||
types.SimpleNamespace.
|
||
|
||
- bpo-22939: Fixed integer overflow in iterator object. Patch by Clement
|
||
Rouault.
|
||
|
||
- bpo-23985: Fix a possible buffer overrun when deleting a slice from the
|
||
front of a bytearray and then appending some other bytes data.
|
||
|
||
- bpo-24102: Fixed exception type checking in standard error handlers.
|
||
|
||
- bpo-15027: The UTF-32 encoder is now 3x to 7x faster.
|
||
|
||
- bpo-23290: Optimize set_merge() for cases where the target is empty.
|
||
(Contributed by Serhiy Storchaka.)
|
||
|
||
- bpo-2292: PEP 448: Additional Unpacking Generalizations.
|
||
|
||
- bpo-24096: Make warnings.warn_explicit more robust against mutation of the
|
||
warnings.filters list.
|
||
|
||
- bpo-23996: Avoid a crash when a delegated generator raises an unnormalized
|
||
StopIteration exception. Patch by Stefan Behnel.
|
||
|
||
- bpo-23910: Optimize property() getter calls. Patch by Joe Jevnik.
|
||
|
||
- bpo-23911: Move path-based importlib bootstrap code to a separate frozen
|
||
module.
|
||
|
||
- bpo-24192: Fix namespace package imports.
|
||
|
||
- bpo-24022: Fix tokenizer crash when processing undecodable source code.
|
||
|
||
- bpo-9951: Added a hex() method to bytes, bytearray, and memoryview.
|
||
|
||
- bpo-22906: PEP 479: Change StopIteration handling inside generators.
|
||
|
||
- bpo-24017: PEP 492: Coroutines with async and await syntax.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-14373: Added C implementation of functools.lru_cache(). Based on
|
||
patches by Matt Joiner and Alexey Kachayev.
|
||
|
||
- bpo-24230: The tempfile module now accepts bytes for prefix, suffix and
|
||
dir parameters and returns bytes in such situations (matching the os
|
||
module APIs).
|
||
|
||
- bpo-22189: collections.UserString now supports __getnewargs__(),
|
||
__rmod__(), casefold(), format_map(), isprintable(), and maketrans().
|
||
Patch by Joe Jevnik.
|
||
|
||
- bpo-24244: Prevents termination when an invalid format string is
|
||
encountered on Windows in strftime.
|
||
|
||
- bpo-23973: PEP 484: Add the typing module.
|
||
|
||
- bpo-23086: The collections.abc.Sequence() abstract base class added
|
||
*start* and *stop* parameters to the index() mixin. Patch by Devin
|
||
Jeanpierre.
|
||
|
||
- bpo-20035: Replaced the ``tkinter._fix`` module used for setting up the
|
||
Tcl/Tk environment on Windows with a private function in the ``_tkinter``
|
||
module that makes no permanent changes to the environment.
|
||
|
||
- bpo-24257: Fixed segmentation fault in sqlite3.Row constructor with faked
|
||
cursor type.
|
||
|
||
- bpo-15836: assertRaises(), assertRaisesRegex(), assertWarns() and
|
||
assertWarnsRegex() assertments now check the type of the first argument to
|
||
prevent possible user error. Based on patch by Daniel Wagner-Hall.
|
||
|
||
- bpo-9858: Add missing method stubs to _io.RawIOBase. Patch by Laura
|
||
Rupprecht.
|
||
|
||
- bpo-22955: attrgetter, itemgetter and methodcaller objects in the operator
|
||
module now support pickling. Added readable and evaluable repr for these
|
||
objects. Based on patch by Josh Rosenberg.
|
||
|
||
- bpo-22107: tempfile.gettempdir() and tempfile.mkdtemp() now try again when
|
||
a directory with the chosen name already exists on Windows as well as on
|
||
Unix. tempfile.mkstemp() now fails early if parent directory is not valid
|
||
(not exists or is a file) on Windows.
|
||
|
||
- bpo-23780: Improved error message in os.path.join() with single argument.
|
||
|
||
- bpo-6598: Increased time precision and random number range in
|
||
email.utils.make_msgid() to strengthen the uniqueness of the message ID.
|
||
|
||
- bpo-24091: Fixed various crashes in corner cases in C implementation of
|
||
ElementTree.
|
||
|
||
- bpo-21931: msilib.FCICreate() now raises TypeError in the case of a bad
|
||
argument instead of a ValueError with a bogus FCI error number. Patch by
|
||
Jeffrey Armstrong.
|
||
|
||
- bpo-13866: *quote_via* argument added to urllib.parse.urlencode.
|
||
|
||
- bpo-20098: New mangle_from policy option for email, default True for
|
||
compat32, but False for all other policies.
|
||
|
||
- bpo-24211: The email library now supports RFC 6532: it can generate
|
||
headers using utf-8 instead of encoded words.
|
||
|
||
- bpo-16314: Added support for the LZMA compression in distutils.
|
||
|
||
- bpo-21804: poplib now supports RFC 6856 (UTF8).
|
||
|
||
- bpo-18682: Optimized pprint functions for builtin scalar types.
|
||
|
||
- bpo-22027: smtplib now supports RFC 6531 (SMTPUTF8).
|
||
|
||
- bpo-23488: Random generator objects now consume 2x less memory on 64-bit.
|
||
|
||
- bpo-1322: platform.dist() and platform.linux_distribution() functions are
|
||
now deprecated. Initial patch by Vajrasky Kok.
|
||
|
||
- bpo-22486: Added the math.gcd() function. The fractions.gcd() function
|
||
now is deprecated. Based on patch by Mark Dickinson.
|
||
|
||
- bpo-24064: Property() docstrings are now writeable. (Patch by Berker
|
||
Peksag.)
|
||
|
||
- bpo-22681: Added support for the koi8_t encoding.
|
||
|
||
- bpo-22682: Added support for the kz1048 encoding.
|
||
|
||
- bpo-23796: peek and read1 methods of BufferedReader now raise ValueError
|
||
if they called on a closed object. Patch by John Hergenroeder.
|
||
|
||
- bpo-21795: smtpd now supports the 8BITMIME extension whenever the new
|
||
*decode_data* constructor argument is set to False.
|
||
|
||
- bpo-24155: optimize heapq.heapify() for better cache performance when
|
||
heapifying large lists.
|
||
|
||
- bpo-21800: imaplib now supports RFC 5161 (enable), RFC 6855
|
||
(utf8/internationalized email) and automatically encodes non-ASCII
|
||
usernames and passwords to UTF8.
|
||
|
||
- bpo-20274: When calling a _sqlite.Connection, it now complains if passed
|
||
any keyword arguments. Previously it silently ignored them.
|
||
|
||
- bpo-20274: Remove ignored and erroneous "kwargs" parameters from three
|
||
METH_VARARGS methods on _sqlite.Connection.
|
||
|
||
- bpo-24134: assertRaises(), assertRaisesRegex(), assertWarns() and
|
||
assertWarnsRegex() checks now emits a deprecation warning when callable is
|
||
None or keyword arguments except msg is passed in the context manager
|
||
mode.
|
||
|
||
- bpo-24018: Add a collections.abc.Generator abstract base class.
|
||
Contributed by Stefan Behnel.
|
||
|
||
- bpo-23880: Tkinter's getint() and getdouble() now support Tcl_Obj.
|
||
Tkinter's getdouble() now supports any numbers (in particular int).
|
||
|
||
- bpo-22619: Added negative limit support in the traceback module. Based on
|
||
patch by Dmitry Kazakov.
|
||
|
||
- bpo-24094: Fix possible crash in json.encode with poorly behaved dict
|
||
subclasses.
|
||
|
||
- bpo-9246: On POSIX, os.getcwd() now supports paths longer than 1025 bytes.
|
||
Patch written by William Orr.
|
||
|
||
- bpo-17445: add difflib.diff_bytes() to support comparison of byte strings
|
||
(fixes a regression from Python 2).
|
||
|
||
- bpo-23917: Fall back to sequential compilation when ProcessPoolExecutor
|
||
doesn't exist. Patch by Claudiu Popa.
|
||
|
||
- bpo-23008: Fixed resolving attributes with boolean value is False in
|
||
pydoc.
|
||
|
||
- Fix asyncio issue 235: LifoQueue and PriorityQueue's put didn't increment
|
||
unfinished tasks (this bug was introduced when JoinableQueue was merged
|
||
with Queue).
|
||
|
||
- bpo-23908: os functions now reject paths with embedded null character on
|
||
Windows instead of silently truncating them.
|
||
|
||
- bpo-23728: binascii.crc_hqx() could return an integer outside of the range
|
||
0-0xffff for empty data.
|
||
|
||
- bpo-23887: urllib.error.HTTPError now has a proper repr() representation.
|
||
Patch by Berker Peksag.
|
||
|
||
- asyncio: New event loop APIs: set_task_factory() and get_task_factory().
|
||
|
||
- asyncio: async() function is deprecated in favour of ensure_future().
|
||
|
||
- bpo-24178: asyncio.Lock, Condition, Semaphore, and BoundedSemaphore
|
||
support new 'async with' syntax. Contributed by Yury Selivanov.
|
||
|
||
- bpo-24179: Support 'async for' for asyncio.StreamReader. Contributed by
|
||
Yury Selivanov.
|
||
|
||
- bpo-24184: Add AsyncIterator and AsyncIterable ABCs to collections.abc.
|
||
Contributed by Yury Selivanov.
|
||
|
||
- bpo-22547: Implement informative __repr__ for inspect.BoundArguments.
|
||
Contributed by Yury Selivanov.
|
||
|
||
- bpo-24190: Implement inspect.BoundArgument.apply_defaults() method.
|
||
Contributed by Yury Selivanov.
|
||
|
||
- bpo-20691: Add 'follow_wrapped' argument to
|
||
inspect.Signature.from_callable() and inspect.signature(). Contributed by
|
||
Yury Selivanov.
|
||
|
||
- bpo-24248: Deprecate inspect.Signature.from_function() and
|
||
inspect.Signature.from_builtin().
|
||
|
||
- bpo-23898: Fix inspect.classify_class_attrs() to support attributes with
|
||
overloaded __eq__ and __bool__. Patch by Mike Bayer.
|
||
|
||
- bpo-24298: Fix inspect.signature() to correctly unwrap wrappers around
|
||
bound methods.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-23184: remove unused names and imports in idlelib. Initial patch by Al
|
||
Sweigart.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-21520: test_zipfile no longer fails if the word 'bad' appears anywhere
|
||
in the name of the current directory.
|
||
|
||
- bpo-9517: Move script_helper into the support package. Patch by Christie
|
||
Wilson.
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-22155: Add File Handlers subsection with createfilehandler to tkinter
|
||
doc. Remove obsolete example from FAQ. Patch by Martin Panter.
|
||
|
||
- bpo-24029: Document the name binding behavior for submodule imports.
|
||
|
||
- bpo-24077: Fix typo in man page for -I command option: -s, not -S
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-24000: Improved Argument Clinic's mapping of converters to legacy
|
||
"format units". Updated the documentation to match.
|
||
|
||
- bpo-24001: Argument Clinic converters now use accept={type} instead of
|
||
types={'type'} to specify the types the converter accepts.
|
||
|
||
- bpo-23330: h2py now supports arbitrary filenames in #include.
|
||
|
||
- bpo-24031: make patchcheck now supports git checkouts, too.
|
||
|
||
|
||
What's New in Python 3.5.0 alpha 4?
|
||
===================================
|
||
|
||
*Release date: 2015-04-19*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-22980: Under Linux, GNU/KFreeBSD and the Hurd, C extensions now
|
||
include the architecture triplet in the extension name, to make it easy to
|
||
test builds for different ABIs in the same working tree. Under OS X, the
|
||
extension name now includes :pep:`3149`-style information.
|
||
|
||
- bpo-22631: Added Linux-specific socket constant CAN_RAW_FD_FRAMES. Patch
|
||
courtesy of Joe Jevnik.
|
||
|
||
- bpo-23731: Implement :pep:`488`: removal of .pyo files.
|
||
|
||
- bpo-23726: Don't enable GC for user subclasses of non-GC types that don't
|
||
add any new fields. Patch by Eugene Toder.
|
||
|
||
- bpo-23309: Avoid a deadlock at shutdown if a daemon thread is aborted
|
||
while it is holding a lock to a buffered I/O object, and the main thread
|
||
tries to use the same I/O object (typically stdout or stderr). A fatal
|
||
error is emitted instead.
|
||
|
||
- bpo-22977: Fixed formatting Windows error messages on Wine. Patch by
|
||
Martin Panter.
|
||
|
||
- bpo-23466: %c, %o, %x, and %X in bytes formatting now raise TypeError on
|
||
non-integer input.
|
||
|
||
- bpo-24044: Fix possible null pointer dereference in list.sort in out of
|
||
memory conditions.
|
||
|
||
- bpo-21354: PyCFunction_New function is exposed by python DLL again.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-23840: tokenize.open() now closes the temporary binary file on error
|
||
to fix a resource warning.
|
||
|
||
- bpo-16914: new debuglevel 2 in smtplib adds timestamps to debug output.
|
||
|
||
- bpo-7159: urllib.request now supports sending auth credentials
|
||
automatically after the first 401. This enhancement is a superset of the
|
||
enhancement from issue #19494 and supersedes that change.
|
||
|
||
- bpo-23703: Fix a regression in urljoin() introduced in 901e4e52b20a. Patch
|
||
by Demian Brecht.
|
||
|
||
- bpo-4254: Adds _curses.update_lines_cols(). Patch by Arnon Yaari
|
||
|
||
- bpo-19933: Provide default argument for ndigits in round. Patch by
|
||
Vajrasky Kok.
|
||
|
||
- bpo-23193: Add a numeric_owner parameter to tarfile.TarFile.extract and
|
||
tarfile.TarFile.extractall. Patch by Michael Vogt and Eric Smith.
|
||
|
||
- bpo-23342: Add a subprocess.run() function than returns a CalledProcess
|
||
instance for a more consistent API than the existing call* functions.
|
||
|
||
- bpo-21217: inspect.getsourcelines() now tries to compute the start and end
|
||
lines from the code object, fixing an issue when a lambda function is used
|
||
as decorator argument. Patch by Thomas Ballinger and Allison Kaptur.
|
||
|
||
- bpo-24521: Fix possible integer overflows in the pickle module.
|
||
|
||
- bpo-22931: Allow '[' and ']' in cookie values.
|
||
|
||
- The keywords attribute of functools.partial is now always a dictionary.
|
||
|
||
- bpo-23811: Add missing newline to the PyCompileError error message. Patch
|
||
by Alex Shkop.
|
||
|
||
- bpo-21116: Avoid blowing memory when allocating a multiprocessing shared
|
||
array that's larger than 50% of the available RAM. Patch by Médéric
|
||
Boquien.
|
||
|
||
- bpo-22982: Improve BOM handling when seeking to multiple positions of a
|
||
writable text file.
|
||
|
||
- bpo-23464: Removed deprecated asyncio JoinableQueue.
|
||
|
||
- bpo-23529: Limit the size of decompressed data when reading from GzipFile,
|
||
BZ2File or LZMAFile. This defeats denial of service attacks using
|
||
compressed bombs (i.e. compressed payloads which decompress to a huge
|
||
size). Patch by Martin Panter and Nikolaus Rath.
|
||
|
||
- bpo-21859: Added Python implementation of io.FileIO.
|
||
|
||
- bpo-23865: close() methods in multiple modules now are idempotent and more
|
||
robust at shutdown. If they need to release multiple resources, all are
|
||
released even if errors occur.
|
||
|
||
- bpo-23400: Raise same exception on both Python 2 and 3 if sem_open is not
|
||
available. Patch by Davin Potts.
|
||
|
||
- bpo-10838: The subprocess now module includes SubprocessError and
|
||
TimeoutError in its list of exported names for the users wild enough to
|
||
use ``from subprocess import *``.
|
||
|
||
- bpo-23411: Added DefragResult, ParseResult, SplitResult,
|
||
DefragResultBytes, ParseResultBytes, and SplitResultBytes to
|
||
urllib.parse.__all__. Patch by Martin Panter.
|
||
|
||
- bpo-23881: urllib.request.ftpwrapper constructor now closes the socket if
|
||
the FTP connection failed to fix a ResourceWarning.
|
||
|
||
- bpo-23853: :meth:`socket.socket.sendall` does no more reset the socket
|
||
timeout each time data is sent successfully. The socket timeout is now the
|
||
maximum total duration to send all data.
|
||
|
||
- bpo-22721: An order of multiline pprint output of set or dict containing
|
||
orderable and non-orderable elements no longer depends on iteration order
|
||
of set or dict.
|
||
|
||
- bpo-15133: _tkinter.tkapp.getboolean() now supports Tcl_Obj and always
|
||
returns bool. tkinter.BooleanVar now validates input values (accepted
|
||
bool, int, str, and Tcl_Obj). tkinter.BooleanVar.get() now always returns
|
||
bool.
|
||
|
||
- bpo-10590: xml.sax.parseString() now supports string argument.
|
||
|
||
- bpo-23338: Fixed formatting ctypes error messages on Cygwin. Patch by
|
||
Makoto Kato.
|
||
|
||
- bpo-15582: inspect.getdoc() now follows inheritance chains.
|
||
|
||
- bpo-2175: SAX parsers now support a character stream of InputSource
|
||
object.
|
||
|
||
- bpo-16840: Tkinter now supports 64-bit integers added in Tcl 8.4 and
|
||
arbitrary precision integers added in Tcl 8.5.
|
||
|
||
- bpo-23834: Fix socket.sendto(), use the C Py_ssize_t type to store the
|
||
result of sendto() instead of the C int type.
|
||
|
||
- bpo-23618: :meth:`socket.socket.connect` now waits until the connection
|
||
completes instead of raising :exc:`InterruptedError` if the connection is
|
||
interrupted by signals, signal handlers don't raise an exception and the
|
||
socket is blocking or has a timeout. :meth:`socket.socket.connect` still
|
||
raise :exc:`InterruptedError` for non-blocking sockets.
|
||
|
||
- bpo-21526: Tkinter now supports new boolean type in Tcl 8.5.
|
||
|
||
- bpo-23836: Fix the faulthandler module to handle reentrant calls to its
|
||
signal handlers.
|
||
|
||
- bpo-23838: linecache now clears the cache and returns an empty result on
|
||
MemoryError.
|
||
|
||
- bpo-10395: Added os.path.commonpath(). Implemented in posixpath and
|
||
ntpath. Based on patch by Rafik Draoui.
|
||
|
||
- bpo-23611: Serializing more "lookupable" objects (such as unbound methods
|
||
or nested classes) now are supported with pickle protocols < 4.
|
||
|
||
- bpo-13583: sqlite3.Row now supports slice indexing.
|
||
|
||
- bpo-18473: Fixed 2to3 and 3to2 compatible pickle mappings. Fixed
|
||
ambiguous reverse mappings. Added many new mappings. Import mapping is
|
||
no longer applied to modules already mapped with full name mapping.
|
||
|
||
- bpo-23485: select.select() is now retried automatically with the
|
||
recomputed timeout when interrupted by a signal, except if the signal
|
||
handler raises an exception. This change is part of the :pep:`475`.
|
||
|
||
- bpo-23752: When built from an existing file descriptor, io.FileIO() now
|
||
only calls fstat() once. Before fstat() was called twice, which was not
|
||
necessary.
|
||
|
||
- bpo-23704: collections.deque() objects now support __add__, __mul__, and
|
||
__imul__().
|
||
|
||
- bpo-23171: csv.Writer.writerow() now supports arbitrary iterables.
|
||
|
||
- bpo-23745: The new email header parser now handles duplicate MIME
|
||
parameter names without error, similar to how get_param behaves.
|
||
|
||
- bpo-22117: Fix os.utime(), it now rounds the timestamp towards minus
|
||
infinity (-inf) instead of rounding towards zero.
|
||
|
||
- bpo-23310: Fix MagicMock's initializer to work with __methods__, just like
|
||
configure_mock(). Patch by Kasia Jachim.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-23817: FreeBSD now uses "1.0" in the SOVERSION as other operating
|
||
systems, instead of just "1".
|
||
|
||
- bpo-23501: Argument Clinic now generates code into separate files by
|
||
default.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-23799: Added test.support.start_threads() for running and cleaning up
|
||
multiple threads.
|
||
|
||
- bpo-22390: test.regrtest now emits a warning if temporary files or
|
||
directories are left after running a test.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-18128: pygettext now uses standard +NNNN format in the
|
||
POT-Creation-Date header.
|
||
|
||
- bpo-23935: Argument Clinic's understanding of format units accepting
|
||
bytes, bytearrays, and buffers is now consistent with both the
|
||
documentation and the implementation.
|
||
|
||
- bpo-23944: Argument Clinic now wraps long impl prototypes at column 78.
|
||
|
||
- bpo-20586: Argument Clinic now ensures that functions without docstrings
|
||
have signatures.
|
||
|
||
- bpo-23492: Argument Clinic now generates argument parsing code with
|
||
PyArg_Parse instead of PyArg_ParseTuple if possible.
|
||
|
||
- bpo-23500: Argument Clinic is now smarter about generating the "#ifndef"
|
||
(empty) definition of the methoddef macro: it's only generated once, even
|
||
if Argument Clinic processes the same symbol multiple times, and it's
|
||
emitted at the end of all processing rather than immediately after the
|
||
first use.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-23998: PyImport_ReInitLock() now checks for lock allocation error
|
||
|
||
|
||
What's New in Python 3.5.0 alpha 3?
|
||
===================================
|
||
|
||
*Release date: 2015-03-28*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-23573: Increased performance of string search operations (str.find,
|
||
str.index, str.count, the in operator, str.split, str.partition) with
|
||
arguments of different kinds (UCS1, UCS2, UCS4).
|
||
|
||
- bpo-23753: Python doesn't support anymore platforms without stat() or
|
||
fstat(), these functions are always required.
|
||
|
||
- bpo-23681: The -b option now affects comparisons of bytes with int.
|
||
|
||
- bpo-23632: Memoryviews now allow tuple indexing (including for
|
||
multi-dimensional memoryviews).
|
||
|
||
- bpo-23192: Fixed generator lambdas. Patch by Bruno Cauet.
|
||
|
||
- bpo-23629: Fix the default __sizeof__ implementation for variable-sized
|
||
objects.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-14260: The groupindex attribute of regular expression pattern object
|
||
now is non-modifiable mapping.
|
||
|
||
- bpo-23792: Ignore KeyboardInterrupt when the pydoc pager is active. This
|
||
mimics the behavior of the standard unix pagers, and prevents pipepager
|
||
from shutting down while the pager itself is still running.
|
||
|
||
- bpo-23775: pprint() of OrderedDict now outputs the same representation as
|
||
repr().
|
||
|
||
- bpo-23765: Removed IsBadStringPtr calls in ctypes
|
||
|
||
- bpo-22364: Improved some re error messages using regex for hints.
|
||
|
||
- bpo-23742: ntpath.expandvars() no longer loses unbalanced single quotes.
|
||
|
||
- bpo-21717: The zipfile.ZipFile.open function now supports 'x' (exclusive
|
||
creation) mode.
|
||
|
||
- bpo-21802: The reader in BufferedRWPair now is closed even when closing
|
||
writer failed in BufferedRWPair.close().
|
||
|
||
- bpo-23622: Unknown escapes in regular expressions that consist of ``'\'``
|
||
and ASCII letter now raise a deprecation warning and will be forbidden in
|
||
Python 3.6.
|
||
|
||
- bpo-23671: string.Template now allows specifying the "self" parameter as a
|
||
keyword argument. string.Formatter now allows specifying the "self" and
|
||
the "format_string" parameters as keyword arguments.
|
||
|
||
- bpo-23502: The pprint module now supports mapping proxies.
|
||
|
||
- bpo-17530: pprint now wraps long bytes objects and bytearrays.
|
||
|
||
- bpo-22687: Fixed some corner cases in breaking words in tetxtwrap. Got rid
|
||
of quadratic complexity in breaking long words.
|
||
|
||
- bpo-4727: The copy module now uses pickle protocol 4 (PEP 3154) and
|
||
supports copying of instances of classes whose __new__ method takes
|
||
keyword-only arguments.
|
||
|
||
- bpo-23491: Added a zipapp module to support creating executable zip file
|
||
archives of Python code. Registered ".pyz" and ".pyzw" extensions on
|
||
Windows for these archives (PEP 441).
|
||
|
||
- bpo-23657: Avoid explicit checks for str in zipapp, adding support for
|
||
pathlib.Path objects as arguments.
|
||
|
||
- bpo-23688: Added support of arbitrary bytes-like objects and avoided
|
||
unnecessary copying of memoryview in gzip.GzipFile.write(). Original patch
|
||
by Wolfgang Maier.
|
||
|
||
- bpo-23252: Added support for writing ZIP files to unseekable streams.
|
||
|
||
- bpo-23647: Increase imaplib's MAXLINE to accommodate modern mailbox sizes.
|
||
|
||
- bpo-23539: If body is None, http.client.HTTPConnection.request now sets
|
||
Content-Length to 0 for PUT, POST, and PATCH headers to avoid 411 errors
|
||
from some web servers.
|
||
|
||
- bpo-22351: The nntplib.NNTP constructor no longer leaves the connection
|
||
and socket open until the garbage collector cleans them up. Patch by
|
||
Martin Panter.
|
||
|
||
- bpo-23704: collections.deque() objects now support methods for index(),
|
||
insert(), and copy(). This allows deques to be registered as a
|
||
MutableSequence and it improves their substitutability for lists.
|
||
|
||
- bpo-23715: :func:`signal.sigwaitinfo` and :func:`signal.sigtimedwait` are
|
||
now retried when interrupted by a signal not in the *sigset* parameter, if
|
||
the signal handler does not raise an exception. signal.sigtimedwait()
|
||
recomputes the timeout with a monotonic clock when it is retried.
|
||
|
||
- bpo-23001: Few functions in modules mmap, ossaudiodev, socket, ssl, and
|
||
codecs, that accepted only read-only bytes-like object now accept writable
|
||
bytes-like object too.
|
||
|
||
- bpo-23646: If time.sleep() is interrupted by a signal, the sleep is now
|
||
retried with the recomputed delay, except if the signal handler raises an
|
||
exception (PEP 475).
|
||
|
||
- bpo-23136: _strptime now uniformly handles all days in week 0, including
|
||
Dec 30 of previous year. Based on patch by Jim Carroll.
|
||
|
||
- bpo-23700: Iterator of NamedTemporaryFile now keeps a reference to
|
||
NamedTemporaryFile instance. Patch by Bohuslav Kabrda.
|
||
|
||
- bpo-22903: The fake test case created by unittest.loader when it fails
|
||
importing a test module is now picklable.
|
||
|
||
- bpo-22181: On Linux, os.urandom() now uses the new getrandom() syscall if
|
||
available, syscall introduced in the Linux kernel 3.17. It is more
|
||
reliable and more secure, because it avoids the need of a file descriptor
|
||
and waits until the kernel has enough entropy.
|
||
|
||
- bpo-2211: Updated the implementation of the http.cookies.Morsel class.
|
||
Setting attributes key, value and coded_value directly now is deprecated.
|
||
update() and setdefault() now transform and check keys. Comparing for
|
||
equality now takes into account attributes key, value and coded_value.
|
||
copy() now returns a Morsel, not a dict. repr() now contains all
|
||
attributes. Optimized checking keys and quoting values. Added new tests.
|
||
Original patch by Demian Brecht.
|
||
|
||
- bpo-18983: Allow selection of output units in timeit. Patch by Julian
|
||
Gindi.
|
||
|
||
- bpo-23631: Fix traceback.format_list when a traceback has been mutated.
|
||
|
||
- bpo-23568: Add rdivmod support to MagicMock() objects. Patch by Håkan
|
||
Lövdahl.
|
||
|
||
- bpo-2052: Add charset parameter to HtmlDiff.make_file().
|
||
|
||
- bpo-23668: Support os.truncate and os.ftruncate on Windows.
|
||
|
||
- bpo-23138: Fixed parsing cookies with absent keys or values in cookiejar.
|
||
Patch by Demian Brecht.
|
||
|
||
- bpo-23051: multiprocessing.Pool methods imap() and imap_unordered() now
|
||
handle exceptions raised by an iterator. Patch by Alon Diamant and Davin
|
||
Potts.
|
||
|
||
- bpo-23581: Add matmul support to MagicMock. Patch by Håkan Lövdahl.
|
||
|
||
- bpo-23566: enable(), register(), dump_traceback() and
|
||
dump_traceback_later() functions of faulthandler now accept file
|
||
descriptors. Patch by Wei Wu.
|
||
|
||
- bpo-22928: Disabled HTTP header injections in http.client. Original patch
|
||
by Demian Brecht.
|
||
|
||
- bpo-23615: Modules bz2, tarfile and tokenize now can be reloaded with
|
||
imp.reload(). Patch by Thomas Kluyver.
|
||
|
||
- bpo-23605: os.walk() now calls os.scandir() instead of os.listdir(). The
|
||
usage of os.scandir() reduces the number of calls to os.stat(). Initial
|
||
patch written by Ben Hoyt.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-23585: make patchcheck will ensure the interpreter is built.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-23583: Added tests for standard IO streams in IDLE.
|
||
|
||
- bpo-22289: Prevent test_urllib2net failures due to ftp connection timeout.
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-22826: The result of open() in Tools/freeze/bkfile.py is now better
|
||
compatible with regular files (in particular it now supports the context
|
||
management protocol).
|
||
|
||
|
||
What's New in Python 3.5.0 alpha 2?
|
||
===================================
|
||
|
||
*Release date: 2015-03-09*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-23571: PyObject_Call() and PyCFunction_Call() now raise a SystemError
|
||
if a function returns a result and raises an exception. The SystemError is
|
||
chained to the previous exception.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-22524: New os.scandir() function, part of the :pep:`471`:
|
||
"os.scandir() function -- a better and faster directory iterator". Patch
|
||
written by Ben Hoyt.
|
||
|
||
- bpo-23103: Reduced the memory consumption of IPv4Address and IPv6Address.
|
||
|
||
- bpo-21793: BaseHTTPRequestHandler again logs response code as numeric, not
|
||
as stringified enum. Patch by Demian Brecht.
|
||
|
||
- bpo-23476: In the ssl module, enable OpenSSL's X509_V_FLAG_TRUSTED_FIRST
|
||
flag on certificate stores when it is available.
|
||
|
||
- bpo-23576: Avoid stalling in SSL reads when EOF has been reached in the
|
||
SSL layer but the underlying connection hasn't been closed.
|
||
|
||
- bpo-23504: Added an __all__ to the types module.
|
||
|
||
- bpo-23563: Optimized utility functions in urllib.parse.
|
||
|
||
- bpo-7830: Flatten nested functools.partial.
|
||
|
||
- bpo-20204: Added the __module__ attribute to _tkinter classes.
|
||
|
||
- bpo-19980: Improved help() for non-recognized strings. help('') now shows
|
||
the help on str. help('help') now shows the help on help(). Original
|
||
patch by Mark Lawrence.
|
||
|
||
- bpo-23521: Corrected pure python implementation of timedelta division.
|
||
Eliminated OverflowError from ``timedelta * float`` for some floats;
|
||
Corrected rounding in timedelta true division.
|
||
|
||
- bpo-21619: Popen objects no longer leave a zombie after exit in the with
|
||
statement if the pipe was broken. Patch by Martin Panter.
|
||
|
||
- bpo-22936: Make it possible to show local variables in tracebacks for both
|
||
the traceback module and unittest.
|
||
|
||
- bpo-15955: Add an option to limit the output size in bz2.decompress().
|
||
Patch by Nikolaus Rath.
|
||
|
||
- bpo-6639: Module-level turtle functions no longer raise TclError after
|
||
closing the window.
|
||
|
||
- bpo-814253: Group references and conditional group references now work in
|
||
lookbehind assertions in regular expressions. (See also: bpo-9179)
|
||
|
||
- bpo-23215: Multibyte codecs with custom error handlers that ignores errors
|
||
consumed too much memory and raised SystemError or MemoryError. Original
|
||
patch by Aleksi Torhamo.
|
||
|
||
- bpo-5700: io.FileIO() called flush() after closing the file. flush() was
|
||
not called in close() if closefd=False.
|
||
|
||
- bpo-23374: Fixed pydoc failure with non-ASCII files when stdout encoding
|
||
differs from file system encoding (e.g. on Mac OS).
|
||
|
||
- bpo-23481: Remove RC4 from the SSL module's default cipher list.
|
||
|
||
- bpo-21548: Fix pydoc.synopsis() and pydoc.apropos() on modules with empty
|
||
docstrings.
|
||
|
||
- bpo-22885: Fixed arbitrary code execution vulnerability in the dbm.dumb
|
||
module. Original patch by Claudiu Popa.
|
||
|
||
- bpo-23239: ssl.match_hostname() now supports matching of IP addresses.
|
||
|
||
- bpo-23146: Fix mishandling of absolute Windows paths with forward slashes
|
||
in pathlib.
|
||
|
||
- bpo-23096: Pickle representation of floats with protocol 0 now is the same
|
||
for both Python and C implementations.
|
||
|
||
- bpo-19105: pprint now more efficiently uses free space at the right.
|
||
|
||
- bpo-14910: Add allow_abbrev parameter to argparse.ArgumentParser. Patch by
|
||
Jonathan Paugh, Steven Bethard, paul j3 and Daniel Eriksson.
|
||
|
||
- bpo-21717: tarfile.open() now supports 'x' (exclusive creation) mode.
|
||
|
||
- bpo-23344: marshal.dumps() is now 20-25% faster on average.
|
||
|
||
- bpo-20416: marshal.dumps() with protocols 3 and 4 is now 40-50% faster on
|
||
average.
|
||
|
||
- bpo-23421: Fixed compression in tarfile CLI. Patch by wdv4758h.
|
||
|
||
- bpo-23367: Fix possible overflows in the unicodedata module.
|
||
|
||
- bpo-23361: Fix possible overflow in Windows subprocess creation code.
|
||
|
||
- logging.handlers.QueueListener now takes a respect_handler_level keyword
|
||
argument which, if set to True, will pass messages to handlers taking
|
||
handler levels into account.
|
||
|
||
- bpo-19705: turtledemo now has a visual sorting algorithm demo. Original
|
||
patch from Jason Yeo.
|
||
|
||
- bpo-23801: Fix issue where cgi.FieldStorage did not always ignore the
|
||
entire preamble to a multipart body.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-23445: pydebug builds now use "gcc -Og" where possible, to make the
|
||
resulting executable faster.
|
||
|
||
- bpo-23686: Update OS X 10.5 installer build to use OpenSSL 1.0.2a.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-20204: Deprecation warning is now raised for builtin types without the
|
||
__module__ attribute.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-23465: Implement :pep:`486` - Make the Python Launcher aware of
|
||
virtual environments. Patch by Paul Moore.
|
||
|
||
- bpo-23437: Make user scripts directory versioned on Windows. Patch by Paul
|
||
Moore.
|
||
|
||
|
||
What's New in Python 3.5.0 alpha 1?
|
||
===================================
|
||
|
||
*Release date: 2015-02-08*
|
||
|
||
Core and Builtins
|
||
-----------------
|
||
|
||
- bpo-23285: PEP 475 - EINTR handling.
|
||
|
||
- bpo-22735: Fix many edge cases (including crashes) involving custom mro()
|
||
implementations.
|
||
|
||
- bpo-22896: Avoid using PyObject_AsCharBuffer(), PyObject_AsReadBuffer()
|
||
and PyObject_AsWriteBuffer().
|
||
|
||
- bpo-21295: Revert some changes (issue #16795) to AST line numbers and
|
||
column offsets that constituted a regression.
|
||
|
||
- bpo-22986: Allow changing an object's __class__ between a dynamic type and
|
||
static type in some cases.
|
||
|
||
- bpo-15859: PyUnicode_EncodeFSDefault(), PyUnicode_EncodeMBCS() and
|
||
PyUnicode_EncodeCodePage() now raise an exception if the object is not a
|
||
Unicode object. For PyUnicode_EncodeFSDefault(), it was already the case
|
||
on platforms other than Windows. Patch written by Campbell Barton.
|
||
|
||
- bpo-21408: The default __ne__() now returns NotImplemented if __eq__()
|
||
returned NotImplemented. Original patch by Martin Panter.
|
||
|
||
- bpo-23321: Fixed a crash in str.decode() when error handler returned
|
||
replacement string longer than malformed input data.
|
||
|
||
- bpo-22286: The "backslashreplace" error handlers now works with decoding
|
||
and translating.
|
||
|
||
- bpo-23253: Delay-load ShellExecute[AW] in os.startfile for reduced startup
|
||
overhead on Windows.
|
||
|
||
- bpo-22038: pyatomic.h now uses stdatomic.h or GCC built-in functions for
|
||
atomic memory access if available. Patch written by Vitor de Lima and
|
||
Gustavo Temple.
|
||
|
||
- bpo-20284: %-interpolation (aka printf) formatting added for bytes and
|
||
bytearray.
|
||
|
||
- bpo-23048: Fix jumping out of an infinite while loop in the pdb.
|
||
|
||
- bpo-20335: bytes constructor now raises TypeError when encoding or errors
|
||
is specified with non-string argument. Based on patch by Renaud Blanch.
|
||
|
||
- bpo-22834: If the current working directory ends up being set to a
|
||
non-existent directory then import will no longer raise FileNotFoundError.
|
||
|
||
- bpo-22869: Move the interpreter startup & shutdown code to a new dedicated
|
||
pylifecycle.c module
|
||
|
||
- bpo-22847: Improve method cache efficiency.
|
||
|
||
- bpo-22335: Fix crash when trying to enlarge a bytearray to 0x7fffffff
|
||
bytes on a 32-bit platform.
|
||
|
||
- bpo-22653: Fix an assertion failure in debug mode when doing a reentrant
|
||
dict insertion in debug mode.
|
||
|
||
- bpo-22643: Fix integer overflow in Unicode case operations (upper, lower,
|
||
title, swapcase, casefold).
|
||
|
||
- bpo-17636: Circular imports involving relative imports are now supported.
|
||
|
||
- bpo-22604: Fix assertion error in debug mode when dividing a complex
|
||
number by (nan+0j).
|
||
|
||
- bpo-21052: Do not raise ImportWarning when sys.path_hooks or sys.meta_path
|
||
are set to None.
|
||
|
||
- bpo-16518: Use 'bytes-like object required' in error messages that
|
||
previously used the far more cryptic "'x' does not support the buffer
|
||
protocol.
|
||
|
||
- bpo-22470: Fixed integer overflow issues in "backslashreplace",
|
||
"xmlcharrefreplace", and "surrogatepass" error handlers.
|
||
|
||
- bpo-22540: speed up `PyObject_IsInstance` and `PyObject_IsSubclass` in the
|
||
common case that the second argument has metaclass `type`.
|
||
|
||
- bpo-18711: Add a new `PyErr_FormatV` function, similar to `PyErr_Format`
|
||
but accepting a `va_list` argument.
|
||
|
||
- bpo-22520: Fix overflow checking when generating the repr of a unicode
|
||
object.
|
||
|
||
- bpo-22519: Fix overflow checking in PyBytes_Repr.
|
||
|
||
- bpo-22518: Fix integer overflow issues in latin-1 encoding.
|
||
|
||
- bpo-16324: _charset parameter of MIMEText now also accepts
|
||
email.charset.Charset instances. Initial patch by Claude Paroz.
|
||
|
||
- bpo-1764286: Fix inspect.getsource() to support decorated functions. Patch
|
||
by Claudiu Popa.
|
||
|
||
- bpo-18554: os.__all__ includes posix functions.
|
||
|
||
- bpo-21391: Use os.path.abspath in the shutil module.
|
||
|
||
- bpo-11471: avoid generating a JUMP_FORWARD instruction at the end of an
|
||
if-block if there is no else-clause. Original patch by Eugene Toder.
|
||
|
||
- bpo-22215: Now ValueError is raised instead of TypeError when str or bytes
|
||
argument contains not permitted null character or byte.
|
||
|
||
- bpo-22258: Fix the internal function set_inheritable() on Illumos. This
|
||
platform exposes the function ``ioctl(FIOCLEX)``, but calling it fails
|
||
with errno is ENOTTY: "Inappropriate ioctl for device". set_inheritable()
|
||
now falls back to the slower ``fcntl()`` (``F_GETFD`` and then
|
||
``F_SETFD``).
|
||
|
||
- bpo-21389: Displaying the __qualname__ of the underlying function in the
|
||
repr of a bound method.
|
||
|
||
- bpo-22206: Using pthread, PyThread_create_key() now sets errno to ENOMEM
|
||
and returns -1 (error) on integer overflow.
|
||
|
||
- bpo-20184: Argument Clinic based signature introspection added for 30 of
|
||
the builtin functions.
|
||
|
||
- bpo-22116: C functions and methods (of the 'builtin_function_or_method'
|
||
type) can now be weakref'ed. Patch by Wei Wu.
|
||
|
||
- bpo-22077: Improve index error messages for bytearrays, bytes, lists, and
|
||
tuples by adding 'or slices'. Added ', not <typename>' for bytearrays.
|
||
Original patch by Claudiu Popa.
|
||
|
||
- bpo-20179: Apply Argument Clinic to bytes and bytearray. Patch by Tal
|
||
Einat.
|
||
|
||
- bpo-22082: Clear interned strings in slotdefs.
|
||
|
||
- Upgrade Unicode database to Unicode 7.0.0.
|
||
|
||
- bpo-21897: Fix a crash with the f_locals attribute with closure variables
|
||
when frame.clear() has been called.
|
||
|
||
- bpo-21205: Add a new ``__qualname__`` attribute to generator, the
|
||
qualified name, and use it in the representation of a generator
|
||
(``repr(gen)``). The default name of the generator (``__name__``
|
||
attribute) is now get from the function instead of the code. Use
|
||
``gen.gi_code.co_name`` to get the name of the code.
|
||
|
||
- bpo-21669: With the aid of heuristics in SyntaxError.__init__, the parser
|
||
now attempts to generate more meaningful (or at least more search engine
|
||
friendly) error messages when "exec" and "print" are used as statements.
|
||
|
||
- bpo-21642: In the conditional if-else expression, allow an integer written
|
||
with no space between itself and the ``else`` keyword (e.g. ``True if
|
||
42else False``) to be valid syntax.
|
||
|
||
- bpo-21523: Fix over-pessimistic computation of the stack effect of some
|
||
opcodes in the compiler. This also fixes a quadratic compilation time
|
||
issue noticeable when compiling code with a large number of "and" and "or"
|
||
operators.
|
||
|
||
- bpo-21418: Fix a crash in the builtin function super() when called without
|
||
argument and without current frame (ex: embedded Python).
|
||
|
||
- bpo-21425: Fix flushing of standard streams in the interactive
|
||
interpreter.
|
||
|
||
- bpo-21435: In rare cases, when running finalizers on objects in cyclic
|
||
trash a bad pointer dereference could occur due to a subtle flaw in
|
||
internal iteration logic.
|
||
|
||
- bpo-21377: PyBytes_Concat() now tries to concatenate in-place when the
|
||
first argument has a reference count of 1. Patch by Nikolaus Rath.
|
||
|
||
- bpo-20355: -W command line options now have higher priority than the
|
||
PYTHONWARNINGS environment variable. Patch by Arfrever.
|
||
|
||
- bpo-21274: Define PATH_MAX for GNU/Hurd in Python/pythonrun.c.
|
||
|
||
- bpo-20904: Support setting FPU precision on m68k.
|
||
|
||
- bpo-21209: Fix sending tuples to custom generator objects with the yield
|
||
from syntax.
|
||
|
||
- bpo-21193: pow(a, b, c) now raises ValueError rather than TypeError when b
|
||
is negative. Patch by Josh Rosenberg.
|
||
|
||
- bpo-21176: PEP 465: Add the '@' operator for matrix multiplication.
|
||
|
||
- bpo-21134: Fix segfault when str is called on an uninitialized
|
||
UnicodeEncodeError, UnicodeDecodeError, or UnicodeTranslateError object.
|
||
|
||
- bpo-19537: Fix PyUnicode_DATA() alignment under m68k. Patch by Andreas
|
||
Schwab.
|
||
|
||
- bpo-20929: Add a type cast to avoid shifting a negative number.
|
||
|
||
- bpo-20731: Properly position in source code files even if they are opened
|
||
in text mode. Patch by Serhiy Storchaka.
|
||
|
||
- bpo-20637: Key-sharing now also works for instance dictionaries of
|
||
subclasses. Patch by Peter Ingebretson.
|
||
|
||
- bpo-8297: Attributes missing from modules now include the module name in
|
||
the error text. Original patch by ysj.ray.
|
||
|
||
- bpo-19995: %c, %o, %x, and %X now raise TypeError on non-integer input.
|
||
|
||
- bpo-19655: The ASDL parser - used by the build process to generate code
|
||
for managing the Python AST in C - was rewritten. The new parser is self
|
||
contained and does not require to carry long the spark.py parser-generator
|
||
library; spark.py was removed from the source base.
|
||
|
||
- bpo-12546: Allow ``\x00`` to be used as a fill character when using str,
|
||
int, float, and complex __format__ methods.
|
||
|
||
- bpo-20480: Add ipaddress.reverse_pointer. Patch by Leon Weber.
|
||
|
||
- bpo-13598: Modify string.Formatter to support auto-numbering of
|
||
replacement fields. It now matches the behavior of str.format() in this
|
||
regard. Patches by Phil Elson and Ramchandra Apte.
|
||
|
||
- bpo-8931: Make alternate formatting ('#') for type 'c' raise an exception.
|
||
In versions prior to 3.5, '#' with 'c' had no effect. Now specifying it is
|
||
an error. Patch by Torsten Landschoff.
|
||
|
||
- bpo-23165: Perform overflow checks before allocating memory in the
|
||
_Py_char2wchar function.
|
||
|
||
Library
|
||
-------
|
||
|
||
- bpo-23399: pyvenv creates relative symlinks where possible.
|
||
|
||
- bpo-20289: cgi.FieldStorage() now supports the context management
|
||
protocol.
|
||
|
||
- bpo-13128: Print response headers for CONNECT requests when debuglevel >
|
||
0. Patch by Demian Brecht.
|
||
|
||
- bpo-15381: Optimized io.BytesIO to make less allocations and copyings.
|
||
|
||
- bpo-22818: Splitting on a pattern that could match an empty string now
|
||
raises a warning. Patterns that can only match empty strings are now
|
||
rejected.
|
||
|
||
- bpo-23099: Closing io.BytesIO with exported buffer is rejected now to
|
||
prevent corrupting exported buffer.
|
||
|
||
- bpo-23326: Removed __ne__ implementations. Since fixing default __ne__
|
||
implementation in issue #21408 they are redundant.
|
||
|
||
- bpo-23363: Fix possible overflow in itertools.permutations.
|
||
|
||
- bpo-23364: Fix possible overflow in itertools.product.
|
||
|
||
- bpo-23366: Fixed possible integer overflow in itertools.combinations.
|
||
|
||
- bpo-23369: Fixed possible integer overflow in
|
||
_json.encode_basestring_ascii.
|
||
|
||
- bpo-23353: Fix the exception handling of generators in
|
||
PyEval_EvalFrameEx(). At entry, save or swap the exception state even if
|
||
PyEval_EvalFrameEx() is called with throwflag=0. At exit, the exception
|
||
state is now always restored or swapped, not only if why is WHY_YIELD or
|
||
WHY_RETURN. Patch co-written with Antoine Pitrou.
|
||
|
||
- bpo-14099: Restored support of writing ZIP files to tellable but
|
||
non-seekable streams.
|
||
|
||
- bpo-14099: Writing to ZipFile and reading multiple ZipExtFiles is
|
||
threadsafe now.
|
||
|
||
- bpo-19361: JSON decoder now raises JSONDecodeError instead of ValueError.
|
||
|
||
- bpo-18518: timeit now rejects statements which can't be compiled outside a
|
||
function or a loop (e.g. "return" or "break").
|
||
|
||
- bpo-23094: Fixed readline with frames in Python implementation of pickle.
|
||
|
||
- bpo-23268: Fixed bugs in the comparison of ipaddress classes.
|
||
|
||
- bpo-21408: Removed incorrect implementations of __ne__() which didn't
|
||
returned NotImplemented if __eq__() returned NotImplemented. The default
|
||
__ne__() now works correctly.
|
||
|
||
- bpo-19996: :class:`email.feedparser.FeedParser` now handles (malformed)
|
||
headers with no key rather than assuming the body has started.
|
||
|
||
- bpo-20188: Support Application-Layer Protocol Negotiation (ALPN) in the
|
||
ssl module.
|
||
|
||
- bpo-23133: Pickling of ipaddress objects now produces more compact and
|
||
portable representation.
|
||
|
||
- bpo-23248: Update ssl error codes from latest OpenSSL git master.
|
||
|
||
- bpo-23266: Much faster implementation of ipaddress.collapse_addresses()
|
||
when there are many non-consecutive addresses.
|
||
|
||
- bpo-23098: 64-bit dev_t is now supported in the os module.
|
||
|
||
- bpo-21817: When an exception is raised in a task submitted to a
|
||
ProcessPoolExecutor, the remote traceback is now displayed in the parent
|
||
process. Patch by Claudiu Popa.
|
||
|
||
- bpo-15955: Add an option to limit output size when decompressing LZMA
|
||
data. Patch by Nikolaus Rath and Martin Panter.
|
||
|
||
- bpo-23250: In the http.cookies module, capitalize "HttpOnly" and "Secure"
|
||
as they are written in the standard.
|
||
|
||
- bpo-23063: In the distutils' check command, fix parsing of reST with code
|
||
or code-block directives.
|
||
|
||
- bpo-23209: selectors.BaseSelector.get_key() now raises a RuntimeError if
|
||
the selector is closed. And selectors.BaseSelector.close() now clears its
|
||
internal reference to the selector mapping to break a reference cycle.
|
||
Initial patch written by Martin Richard. (See also: bpo-23225)
|
||
|
||
- bpo-17911: Provide a way to seed the linecache for a PEP-302 module
|
||
without actually loading the code.
|
||
|
||
- bpo-17911: Provide a new object API for traceback, including the ability
|
||
to not lookup lines at all until the traceback is actually rendered,
|
||
without any trace of the original objects being kept alive.
|
||
|
||
- bpo-19777: Provide a home() classmethod on Path objects. Contributed by
|
||
Victor Salgado and Mayank Tripathi.
|
||
|
||
- bpo-23206: Make ``json.dumps(..., ensure_ascii=False)`` as fast as the
|
||
default case of ``ensure_ascii=True``. Patch by Naoki Inada.
|
||
|
||
- bpo-23185: Add math.inf and math.nan constants.
|
||
|
||
- bpo-23186: Add ssl.SSLObject.shared_ciphers() and
|
||
ssl.SSLSocket.shared_ciphers() to fetch the client's list ciphers sent at
|
||
handshake.
|
||
|
||
- bpo-23143: Remove compatibility with OpenSSLs older than 0.9.8.
|
||
|
||
- bpo-23132: Improve performance and introspection support of comparison
|
||
methods created by functool.total_ordering.
|
||
|
||
- bpo-19776: Add an expanduser() method on Path objects.
|
||
|
||
- bpo-23112: Fix SimpleHTTPServer to correctly carry the query string and
|
||
fragment when it redirects to add a trailing slash.
|
||
|
||
- bpo-21793: Added http.HTTPStatus enums (i.e. HTTPStatus.OK,
|
||
HTTPStatus.NOT_FOUND). Patch by Demian Brecht.
|
||
|
||
- bpo-23093: In the io, module allow more operations to work on detached
|
||
streams.
|
||
|
||
- bpo-23111: In the ftplib, make ssl.PROTOCOL_SSLv23 the default protocol
|
||
version.
|
||
|
||
- bpo-22585: On OpenBSD 5.6 and newer, os.urandom() now calls getentropy(),
|
||
instead of reading /dev/urandom, to get pseudo-random bytes.
|
||
|
||
- bpo-19104: pprint now produces evaluable output for wrapped strings.
|
||
|
||
- bpo-23071: Added missing names to codecs.__all__. Patch by Martin Panter.
|
||
|
||
- bpo-22783: Pickling now uses the NEWOBJ opcode instead of the NEWOBJ_EX
|
||
opcode if possible.
|
||
|
||
- bpo-15513: Added a __sizeof__ implementation for pickle classes.
|
||
|
||
- bpo-19858: pickletools.optimize() now aware of the MEMOIZE opcode, can
|
||
produce more compact result and no longer produces invalid output if input
|
||
data contains MEMOIZE opcodes together with PUT or BINPUT opcodes.
|
||
|
||
- bpo-22095: Fixed HTTPConnection.set_tunnel with default port. The port
|
||
value in the host header was set to "None". Patch by Demian Brecht.
|
||
|
||
- bpo-23016: A warning no longer produces an AttributeError when the program
|
||
is run with pythonw.exe.
|
||
|
||
- bpo-21775: shutil.copytree(): fix crash when copying to VFAT. An exception
|
||
handler assumed that OSError objects always have a 'winerror' attribute.
|
||
That is not the case, so the exception handler itself raised
|
||
AttributeError when run on Linux (and, presumably, any other non-Windows
|
||
OS). Patch by Greg Ward.
|
||
|
||
- bpo-1218234: Fix inspect.getsource() to load updated source of reloaded
|
||
module. Initial patch by Berker Peksag.
|
||
|
||
- bpo-21740: Support wrapped callables in doctest. Patch by Claudiu Popa.
|
||
|
||
- bpo-23009: Make sure selectors.EpollSelector.select() works when no FD is
|
||
registered.
|
||
|
||
- bpo-22959: In the constructor of http.client.HTTPSConnection, prefer the
|
||
context's check_hostname attribute over the *check_hostname* parameter.
|
||
|
||
- bpo-22696: Add function :func:`sys.is_finalizing` to know about
|
||
interpreter shutdown.
|
||
|
||
- bpo-16043: Add a default limit for the amount of data
|
||
xmlrpclib.gzip_decode will return. This resolves CVE-2013-1753.
|
||
|
||
- bpo-14099: ZipFile.open() no longer reopen the underlying file. Objects
|
||
returned by ZipFile.open() can now operate independently of the ZipFile
|
||
even if the ZipFile was created by passing in a file-like object as the
|
||
first argument to the constructor.
|
||
|
||
- bpo-22966: Fix __pycache__ pyc file name clobber when pyc_compile is asked
|
||
to compile a source file containing multiple dots in the source file name.
|
||
|
||
- bpo-21971: Update turtledemo doc and add module to the index.
|
||
|
||
- bpo-21032: Fixed socket leak if HTTPConnection.getresponse() fails.
|
||
Original patch by Martin Panter.
|
||
|
||
- bpo-22407: Deprecated the use of re.LOCALE flag with str patterns or
|
||
re.ASCII. It was newer worked.
|
||
|
||
- bpo-22902: The "ip" command is now used on Linux to determine MAC address
|
||
in uuid.getnode(). Pach by Bruno Cauet.
|
||
|
||
- bpo-22960: Add a context argument to xmlrpclib.ServerProxy constructor.
|
||
|
||
- bpo-22389: Add contextlib.redirect_stderr().
|
||
|
||
- bpo-21356: Make ssl.RAND_egd() optional to support LibreSSL. The
|
||
availability of the function is checked during the compilation. Patch
|
||
written by Bernard Spil.
|
||
|
||
- bpo-22915: SAX parser now supports files opened with file descriptor or
|
||
bytes path.
|
||
|
||
- bpo-22609: Constructors and update methods of mapping classes in the
|
||
collections module now accept the self keyword argument.
|
||
|
||
- bpo-22940: Add readline.append_history_file.
|
||
|
||
- bpo-19676: Added the "namereplace" error handler.
|
||
|
||
- bpo-22788: Add *context* parameter to logging.handlers.HTTPHandler.
|
||
|
||
- bpo-22921: Allow SSLContext to take the *hostname* parameter even if
|
||
OpenSSL doesn't support SNI.
|
||
|
||
- bpo-22894: TestCase.subTest() would cause the test suite to be stopped
|
||
when in failfast mode, even in the absence of failures.
|
||
|
||
- bpo-22796: HTTP cookie parsing is now stricter, in order to protect
|
||
against potential injection attacks.
|
||
|
||
- bpo-22370: Windows detection in pathlib is now more robust.
|
||
|
||
- bpo-22841: Reject coroutines in asyncio add_signal_handler(). Patch by
|
||
Ludovic.Gasc.
|
||
|
||
- bpo-19494: Added urllib.request.HTTPBasicPriorAuthHandler. Patch by Matej
|
||
Cepl.
|
||
|
||
- bpo-22578: Added attributes to the re.error class.
|
||
|
||
- bpo-22849: Fix possible double free in the io.TextIOWrapper constructor.
|
||
|
||
- bpo-12728: Different Unicode characters having the same uppercase but
|
||
different lowercase are now matched in case-insensitive regular
|
||
expressions.
|
||
|
||
- bpo-22821: Fixed fcntl() with integer argument on 64-bit big-endian
|
||
platforms.
|
||
|
||
- bpo-21650: Add an `--sort-keys` option to json.tool CLI.
|
||
|
||
- bpo-22824: Updated reprlib output format for sets to use set literals.
|
||
Patch contributed by Berker Peksag.
|
||
|
||
- bpo-22824: Updated reprlib output format for arrays to display empty
|
||
arrays without an unnecessary empty list. Suggested by Serhiy Storchaka.
|
||
|
||
- bpo-22406: Fixed the uu_codec codec incorrectly ported to 3.x. Based on
|
||
patch by Martin Panter.
|
||
|
||
- bpo-17293: uuid.getnode() now determines MAC address on AIX using netstat.
|
||
Based on patch by Aivars Kalvāns.
|
||
|
||
- bpo-22769: Fixed ttk.Treeview.tag_has() when called without arguments.
|
||
|
||
- bpo-22417: Verify certificates by default in httplib (PEP 476).
|
||
|
||
- bpo-22775: Fixed unpickling of http.cookies.SimpleCookie with protocol 2
|
||
and above. Patch by Tim Graham.
|
||
|
||
- bpo-22776: Brought excluded code into the scope of a try block in
|
||
SysLogHandler.emit().
|
||
|
||
- bpo-22665: Add missing get_terminal_size and SameFileError to
|
||
shutil.__all__.
|
||
|
||
- bpo-6623: Remove deprecated Netrc class in the ftplib module. Patch by
|
||
Matt Chaput.
|
||
|
||
- bpo-17381: Fixed handling of case-insensitive ranges in regular
|
||
expressions.
|
||
|
||
- bpo-22410: Module level functions in the re module now cache compiled
|
||
locale-dependent regular expressions taking into account the locale.
|
||
|
||
- bpo-22759: Query methods on pathlib.Path() (exists(), is_dir(), etc.) now
|
||
return False when the underlying stat call raises NotADirectoryError.
|
||
|
||
- bpo-8876: distutils now falls back to copying files when hard linking
|
||
doesn't work. This allows use with special filesystems such as VirtualBox
|
||
shared folders.
|
||
|
||
- bpo-22217: Implemented reprs of classes in the zipfile module.
|
||
|
||
- bpo-22457: Honour load_tests in the start_dir of discovery.
|
||
|
||
- bpo-18216: gettext now raises an error when a .mo file has an unsupported
|
||
major version number. Patch by Aaron Hill.
|
||
|
||
- bpo-13918: Provide a locale.delocalize() function which can remove
|
||
locale-specific number formatting from a string representing a number,
|
||
without then converting it to a specific type. Patch by Cédric Krier.
|
||
|
||
- bpo-22676: Make the pickling of global objects which don't have a
|
||
__module__ attribute less slow.
|
||
|
||
- bpo-18853: Fixed ResourceWarning in shlex.__nain__.
|
||
|
||
- bpo-9351: Defaults set with set_defaults on an argparse subparser are no
|
||
longer ignored when also set on the parent parser.
|
||
|
||
- bpo-7559: unittest test loading ImportErrors are reported as import errors
|
||
with their import exception rather than as attribute errors after the
|
||
import has already failed.
|
||
|
||
- bpo-19746: Make it possible to examine the errors from unittest discovery
|
||
without executing the test suite. The new `errors` attribute on TestLoader
|
||
exposes these non-fatal errors encountered during discovery.
|
||
|
||
- bpo-21991: Make email.headerregistry's header 'params' attributes be
|
||
read-only (MappingProxyType). Previously the dictionary was modifiable
|
||
but a new one was created on each access of the attribute.
|
||
|
||
- bpo-22638: SSLv3 is now disabled throughout the standard library. It can
|
||
still be enabled by instantiating a SSLContext manually.
|
||
|
||
- bpo-22641: In asyncio, the default SSL context for client connections is
|
||
now created using ssl.create_default_context(), for stronger security.
|
||
|
||
- bpo-17401: Include closefd in io.FileIO repr.
|
||
|
||
- bpo-21338: Add silent mode for compileall. quiet parameters of
|
||
compile_{dir, file, path} functions now have a multilevel value. Also, -q
|
||
option of the CLI now have a multilevel value. Patch by Thomas Kluyver.
|
||
|
||
- bpo-20152: Convert the array and cmath modules to Argument Clinic.
|
||
|
||
- bpo-18643: Add socket.socketpair() on Windows.
|
||
|
||
- bpo-22435: Fix a file descriptor leak when socketserver bind fails.
|
||
|
||
- bpo-13096: Fixed segfault in CTypes POINTER handling of large values.
|
||
|
||
- bpo-11694: Raise ConversionError in xdrlib as documented. Patch by Filip
|
||
Gruszczyński and Claudiu Popa.
|
||
|
||
- bpo-19380: Optimized parsing of regular expressions.
|
||
|
||
- bpo-1519638: Now unmatched groups are replaced with empty strings in
|
||
re.sub() and re.subn().
|
||
|
||
- bpo-18615: sndhdr.what/whathdr now return a namedtuple.
|
||
|
||
- bpo-22462: Fix pyexpat's creation of a dummy frame to make it appear in
|
||
exception tracebacks.
|
||
|
||
- bpo-21965: Add support for in-memory SSL to the ssl module. Patch by
|
||
Geert Jansen.
|
||
|
||
- bpo-21173: Fix len() on a WeakKeyDictionary when .clear() was called with
|
||
an iterator alive.
|
||
|
||
- bpo-11866: Eliminated race condition in the computation of names for new
|
||
threads.
|
||
|
||
- bpo-21905: Avoid RuntimeError in pickle.whichmodule() when sys.modules is
|
||
mutated while iterating. Patch by Olivier Grisel.
|
||
|
||
- bpo-11271: concurrent.futures.Executor.map() now takes a *chunksize*
|
||
argument to allow batching of tasks in child processes and improve
|
||
performance of ProcessPoolExecutor. Patch by Dan O'Reilly.
|
||
|
||
- bpo-21883: os.path.join() and os.path.relpath() now raise a TypeError with
|
||
more helpful error message for unsupported or mismatched types of
|
||
arguments.
|
||
|
||
- bpo-22219: The zipfile module CLI now adds entries for directories
|
||
(including empty directories) in ZIP file.
|
||
|
||
- bpo-22449: In the ssl.SSLContext.load_default_certs, consult the
|
||
environmental variables SSL_CERT_DIR and SSL_CERT_FILE on Windows.
|
||
|
||
- bpo-22508: The email.__version__ variable has been removed; the email code
|
||
is no longer shipped separately from the stdlib, and __version__ hasn't
|
||
been updated in several releases.
|
||
|
||
- bpo-20076: Added non derived UTF-8 aliases to locale aliases table.
|
||
|
||
- bpo-20079: Added locales supported in glibc 2.18 to locale alias table.
|
||
|
||
- bpo-20218: Added convenience methods read_text/write_text and read_bytes/
|
||
write_bytes to pathlib.Path objects.
|
||
|
||
- bpo-22396: On 32-bit AIX platform, don't expose os.posix_fadvise() nor
|
||
os.posix_fallocate() because their prototypes in system headers are wrong.
|
||
|
||
- bpo-22517: When an io.BufferedRWPair object is deallocated, clear its
|
||
weakrefs.
|
||
|
||
- bpo-22437: Number of capturing groups in regular expression is no longer
|
||
limited by 100.
|
||
|
||
- bpo-17442: InteractiveInterpreter now displays the full chained traceback
|
||
in its showtraceback method, to match the built in interactive
|
||
interpreter.
|
||
|
||
- bpo-23392: Added tests for marshal C API that works with FILE*.
|
||
|
||
- bpo-10510: distutils register and upload methods now use HTML standards
|
||
compliant CRLF line endings.
|
||
|
||
- bpo-9850: Fixed macpath.join() for empty first component. Patch by Oleg
|
||
Oshmyan.
|
||
|
||
- bpo-5309: distutils' build and build_ext commands now accept a ``-j``
|
||
option to enable parallel building of extension modules.
|
||
|
||
- bpo-22448: Improve canceled timer handles cleanup to prevent unbound
|
||
memory usage. Patch by Joshua Moore-Oliva.
|
||
|
||
- bpo-22427: TemporaryDirectory no longer attempts to clean up twice when
|
||
used in the with statement in generator.
|
||
|
||
- bpo-22362: Forbidden ambiguous octal escapes out of range 0-0o377 in
|
||
regular expressions.
|
||
|
||
- bpo-20912: Now directories added to ZIP file have correct Unix and MS-DOS
|
||
directory attributes.
|
||
|
||
- bpo-21866: ZipFile.close() no longer writes ZIP64 central directory
|
||
records if allowZip64 is false.
|
||
|
||
- bpo-22278: Fix urljoin problem with relative urls, a regression observed
|
||
after changes to issue22118 were submitted.
|
||
|
||
- bpo-22415: Fixed debugging output of the GROUPREF_EXISTS opcode in the re
|
||
module. Removed trailing spaces in debugging output.
|
||
|
||
- bpo-22423: Unhandled exception in thread no longer causes unhandled
|
||
AttributeError when sys.stderr is None.
|
||
|
||
- bpo-21332: Ensure that ``bufsize=1`` in subprocess.Popen() selects line
|
||
buffering, rather than block buffering. Patch by Akira Li.
|
||
|
||
- bpo-21091: Fix API bug: email.message.EmailMessage.is_attachment is now a
|
||
method.
|
||
|
||
- bpo-21079: Fix email.message.EmailMessage.is_attachment to return the
|
||
correct result when the header has parameters as well as a value.
|
||
|
||
- bpo-22247: Add NNTPError to nntplib.__all__.
|
||
|
||
- bpo-22366: urllib.request.urlopen will accept a context object
|
||
(SSLContext) as an argument which will then be used for HTTPS connection.
|
||
Patch by Alex Gaynor.
|
||
|
||
- bpo-4180: The warnings registries are now reset when the filters are
|
||
modified.
|
||
|
||
- bpo-22419: Limit the length of incoming HTTP request in wsgiref server to
|
||
65536 bytes and send a 414 error code for higher lengths. Patch
|
||
contributed by Devin Cook.
|
||
|
||
- Lax cookie parsing in http.cookies could be a security issue when combined
|
||
with non-standard cookie handling in some web browsers. Reported by
|
||
Sergey Bobrov.
|
||
|
||
- bpo-20537: logging methods now accept an exception instance as well as a
|
||
Boolean value or exception tuple. Thanks to Yury Selivanov for the patch.
|
||
|
||
- bpo-22384: An exception in Tkinter callback no longer crashes the program
|
||
when it is run with pythonw.exe.
|
||
|
||
- bpo-22168: Prevent turtle AttributeError with non-default Canvas on OS X.
|
||
|
||
- bpo-21147: sqlite3 now raises an exception if the request contains a null
|
||
character instead of truncating it. Based on patch by Victor Stinner.
|
||
|
||
- bpo-13968: The glob module now supports recursive search in subdirectories
|
||
using the ``**`` pattern.
|
||
|
||
- bpo-21951: Fixed a crash in Tkinter on AIX when called Tcl command with
|
||
empty string or tuple argument.
|
||
|
||
- bpo-21951: Tkinter now most likely raises MemoryError instead of crash if
|
||
the memory allocation fails.
|
||
|
||
- bpo-22338: Fix a crash in the json module on memory allocation failure.
|
||
|
||
- bpo-12410: imaplib.IMAP4 now supports the context management protocol.
|
||
Original patch by Tarek Ziadé.
|
||
|
||
- bpo-21270: We now override tuple methods in mock.call objects so that they
|
||
can be used as normal call attributes.
|
||
|
||
- bpo-16662: load_tests() is now unconditionally run when it is present in a
|
||
package's __init__.py. TestLoader.loadTestsFromModule() still accepts
|
||
use_load_tests, but it is deprecated and ignored. A new keyword-only
|
||
attribute `pattern` is added and documented. Patch given by Robert
|
||
Collins, tweaked by Barry Warsaw.
|
||
|
||
- bpo-22226: First letter no longer is stripped from the "status" key in the
|
||
result of Treeview.heading().
|
||
|
||
- bpo-19524: Fixed resource leak in the HTTP connection when an invalid
|
||
response is received. Patch by Martin Panter.
|
||
|
||
- bpo-20421: Add a .version() method to SSL sockets exposing the actual
|
||
protocol version in use.
|
||
|
||
- bpo-19546: configparser exceptions no longer expose implementation
|
||
details. Chained KeyErrors are removed, which leads to cleaner tracebacks.
|
||
Patch by Claudiu Popa.
|
||
|
||
- bpo-22051: turtledemo no longer reloads examples to re-run them.
|
||
Initialization of variables and gui setup should be done in main(), which
|
||
is called each time a demo is run, but not on import.
|
||
|
||
- bpo-21933: Turtledemo users can change the code font size with a menu
|
||
selection or control(command) '-' or '+' or control-mousewheel. Original
|
||
patch by Lita Cho.
|
||
|
||
- bpo-21597: The separator between the turtledemo text pane and the drawing
|
||
canvas can now be grabbed and dragged with a mouse. The code text pane
|
||
can be widened to easily view or copy the full width of the text. The
|
||
canvas can be widened on small screens. Original patches by Jan Kanis and
|
||
Lita Cho.
|
||
|
||
- bpo-18132: Turtledemo buttons no longer disappear when the window is
|
||
shrunk. Original patches by Jan Kanis and Lita Cho.
|
||
|
||
- bpo-22043: time.monotonic() is now always available.
|
||
``threading.Lock.acquire()``, ``threading.RLock.acquire()`` and socket
|
||
operations now use a monotonic clock, instead of the system clock, when a
|
||
timeout is used.
|
||
|
||
- bpo-21527: Add a default number of workers to ThreadPoolExecutor equal to
|
||
5 times the number of CPUs. Patch by Claudiu Popa.
|
||
|
||
- bpo-22216: smtplib now resets its state more completely after a quit. The
|
||
most obvious consequence of the previous behavior was a STARTTLS failure
|
||
during a connect/starttls/quit/connect/starttls sequence.
|
||
|
||
- bpo-22098: ctypes' BigEndianStructure and LittleEndianStructure now define
|
||
an empty __slots__ so that subclasses don't always get an instance dict.
|
||
Patch by Claudiu Popa.
|
||
|
||
- bpo-22185: Fix an occasional RuntimeError in threading.Condition.wait()
|
||
caused by mutation of the waiters queue without holding the lock. Patch
|
||
by Doug Zongker.
|
||
|
||
- bpo-22287: On UNIX, _PyTime_gettimeofday() now uses
|
||
clock_gettime(CLOCK_REALTIME) if available. As a side effect, Python now
|
||
depends on the librt library on Solaris and on Linux (only with glibc
|
||
older than 2.17).
|
||
|
||
- bpo-22182: Use e.args to unpack exceptions correctly in
|
||
distutils.file_util.move_file. Patch by Claudiu Popa.
|
||
|
||
- The webbrowser module now uses subprocess's start_new_session=True rather
|
||
than a potentially risky preexec_fn=os.setsid call.
|
||
|
||
- bpo-22042: signal.set_wakeup_fd(fd) now raises an exception if the file
|
||
descriptor is in blocking mode.
|
||
|
||
- bpo-16808: inspect.stack() now returns a named tuple instead of a tuple.
|
||
Patch by Daniel Shahaf.
|
||
|
||
- bpo-22236: Fixed Tkinter images copying operations in NoDefaultRoot mode.
|
||
|
||
- bpo-2527: Add a *globals* argument to timeit functions, in order to
|
||
override the globals namespace in which the timed code is executed. Patch
|
||
by Ben Roberts.
|
||
|
||
- bpo-22118: Switch urllib.parse to use RFC 3986 semantics for the
|
||
resolution of relative URLs, rather than RFCs 1808 and 2396. Patch by
|
||
Demian Brecht.
|
||
|
||
- bpo-21549: Added the "members" parameter to TarFile.list().
|
||
|
||
- bpo-19628: Allow compileall recursion depth to be specified with a -r
|
||
option.
|
||
|
||
- bpo-15696: Add a __sizeof__ implementation for mmap objects on Windows.
|
||
|
||
- bpo-22068: Avoided reference loops with Variables and Fonts in Tkinter.
|
||
|
||
- bpo-22165: SimpleHTTPRequestHandler now supports undecodable file names.
|
||
|
||
- bpo-15381: Optimized line reading in io.BytesIO.
|
||
|
||
- bpo-8797: Raise HTTPError on failed Basic Authentication immediately.
|
||
Initial patch by Sam Bull.
|
||
|
||
- bpo-20729: Restored the use of lazy iterkeys()/itervalues()/iteritems() in
|
||
the mailbox module.
|
||
|
||
- bpo-21448: Changed FeedParser feed() to avoid O(N\ :sup:`2`) behavior when
|
||
parsing long line. Original patch by Raymond Hettinger.
|
||
|
||
- bpo-22184: The functools LRU Cache decorator factory now gives an earlier
|
||
and clearer error message when the user forgets the required parameters.
|
||
|
||
- bpo-17923: glob() patterns ending with a slash no longer match non-dirs on
|
||
AIX. Based on patch by Delhallt.
|
||
|
||
- bpo-21725: Added support for RFC 6531 (SMTPUTF8) in smtpd.
|
||
|
||
- bpo-22176: Update the ctypes module's libffi to v3.1. This release adds
|
||
support for the Linux AArch64 and POWERPC ELF ABIv2 little endian
|
||
architectures.
|
||
|
||
- bpo-5411: Added support for the "xztar" format in the shutil module.
|
||
|
||
- bpo-21121: Don't force 3rd party C extensions to be built with
|
||
-Werror=declaration-after-statement.
|
||
|
||
- bpo-21975: Fixed crash when using uninitialized sqlite3.Row (in particular
|
||
when unpickling pickled sqlite3.Row). sqlite3.Row is now initialized in
|
||
the __new__() method.
|
||
|
||
- bpo-20170: Convert posixmodule to use Argument Clinic.
|
||
|
||
- bpo-21539: Add an *exists_ok* argument to `Pathlib.mkdir()` to mimic
|
||
`mkdir -p` and `os.makedirs()` functionality. When true, ignore
|
||
FileExistsErrors. Patch by Berker Peksag.
|
||
|
||
- bpo-22127: Bypass IDNA for pure-ASCII host names in the socket module (in
|
||
particular for numeric IPs).
|
||
|
||
- bpo-21047: set the default value for the *convert_charrefs* argument of
|
||
HTMLParser to True. Patch by Berker Peksag.
|
||
|
||
- Add an __all__ to html.entities.
|
||
|
||
- bpo-15114: the strict mode and argument of HTMLParser, HTMLParser.error,
|
||
and the HTMLParserError exception have been removed.
|
||
|
||
- bpo-22085: Dropped support of Tk 8.3 in Tkinter.
|
||
|
||
- bpo-21580: Now Tkinter correctly handles bytes arguments passed to Tk. In
|
||
particular this allows initializing images from binary data.
|
||
|
||
- bpo-22003: When initialized from a bytes object, io.BytesIO() now defers
|
||
making a copy until it is mutated, improving performance and memory use on
|
||
some use cases. Patch by David Wilson.
|
||
|
||
- bpo-22018: On Windows, signal.set_wakeup_fd() now also supports sockets. A
|
||
side effect is that Python depends to the WinSock library.
|
||
|
||
- bpo-22054: Add os.get_blocking() and os.set_blocking() functions to get
|
||
and set the blocking mode of a file descriptor (False if the O_NONBLOCK
|
||
flag is set, True otherwise). These functions are not available on
|
||
Windows.
|
||
|
||
- bpo-17172: Make turtledemo start as active on OS X even when run with
|
||
subprocess. Patch by Lita Cho.
|
||
|
||
- bpo-21704: Fix build error for _multiprocessing when semaphores are not
|
||
available. Patch by Arfrever Frehtes Taifersar Arahesis.
|
||
|
||
- bpo-20173: Convert sha1, sha256, sha512 and md5 to ArgumentClinic. Patch
|
||
by Vajrasky Kok.
|
||
|
||
- Fix repr(_socket.socket) on Windows 64-bit: don't fail with OverflowError
|
||
on closed socket. repr(socket.socket) already works fine.
|
||
|
||
- bpo-22033: Reprs of most Python implemented classes now contain actual
|
||
class name instead of hardcoded one.
|
||
|
||
- bpo-21947: The dis module can now disassemble generator-iterator objects
|
||
based on their gi_code attribute. Patch by Clement Rouault.
|
||
|
||
- bpo-16133: The asynchat.async_chat.handle_read() method now ignores
|
||
BlockingIOError exceptions.
|
||
|
||
- bpo-22044: Fixed premature DECREF in call_tzinfo_method. Patch by Tom
|
||
Flanagan.
|
||
|
||
- bpo-19884: readline: Disable the meta modifier key if stdout is not a
|
||
terminal to not write the ANSI sequence ``"\033[1034h"`` into stdout. This
|
||
sequence is used on some terminal (ex: TERM=xterm-256color") to enable
|
||
support of 8 bit characters.
|
||
|
||
- bpo-4350: Removed a number of out-of-dated and non-working for a long time
|
||
Tkinter methods.
|
||
|
||
- bpo-6167: Scrollbar.activate() now returns the name of active element if
|
||
the argument is not specified. Scrollbar.set() now always accepts only 2
|
||
arguments.
|
||
|
||
- bpo-15275: Clean up and speed up the ntpath module.
|
||
|
||
- bpo-21888: plistlib's load() and loads() now work if the fmt parameter is
|
||
specified.
|
||
|
||
- bpo-22032: __qualname__ instead of __name__ is now always used to format
|
||
fully qualified class names of Python implemented classes.
|
||
|
||
- bpo-22031: Reprs now always use hexadecimal format with the "0x" prefix
|
||
when contain an id in form " at 0x...".
|
||
|
||
- bpo-22018: signal.set_wakeup_fd() now raises an OSError instead of a
|
||
ValueError on ``fstat()`` failure.
|
||
|
||
- bpo-21044: tarfile.open() now handles fileobj with an integer 'name'
|
||
attribute. Based on patch by Antoine Pietri.
|
||
|
||
- bpo-21966: Respect -q command-line option when code module is ran.
|
||
|
||
- bpo-19076: Don't pass the redundant 'file' argument to self.error().
|
||
|
||
- bpo-16382: Improve exception message of warnings.warn() for bad category.
|
||
Initial patch by Phil Elson.
|
||
|
||
- bpo-21932: os.read() now uses a :c:func:`Py_ssize_t` type instead of
|
||
:c:expr:`int` for the size to support reading more than 2 GB at once. On
|
||
Windows, the size is truncated to INT_MAX. As any call to os.read(), the
|
||
OS may read less bytes than the number of requested bytes.
|
||
|
||
- bpo-21942: Fixed source file viewing in pydoc's server mode on Windows.
|
||
|
||
- bpo-11259: asynchat.async_chat().set_terminator() now raises a ValueError
|
||
if the number of received bytes is negative.
|
||
|
||
- bpo-12523: asynchat.async_chat.push() now raises a TypeError if it doesn't
|
||
get a bytes string
|
||
|
||
- bpo-21707: Add missing kwonlyargcount argument to
|
||
ModuleFinder.replace_paths_in_code().
|
||
|
||
- bpo-20639: calling Path.with_suffix('') allows removing the suffix again.
|
||
Patch by July Tikhonov.
|
||
|
||
- bpo-21714: Disallow the construction of invalid paths using
|
||
Path.with_name(). Original patch by Antony Lee.
|
||
|
||
- bpo-15014: Added 'auth' method to smtplib to make implementing auth
|
||
mechanisms simpler, and used it internally in the login method.
|
||
|
||
- bpo-21151: Fixed a segfault in the winreg module when ``None`` is passed
|
||
as a ``REG_BINARY`` value to SetValueEx. Patch by John Ehresman.
|
||
|
||
- bpo-21090: io.FileIO.readall() does not ignore I/O errors anymore. Before,
|
||
it ignored I/O errors if at least the first C call read() succeed.
|
||
|
||
- bpo-5800: headers parameter of wsgiref.headers.Headers is now optional.
|
||
Initial patch by Pablo Torres Navarrete and SilentGhost.
|
||
|
||
- bpo-21781: ssl.RAND_add() now supports strings longer than 2 GB.
|
||
|
||
- bpo-21679: Prevent extraneous fstat() calls during open(). Patch by
|
||
Bohuslav Kabrda.
|
||
|
||
- bpo-21863: cProfile now displays the module name of C extension functions,
|
||
in addition to their own name.
|
||
|
||
- bpo-11453: asyncore: emit a ResourceWarning when an unclosed file_wrapper
|
||
object is destroyed. The destructor now closes the file if needed. The
|
||
close() method can now be called twice: the second call does nothing.
|
||
|
||
- bpo-21858: Better handling of Python exceptions in the sqlite3 module.
|
||
|
||
- bpo-21476: Make sure the email.parser.BytesParser TextIOWrapper is
|
||
discarded after parsing, so the input file isn't unexpectedly closed.
|
||
|
||
- bpo-20295: imghdr now recognizes OpenEXR format images.
|
||
|
||
- bpo-21729: Used the "with" statement in the dbm.dumb module to ensure
|
||
files closing. Patch by Claudiu Popa.
|
||
|
||
- bpo-21491: socketserver: Fix a race condition in child processes reaping.
|
||
|
||
- bpo-21719: Added the ``st_file_attributes`` field to os.stat_result on
|
||
Windows.
|
||
|
||
- bpo-21832: Require named tuple inputs to be exact strings.
|
||
|
||
- bpo-21722: The distutils "upload" command now exits with a non-zero return
|
||
code when uploading fails. Patch by Martin Dengler.
|
||
|
||
- bpo-21723: asyncio.Queue: support any type of number (ex: float) for the
|
||
maximum size. Patch written by Vajrasky Kok.
|
||
|
||
- bpo-21711: support for "site-python" directories has now been removed from
|
||
the site module (it was deprecated in 3.4).
|
||
|
||
- bpo-17552: new socket.sendfile() method allowing a file to be sent over a
|
||
socket by using high-performance os.sendfile() on UNIX. Patch by Giampaolo
|
||
Rodola'.
|
||
|
||
- bpo-18039: dbm.dump.open() now always creates a new database when the flag
|
||
has the value 'n'. Patch by Claudiu Popa.
|
||
|
||
- bpo-21326: Add a new is_closed() method to asyncio.BaseEventLoop.
|
||
run_forever() and run_until_complete() methods of asyncio.BaseEventLoop
|
||
now raise an exception if the event loop was closed.
|
||
|
||
- bpo-21766: Prevent a security hole in CGIHTTPServer by URL unquoting paths
|
||
before checking for a CGI script at that path.
|
||
|
||
- bpo-21310: Fixed possible resource leak in failed open().
|
||
|
||
- bpo-21256: Printout of keyword args should be in deterministic order in a
|
||
mock function call. This will help to write better doctests.
|
||
|
||
- bpo-21677: Fixed chaining nonnormalized exceptions in io close() methods.
|
||
|
||
- bpo-11709: Fix the pydoc.help function to not fail when sys.stdin is not a
|
||
valid file.
|
||
|
||
- bpo-21515: tempfile.TemporaryFile now uses os.O_TMPFILE flag is available.
|
||
|
||
- bpo-13223: Fix pydoc.writedoc so that the HTML documentation for methods
|
||
that use 'self' in the example code is generated correctly.
|
||
|
||
- bpo-21463: In urllib.request, fix pruning of the FTP cache.
|
||
|
||
- bpo-21618: The subprocess module could fail to close open fds that were
|
||
inherited by the calling process and already higher than POSIX resource
|
||
limits would otherwise allow. On systems with a functioning /proc/self/fd
|
||
or /dev/fd interface the max is now ignored and all fds are closed.
|
||
|
||
- bpo-20383: Introduce importlib.util.module_from_spec() as the preferred
|
||
way to create a new module.
|
||
|
||
- bpo-21552: Fixed possible integer overflow of too long string lengths in
|
||
the tkinter module on 64-bit platforms.
|
||
|
||
- bpo-14315: The zipfile module now ignores extra fields in the central
|
||
directory that are too short to be parsed instead of letting a
|
||
struct.unpack error bubble up as this "bad data" appears in many real
|
||
world zip files in the wild and is ignored by other zip tools.
|
||
|
||
- bpo-13742: Added "key" and "reverse" parameters to heapq.merge(). (First
|
||
draft of patch contributed by Simon Sapin.)
|
||
|
||
- bpo-21402: tkinter.ttk now works when default root window is not set.
|
||
|
||
- bpo-3015: _tkinter.create() now creates tkapp object with wantobject=1 by
|
||
default.
|
||
|
||
- bpo-10203: sqlite3.Row now truly supports sequence protocol. In
|
||
particular it supports reverse() and negative indices. Original patch by
|
||
Claudiu Popa.
|
||
|
||
- bpo-18807: If copying (no symlinks) specified for a venv, then the python
|
||
interpreter aliases (python, python3) are now created by copying rather
|
||
than symlinking.
|
||
|
||
- bpo-20197: Added support for the WebP image type in the imghdr module.
|
||
Patch by Fabrice Aneche and Claudiu Popa.
|
||
|
||
- bpo-21513: Speedup some properties of IP addresses (IPv4Address,
|
||
IPv6Address) such as .is_private or .is_multicast.
|
||
|
||
- bpo-21137: Improve the repr for threading.Lock() and its variants by
|
||
showing the "locked" or "unlocked" status. Patch by Berker Peksag.
|
||
|
||
- bpo-21538: The plistlib module now supports loading of binary plist files
|
||
when reference or offset size is not a power of two.
|
||
|
||
- bpo-21455: Add a default backlog to socket.listen().
|
||
|
||
- bpo-21525: Most Tkinter methods which accepted tuples now accept lists
|
||
too.
|
||
|
||
- bpo-22166: With the assistance of a new internal _codecs._forget_codec
|
||
helping function, test_codecs now clears the encoding caches to avoid the
|
||
appearance of a reference leak
|
||
|
||
- bpo-22236: Tkinter tests now don't reuse default root window. New root
|
||
window is created for every test class.
|
||
|
||
- bpo-10744: Fix :pep:`3118` format strings on ctypes objects with a
|
||
nontrivial shape.
|
||
|
||
- bpo-20826: Optimize ipaddress.collapse_addresses().
|
||
|
||
- bpo-21487: Optimize ipaddress.summarize_address_range() and
|
||
ipaddress.{IPv4Network,IPv6Network}.subnets().
|
||
|
||
- bpo-21486: Optimize parsing of netmasks in ipaddress.IPv4Network and
|
||
ipaddress.IPv6Network.
|
||
|
||
- bpo-13916: Disallowed the surrogatepass error handler for non UTF-\*
|
||
encodings.
|
||
|
||
- bpo-20998: Fixed re.fullmatch() of repeated single character pattern with
|
||
ignore case. Original patch by Matthew Barnett.
|
||
|
||
- bpo-21075: fileinput.FileInput now reads bytes from standard stream if
|
||
binary mode is specified. Patch by Sam Kimbrel.
|
||
|
||
- bpo-19775: Add a samefile() method to pathlib Path objects. Initial patch
|
||
by Vajrasky Kok.
|
||
|
||
- bpo-21226: Set up modules properly in PyImport_ExecCodeModuleObject (and
|
||
friends).
|
||
|
||
- bpo-21398: Fix a unicode error in the pydoc pager when the documentation
|
||
contains characters not encodable to the stdout encoding.
|
||
|
||
- bpo-16531: ipaddress.IPv4Network and ipaddress.IPv6Network now accept an
|
||
(address, netmask) tuple argument, so as to easily construct network
|
||
objects from existing addresses.
|
||
|
||
- bpo-21156: importlib.abc.InspectLoader.source_to_code() is now a
|
||
staticmethod.
|
||
|
||
- bpo-21424: Simplified and optimized heaqp.nlargest() and nmsmallest() to
|
||
make fewer tuple comparisons.
|
||
|
||
- bpo-21396: Fix TextIOWrapper(..., write_through=True) to not force a
|
||
flush() on the underlying binary stream. Patch by akira.
|
||
|
||
- bpo-18314: Unlink now removes junctions on Windows. Patch by Kim Gräsman
|
||
|
||
- bpo-21088: Bugfix for curses.window.addch() regression in 3.4.0. In
|
||
porting to Argument Clinic, the first two arguments were reversed.
|
||
|
||
- bpo-21407: _decimal: The module now supports function signatures.
|
||
|
||
- bpo-10650: Remove the non-standard 'watchexp' parameter from the
|
||
Decimal.quantize() method in the Python version. It had never been
|
||
present in the C version.
|
||
|
||
- bpo-21469: Reduced the risk of false positives in robotparser by checking
|
||
to make sure that robots.txt has been read or does not exist prior to
|
||
returning True in can_fetch().
|
||
|
||
- bpo-19414: Have the OrderedDict mark deleted links as unusable. This gives
|
||
an early failure if the link is deleted during iteration.
|
||
|
||
- bpo-21421: Add __slots__ to the MappingViews ABC. Patch by Josh Rosenberg.
|
||
|
||
- bpo-21101: Eliminate double hashing in the C speed-up code for
|
||
collections.Counter().
|
||
|
||
- bpo-21321: itertools.islice() now releases the reference to the source
|
||
iterator when the slice is exhausted. Patch by Anton Afanasyev.
|
||
|
||
- bpo-21057: TextIOWrapper now allows the underlying binary stream's read()
|
||
or read1() method to return an arbitrary bytes-like object (such as a
|
||
memoryview). Patch by Nikolaus Rath.
|
||
|
||
- bpo-20951: SSLSocket.send() now raises either SSLWantReadError or
|
||
SSLWantWriteError on a non-blocking socket if the operation would block.
|
||
Previously, it would return 0. Patch by Nikolaus Rath.
|
||
|
||
- bpo-13248: removed previously deprecated asyncore.dispatcher __getattr__
|
||
cheap inheritance hack.
|
||
|
||
- bpo-9815: assertRaises now tries to clear references to local variables in
|
||
the exception's traceback.
|
||
|
||
- bpo-19940: ssl.cert_time_to_seconds() now interprets the given time string
|
||
in the UTC timezone (as specified in RFC 5280), not the local timezone.
|
||
|
||
- bpo-13204: Calling sys.flags.__new__ would crash the interpreter, now it
|
||
raises a TypeError.
|
||
|
||
- bpo-19385: Make operations on a closed dbm.dumb database always raise the
|
||
same exception.
|
||
|
||
- bpo-21207: Detect when the os.urandom cached fd has been closed or
|
||
replaced, and open it anew.
|
||
|
||
- bpo-21291: subprocess's Popen.wait() is now thread safe so that multiple
|
||
threads may be calling wait() or poll() on a Popen instance at the same
|
||
time without losing the Popen.returncode value.
|
||
|
||
- bpo-21127: Path objects can now be instantiated from str subclass
|
||
instances (such as ``numpy.str_``).
|
||
|
||
- bpo-15002: urllib.response object to use _TemporaryFileWrapper (and
|
||
_TemporaryFileCloser) facility. Provides a better way to handle file
|
||
descriptor close. Patch contributed by Christian Theune.
|
||
|
||
- bpo-12220: mindom now raises a custom ValueError indicating it doesn't
|
||
support spaces in URIs instead of letting a 'split' ValueError bubble up.
|
||
|
||
- bpo-21068: The ssl.PROTOCOL* constants are now enum members.
|
||
|
||
- bpo-21276: posixmodule: Don't define USE_XATTRS on KFreeBSD and the Hurd.
|
||
|
||
- bpo-21262: New method assert_not_called for Mock. It raises AssertionError
|
||
if the mock has been called.
|
||
|
||
- bpo-21238: New keyword argument `unsafe` to Mock. It raises
|
||
`AttributeError` incase of an attribute startswith assert or assret.
|
||
|
||
- bpo-20896: ssl.get_server_certificate() now uses PROTOCOL_SSLv23, not
|
||
PROTOCOL_SSLv3, for maximum compatibility.
|
||
|
||
- bpo-21239: patch.stopall() didn't work deterministically when the same
|
||
name was patched more than once.
|
||
|
||
- bpo-21203: Updated fileConfig and dictConfig to remove inconsistencies.
|
||
Thanks to Jure Koren for the patch.
|
||
|
||
- bpo-21222: Passing name keyword argument to mock.create_autospec now
|
||
works.
|
||
|
||
- bpo-21197: Add lib64 -> lib symlink in venvs on 64-bit non-OS X POSIX.
|
||
|
||
- bpo-17498: Some SMTP servers disconnect after certain errors, violating
|
||
strict RFC conformance. Instead of losing the error code when we issue
|
||
the subsequent RSET, smtplib now returns the error code and defers raising
|
||
the SMTPServerDisconnected error until the next command is issued.
|
||
|
||
- bpo-17826: setting an iterable side_effect on a mock function created by
|
||
create_autospec now works. Patch by Kushal Das.
|
||
|
||
- bpo-7776: Fix ``Host:`` header and reconnection when using
|
||
http.client.HTTPConnection.set_tunnel(). Patch by Nikolaus Rath.
|
||
|
||
- bpo-20968: unittest.mock.MagicMock now supports division. Patch by
|
||
Johannes Baiter.
|
||
|
||
- bpo-21529: Fix arbitrary memory access in JSONDecoder.raw_decode with a
|
||
negative second parameter. Bug reported by Guido Vranken. (See also:
|
||
CVE-2014-4616)
|
||
|
||
- bpo-21169: getpass now handles non-ascii characters that the input stream
|
||
encoding cannot encode by re-encoding using the replace error handler.
|
||
|
||
- bpo-21171: Fixed undocumented filter API of the rot13 codec. Patch by
|
||
Berker Peksag.
|
||
|
||
- bpo-20539: Improved math.factorial error message for large positive inputs
|
||
and changed exception type (OverflowError -> ValueError) for large
|
||
negative inputs.
|
||
|
||
- bpo-21172: isinstance check relaxed from dict to collections.Mapping.
|
||
|
||
- bpo-21155: asyncio.EventLoop.create_unix_server() now raises a ValueError
|
||
if path and sock are specified at the same time.
|
||
|
||
- bpo-21136: Avoid unnecessary normalization of Fractions resulting from
|
||
power and other operations. Patch by Raymond Hettinger.
|
||
|
||
- bpo-17621: Introduce importlib.util.LazyLoader.
|
||
|
||
- bpo-21076: signal module constants were turned into enums. Patch by
|
||
Giampaolo Rodola'.
|
||
|
||
- bpo-20636: Improved the repr of Tkinter widgets.
|
||
|
||
- bpo-19505: The items, keys, and values views of OrderedDict now support
|
||
reverse iteration using reversed().
|
||
|
||
- bpo-21149: Improved thread-safety in logging cleanup during interpreter
|
||
shutdown. Thanks to Devin Jeanpierre for the patch.
|
||
|
||
- bpo-21058: Fix a leak of file descriptor in
|
||
:func:`tempfile.NamedTemporaryFile`, close the file descriptor if
|
||
:func:`io.open` fails
|
||
|
||
- bpo-21200: Return None from pkgutil.get_loader() when __spec__ is missing.
|
||
|
||
- bpo-21013: Enhance ssl.create_default_context() when used for server side
|
||
sockets to provide better security by default.
|
||
|
||
- bpo-20145: `assertRaisesRegex` and `assertWarnsRegex` now raise a
|
||
TypeError if the second argument is not a string or compiled regex.
|
||
|
||
- bpo-20633: Replace relative import by absolute import.
|
||
|
||
- bpo-20980: Stop wrapping exception when using ThreadPool.
|
||
|
||
- bpo-21082: In os.makedirs, do not set the process-wide umask. Note this
|
||
changes behavior of makedirs when exist_ok=True.
|
||
|
||
- bpo-20990: Fix issues found by pyflakes for multiprocessing.
|
||
|
||
- bpo-21015: SSL contexts will now automatically select an elliptic curve
|
||
for ECDH key exchange on OpenSSL 1.0.2 and later, and otherwise default to
|
||
"prime256v1".
|
||
|
||
- bpo-21000: Improve the command-line interface of json.tool.
|
||
|
||
- bpo-20995: Enhance default ciphers used by the ssl module to enable better
|
||
security and prioritize perfect forward secrecy.
|
||
|
||
- bpo-20884: Don't assume that __file__ is defined on importlib.__init__.
|
||
|
||
- bpo-21499: Ignore __builtins__ in several test_importlib.test_api tests.
|
||
|
||
- bpo-20627: xmlrpc.client.ServerProxy is now a context manager.
|
||
|
||
- bpo-19165: The formatter module now raises DeprecationWarning instead of
|
||
PendingDeprecationWarning.
|
||
|
||
- bpo-13936: Remove the ability of datetime.time instances to be considered
|
||
false in boolean contexts.
|
||
|
||
- bpo-18931: selectors module now supports /dev/poll on Solaris. Patch by
|
||
Giampaolo Rodola'.
|
||
|
||
- bpo-19977: When the ``LC_TYPE`` locale is the POSIX locale (``C`` locale),
|
||
:py:data:`sys.stdin` and :py:data:`sys.stdout` are now using the
|
||
``surrogateescape`` error handler, instead of the ``strict`` error
|
||
handler.
|
||
|
||
- bpo-20574: Implement incremental decoder for cp65001 code (Windows code
|
||
page 65001, Microsoft UTF-8).
|
||
|
||
- bpo-20879: Delay the initialization of encoding and decoding tables for
|
||
base32, ascii85 and base85 codecs in the base64 module, and delay the
|
||
initialization of the unquote_to_bytes() table of the urllib.parse module,
|
||
to not waste memory if these modules are not used.
|
||
|
||
- bpo-19157: Include the broadcast address in the usuable hosts for IPv6 in
|
||
ipaddress.
|
||
|
||
- bpo-11599: When an external command (e.g. compiler) fails, distutils now
|
||
prints out the whole command line (instead of just the command name) if
|
||
the environment variable DISTUTILS_DEBUG is set.
|
||
|
||
- bpo-4931: distutils should not produce unhelpful "error: None" messages
|
||
anymore. distutils.util.grok_environment_error is kept but doc-deprecated.
|
||
|
||
- bpo-20875: Prevent possible gzip "'read' is not defined" NameError. Patch
|
||
by Claudiu Popa.
|
||
|
||
- bpo-11558: ``email.message.Message.attach`` now returns a more useful
|
||
error message if ``attach`` is called on a message for which
|
||
``is_multipart`` is False.
|
||
|
||
- bpo-20283: RE pattern methods now accept the string keyword parameters as
|
||
documented. The pattern and source keyword parameters are left as
|
||
deprecated aliases.
|
||
|
||
- bpo-20778: Fix modulefinder to work with bytecode-only modules.
|
||
|
||
- bpo-20791: copy.copy() now doesn't make a copy when the input is a bytes
|
||
object. Initial patch by Peter Otten.
|
||
|
||
- bpo-19748: On AIX, time.mktime() now raises an OverflowError for year
|
||
outsize range [1902; 2037].
|
||
|
||
- bpo-19573: inspect.signature: Use enum for parameter kind constants.
|
||
|
||
- bpo-20726: inspect.signature: Make Signature and Parameter picklable.
|
||
|
||
- bpo-17373: Add inspect.Signature.from_callable method.
|
||
|
||
- bpo-20378: Improve repr of inspect.Signature and inspect.Parameter.
|
||
|
||
- bpo-20816: Fix inspect.getcallargs() to raise correct TypeError for
|
||
missing keyword-only arguments. Patch by Jeremiah Lowin.
|
||
|
||
- bpo-20817: Fix inspect.getcallargs() to fail correctly if more than 3
|
||
arguments are missing. Patch by Jeremiah Lowin.
|
||
|
||
- bpo-6676: Ensure a meaningful exception is raised when attempting to parse
|
||
more than one XML document per pyexpat xmlparser instance. (Original
|
||
patches by Hirokazu Yamamoto and Amaury Forgeot d'Arc, with suggested
|
||
wording by David Gutteridge)
|
||
|
||
- bpo-21117: Fix inspect.signature to better support functools.partial. Due
|
||
to the specifics of functools.partial implementation,
|
||
positional-or-keyword arguments passed as keyword arguments become
|
||
keyword-only.
|
||
|
||
- bpo-20334: inspect.Signature and inspect.Parameter are now hashable.
|
||
Thanks to Antony Lee for bug reports and suggestions.
|
||
|
||
- bpo-15916: doctest.DocTestSuite returns an empty unittest.TestSuite
|
||
instead of raising ValueError if it finds no tests
|
||
|
||
- bpo-21209: Fix asyncio.tasks.CoroWrapper to workaround a bug in yield-from
|
||
implementation in CPythons prior to 3.4.1.
|
||
|
||
- asyncio: Add gi_{frame,running,code} properties to CoroWrapper (upstream
|
||
issue #163).
|
||
|
||
- bpo-21311: Avoid exception in _osx_support with non-standard compiler
|
||
configurations. Patch by John Szakmeister.
|
||
|
||
- bpo-11571: Ensure that the turtle window becomes the topmost window when
|
||
launched on OS X.
|
||
|
||
- bpo-21801: Validate that __signature__ is None or an instance of
|
||
Signature.
|
||
|
||
- bpo-21923: Prevent AttributeError in
|
||
distutils.sysconfig.customize_compiler due to possible uninitialized
|
||
_config_vars.
|
||
|
||
- bpo-21323: Fix http.server to again handle scripts in CGI subdirectories,
|
||
broken by the fix for security issue #19435. Patch by Zach Byrne.
|
||
|
||
- bpo-22733: Fix ffi_prep_args not zero-extending argument values correctly
|
||
on 64-bit Windows.
|
||
|
||
- bpo-23302: Default to TCP_NODELAY=1 upon establishing an HTTPConnection.
|
||
Removed use of hard-coded MSS as it's an optimization that's no longer
|
||
needed with Nagle disabled.
|
||
|
||
IDLE
|
||
----
|
||
|
||
- bpo-20577: Configuration of the max line length for the FormatParagraph
|
||
extension has been moved from the General tab of the Idle preferences
|
||
dialog to the FormatParagraph tab of the Config Extensions dialog. Patch
|
||
by Tal Einat.
|
||
|
||
- bpo-16893: Update Idle doc chapter to match current Idle and add new
|
||
information.
|
||
|
||
- bpo-3068: Add Idle extension configuration dialog to Options menu. Changes
|
||
are written to HOME/.idlerc/config-extensions.cfg. Original patch by Tal
|
||
Einat.
|
||
|
||
- bpo-16233: A module browser (File : Class Browser, Alt+C) requires an
|
||
editor window with a filename. When Class Browser is requested otherwise,
|
||
from a shell, output window, or 'Untitled' editor, Idle no longer displays
|
||
an error box. It now pops up an Open Module box (Alt+M). If a valid name
|
||
is entered and a module is opened, a corresponding browser is also opened.
|
||
|
||
- bpo-4832: Save As to type Python files automatically adds .py to the name
|
||
you enter (even if your system does not display it). Some systems
|
||
automatically add .txt when type is Text files.
|
||
|
||
- bpo-21986: Code objects are not normally pickled by the pickle module. To
|
||
match this, they are no longer pickled when running under Idle.
|
||
|
||
- bpo-17390: Adjust Editor window title; remove 'Python', move version to
|
||
end.
|
||
|
||
- bpo-14105: Idle debugger breakpoints no longer disappear when inserting or
|
||
deleting lines.
|
||
|
||
- bpo-17172: Turtledemo can now be run from Idle. Currently, the entry is on
|
||
the Help menu, but it may move to Run. Patch by Ramchandra Apt and Lita
|
||
Cho.
|
||
|
||
- bpo-21765: Add support for non-ascii identifiers to HyperParser.
|
||
|
||
- bpo-21940: Add unittest for WidgetRedirector. Initial patch by Saimadhav
|
||
Heblikar.
|
||
|
||
- bpo-18592: Add unittest for SearchDialogBase. Patch by Phil Webster.
|
||
|
||
- bpo-21694: Add unittest for ParenMatch. Patch by Saimadhav Heblikar.
|
||
|
||
- bpo-21686: add unittest for HyperParser. Original patch by Saimadhav
|
||
Heblikar.
|
||
|
||
- bpo-12387: Add missing upper(lower)case versions of default Windows key
|
||
bindings for Idle so Caps Lock does not disable them. Patch by Roger
|
||
Serwy.
|
||
|
||
- bpo-21695: Closing a Find-in-files output window while the search is still
|
||
in progress no longer closes Idle.
|
||
|
||
- bpo-18910: Add unittest for textView. Patch by Phil Webster.
|
||
|
||
- bpo-18292: Add unittest for AutoExpand. Patch by Saihadhav Heblikar.
|
||
|
||
- bpo-18409: Add unittest for AutoComplete. Patch by Phil Webster.
|
||
|
||
- bpo-21477: htest.py - Improve framework, complete set of tests. Patches by
|
||
Saimadhav Heblikar
|
||
|
||
- bpo-18104: Add idlelib/idle_test/htest.py with a few sample tests to begin
|
||
consolidating and improving human-validated tests of Idle. Change other
|
||
files as needed to work with htest. Running the module as __main__ runs
|
||
all tests.
|
||
|
||
- bpo-21139: Change default paragraph width to 72, the :pep:`8`
|
||
recommendation.
|
||
|
||
- bpo-21284: Paragraph reformat test passes after user changes reformat
|
||
width.
|
||
|
||
- bpo-17654: Ensure IDLE menus are customized properly on OS X for
|
||
non-framework builds and for all variants of Tk.
|
||
|
||
- bpo-23180: Rename IDLE "Windows" menu item to "Window". Patch by Al
|
||
Sweigart.
|
||
|
||
Build
|
||
-----
|
||
|
||
- bpo-15506: Use standard PKG_PROG_PKG_CONFIG autoconf macro in the
|
||
configure script.
|
||
|
||
- bpo-22935: Allow the ssl module to be compiled if openssl doesn't support
|
||
SSL 3.
|
||
|
||
- bpo-22592: Drop support of the Borland C compiler to build Python. The
|
||
distutils module still supports it to build extensions.
|
||
|
||
- bpo-22591: Drop support of MS-DOS, especially of the DJGPP compiler
|
||
(MS-DOS port of GCC).
|
||
|
||
- bpo-16537: Check whether self.extensions is empty in setup.py. Patch by
|
||
Jonathan Hosmer.
|
||
|
||
- bpo-22359: Remove incorrect uses of recursive make. Patch by Jonas
|
||
Wagner.
|
||
|
||
- bpo-21958: Define HAVE_ROUND when building with Visual Studio 2013 and
|
||
above. Patch by Zachary Turner.
|
||
|
||
- bpo-18093: the programs that embed the CPython runtime are now in a
|
||
separate "Programs" directory, rather than being kept in the Modules
|
||
directory.
|
||
|
||
- bpo-15759: "make suspicious", "make linkcheck" and "make doctest" in Doc/
|
||
now display special message when and only when there are failures.
|
||
|
||
- bpo-21141: The Windows build process no longer attempts to find Perl,
|
||
instead relying on OpenSSL source being configured and ready to build.
|
||
The ``PCbuild\build_ssl.py`` script has been re-written and re-named to
|
||
``PCbuild\prepare_ssl.py``, and takes care of configuring OpenSSL source
|
||
for both 32 and 64 bit platforms. OpenSSL sources obtained from
|
||
svn.python.org will always be pre-configured and ready to build.
|
||
|
||
- bpo-21037: Add a build option to enable AddressSanitizer support.
|
||
|
||
- bpo-19962: The Windows build process now creates "python.bat" in the root
|
||
of the source tree, which passes all arguments through to the most
|
||
recently built interpreter.
|
||
|
||
- bpo-21285: Refactor and fix curses configure check to always search in a
|
||
ncursesw directory.
|
||
|
||
- bpo-15234: For BerkeleyDB and Sqlite, only add the found library and
|
||
include directories if they aren't already being searched. This avoids an
|
||
explicit runtime library dependency.
|
||
|
||
- bpo-17861: Tools/scripts/generate_opcode_h.py automatically regenerates
|
||
Include/opcode.h from Lib/opcode.py if the latter gets any change.
|
||
|
||
- bpo-20644: OS X installer build support for documentation build changes in
|
||
3.4.1: assume externally supplied sphinx-build is available in /usr/bin.
|
||
|
||
- bpo-20022: Eliminate use of deprecated bundlebuilder in OS X builds.
|
||
|
||
- bpo-15968: Incorporated Tcl, Tk, and Tix builds into the Windows build
|
||
solution.
|
||
|
||
- bpo-17095: Fix Modules/Setup *shared* support.
|
||
|
||
- bpo-21811: Anticipated fixes to support OS X versions > 10.9.
|
||
|
||
- bpo-21166: Prevent possible segfaults and other random failures of python
|
||
--generate-posix-vars in pybuilddir.txt build target.
|
||
|
||
- bpo-18096: Fix library order returned by python-config.
|
||
|
||
- bpo-17219: Add library build dir for Python extension cross-builds.
|
||
|
||
- bpo-22919: Windows build updated to support VC 14.0 (Visual Studio 2015),
|
||
which will be used for the official release.
|
||
|
||
- bpo-21236: Build _msi.pyd with cabinet.lib instead of fci.lib
|
||
|
||
- bpo-17128: Use private version of OpenSSL for OS X 10.5+ installer.
|
||
|
||
C API
|
||
-----
|
||
|
||
- bpo-14203: Remove obsolete support for view==NULL in PyBuffer_FillInfo(),
|
||
bytearray_getbuffer(), bytesiobuf_getbuffer() and array_buffer_getbuf().
|
||
All functions now raise BufferError in that case.
|
||
|
||
- bpo-22445: PyBuffer_IsContiguous() now implements precise contiguity
|
||
tests, compatible with NumPy's NPY_RELAXED_STRIDES_CHECKING compilation
|
||
flag. Previously the function reported false negatives for corner cases.
|
||
|
||
- bpo-22079: PyType_Ready() now checks that statically allocated type has no
|
||
dynamically allocated bases.
|
||
|
||
- bpo-22453: Removed non-documented macro PyObject_REPR().
|
||
|
||
- bpo-18395: Rename ``_Py_char2wchar()`` to :c:func:`Py_DecodeLocale`,
|
||
rename ``_Py_wchar2char()`` to :c:func:`Py_EncodeLocale`, and document
|
||
these functions.
|
||
|
||
- bpo-21233: Add new C functions: PyMem_RawCalloc(), PyMem_Calloc(),
|
||
PyObject_Calloc(), _PyObject_GC_Calloc(). bytes(int) is now using
|
||
``calloc()`` instead of ``malloc()`` for large objects which is faster and
|
||
use less memory.
|
||
|
||
- bpo-20942: PyImport_ImportFrozenModuleObject() no longer sets __file__ to
|
||
match what importlib does; this affects _frozen_importlib as well as any
|
||
module loaded using imp.init_frozen().
|
||
|
||
Documentation
|
||
-------------
|
||
|
||
- bpo-19548: Update the codecs module documentation to better cover the
|
||
distinction between text encodings and other codecs, together with other
|
||
clarifications. Patch by Martin Panter.
|
||
|
||
- bpo-22394: Doc/Makefile now supports ``make venv PYTHON=../python`` to
|
||
create a venv for generating the documentation, e.g., ``make html
|
||
PYTHON=venv/bin/python3``.
|
||
|
||
- bpo-21514: The documentation of the json module now refers to new JSON RFC
|
||
7159 instead of obsoleted RFC 4627.
|
||
|
||
- bpo-21777: The binary sequence methods on bytes and bytearray are now
|
||
documented explicitly, rather than assuming users will be able to derive
|
||
the expected behaviour from the behaviour of the corresponding str
|
||
methods.
|
||
|
||
- bpo-6916: undocument deprecated asynchat.fifo class.
|
||
|
||
- bpo-17386: Expanded functionality of the ``Doc/make.bat`` script to make
|
||
it much more comparable to ``Doc/Makefile``.
|
||
|
||
- bpo-21312: Update the thread_foobar.h template file to include newer
|
||
threading APIs. Patch by Jack McCracken.
|
||
|
||
- bpo-21043: Remove the recommendation for specific CA organizations and to
|
||
mention the ability to load the OS certificates.
|
||
|
||
- bpo-20765: Add missing documentation for PurePath.with_name() and
|
||
PurePath.with_suffix().
|
||
|
||
- bpo-19407: New package installation and distribution guides based on the
|
||
Python Packaging Authority tools. Existing guides have been retained as
|
||
legacy links from the distutils docs, as they still contain some required
|
||
reference material for tool developers that isn't recorded anywhere else.
|
||
|
||
- bpo-19697: Document cases where __main__.__spec__ is None.
|
||
|
||
Tests
|
||
-----
|
||
|
||
- bpo-18982: Add tests for CLI of the calendar module.
|
||
|
||
- bpo-19548: Added some additional checks to test_codecs to ensure that
|
||
statements in the updated documentation remain accurate. Patch by Martin
|
||
Panter.
|
||
|
||
- bpo-22838: All test_re tests now work with unittest test discovery.
|
||
|
||
- bpo-22173: Update lib2to3 tests to use unittest test discovery.
|
||
|
||
- bpo-16000: Convert test_curses to use unittest.
|
||
|
||
- bpo-21456: Skip two tests in test_urllib2net.py if _ssl module not
|
||
present. Patch by Remi Pointel.
|
||
|
||
- bpo-20746: Fix test_pdb to run in refleak mode (-R). Patch by Xavier de
|
||
Gaye.
|
||
|
||
- bpo-22060: test_ctypes has been somewhat cleaned up and simplified; it now
|
||
uses unittest test discovery to find its tests.
|
||
|
||
- bpo-22104: regrtest.py no longer holds a reference to the suite of tests
|
||
loaded from test modules that don't define test_main().
|
||
|
||
- bpo-22111: Assorted cleanups in test_imaplib. Patch by Milan Oberkirch.
|
||
|
||
- bpo-22002: Added ``load_package_tests`` function to test.support and used
|
||
it to implement/augment test discovery in test_asyncio, test_email,
|
||
test_importlib, test_json, and test_tools.
|
||
|
||
- bpo-21976: Fix test_ssl to accept LibreSSL version strings. Thanks to
|
||
William Orr.
|
||
|
||
- bpo-21918: Converted test_tools from a module to a package containing
|
||
separate test files for each tested script.
|
||
|
||
- bpo-9554: Use modern unittest features in test_argparse. Initial patch by
|
||
Denver Coneybeare and Radu Voicilas.
|
||
|
||
- bpo-20155: Changed HTTP method names in failing tests in test_httpservers
|
||
so that packet filtering software (specifically Windows Base Filtering
|
||
Engine) does not interfere with the transaction semantics expected by the
|
||
tests.
|
||
|
||
- bpo-19493: Refactored the ctypes test package to skip tests explicitly
|
||
rather than silently.
|
||
|
||
- bpo-18492: All resources are now allowed when tests are not run by
|
||
regrtest.py.
|
||
|
||
- bpo-21634: Fix pystone micro-benchmark: use floor division instead of true
|
||
division to benchmark integers instead of floating point numbers. Set
|
||
pystone version to 1.2. Patch written by Lennart Regebro.
|
||
|
||
- bpo-21605: Added tests for Tkinter images.
|
||
|
||
- bpo-21493: Added test for ntpath.expanduser(). Original patch by Claudiu
|
||
Popa.
|
||
|
||
- bpo-19925: Added tests for the spwd module. Original patch by Vajrasky
|
||
Kok.
|
||
|
||
- bpo-21522: Added Tkinter tests for Listbox.itemconfigure(),
|
||
PanedWindow.paneconfigure(), and Menu.entryconfigure().
|
||
|
||
- bpo-17756: Fix test_code test when run from the installed location.
|
||
|
||
- bpo-17752: Fix distutils tests when run from the installed location.
|
||
|
||
- bpo-18604: Consolidated checks for GUI availability. All platforms now at
|
||
least check whether Tk can be instantiated when the GUI resource is
|
||
requested.
|
||
|
||
- bpo-21275: Fix a socket test on KFreeBSD.
|
||
|
||
- bpo-21223: Pass test_site/test_startup_imports when some of the extensions
|
||
are built as builtins.
|
||
|
||
- bpo-20635: Added tests for Tk geometry managers.
|
||
|
||
- Add test case for freeze.
|
||
|
||
- bpo-20743: Fix a reference leak in test_tcl.
|
||
|
||
- bpo-21097: Move test_namespace_pkgs into test_importlib.
|
||
|
||
- bpo-21503: Use test_both() consistently in test_importlib.
|
||
|
||
- bpo-20939: Avoid various network test failures due to new redirect of
|
||
http://www.python.org/ to https://www.python.org: use
|
||
http://www.example.com instead.
|
||
|
||
- bpo-20668: asyncio tests no longer rely on tests.txt file. (Patch by
|
||
Vajrasky Kok)
|
||
|
||
- bpo-21093: Prevent failures of ctypes test_macholib on OS X if a copy of
|
||
libz exists in $HOME/lib or /usr/local/lib.
|
||
|
||
- bpo-22770: Prevent some Tk segfaults on OS X when running gui tests.
|
||
|
||
- bpo-23211: Workaround test_logging failure on some OS X 10.6 systems.
|
||
|
||
- bpo-23345: Prevent test_ssl failures with large OpenSSL patch level values
|
||
(like 0.9.8zc).
|
||
|
||
Tools/Demos
|
||
-----------
|
||
|
||
- bpo-22314: pydoc now works when the LINES environment variable is set.
|
||
|
||
- bpo-22615: Argument Clinic now supports the "type" argument for the int
|
||
converter. This permits using the int converter with enums and typedefs.
|
||
|
||
- bpo-20076: The makelocalealias.py script no longer ignores UTF-8 mapping.
|
||
|
||
- bpo-20079: The makelocalealias.py script now can parse the SUPPORTED file
|
||
from glibc sources and supports command line options for source paths.
|
||
|
||
- bpo-22201: Command-line interface of the zipfile module now correctly
|
||
extracts ZIP files with directory entries. Patch by Ryan Wilson.
|
||
|
||
- bpo-22120: For functions using an unsigned integer return converter,
|
||
Argument Clinic now generates a cast to that type for the comparison to -1
|
||
in the generated code. (This suppresses a compilation warning.)
|
||
|
||
- bpo-18974: Tools/scripts/diff.py now uses argparse instead of optparse.
|
||
|
||
- bpo-21906: Make Tools/scripts/md5sum.py work in Python 3. Patch by Zachary
|
||
Ware.
|
||
|
||
- bpo-21629: Fix Argument Clinic's "--converters" feature.
|
||
|
||
- Add support for ``yield from`` to 2to3.
|
||
|
||
- Add support for the :pep:`465` matrix multiplication operator to 2to3.
|
||
|
||
- bpo-16047: Fix module exception list and __file__ handling in freeze.
|
||
Patch by Meador Inge.
|
||
|
||
- bpo-11824: Consider ABI tags in freeze. Patch by Meador Inge.
|
||
|
||
- bpo-20535: PYTHONWARNING no longer affects the run_tests.py script. Patch
|
||
by Arfrever Frehtes Taifersar Arahesis.
|
||
|
||
Windows
|
||
-------
|
||
|
||
- bpo-23260: Update Windows installer
|
||
|
||
- The bundled version of Tcl/Tk has been updated to 8.6.3. The most visible
|
||
result of this change is the addition of new native file dialogs when
|
||
running on Windows Vista or newer. See Tcl/Tk's TIP 432 for more
|
||
information. Also, this version of Tcl/Tk includes support for Windows
|
||
10.
|
||
|
||
- bpo-17896: The Windows build scripts now expect external library sources
|
||
to be in ``PCbuild\..\externals`` rather than ``PCbuild\..\..``.
|
||
|
||
- bpo-17717: The Windows build scripts now use a copy of NASM pulled from
|
||
svn.python.org to build OpenSSL.
|
||
|
||
- bpo-21907: Improved the batch scripts provided for building Python.
|
||
|
||
- bpo-22644: The bundled version of OpenSSL has been updated to 1.0.1j.
|
||
|
||
- bpo-10747: Use versioned labels in the Windows start menu. Patch by Olive
|
||
Kilburn.
|
||
|
||
- bpo-22980: .pyd files with a version and platform tag (for example,
|
||
".cp35-win32.pyd") will now be loaded in preference to those without tags.
|
||
|
||
|
||
**(For information about older versions, consult the HISTORY file.)**
|