|
- +++++++++++
- Python News
- +++++++++++
-
- What's New in Python 3.12.3 final?
- ==================================
-
- *Release date: 2024-04-09*
-
- Security
- --------
-
- - gh-issue-115398: Allow controlling Expat >=2.6.0 reparse deferral
- (CVE-2023-52425) by adding five new methods:
-
- * :meth:`xml.etree.ElementTree.XMLParser.flush`
- * :meth:`xml.etree.ElementTree.XMLPullParser.flush`
- * :meth:`xml.parsers.expat.xmlparser.GetReparseDeferralEnabled`
- * :meth:`xml.parsers.expat.xmlparser.SetReparseDeferralEnabled`
- * :meth:`xml.sax.expatreader.ExpatParser.flush`
-
- - gh-issue-115399: Update bundled libexpat to 2.6.0
-
- - gh-issue-115243: Fix possible crashes in :meth:`collections.deque.index`
- when the deque is concurrently modified.
-
- - gh-issue-114572: :meth:`ssl.SSLContext.cert_store_stats` and
- :meth:`ssl.SSLContext.get_ca_certs` now correctly lock access to the
- certificate store, when the :class:`ssl.SSLContext` is shared across
- multiple threads.
-
- Core and Builtins
- -----------------
-
- - gh-issue-109120: Added handle of incorrect star expressions, e.g ``f(3,
- *)``. Patch by Grigoryev Semyon
-
- - gh-issue-99108: Updated the :mod:`hashlib` built-in `HACL\* project`_ C
- code from upstream that we use for many implementations when they are not
- present via OpenSSL in a given build. This also avoids the rare potential
- for a C symbol name one definition rule linking issue.
-
- .. _HACL\* project: https://github.com/hacl-star/hacl-star
-
- - gh-issue-116735: For ``INSTRUMENTED_CALL_FUNCTION_EX``, set ``arg0`` to
- ``sys.monitoring.MISSING`` instead of ``None`` for
- :monitoring-event:`CALL` event.
-
- - gh-issue-113964: Starting new threads and process creation through
- :func:`os.fork` are now only prevented once all non-daemon threads exit.
-
- - gh-issue-116604: Respect the status of the garbage collector when indirect
- calls are made via :c:func:`PyErr_CheckSignals` and the evaluation
- breaker. Patch by Pablo Galindo
-
- - gh-issue-116626: Ensure ``INSTRUMENTED_CALL_FUNCTION_EX`` always emits
- :monitoring-event:`CALL`
-
- - gh-issue-116296: Fix possible refleak in :meth:`!object.__reduce__`
- internal error handling.
-
- - gh-issue-116034: Fix location of the error on a failed assertion.
-
- - gh-issue-115823: Properly calculate error ranges in the parser when
- raising :exc:`SyntaxError` exceptions caused by invalid byte sequences.
- Patch by Pablo Galindo
-
- - gh-issue-112087: For an empty reverse iterator for list will be reduced to
- :func:`reversed`. Patch by Donghee Na.
-
- - gh-issue-115154: Fix a bug that was causing the
- :func:`tokenize.untokenize` function to handle unicode named literals
- incorrectly. Patch by Pablo Galindo
-
- - gh-issue-114828: Fix compilation crashes in uncommon code examples using
- :func:`super` inside a comprehension in a class body.
-
- - gh-issue-115011: Setters for members with an unsigned integer type now
- support the same range of valid values for objects that has a
- :meth:`~object.__index__` method as for :class:`int`.
-
- - gh-issue-112215: Change the C recursion limits to more closely reflect the
- underlying platform limits.
-
- - gh-issue-96497: Fix incorrect resolution of mangled class variables used
- in assignment expressions in comprehensions.
-
- Library
- -------
-
- - gh-issue-117467: Preserve mailbox ownership when rewriting in
- :func:`mailbox.mbox.flush`. Patch by Tony Mountifield.
-
- - gh-issue-117310: Fixed an unlikely early & extra ``Py_DECREF`` triggered
- crash in :mod:`ssl` when creating a new ``_ssl._SSLContext`` if CPython
- was built implausibly such that the default cipher list is empty **or**
- the SSL library it was linked against reports a failure from its C
- ``SSL_CTX_set_cipher_list()`` API.
-
- - gh-issue-117178: Fix regression in lazy loading of self-referential
- modules, introduced in gh-114781.
-
- - gh-issue-117084: Fix :mod:`zipfile` extraction for directory entries with
- the name containing backslashes on Windows.
-
- - gh-issue-117110: Fix a bug that prevents subclasses of :class:`typing.Any`
- to be instantiated with arguments. Patch by Chris Fu.
-
- - gh-issue-90872: On Windows, :meth:`subprocess.Popen.wait` no longer calls
- ``WaitForSingleObject()`` with a negative timeout: pass ``0`` ms if the
- timeout is negative. Patch by Victor Stinner.
-
- - gh-issue-116957: configparser: Don't leave ConfigParser values in an
- invalid state (stored as a list instead of a str) after an earlier read
- raised DuplicateSectionError or DuplicateOptionError.
-
- - gh-issue-90095: Ignore empty lines and comments in ``.pdbrc``
-
- - gh-issue-116764: Restore support of ``None`` and other false values in
- :mod:`urllib.parse` functions :func:`~urllib.parse.parse_qs` and
- :func:`~urllib.parse.parse_qsl`. Also, they now raise a TypeError for
- non-zero integers and non-empty sequences.
-
- - gh-issue-116811: In ``PathFinder.invalidate_caches``, delegate to
- ``MetadataPathFinder.invalidate_caches``.
-
- - gh-issue-116600: Fix :func:`repr` for global :class:`~enum.Flag` members.
-
- - gh-issue-116484: Change automatically generated
- :class:`tkinter.Checkbutton` widget names to avoid collisions with
- automatically generated :class:`tkinter.ttk.Checkbutton` widget names
- within the same parent widget.
-
- - gh-issue-116401: Fix blocking :func:`os.fwalk` and :func:`shutil.rmtree`
- on opening named pipe.
-
- - gh-issue-116143: Fix a race in pydoc ``_start_server``, eliminating a
- window in which ``_start_server`` can return a thread that is "serving"
- but without a ``docserver`` set.
-
- - gh-issue-116325: :mod:`typing`: raise :exc:`SyntaxError` instead of
- :exc:`AttributeError` on forward references as empty strings.
-
- - gh-issue-90535: Fix support of *interval* values > 1 in
- :class:`logging.TimedRotatingFileHandler` for ``when='MIDNIGHT'`` and
- ``when='Wx'``.
-
- - gh-issue-115978: Disable preadv(), readv(), pwritev(), and writev() on
- WASI.
-
- Under wasmtime for WASI 0.2, these functions don't pass test_posix
- (https://github.com/bytecodealliance/wasmtime/issues/7830).
-
- - gh-issue-88352: Fix the computation of the next rollover time in the
- :class:`logging.TimedRotatingFileHandler` handler.
- :meth:`!computeRollover` now always returns a timestamp larger than the
- specified time and works correctly during the DST change.
- :meth:`!doRollover` no longer overwrite the already rolled over file,
- saving from data loss when run at midnight or during repeated time at the
- DST change.
-
- - gh-issue-87115: Set ``__main__.__spec__`` to ``None`` when running a
- script with :mod:`pdb`
-
- - gh-issue-76511: Fix UnicodeEncodeError in :meth:`email.Message.as_string`
- that results when a message that claims to be in the ascii character set
- actually has non-ascii characters. Non-ascii characters are now replaced
- with the U+FFFD replacement character, like in the ``replace`` error
- handler.
-
- - gh-issue-116040: [Enum] fix by-value calls when second value is falsey;
- e.g. Cardinal(1, 0)
-
- - gh-issue-75988: Fixed :func:`unittest.mock.create_autospec` to pass the
- call through to the wrapped object to return the real result.
-
- - gh-issue-115881: Fix issue where :func:`ast.parse` would incorrectly flag
- conditional context managers (such as ``with (x() if y else z()): ...``)
- as invalid syntax if ``feature_version=(3, 8)`` was passed. This reverts
- changes to the grammar made as part of gh-94949.
-
- - gh-issue-115886: Fix silent truncation of the name with an embedded null
- character in :class:`multiprocessing.shared_memory.SharedMemory`.
-
- - gh-issue-115809: Improve algorithm for computing which rolled-over log
- files to delete in :class:`logging.TimedRotatingFileHandler`. It is now
- reliable for handlers without ``namer`` and with arbitrary deterministic
- ``namer`` that leaves the datetime part in the file name unmodified.
-
- - gh-issue-74668: :mod:`urllib.parse` functions
- :func:`~urllib.parse.parse_qs` and :func:`~urllib.parse.parse_qsl` now
- support bytes arguments containing raw and percent-encoded non-ASCII data.
-
- - gh-issue-67044: :func:`csv.writer` now always quotes or escapes ``'\r'``
- and ``'\n'``, regardless of *lineterminator* value.
-
- - gh-issue-115712: :func:`csv.writer()` now quotes empty fields if delimiter
- is a space and skipinitialspace is true and raises exception if quoting is
- not possible.
-
- - gh-issue-112364: Fixed :func:`ast.unparse` to handle format_spec with
- ``"``, ``'`` or ``\\``. Patched by Frank Hoffmann.
-
- - gh-issue-111358: Fix a bug in
- :meth:`asyncio.BaseEventLoop.shutdown_default_executor` to ensure the
- timeout passed to the coroutine behaves as expected.
-
- - gh-issue-115618: Fix improper decreasing the reference count for ``None``
- argument in :class:`property` methods :meth:`~property.getter`,
- :meth:`~property.setter` and :meth:`~property.deleter`.
-
- - gh-issue-115570: A :exc:`DeprecationWarning` is no longer omitted on
- access to the ``__doc__`` attributes of the deprecated ``typing.io`` and
- ``typing.re`` pseudo-modules.
-
- - gh-issue-112006: Fix :func:`inspect.unwrap` for types with the
- ``__wrapper__`` data descriptor.
-
- - gh-issue-101293: Support callables with the ``__call__()`` method and
- types with ``__new__()`` and ``__init__()`` methods set to class methods,
- static methods, bound methods, partial functions, and other types of
- methods and descriptors in :meth:`inspect.Signature.from_callable`.
-
- - gh-issue-115392: Fix a bug in :mod:`doctest` where incorrect line numbers
- would be reported for decorated functions.
-
- - gh-issue-114563: Fix several :func:`format()` bugs when using the C
- implementation of :class:`~decimal.Decimal`: * memory leak in some rare
- cases when using the ``z`` format option (coerce negative 0) * incorrect
- output when applying the ``z`` format option to type ``F`` (fixed-point
- with capital ``NAN`` / ``INF``) * incorrect output when applying the ``#``
- format option (alternate form)
-
- - gh-issue-115197: ``urllib.request`` no longer resolves the hostname before
- checking it against the system's proxy bypass list on macOS and Windows.
-
- - gh-issue-115165: Most exceptions are now ignored when attempting to set
- the ``__orig_class__`` attribute on objects returned when calling
- :mod:`typing` generic aliases (including generic aliases created using
- :data:`typing.Annotated`). Previously only :exc:`AttributeError` was
- ignored. Patch by Dave Shawley.
-
- - gh-issue-115133: Fix tests for
- :class:`~xml.etree.ElementTree.XMLPullParser` with Expat 2.6.0.
-
- - gh-issue-115059: :meth:`io.BufferedRandom.read1` now flushes the
- underlying write buffer.
-
- - gh-issue-79382: Trailing ``**`` no longer allows to match files and
- non-existing paths in recursive :func:`~glob.glob`.
-
- - gh-issue-114071: Support tuple subclasses using auto() for enum member
- value.
-
- - gh-issue-114763: Protect modules loaded with
- :class:`importlib.util.LazyLoader` from race conditions when multiple
- threads try to access attributes before the loading is complete.
-
- - gh-issue-97959: Fix rendering class methods, bound methods, method and
- function aliases in :mod:`pydoc`. Class methods no longer have "method of
- builtins.type instance" note. Corresponding notes are now added for class
- and unbound methods. Method and function aliases now have references to
- the module or the class where the origin was defined if it differs from
- the current. Bound methods are now listed in the static methods section.
- Methods of builtin classes are now supported as well as methods of Python
- classes.
-
- - gh-issue-112281: Allow creating :ref:`union of types<types-union>` for
- :class:`typing.Annotated` with unhashable metadata.
-
- - gh-issue-111775: Fix
- :meth:`importlib.resources.simple.ResourceHandle.open` for text mode,
- added missed ``stream`` argument.
-
- - gh-issue-90095: Make .pdbrc and -c work with any valid pdb commands.
-
- - gh-issue-107155: Fix incorrect output of ``help(x)`` where ``x`` is a
- :keyword:`lambda` function, which has an ``__annotations__`` dictionary
- attribute with a ``"return"`` key.
-
- - gh-issue-105866: Fixed ``_get_slots`` bug which caused error when defining
- dataclasses with slots and a weakref_slot.
-
- - gh-issue-60346: Fix ArgumentParser inconsistent with parse_known_args.
-
- - gh-issue-100985: Update HTTPSConnection to consistently wrap IPv6
- Addresses when using a proxy.
-
- - gh-issue-100884: email: fix misfolding of comma in address-lists over
- multiple lines in combination with unicode encoding.
-
- - gh-issue-95782: Fix :func:`io.BufferedReader.tell`,
- :func:`io.BufferedReader.seek`, :func:`_pyio.BufferedReader.tell`,
- :func:`io.BufferedRandom.tell`, :func:`io.BufferedRandom.seek` and
- :func:`_pyio.BufferedRandom.tell` being able to return negative offsets.
-
- - gh-issue-96310: Fix a traceback in :mod:`argparse` when all options in a
- mutually exclusive group are suppressed.
-
- - gh-issue-93205: Fixed a bug in
- :class:`logging.handlers.TimedRotatingFileHandler` where multiple rotating
- handler instances pointing to files with the same name but different
- extensions would conflict and not delete the correct files.
-
- - bpo-44865: Add missing call to localization function in :mod:`argparse`.
-
- - bpo-43952: Fix :meth:`multiprocessing.connection.Listener.accept()` to
- accept empty bytes as authkey. Not accepting empty bytes as key causes it
- to hang indefinitely.
-
- - bpo-42125: linecache: get module name from ``__spec__`` if available. This
- allows getting source code for the ``__main__`` module when a custom
- loader is used.
-
- - gh-issue-66543: Make :func:`mimetypes.guess_type` properly parsing of URLs
- with only a host name, URLs containing fragment or query, and filenames
- with only a UNC sharepoint on Windows. Based on patch by Dong-hee Na.
-
- - bpo-33775: Add 'default' and 'version' help text for localization in
- argparse.
-
- Documentation
- -------------
-
- - gh-issue-115399: Document CVE-2023-52425 of Expat <2.6.0 under "XML
- vulnerabilities".
-
- - gh-issue-115233: Fix an example for :class:`~logging.LoggerAdapter` in the
- Logging Cookbook.
-
- Tests
- -----
-
- - gh-issue-83434: Disable JUnit XML output (``--junit-xml=FILE`` command
- line option) in regrtest when hunting for reference leaks (``-R`` option).
- Patch by Victor Stinner.
-
- - gh-issue-117187: Fix XML tests for vanilla Expat <2.6.0.
-
- - gh-issue-116333: Tests of TLS related things (error codes, etc) were
- updated to be more lenient about specific error message strings and
- behaviors as seen in the BoringSSL and AWS-LC forks of OpenSSL.
-
- - gh-issue-115979: Update test_importlib so that it passes under WASI SDK
- 21.
-
- - gh-issue-112536: Add --tsan to test.regrtest for running TSAN tests in
- reasonable execution times. Patch by Donghee Na.
-
- - gh-issue-116307: Added import helper ``isolated_modules`` as
- ``CleanImport`` does not remove modules imported during the context. Use
- it in importlib.resources tests to avoid leaving ``mod`` around to impede
- importlib.metadata tests.
-
- - gh-issue-115720: Leak tests (``-R``, ``--huntrleaks``) now show a summary
- of the number of leaks found in each iteration.
-
- - gh-issue-115122: Add ``--bisect`` option to regrtest test runner: run
- failed tests with ``test.bisect_cmd`` to identify failing tests. Patch by
- Victor Stinner.
-
- - gh-issue-115596: Fix ``ProgramPriorityTests`` in ``test_os`` permanently
- changing the process priority.
-
- Build
- -----
-
- - gh-issue-116313: Get WASI builds to work under wasmtime 18 w/ WASI
- 0.2/preview2 primitives.
-
- - gh-issue-116117: Backport ``libb2``'s PR #42 to fix compiling CPython on
- 32-bit Windows with ``clang-cl``.
-
- - gh-issue-115167: Avoid vendoring ``vcruntime140_threads.dll`` when
- building with Visual Studio 2022 version 17.8.
-
- - gh-issue-112536: Add support for thread sanitizer (TSAN)
-
- Windows
- -------
-
- - gh-issue-117267: Ensure ``DirEntry.stat().st_ctime`` behaves consistently
- with :func:`os.stat` during the deprecation period of ``st_ctime`` by
- containing the same value as ``st_birthtime``. After the deprecation
- period, ``st_ctime`` will be the metadata change time (or unavailable
- through ``DirEntry``), and only ``st_birthtime`` will contain the creation
- time.
-
- - gh-issue-116773: Fix instances of ``<_overlapped.Overlapped object at
- 0xXXX> still has pending operation at deallocation, the process may
- crash``.
-
- - gh-issue-91227: Fix the asyncio ProactorEventLoop implementation so that
- sending a datagram to an address that is not listening does not prevent
- receiving any more datagrams.
-
- - gh-issue-115554: The installer now has more strict rules about updating
- the :ref:`launcher`. In general, most users only have a single launcher
- installed and will see no difference. When multiple launchers have been
- installed, the option to install the launcher is disabled until all but
- one have been removed. Downgrading the launcher (which was never allowed)
- is now more obviously blocked.
-
- - gh-issue-115543: :ref:`launcher` can now detect Python 3.13 when installed
- from the Microsoft Store, and will install Python 3.12 by default when
- :envvar:`PYLAUNCHER_ALLOW_INSTALL` is set.
-
- - gh-issue-115049: Fixes ``py.exe`` launcher failing when run as users
- without user profiles.
-
- - gh-issue-115009: Update Windows installer to use SQLite 3.45.1.
-
- IDLE
- ----
-
- - gh-issue-88516: On macOS show a proxy icon in the title bar of editor
- windows to match platform behaviour.
-
- Tools/Demos
- -----------
-
- - gh-issue-113516: Don't set ``LDSHARED`` when building for WASI.
-
- C API
- -----
-
- - gh-issue-117021: Fix integer overflow in :c:func:`PyLong_AsPid` on
- non-Windows 64-bit platforms.
-
- - gh-issue-116869: Make the C API compatible with
- ``-Werror=declaration-after-statement`` compiler flag again. Patch by
- Victor Stinner.
-
-
- What's New in Python 3.12.2 final?
- ==================================
-
- *Release date: 2024-02-06*
-
- Security
- --------
-
- - gh-issue-113659: Skip ``.pth`` files with names starting with a dot or
- hidden file attribute.
-
- Core and Builtins
- -----------------
-
- - gh-issue-114887: Changed socket type validation in
- :meth:`~asyncio.loop.create_datagram_endpoint` to accept all non-stream
- sockets. This fixes a regression in compatibility with raw sockets.
-
- - gh-issue-114388: Fix a :exc:`RuntimeWarning` emitted when assign an
- integer-like value that is not an instance of :class:`int` to an attribute
- that corresponds to a C struct member of :ref:`type <PyMemberDef-types>`
- T_UINT and T_ULONG. Fix a double :exc:`RuntimeWarning` emitted when assign
- a negative integer value to an attribute that corresponds to a C struct
- member of type T_UINT.
-
- - gh-issue-113703: Fix a regression in the :mod:`codeop` module that was
- causing it to incorrectly identify incomplete f-strings. Patch by Pablo
- Galindo
-
- - gh-issue-89811: Check for a valid ``tp_version_tag`` before performing
- bytecode specializations that rely on this value being usable.
-
- - gh-issue-113602: Fix an error that was causing the parser to try to
- overwrite existing errors and crashing in the process. Patch by Pablo
- Galindo
-
- - gh-issue-113297: Fix segfault in the compiler on with statement with 19
- context managers.
-
- - gh-issue-106905: Use per AST-parser state rather than global state to
- track recursion depth within the AST parser to prevent potential race
- condition due to simultaneous parsing.
-
- The issue primarily showed up in 3.11 by multithreaded users of
- :func:`ast.parse`. In 3.12 a change to when garbage collection can be
- triggered prevented the race condition from occurring.
-
- - gh-issue-112943: Correctly compute end column offsets for multiline tokens
- in the :mod:`tokenize` module. Patch by Pablo Galindo
-
- - gh-issue-112716: Fix SystemError in the ``import`` statement and in
- ``__reduce__()`` methods of builtin types when ``__builtins__`` is not a
- dict.
-
- - gh-issue-94606: Fix UnicodeEncodeError when
- :func:`email.message.get_payload` reads a message with a Unicode surrogate
- character and the message content is not well-formed for surrogateescape
- encoding. Patch by Sidney Markowitz.
-
- Library
- -------
-
- - gh-issue-114965: Update bundled pip to 24.0
-
- - gh-issue-114959: :mod:`tarfile` no longer ignores errors when trying to
- extract a directory on top of a file.
-
- - gh-issue-109475: Fix support of explicit option value "--" in
- :mod:`argparse` (e.g. ``--option=--``).
-
- - gh-issue-110190: Fix ctypes structs with array on Windows ARM64 platform
- by setting ``MAX_STRUCT_SIZE`` to 32 in stgdict. Patch by Diego Russo
-
- - gh-issue-113280: Fix a leak of open socket in rare cases when error
- occurred in :class:`ssl.SSLSocket` creation.
-
- - gh-issue-77749: :meth:`email.policy.EmailPolicy.fold` now always encodes
- non-ASCII characters in headers if :attr:`~email.policy.EmailPolicy.utf8`
- is false.
-
- - gh-issue-114492: Make the result of :func:`termios.tcgetattr` reproducible
- on Alpine Linux. Previously it could leave a random garbage in some
- fields.
-
- - gh-issue-113267: Revert changes in :gh:`106584` which made calls of
- ``TestResult`` methods ``startTest()`` and ``stopTest()`` unbalanced.
-
- - gh-issue-75128: Ignore an :exc:`OSError` in
- :meth:`asyncio.BaseEventLoop.create_server` when IPv6 is available but the
- interface cannot actually support it.
-
- - gh-issue-114257: Dismiss the :exc:`FileNotFound` error in
- :func:`ctypes.util.find_library` and just return ``None`` on Linux.
-
- - gh-issue-114328: The :func:`tty.setcbreak` and new
- :func:`tty.cfmakecbreak` no longer clears the terminal input ICRLF flag.
- This fixes a regression introduced in 3.12 that no longer matched how OSes
- define cbreak mode in their ``stty(1)`` manual pages.
-
- - gh-issue-101438: Avoid reference cycle in ElementTree.iterparse. The
- iterator returned by ``ElementTree.iterparse`` may hold on to a file
- descriptor. The reference cycle prevented prompt clean-up of the file
- descriptor if the returned iterator was not exhausted.
-
- - gh-issue-104522: :exc:`OSError` raised when run a subprocess now only has
- *filename* attribute set to *cwd* if the error was caused by a failed
- attempt to change the current directory.
-
- - gh-issue-114149: Enum: correctly handle tuple subclasses in custom
- ``__new__``.
-
- - gh-issue-109534: Fix a reference leak in
- :class:`asyncio.selector_events.BaseSelectorEventLoop` when SSL handshakes
- fail. Patch contributed by Jamie Phan.
-
- - gh-issue-114077: Fix possible :exc:`OverflowError` in
- :meth:`socket.socket.sendfile` when pass *count* larger than 2 GiB on
- 32-bit platform.
-
- - gh-issue-114014: Fixed a bug in :class:`fractions.Fraction` where an
- invalid string using ``d`` in the decimals part creates a different error
- compared to other invalid letters/characters. Patch by Jeremiah Gabriel
- Pascual.
-
- - gh-issue-113951: Fix the behavior of ``tag_unbind()`` methods of
- :class:`tkinter.Text` and :class:`tkinter.Canvas` classes with three
- arguments. Previously, ``widget.tag_unbind(tag, sequence, funcid)``
- destroyed the current binding for *sequence*, leaving *sequence* unbound,
- and deleted the *funcid* command. Now it removes only *funcid* from the
- binding for *sequence*, keeping other commands, and deletes the *funcid*
- command. It leaves *sequence* unbound only if *funcid* was the last bound
- command.
-
- - gh-issue-113877: Fix :mod:`tkinter` method ``winfo_pathname()`` on 64-bit
- Windows.
-
- - gh-issue-113661: unittest runner: Don't exit 5 if tests were skipped. The
- intention of exiting 5 was to detect issues where the test suite wasn't
- discovered at all. If we skipped tests, it was correctly discovered.
-
- - gh-issue-113781: Silence unraisable AttributeError when warnings are
- emitted during Python finalization.
-
- - gh-issue-112932: Restore the ability for :mod:`zipfile` to ``extractall``
- from zip files with a "/" directory entry in them as is commonly added to
- zips by some wiki or bug tracker data exporters.
-
- - gh-issue-113594: Fix :exc:`UnicodeEncodeError` in :mod:`email` when
- re-fold lines that contain unknown-8bit encoded part followed by
- non-unknown-8bit encoded part.
-
- - gh-issue-113538: In :meth:`asyncio.StreamReaderProtocol.connection_made`,
- there is callback that logs an error if the task wrapping the "connected
- callback" fails. This callback would itself fail if the task was
- cancelled. Prevent this by checking whether the task was cancelled first.
- If so, close the transport but don't log an error.
-
- - gh-issue-85567: Fix resource warnings for unclosed files in :mod:`pickle`
- and :mod:`pickletools` command line interfaces.
-
- - gh-issue-101225: Increase the backlog for
- :class:`multiprocessing.connection.Listener` objects created by
- :mod:`multiprocessing.manager` and :mod:`multiprocessing.resource_sharer`
- to significantly reduce the risk of getting a connection refused error
- when creating a :class:`multiprocessing.connection.Connection` to them.
-
- - gh-issue-113543: Make sure that ``webbrowser.MacOSXOSAScript`` sends
- ``webbrowser.open`` audit event.
-
- - gh-issue-113028: When a second reference to a string appears in the input
- to :mod:`pickle`, and the Python implementation is in use, we are
- guaranteed that a single copy gets pickled and a single object is shared
- when reloaded. Previously, in protocol 0, when a string contained certain
- characters (e.g. newline) it resulted in duplicate objects.
-
- - gh-issue-113421: Fix multiprocessing logger for ``%(filename)s``.
-
- - gh-issue-111784: Fix segfaults in the ``_elementtree`` module. Fix first
- segfault during deallocation of ``_elementtree.XMLParser`` instances by
- keeping strong reference to ``pyexpat`` module in module state for capsule
- lifetime. Fix second segfault which happens in the same deallocation
- process by keeping strong reference to ``_elementtree`` module in
- ``XMLParser`` structure for ``_elementtree`` module lifetime.
-
- - gh-issue-113407: Fix import of :mod:`unittest.mock` when CPython is built
- without docstrings.
-
- - gh-issue-113320: Fix regression in Python 3.12 where
- :class:`~typing.Protocol` classes that were not marked as
- :func:`runtime-checkable <typing.runtime_checkable>` would be
- unnecessarily introspected, potentially causing exceptions to be raised if
- the protocol had problematic members. Patch by Alex Waygood.
-
- - gh-issue-113358: Fix rendering tracebacks for exceptions with a broken
- ``__getattr__``.
-
- - gh-issue-113214: Fix an ``AttributeError`` during asyncio SSL protocol
- aborts in SSL-over-SSL scenarios.
-
- - gh-issue-113246: Update bundled pip to 23.3.2.
-
- - gh-issue-113199: Make ``http.client.HTTPResponse.read1`` and
- ``http.client.HTTPResponse.readline`` close IO after reading all data when
- content length is known. Patch by Illia Volochii.
-
- - gh-issue-113188: Fix :func:`shutil.copymode` and :func:`shutil.copystat`
- on Windows. Previously they worked differenly if *dst* is a symbolic link:
- they modified the permission bits of *dst* itself rather than the file it
- points to if *follow_symlinks* is true or *src* is not a symbolic link,
- and did not modify the permission bits if *follow_symlinks* is false and
- *src* is a symbolic link.
-
- - gh-issue-61648: Detect line numbers of properties in doctests.
-
- - gh-issue-112559: :func:`signal.signal` and :func:`signal.getsignal` no
- longer call ``repr`` on callable handlers. :func:`asyncio.run` and
- :meth:`asyncio.Runner.run` no longer call ``repr`` on the task results.
- Patch by Yilei Yang.
-
- - gh-issue-110190: Fix ctypes structs with array on PPC64LE platform by
- setting ``MAX_STRUCT_SIZE`` to 64 in stgdict. Patch by Diego Russo.
-
- - gh-issue-79429: Ignore FileNotFoundError when remove a temporary directory
- in the multiprocessing finalizer.
-
- - gh-issue-81194: Fix a crash in :func:`socket.if_indextoname` with specific
- value (UINT_MAX). Fix an integer overflow in :func:`socket.if_indextoname`
- on 64-bit non-Windows platforms.
-
- - gh-issue-112343: Improve handling of pdb convenience variables to avoid
- replacing string contents.
-
- - gh-issue-111615: Fix a regression caused by a fix to gh-93162 whereby you
- couldn't configure a :class:`QueueHandler` without specifying handlers.
-
- - gh-issue-111049: Fix crash during garbage collection of the
- :class:`io.BytesIO` buffer object.
-
- - gh-issue-110345: Show the Tcl/Tk patchlevel (rather than version) in
- :meth:`tkinter._test`.
-
- - gh-issue-109858: Protect :mod:`zipfile` from "quoted-overlap" zipbomb. It
- now raises BadZipFile when try to read an entry that overlaps with other
- entry or central directory.
-
- - gh-issue-114440: On Windows, closing the connection writer when cleaning
- up a broken :class:`multiprocessing.Queue` queue is now done for all
- queues, rather than only in :mod:`concurrent.futures` manager thread. This
- can prevent a deadlock when a ``multiprocessing`` worker process
- terminates without cleaning up. This completes the backport of patches by
- Victor Stinner and Serhiy Storchaka.
-
- - gh-issue-38807: Fix race condition in :mod:`trace`. Instead of checking if
- a directory exists and creating it, directly call :func:`os.makedirs` with
- the kwarg ``exist_ok=True``.
-
- - gh-issue-75705: Set unixfrom envelope in :class:`mailbox.mbox` and
- :class:`mailbox.MMDF`.
-
- - gh-issue-106233: Fix stacklevel in ``InvalidTZPathWarning`` during
- :mod:`zoneinfo` module import.
-
- - gh-issue-105102: Allow :class:`ctypes.Union` to be nested in
- :class:`ctypes.Structure` when the system endianness is the opposite of
- the classes.
-
- - gh-issue-104282: Fix null pointer dereference in
- :func:`lzma._decode_filter_properties` due to improper handling of BCJ
- filters with properties of zero length. Patch by Radislav Chugunov.
-
- - gh-issue-102512: When :func:`os.fork` is called from a foreign thread (aka
- ``_DummyThread``), the type of the thread in a child process is changed to
- ``_MainThread``. Also changed its name and daemonic status, it can be now
- joined.
-
- - bpo-35928: :class:`io.TextIOWrapper` now correctly handles the decoding
- buffer after ``read()`` and ``write()``.
-
- - bpo-26791: :func:`shutil.move` now moves a symlink into a directory when
- that directory is the target of the symlink. This provides the same
- behavior as the mv shell command. The previous behavior raised an
- exception. Patch by Jeffrey Kintscher.
-
- - bpo-36959: Fix some error messages for invalid ISO format string
- combinations in ``strptime()`` that referred to directives not contained
- in the format string. Patch by Gordon P. Hemsley.
-
- - bpo-18060: Fixed a class inheritance issue that can cause segfaults when
- deriving two or more levels of subclasses from a base class of Structure
- or Union.
-
- Documentation
- -------------
-
- - gh-issue-110746: Improved markup for valid options/values for methods
- ttk.treeview.column and ttk.treeview.heading, and for Layouts.
-
- - gh-issue-95649: Document that the :mod:`asyncio` module contains code
- taken from `v0.16.0 of the uvloop project
- <https://github.com/MagicStack/uvloop/tree/v0.16.0>`_, as well as the
- required MIT licensing information.
-
- Tests
- -----
-
- - gh-issue-109980: Fix ``test_tarfile_vs_tar`` in ``test_shutil`` for macOS,
- where system tar can include more information in the archive than
- :mod:`shutil.make_archive`.
-
- - gh-issue-105089: Fix
- ``test.test_zipfile.test_core.TestWithDirectory.test_create_directory_with_write``
- test in AIX by doing a bitwise AND of 0xFFFF on mode , so that it will be
- in sync with ``zinfo.external_attr``
-
- - bpo-40648: Test modes that file can get with chmod() on Windows.
-
- Build
- -----
-
- - gh-issue-112305: Fixed the ``check-clean-src`` step performed on out of
- tree builds to detect errant ``$(srcdir)/Python/frozen_modules/*.h`` files
- and recommend appropriate source tree cleanup steps to get a working build
- again.
-
- - gh-issue-112867: Fix the build for the case that
- WITH_PYMALLOC_RADIX_TREE=0 set.
-
- - bpo-11102: The :func:`os.major`, :func:`os.makedev`, and :func:`os.minor`
- functions are now available on HP-UX v3.
-
- - bpo-36351: Do not set ipv6type when cross-compiling.
-
- Windows
- -------
-
- - gh-issue-109991: Update Windows build to use OpenSSL 3.0.13.
-
- - gh-issue-111239: Update Windows builds to use zlib v1.3.1.
-
- - gh-issue-100107: The ``py.exe`` launcher will no longer attempt to run the
- Microsoft Store redirector when launching a script containing a
- ``/usr/bin/env`` shebang
-
- - gh-issue-114096: Process privileges that are activated for creating
- directory junctions are now restored afterwards, avoiding behaviour
- changes in other parts of the program.
-
- - gh-issue-111877: :func:`os.stat` calls were returning incorrect time
- values for files that could not be accessed directly.
-
- - gh-issue-113009: :mod:`multiprocessing`: On Windows, fix a race condition
- in ``Process.terminate()``: no longer set the ``returncode`` attribute to
- always call ``WaitForSingleObject()`` in ``Process.wait()``. Previously,
- sometimes the process was still running after ``TerminateProcess()`` even
- if ``GetExitCodeProcess()`` is not ``STILL_ACTIVE``. Patch by Victor
- Stinner.
-
- - gh-issue-87868: Correctly sort and remove duplicate environment variables
- in :py:func:`!_winapi.CreateProcess`.
-
- - bpo-37308: Fix mojibake in :class:`mmap.mmap` when using a non-ASCII
- *tagname* argument on Windows.
-
- macOS
- -----
-
- - gh-issue-115009: Update macOS installer to use SQLite 3.45.1.
-
- - gh-issue-109991: Update macOS installer to use OpenSSL 3.0.13.
-
- - gh-issue-110459: Running ``configure ... --with-openssl-rpath=X/Y/Z`` no
- longer fails to detect OpenSSL on macOS.
-
- - gh-issue-74573: Document that :mod:`dbm.ndbm` can silently corrupt DBM
- files on updates when exceeding undocumented platform limits, and can
- crash (segmentation fault) when reading such a corrupted file. (FB8919203)
-
- - gh-issue-65701: The :program:`freeze` tool doesn't work with framework
- builds of Python. Document this and bail out early when running the tool
- with such a build.
-
- - gh-issue-108269: Set ``CFBundleAllowMixedLocalizations`` to true in the
- Info.plist for the framework, embedded Python.app and IDLE.app with
- framework installs on macOS. This allows applications to pick up the
- user's preferred locale when that's different from english.
-
- - gh-issue-102362: Make sure the result of :func:`sysconfig.get_plaform`
- includes at least a major and minor versions, even if
- ``MACOSX_DEPLOYMENT_TARGET`` is set to only a major version during build
- to match the format expected by pip.
-
- - gh-issue-110017: Disable a signal handling stress test on macOS due to a
- bug in macOS (FB13453490).
-
- - gh-issue-110820: Make sure the preprocessor definitions for
- ``ALIGNOF_MAX_ALIGN_T``, ``SIZEOF_LONG_DOUBLE`` and
- ``HAVE_GCC_ASM_FOR_X64`` are correct for Universal 2 builds on macOS.
-
- IDLE
- ----
-
- - gh-issue-96905: In idlelib code, stop redefining built-ins 'dict' and
- 'object'.
-
- - gh-issue-72284: Improve the lists of features, editor key bindings, and
- shell key bingings in the IDLE doc.
-
- - gh-issue-113903: Fix rare failure of test.test_idle, in test_configdialog.
-
- - gh-issue-113729: Fix the "Help -> IDLE Doc" menu bug in 3.11.7 and 3.12.1.
-
- - gh-issue-113269: Fix test_editor hang on macOS Catalina.
-
- - gh-issue-112898: Fix processing unsaved files when quitting IDLE on macOS.
-
- - gh-issue-103820: Revise IDLE bindings so that events from mouse button 4/5
- on non-X11 windowing systems (i.e. Win32 and Aqua) are not mistaken for
- scrolling.
-
- - bpo-13586: Enter the selected text when opening the "Replace" dialog.
-
- Tools/Demos
- -----------
-
- - gh-issue-109991: Update GitHub CI workflows to use OpenSSL 3.0.13 and
- multissltests to use 1.1.1w, 3.0.13, 3.1.5, and 3.2.1.
-
- - gh-issue-115015: Fix a bug in Argument Clinic that generated incorrect
- code for methods with no parameters that use the :ref:`METH_METHOD |
- METH_FASTCALL | METH_KEYWORDS <METH_METHOD-METH_FASTCALL-METH_KEYWORDS>`
- calling convention. Only the positional parameter count was checked; any
- keyword argument passed would be silently accepted.
-
-
- What's New in Python 3.12.1 final?
- ==================================
-
- *Release date: 2023-12-07*
-
- Core and Builtins
- -----------------
-
- - gh-issue-112125: Fix None.__ne__(None) returning NotImplemented instead of
- False
-
- - gh-issue-112625: Fixes a bug where a bytearray object could be cleared
- while iterating over an argument in the ``bytearray.join()`` method that
- could result in reading memory after it was freed.
-
- - gh-issue-105967: Workaround a bug in Apple's macOS platform zlib library
- where :func:`zlib.crc32` and :func:`binascii.crc32` could produce
- incorrect results on multi-gigabyte inputs. Including when using
- :mod:`zipfile` on zips containing large data.
-
- - gh-issue-112356: Stopped erroneously deleting a ``LOAD_NULL`` bytecode
- instruction when optimized twice.
-
- - gh-issue-111058: Change coro.cr_frame/gen.gi_frame to return ``None``
- after the coroutine/generator has been closed. This fixes a bug where
- :func:`~inspect.getcoroutinestate` and :func:`~inspect.getgeneratorstate`
- return the wrong state for a closed coroutine/generator.
-
- - gh-issue-112388: Fix an error that was causing the parser to try to
- overwrite tokenizer errors. Patch by pablo Galindo
-
- - gh-issue-112387: Fix error positions for decoded strings with backwards
- tokenize errors. Patch by Pablo Galindo
-
- - gh-issue-112367: Avoid undefined behaviour when using the perf trampolines
- by not freeing the code arenas until shutdown. Patch by Pablo Galindo
-
- - gh-issue-112243: Don't include comments in f-string debug expressions.
- Patch by Pablo Galindo
-
- - gh-issue-112266: Change docstrings of :attr:`~object.__dict__` and
- :attr:`~object.__weakref__`.
-
- - gh-issue-111654: Fix runtime crash when some error happens in opcode
- ``LOAD_FROM_DICT_OR_DEREF``.
-
- - gh-issue-109181: Speed up :obj:`Traceback` object creation by lazily
- compute the line number. Patch by Pablo Galindo
-
- - gh-issue-102388: Fix a bug where ``iso2022_jp_3`` and ``iso2022_jp_2004``
- codecs read out of bounds
-
- - gh-issue-111366: Fix an issue in the :mod:`codeop` that was causing
- :exc:`SyntaxError` exceptions raised in the presence of invalid syntax to
- not contain precise error messages. Patch by Pablo Galindo
-
- - gh-issue-111380: Fix a bug that was causing :exc:`SyntaxWarning` to appear
- twice when parsing if invalid syntax is encountered later. Patch by Pablo
- galindo
-
- - gh-issue-94438: Fix a regression that prevented jumping across ``is None``
- and ``is not None`` when debugging. Patch by Savannah Ostrowski.
-
- - gh-issue-110938: Fix error messages for indented blocks with functions and
- classes with generic type parameters. Patch by Pablo Galindo
-
- - gh-issue-109894: Fixed crash due to improperly initialized static
- :exc:`MemoryError` in subinterpreter.
-
- - gh-issue-110782: Fix crash when :class:`typing.TypeVar` is constructed
- with a keyword argument. Patch by Jelle Zijlstra.
-
- - gh-issue-110696: Fix incorrect error message for invalid argument
- unpacking. Patch by Pablo Galindo
-
- - gh-issue-110543: Fix regression in Python 3.12 where
- :meth:`types.CodeType.replace` would produce a broken code object if
- called on a module or class code object that contains a comprehension.
- Patch by Jelle Zijlstra.
-
- - gh-issue-110514: Add ``PY_THROW`` to :func:`sys.setprofile` events
-
- - gh-issue-110455: Guard ``assert(tstate->thread_id > 0)`` with ``#ifndef
- HAVE_PTHREAD_STUBS``. This allows for for pydebug builds to work under
- WASI which (currently) lacks thread support.
-
- - gh-issue-110259: Correctly identify the format spec in f-strings (with
- single or triple quotes) that have multiple lines in the expression part
- and include a formatting spec. Patch by Pablo Galindo
-
- - gh-issue-110237: Fix missing error checks for calls to ``PyList_Append``
- in ``_PyEval_MatchClass``.
-
- - gh-issue-109889: Fix the compiler's redundant NOP detection algorithm to
- skip over NOPs with no line number when looking for the next instruction's
- lineno.
-
- - gh-issue-109853: ``sys.path[0]`` is now set correctly for subinterpreters.
-
- - gh-issue-105716: Subinterpreters now correctly handle the case where they
- have threads running in the background. Before, such threads would
- interfere with cleaning up and destroying them, as well as prevent running
- another script.
-
- - gh-issue-109793: The main thread no longer exits prematurely when a
- subinterpreter is cleaned up during runtime finalization. The bug was a
- problem particularly because, when triggered, the Python process would
- always return with a 0 exitcode, even if it failed.
-
- - gh-issue-109596: Fix some tokens in the grammar that were incorrectly
- marked as soft keywords. Also fix some repeated rule names and ensure that
- repeated rules are not allowed. Patch by Pablo Galindo
-
- - gh-issue-109351: Fix crash when compiling an invalid AST involving a named
- (walrus) expression.
-
- - gh-issue-109216: Fix possible memory leak in :opcode:`BUILD_MAP`.
-
- - gh-issue-109207: Fix a SystemError in ``__repr__`` of symtable entry
- object.
-
- - gh-issue-109179: Fix bug where the C traceback display drops notes from
- :exc:`SyntaxError`.
-
- - gh-issue-109052: Use the base opcode when comparing code objects to avoid
- interference from instrumentation
-
- - gh-issue-88943: Improve syntax error for non-ASCII character that follows
- a numerical literal. It now points on the invalid non-ASCII character, not
- on the valid numerical literal.
-
- - gh-issue-106931: Statically allocated string objects are now interned
- globally instead of per-interpreter. This fixes a situation where such a
- string would only be interned in a single interpreter. Normal string
- objects are unaffected.
-
- Library
- -------
-
- - gh-issue-79325: Fix an infinite recursion error in
- :func:`tempfile.TemporaryDirectory` cleanup on Windows.
-
- - gh-issue-112645: Remove deprecation error on passing ``onerror`` to
- :func:`shutil.rmtree`.
-
- - gh-issue-112618: Fix a caching bug relating to :data:`typing.Annotated`.
- ``Annotated[str, True]`` is no longer identical to ``Annotated[str, 1]``.
-
- - gh-issue-112334: Fixed a performance regression in 3.12's
- :mod:`subprocess` on Linux where it would no longer use the fast-path
- ``vfork()`` system call when it should have due to a logic bug, instead
- always falling back to the safe but slower ``fork()``.
-
- Also fixed a related 3.12 security regression: If a value of
- ``extra_groups=[]`` was passed to :mod:`subprocess.Popen` or related APIs,
- the underlying ``setgroups(0, NULL)`` system call to clear the groups list
- would not be made in the child process prior to ``exec()``. This has been
- assigned CVE-2023-6507.
-
- This was identified via code inspection in the process of fixing the first
- bug.
-
- - gh-issue-110190: Fix ctypes structs with array on Arm platform by setting
- ``MAX_STRUCT_SIZE`` to 32 in stgdict. Patch by Diego Russo.
-
- - gh-issue-112578: Fix a spurious :exc:`RuntimeWarning` when executing the
- :mod:`zipfile` module.
-
- - gh-issue-112509: Fix edge cases that could cause a key to be present in
- both the ``__required_keys__`` and ``__optional_keys__`` attributes of a
- :class:`typing.TypedDict`. Patch by Jelle Zijlstra.
-
- - gh-issue-112414: Fix regression in Python 3.12 where calling :func:`repr`
- on a module that had been imported using a custom :term:`loader` could
- fail with :exc:`AttributeError`. Patch by Alex Waygood.
-
- - gh-issue-112358: Revert change to :class:`struct.Struct` initialization
- that broke some cases of subclassing.
-
- - gh-issue-94722: Fix bug where comparison between instances of
- :class:`~doctest.DocTest` fails if one of them has ``None`` as its lineno.
-
- - gh-issue-112105: Make :func:`readline.set_completer_delims` work with
- libedit
-
- - gh-issue-111942: Fix SystemError in the TextIOWrapper constructor with
- non-encodable "errors" argument in non-debug mode.
-
- - gh-issue-109538: Issue warning message instead of having
- :class:`RuntimeError` be displayed when event loop has already been closed
- at :meth:`StreamWriter.__del__`.
-
- - gh-issue-111942: Fix crashes in :meth:`io.TextIOWrapper.reconfigure` when
- pass invalid arguments, e.g. non-string encoding.
-
- - gh-issue-111460: :mod:`curses`: restore wide character support (including
- :func:`curses.unget_wch` and :meth:`~curses.window.get_wch`) on macOS,
- which was unavailable due to a regression in Python 3.12.
-
- - gh-issue-103791: :class:`contextlib.suppress` now supports suppressing
- exceptions raised as part of a :exc:`BaseExceptionGroup`, in addition to
- the recent support for :exc:`ExceptionGroup`.
-
- - gh-issue-111804: Remove posix.fallocate() under WASI as the underlying
- posix_fallocate() is not available in WASI preview2.
-
- - gh-issue-111841: Fix truncating arguments on an embedded null character in
- :meth:`os.putenv` and :meth:`os.unsetenv` on Windows.
-
- - gh-issue-111541: Fix :mod:`doctest` for :exc:`SyntaxError` not-builtin
- subclasses.
-
- - gh-issue-110894: Call loop exception handler for exceptions in
- ``client_connected_cb`` of :func:`asyncio.start_server` so that
- applications can handle it. Patch by Kumar Aditya.
-
- - gh-issue-111531: Fix reference leaks in ``bind_class()`` and
- ``bind_all()`` methods of :mod:`tkinter` widgets.
-
- - gh-issue-111356: Added :func:`io.text_encoding()`,
- :data:`io.DEFAULT_BUFFER_SIZE`, and :class:`io.IncrementalNewlineDecoder`
- to ``io.__all__``.
-
- - gh-issue-111342: Fixed typo in :func:`math.sumprod`.
-
- - gh-issue-68166: Remove mention of not supported "vsapi" element type in
- :meth:`tkinter.ttk.Style.element_create`. Add tests for
- ``element_create()`` and other ``ttk.Style`` methods. Add examples for
- ``element_create()`` in the documentation.
-
- - gh-issue-75666: Fix the behavior of :mod:`tkinter` widget's ``unbind()``
- method with two arguments. Previously, ``widget.unbind(sequence, funcid)``
- destroyed the current binding for *sequence*, leaving *sequence* unbound,
- and deleted the *funcid* command. Now it removes only *funcid* from the
- binding for *sequence*, keeping other commands, and deletes the *funcid*
- command. It leaves *sequence* unbound only if *funcid* was the last bound
- command.
-
- - gh-issue-79033: Another attempt at fixing
- :func:`asyncio.Server.wait_closed()`. It now blocks until both conditions
- are true: the server is closed, *and* there are no more active
- connections. (This means that in some cases where in 3.12.0 this function
- would *incorrectly* have returned immediately, it will now block; in
- particular, when there are no active connections but the server hasn't
- been closed yet.)
-
- - gh-issue-111295: Fix :mod:`time` not checking for errors when
- initializing.
-
- - gh-issue-111253: Add error checking during :mod:`!_socket` module init.
-
- - gh-issue-111251: Fix :mod:`_blake2` not checking for errors when
- initializing.
-
- - gh-issue-111174: Fix crash in :meth:`io.BytesIO.getbuffer` called
- repeatedly for empty BytesIO.
-
- - gh-issue-111187: Postpone removal version for locale.getdefaultlocale() to
- Python 3.15.
-
- - gh-issue-111159: Fix :mod:`doctest` output comparison for exceptions with
- notes.
-
- - gh-issue-110910: Fix invalid state handling in :class:`asyncio.TaskGroup`
- and :class:`asyncio.Timeout`. They now raise proper RuntimeError if they
- are improperly used and are left in consistent state after this.
-
- - gh-issue-111092: Make turtledemo run without default root enabled.
-
- - gh-issue-110488: Fix a couple of issues in
- :meth:`pathlib.PurePath.with_name`: a single dot was incorrectly
- considered a valid name, and in :class:`PureWindowsPath`, a name with an
- NTFS alternate data stream, like ``a:b``, was incorrectly considered
- invalid.
-
- - gh-issue-110392: Fix :func:`tty.setraw` and :func:`tty.setcbreak`:
- previously they returned partially modified list of the original tty
- attributes. :func:`tty.cfmakeraw` and :func:`tty.cfmakecbreak` now make a
- copy of the list of special characters before modifying it.
-
- - gh-issue-110590: Fix a bug in :meth:`!_sre.compile` where :exc:`TypeError`
- would be overwritten by :exc:`OverflowError` when the *code* argument was
- a list of non-ints.
-
- - gh-issue-65052: Prevent :mod:`pdb` from crashing when trying to display
- undisplayable objects
-
- - gh-issue-110519: Deprecation warning about non-integer number in
- :mod:`gettext` now alwais refers to the line in the user code where
- gettext function or method is used. Previously it could refer to a line in
- ``gettext`` code.
-
- - gh-issue-110395: Ensure that :func:`select.kqueue` objects correctly
- appear as closed in forked children, to prevent operations on an invalid
- file descriptor.
-
- - gh-issue-110378: :func:`~contextlib.contextmanager` and
- :func:`~contextlib.asynccontextmanager` context managers now close an
- invalid underlying generator object that yields more then one value.
-
- - gh-issue-110365: Fix :func:`termios.tcsetattr` bug that was overwritting
- existing errors during parsing integers from ``term`` list.
-
- - gh-issue-109653: Fix a Python 3.12 regression in the import time of
- :mod:`random`. Patch by Alex Waygood.
-
- - gh-issue-110196: Add ``__reduce__`` method to :class:`IPv6Address` in
- order to keep ``scope_id``
-
- - gh-issue-110036: On Windows, multiprocessing ``Popen.terminate()`` now
- catchs :exc:`PermissionError` and get the process exit code. If the
- process is still running, raise again the :exc:`PermissionError`.
- Otherwise, the process terminated as expected: store its exit code. Patch
- by Victor Stinner.
-
- - gh-issue-110038: Fixed an issue that caused :meth:`KqueueSelector.select`
- to not return all the ready events in some cases when a file descriptor is
- registered for both read and write.
-
- - gh-issue-109631: :mod:`re` functions such as :func:`re.findall`,
- :func:`re.split`, :func:`re.search` and :func:`re.sub` which perform short
- repeated matches can now be interrupted by user.
-
- - gh-issue-109747: Improve errors for unsupported look-behind patterns. Now
- re.error is raised instead of OverflowError or RuntimeError for too large
- width of look-behind pattern.
-
- - gh-issue-109818: Fix :func:`reprlib.recursive_repr` not copying
- ``__type_params__`` from decorated function.
-
- - gh-issue-109047: :mod:`concurrent.futures`: The *executor manager thread*
- now catches exceptions when adding an item to the *call queue*. During
- Python finalization, creating a new thread can now raise
- :exc:`RuntimeError`. Catch the exception and call ``terminate_broken()``
- in this case. Patch by Victor Stinner.
-
- - gh-issue-109782: Ensure the signature of :func:`os.path.isdir` is
- identical on all platforms. Patch by Amin Alaee.
-
- - gh-issue-109590: :func:`shutil.which` will prefer files with an extension
- in ``PATHEXT`` if the given mode includes ``os.X_OK`` on win32. If no
- ``PATHEXT`` match is found, a file without an extension in ``PATHEXT`` can
- be returned. This change will have :func:`shutil.which` act more similarly
- to previous behavior in Python 3.11.
-
- - gh-issue-109786: Fix possible reference leaks and crash when re-enter the
- ``__next__()`` method of :class:`itertools.pairwise`.
-
- - gh-issue-109593: Avoid deadlocking on a reentrant call to the
- multiprocessing resource tracker. Such a reentrant call, though unlikely,
- can happen if a GC pass invokes the finalizer for a multiprocessing object
- such as SemLock.
-
- - gh-issue-109613: Fix :func:`os.stat` and :meth:`os.DirEntry.stat`: check
- for exceptions. Previously, on Python built in debug mode, these functions
- could trigger a fatal Python error (and abort the process) when a function
- succeeded with an exception set. Patch by Victor Stinner.
-
- - gh-issue-109375: The :mod:`pdb` ``alias`` command now prevents registering
- aliases without arguments.
-
- - gh-issue-107219: Fix a race condition in ``concurrent.futures``. When a
- process in the process pool was terminated abruptly (while the future was
- running or pending), close the connection write end. If the call queue is
- blocked on sending bytes to a worker process, closing the connection write
- end interrupts the send, so the queue can be closed. Patch by Victor
- Stinner.
-
- - gh-issue-50644: Attempts to pickle or create a shallow or deep copy of
- :mod:`codecs` streams now raise a TypeError. Previously, copying failed
- with a RecursionError, while pickling produced wrong results that
- eventually caused unpickling to fail with a RecursionError.
-
- - gh-issue-108987: Fix :func:`_thread.start_new_thread` race condition. If a
- thread is created during Python finalization, the newly spawned thread now
- exits immediately instead of trying to access freed memory and lead to a
- crash. Patch by Victor Stinner.
-
- - gh-issue-108791: Improved error handling in :mod:`pdb` command line
- interface, making it produce more concise error messages.
-
- - gh-issue-105829: Fix concurrent.futures.ProcessPoolExecutor deadlock
-
- - gh-issue-106584: Fix exit code for ``unittest`` if all tests are skipped.
- Patch by Egor Eliseev.
-
- - gh-issue-102956: Fix returning of empty byte strings after seek in zipfile
- module
-
- - gh-issue-84867: :class:`unittest.TestLoader` no longer loads test cases
- from exact :class:`unittest.TestCase` and
- :class:`unittest.FunctionTestCase` classes.
-
- - gh-issue-91133: Fix a bug in :class:`tempfile.TemporaryDirectory` cleanup,
- which now no longer dereferences symlinks when working around file system
- permission errors.
-
- - gh-issue-73561: Omit the interface scope from an IPv6 address when used as
- Host header by :mod:`http.client`.
-
- - gh-issue-86826: :mod:`zipinfo` now supports the full range of values in
- the TZ string determined by RFC 8536 and detects all invalid formats. Both
- Python and C implementations now raise exceptions of the same type on
- invalid data.
-
- - bpo-43153: On Windows, ``tempfile.TemporaryDirectory`` previously masked a
- ``PermissionError`` with ``NotADirectoryError`` during directory cleanup.
- It now correctly raises ``PermissionError`` if errors are not ignored.
- Patch by Andrei Kulakov and Ken Jin.
-
- - bpo-35332: The :func:`shutil.rmtree` function now ignores errors when
- calling :func:`os.close` when *ignore_errors* is ``True``, and
- :func:`os.close` no longer retried after error.
-
- - bpo-41422: Fixed memory leaks of :class:`pickle.Pickler` and
- :class:`pickle.Unpickler` involving cyclic references via the internal
- memo mapping.
-
- - bpo-40262: The :meth:`ssl.SSLSocket.recv_into` method no longer requires
- the *buffer* argument to implement ``__len__`` and supports buffers with
- arbitrary item size.
-
- Documentation
- -------------
-
- - gh-issue-111699: Relocate ``smtpd`` deprecation notice to its own section
- rather than under ``locale`` in What's New in Python 3.12 document
-
- - gh-issue-108826: :mod:`dis` module command-line interface is now mentioned
- in documentation.
-
- Tests
- -----
-
- - gh-issue-112769: The tests now correctly compare zlib version when
- :const:`zlib.ZLIB_RUNTIME_VERSION` contains non-integer suffixes. For
- example zlib-ng defines the version as ``1.3.0.zlib-ng``.
-
- - gh-issue-110367: Make regrtest ``--verbose3`` option compatible with
- ``--huntrleaks -jN`` options. The ``./python -m test -j1 -R 3:3
- --verbose3`` command now works as expected. Patch by Victor Stinner.
-
- - gh-issue-111165: Remove no longer used functions ``run_unittest()`` and
- ``run_doctest()`` from the :mod:`test.support` module.
-
- - gh-issue-110932: Fix regrtest if the ``SOURCE_DATE_EPOCH`` environment
- variable is defined: use the variable value as the random seed. Patch by
- Victor Stinner.
-
- - gh-issue-110995: test_gdb: Fix detection of gdb built without Python
- scripting support. Patch by Victor Stinner.
-
- - gh-issue-110918: Test case matching patterns specified by options
- ``--match``, ``--ignore``, ``--matchfile`` and ``--ignorefile`` are now
- tested in the order of specification, and the last match determines
- whether the test case be run or ignored.
-
- - gh-issue-110647: Fix test_stress_modifying_handlers() of test_signal.
- Patch by Victor Stinner.
-
- - gh-issue-103053: Fix test_tools.test_freeze on FreeBSD: run "make
- distclean" instead of "make clean" in the copied source directory to
- remove also the "python" program. Patch by Victor Stinner.
-
- - gh-issue-110167: Fix a deadlock in test_socket when server fails with a
- timeout but the client is still running in its thread. Don't hold a lock
- to call cleanup functions in doCleanups(). One of the cleanup function
- waits until the client completes, whereas the client could deadlock if it
- called addCleanup() in such situation. Patch by Victor Stinner.
-
- - gh-issue-110388: Add tests for :mod:`tty`.
-
- - gh-issue-81002: Add tests for :mod:`termios`.
-
- - gh-issue-110267: Add tests for pickling and copying PyStructSequence
- objects. Patched by Xuehai Pan.
-
- - gh-issue-110031: Skip test_threading tests using thread+fork if Python is
- built with Address Sanitizer (ASAN). Patch by Victor Stinner.
-
- - gh-issue-110088: Fix test_asyncio timeouts: don't measure the maximum
- duration, a test should not measure a CI performance. Only measure the
- minimum duration when a task has a timeout or delay. Add ``CLOCK_RES`` to
- ``test_asyncio.utils``. Patch by Victor Stinner.
-
- - gh-issue-109974: Fix race conditions in test_threading lock tests. Wait
- until a condition is met rather than using :func:`time.sleep` with a
- hardcoded number of seconds. Patch by Victor Stinner.
-
- - gh-issue-110033: Fix ``test_interprocess_signal()`` of ``test_signal``.
- Make sure that the ``subprocess.Popen`` object is deleted before the test
- raising an exception in a signal handler. Otherwise, ``Popen.__del__()``
- can get the exception which is logged as ``Exception ignored in: ...`` and
- the test fails. Patch by Victor Stinner.
-
- - gh-issue-109594: Fix test_timeout() of test_concurrent_futures.test_wait.
- Remove the future which may or may not complete depending if it takes
- longer than the timeout ot not. Keep the second future which does not
- complete before wait() timeout. Patch by Victor Stinner.
-
- - gh-issue-109972: Split test_gdb.py file into a test_gdb package made of
- multiple tests, so tests can now be run in parallel. Patch by Victor
- Stinner.
-
- - gh-issue-103053: Skip test_freeze_simple_script() of
- test_tools.test_freeze if Python is built with ``./configure
- --enable-optimizations``, which means with Profile Guided Optimization
- (PGO): it just makes the test too slow. The freeze tool is tested by many
- other CIs with other (faster) compiler flags. Patch by Victor Stinner.
-
- - gh-issue-109580: Skip ``test_perf_profiler`` if Python is built with ASAN,
- MSAN or UBSAN sanitizer. Python does crash randomly in this test on such
- build. Patch by Victor Stinner.
-
- - gh-issue-104736: Fix test_gdb on Python built with LLVM clang 16 on Linux
- ppc64le (ex: Fedora 38). Search patterns in gdb "bt" command output to
- detect when gdb fails to retrieve the traceback. For example, skip a test
- if ``Backtrace stopped: frame did not save the PC`` is found. Patch by
- Victor Stinner.
-
- - gh-issue-108927: Fixed order dependence in running tests in the same
- process when a test that has submodules (e.g. test_importlib) follows a
- test that imports its submodule (e.g. test_importlib.util) and precedes a
- test (e.g. test_unittest or test_compileall) that uses that submodule.
-
- Build
- -----
-
- - gh-issue-112088: Add ``Tools/build/regen-configure.sh`` script to
- regenerate the ``configure`` with an Ubuntu container image. The
- ``quay.io/tiran/cpython_autoconf:271`` container image
- (`tiran/cpython_autoconf <https://github.com/tiran/cpython_autoconf>`_) is
- no longer used. Patch by Victor Stinner.
-
- - gh-issue-111046: For wasi-threads, memory is now exported to fix
- compatibility issues with some wasm runtimes.
-
- - gh-issue-103053: "make check-clean-src" now also checks if the "python"
- program is found in the source directory: fail with an error if it does
- exist. Patch by Victor Stinner.
-
- - gh-issue-109191: Fix compile error when building with recent versions of
- libedit.
-
- Windows
- -------
-
- - gh-issue-111856: Fixes :func:`~os.fstat` on file systems that do not
- support file ID requests. This includes FAT32 and exFAT.
-
- - gh-issue-111293: Fix :data:`os.DirEntry.inode` dropping higher 64 bits of
- a file id on some filesystems on Windows.
-
- - gh-issue-110913: WindowsConsoleIO now correctly chunks large buffers
- without splitting up UTF-8 sequences.
-
- - gh-issue-110437: Allows overriding the source of VC redistributables so
- that releases can be guaranteed to never downgrade between updates.
-
- - gh-issue-109286: Update Windows installer to use SQLite 3.43.1.
-
- macOS
- -----
-
- - gh-issue-109981: Use ``/dev/fd`` on macOS to determine the number of open
- files in ``test.support.os_helper.fd_count`` to avoid a crash with
- "guarded" file descriptors when probing for open files.
-
- - gh-issue-110950: Update macOS installer to include an upstream Tcl/Tk fix
- for the ``Secure coding is not enabled for restorable state!`` warning
- encountered in Tkinter on macOS 14 Sonoma.
-
- - gh-issue-111015: Ensure that IDLE.app and Python Launcher.app are
- installed with appropriate permissions on macOS builds.
-
- - gh-issue-109286: Update macOS installer to use SQLite 3.43.1.
-
- - gh-issue-71383: Update macOS installer to include an upstream Tcl/Tk fix
- for the ``ttk::ThemeChanged`` error encountered in Tkinter.
-
- - gh-issue-92603: Update macOS installer to include a fix accepted by
- upstream Tcl/Tk for a crash encountered after the first :meth:`tkinter.Tk`
- instance is destroyed.
-
- IDLE
- ----
-
- - bpo-35668: Add docstrings to the IDLE debugger module. Fix two bugs:
- initialize Idb.botframe (should be in Bdb); in Idb.in_rpc_code, check
- whether prev_frame is None before trying to use it. Greatly expand
- test_debugger.
-
- C API
- -----
-
- - gh-issue-106560: Fix redundant declarations in the public C API. Declare
- PyBool_Type and PyLong_Type only once. Patch by Victor Stinner.
-
- - gh-issue-112438: Fix support of format units "es", "et", "es#", and "et#"
- in nested tuples in :c:func:`PyArg_ParseTuple`-like functions.
-
- - gh-issue-109521: :c:func:`PyImport_GetImporter` now sets RuntimeError if
- it fails to get :data:`sys.path_hooks` or :data:`sys.path_importer_cache`
- or they are not list and dict correspondingly. Previously it could return
- NULL without setting error in obscure cases, crash or raise SystemError if
- these attributes have wrong type.
-
-
- What's New in Python 3.12.0 final?
- ==================================
-
- *Release date: 2023-10-02*
-
- Core and Builtins
- -----------------
-
- - gh-issue-109823: Fix bug where compiler does not adjust labels when
- removing an empty basic block which is a jump target.
-
- - gh-issue-109719: Fix missing jump target labels when compiler reorders
- cold/warm blocks.
-
- - gh-issue-109627: Fix bug where the compiler does not assign a new jump
- target label to a duplicated small exit block.
-
- Library
- -------
-
- - gh-issue-110045: Update the :mod:`symtable` module to support the new
- scopes introduced by :pep:`695`.
-
- Documentation
- -------------
-
- - gh-issue-109209: The minimum Sphinx version required for the documentation
- is now 4.2.
-
- Windows
- -------
-
- - gh-issue-109991: Update Windows build to use OpenSSL 3.0.11.
-
- macOS
- -----
-
- - gh-issue-109991: Update macOS installer to use OpenSSL 3.0.11.
-
- Tools/Demos
- -----------
-
- - gh-issue-109991: Update GitHub CI workflows to use OpenSSL 3.0.11 and
- multissltests to use 1.1.1w, 3.0.11, and 3.1.3.
-
-
- What's New in Python 3.12.0 release candidate 3?
- ================================================
-
- *Release date: 2023-09-18*
-
- Core and Builtins
- -----------------
-
- - gh-issue-109496: On a Python built in debug mode, :c:func:`Py_DECREF()`
- now calls ``_Py_NegativeRefcount()`` if the object is a dangling pointer
- to deallocated memory: memory filled with ``0xDD`` "dead byte" by the
- debug hook on memory allocators. The fix is to check the reference count
- *before* checking for ``_Py_IsImmortal()``. Patch by Victor Stinner.
-
- - gh-issue-109371: Deopted instructions correctly for tool initialization
- and modified the incorrect assertion in instrumentation, when a previous
- tool already sets INSTRUCTION events
-
- - gh-issue-105658: Fix bug where the line trace of an except block ending
- with a conditional includes an excess event with the line of the
- conditional expression.
-
- - gh-issue-109219: Fix compiling type param scopes that use a name which is
- also free in an inner scope.
-
- - gh-issue-109341: Fix crash when compiling an invalid AST involving a
- :class:`ast.TypeAlias`.
-
- - gh-issue-109195: Fix source location for the ``LOAD_*`` instruction
- preceding a ``LOAD_SUPER_ATTR`` to load the ``super`` global (or shadowing
- variable) so that it encompasses only the name ``super`` and not the
- following parentheses.
-
- - gh-issue-109118: Disallow nested scopes (lambdas, generator expressions,
- and comprehensions) within PEP 695 annotation scopes that are nested
- within classes.
-
- - gh-issue-109114: Relax the detection of the error message for invalid
- lambdas inside f-strings to not search for arbitrary replacement fields to
- avoid false positives. Patch by Pablo Galindo
-
- - gh-issue-109118: Fix interpreter crash when a NameError is raised inside
- the type parameters of a generic class.
-
- - gh-issue-108976: Fix crash that occurs after de-instrumenting a code
- object in a monitoring callback.
-
- - gh-issue-108732: Make iteration variables of module- and class-scoped
- comprehensions visible to pdb and other tools that use ``frame.f_locals``
- again.
-
- - gh-issue-108959: Fix caret placement for error locations for subscript and
- binary operations that involve non-semantic parentheses and spaces. Patch
- by Pablo Galindo
-
- Library
- -------
-
- - gh-issue-108682: Enum: require ``names=()`` or ``type=...`` to create an
- empty enum using the functional syntax.
-
- - gh-issue-108843: Fix an issue in :func:`ast.unparse` when unparsing
- f-strings containing many quote types.
-
- Documentation
- -------------
-
- - gh-issue-102823: Document the return type of ``x // y`` when ``x`` and
- ``y`` have type :class:`float`.
-
- Tests
- -----
-
- - gh-issue-109396: Fix ``test_socket.test_hmac_sha1()`` in FIPS mode. Use a
- longer key: FIPS mode requires at least of at least 112 bits. The previous
- key was only 32 bits. Patch by Victor Stinner.
-
- - gh-issue-104736: Fix test_gdb on Python built with LLVM clang 16 on Linux
- ppc64le (ex: Fedora 38). Search patterns in gdb "bt" command output to
- detect when gdb fails to retrieve the traceback. For example, skip a test
- if ``Backtrace stopped: frame did not save the PC`` is found. Patch by
- Victor Stinner.
-
- - gh-issue-109237: Fix ``test_site.test_underpth_basic()`` when the working
- directory contains at least one non-ASCII character: encode the ``._pth``
- file to UTF-8 and enable the UTF-8 Mode to use UTF-8 for the child process
- stdout. Patch by Victor Stinner.
-
- - gh-issue-109230: Fix ``test_pyexpat.test_exception()``: it can now be run
- from a directory different than Python source code directory. Before, the
- test failed in this case. Skip the test if Modules/pyexpat.c source is
- not available. Skip also the test on Python implementations other than
- CPython. Patch by Victor Stinner.
-
- - gh-issue-109015: Fix test_asyncio, test_imaplib and test_socket tests on
- FreeBSD if the TCP blackhole is enabled (``sysctl
- net.inet.tcp.blackhole``). Skip the few tests which failed with
- ``ETIMEDOUT`` which such non standard configuration. Currently, the
- `FreeBSD GCP image enables TCP and UDP blackhole
- <https://reviews.freebsd.org/D41751>`_ (``sysctl
- net.inet.tcp.blackhole=2`` and ``sysctl net.inet.udp.blackhole=1``).
- Patch by Victor Stinner.
-
- - gh-issue-91960: Skip ``test_gdb`` if gdb is unable to retrieve Python
- frame objects: if a frame is ``<optimized out>``. When Python is built
- with "clang -Og", gdb can fail to retrive the *frame* parameter of
- ``_PyEval_EvalFrameDefault()``. In this case, tests like ``py_bt()`` are
- likely to fail. Without getting access to Python frames, ``python-gdb.py``
- is mostly clueless on retrieving the Python traceback. Moreover,
- ``test_gdb`` is no longer skipped on macOS if Python is built with Clang.
- Patch by Victor Stinner.
-
- - gh-issue-108962: Skip ``test_tempfile.test_flags()`` if ``chflags()``
- fails with "OSError: [Errno 45] Operation not supported" (ex: on FreeBSD
- 13). Patch by Victor Stinner.
-
- - gh-issue-108851: Fix ``test_tomllib`` recursion tests for WASI buildbots:
- reduce the recursion limit and compute the maximum nested array/dict
- depending on the current available recursion limit. Patch by Victor
- Stinner.
-
- - gh-issue-108851: Add ``get_recursion_available()`` and
- ``get_recursion_depth()`` functions to the :mod:`test.support` module.
- Patch by Victor Stinner.
-
- - gh-issue-108834: Add ``--fail-rerun option`` option to regrtest: if a test
- failed when then passed when rerun in verbose mode, exit the process with
- exit code 2 (error), instead of exit code 0 (success). Patch by Victor
- Stinner.
-
- - gh-issue-108834: Rename regrtest ``--verbose2`` option (``-w``) to
- ``--rerun``. Keep ``--verbose2`` as a deprecated alias. Patch by Victor
- Stinner.
-
- - gh-issue-108834: When regrtest reruns failed tests in verbose mode
- (``./python -m test --rerun``), tests are now rerun in fresh worker
- processes rather than being executed in the main process. If a test does
- crash or is killed by a timeout, the main process can detect and handle
- the killed worker process. Tests are rerun in parallel if the ``-jN``
- option is used to run tests in parallel. Patch by Victor Stinner.
-
- - gh-issue-103186: Suppress and assert expected RuntimeWarnings in
- test_sys_settrace.py
-
- Build
- -----
-
- - gh-issue-108740: Fix a race condition in ``make regen-all``. The
- ``deepfreeze.c`` source and files generated by Argument Clinic are now
- generated or updated before generating "global objects". Previously, some
- identifiers may miss depending on the order in which these files were
- generated. Patch by Victor Stinner.
-
-
- What's New in Python 3.12.0 release candidate 2?
- ================================================
-
- *Release date: 2023-09-05*
-
- Security
- --------
-
- - gh-issue-108310: Fixed an issue where instances of :class:`ssl.SSLSocket`
- were vulnerable to a bypass of the TLS handshake and included protections
- (like certificate verification) and treating sent unencrypted data as if
- it were post-handshake TLS encrypted data. Security issue reported as
- `CVE-2023-40217
- <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2023-40217>`_ by Aapo
- Oksman. Patch by Gregory P. Smith.
-
- - gh-issue-107774: PEP 669 specifies that
- ``sys.monitoring.register_callback`` will generate an audit event.
- Pre-releases of Python 3.12 did not generate the audit event. This is now
- fixed.
-
- Core and Builtins
- -----------------
-
- - gh-issue-108520: Fix
- :meth:`multiprocessing.synchronize.SemLock.__setstate__` to properly
- initialize :attr:`multiprocessing.synchronize.SemLock._is_fork_ctx`. This
- fixes a regression when passing a SemLock accross nested processes.
-
- Rename :attr:`multiprocessing.synchronize.SemLock.is_fork_ctx` to
- :attr:`multiprocessing.synchronize.SemLock._is_fork_ctx` to avoid exposing
- it as public API.
-
- - gh-issue-108654: Restore locals shadowed by an inlined comprehension if
- the comprehension raises an exception.
-
- - gh-issue-108487: Change an assert that would cause a spurious crash in a
- devious case that should only trigger deoptimization.
-
- - gh-issue-106176: Use a ``WeakValueDictionary`` to track the lists
- containing the modules each thread is currently importing. This helps
- avoid a reference leak from keeping the list around longer than necessary.
- Weakrefs are used as GC can't interrupt the cleanup.
-
- - gh-issue-107901: Fix missing line number on :opcode:`JUMP_BACKWARD` at the
- end of a for loop.
-
- - gh-issue-108390: Raise an exception when setting a non-local event
- (``RAISE``, ``EXCEPTION_HANDLED``, etc.) in
- ``sys.monitoring.set_local_events``.
-
- Fixes crash when tracing in recursive calls to Python classes.
-
- - gh-issue-91051: Fix abort / segfault when using all eight type watcher
- slots, on platforms where ``char`` is signed by default.
-
- - gh-issue-107724: In pre-release versions of 3.12, up to rc1, the
- sys.monitoring callback function for the ``PY_THROW`` event was missing
- the third, exception argument. That is now fixed.
-
- - gh-issue-107080: Trace refs builds (``--with-trace-refs``) were crashing
- when used with isolated subinterpreters. The problematic global state has
- been isolated to each interpreter. Other fixing the crashes, this change
- does not affect users.
-
- - gh-issue-77377: Ensure that multiprocessing synchronization objects
- created in a fork context are not sent to a different process created in a
- spawn context. This changes a segfault into an actionable RuntimeError in
- the parent process.
-
- Library
- -------
-
- - gh-issue-108469: :func:`ast.unparse` now supports new :term:`f-string`
- syntax introduced in Python 3.12. Note that the :term:`f-string` quotes
- are reselected for simplicity under the new syntax. (Patch by Steven Sun)
-
- - gh-issue-108682: Enum: raise :exc:`TypeError` if ``super().__new__()`` is
- called from a custom ``__new__``.
-
- - gh-issue-108295: Fix crashes related to use of weakrefs on
- :data:`typing.TypeVar`.
-
- - gh-issue-64662: Fix support for virtual tables in
- :meth:`sqlite3.Connection.iterdump`. Patch by Aviv Palivoda.
-
- - gh-issue-108111: Fix a regression introduced in GH-101251 for 3.12,
- resulting in an incorrect offset calculation in
- :meth:`gzip.GzipFile.seek`.
-
- - gh-issue-105736: Harmonized the pure Python version of
- :class:`~collections.OrderedDict` with the C version. Now, both versions
- set up their internal state in ``__new__``. Formerly, the pure Python
- version did the set up in ``__init__``.
-
- - gh-issue-108083: Fix bugs in the constructor of :mod:`sqlite3.Connection`
- and :meth:`sqlite3.Connection.close` where exceptions could be leaked.
- Patch by Erlend E. Aasland.
-
- - gh-issue-107963: Fix :func:`multiprocessing.set_forkserver_preload` to
- check the given list of modules names. Patch by Donghee Na.
-
- - gh-issue-106242: Fixes :func:`os.path.normpath` to handle embedded null
- characters without truncating the path.
-
- - gh-issue-107913: Fix possible losses of ``errno`` and ``winerror`` values
- in :exc:`OSError` exceptions if they were cleared or modified by the
- cleanup code before creating the exception object.
-
- - gh-issue-107845: :func:`tarfile.data_filter` now takes the location of
- symlinks into account when determining their target, so it will no longer
- reject some valid tarballs with ``LinkOutsideDestinationError``.
-
- - gh-issue-107805: Fix signatures of module-level generated functions in
- :mod:`turtle`.
-
- - gh-issue-107715: Fix :meth:`doctest.DocTestFinder.find` in presence of
- class names with special characters. Patch by Gertjan van Zwieten.
-
- - gh-issue-100814: Passing a callable object as an option value to a Tkinter
- image now raises the expected TclError instead of an AttributeError.
-
- - gh-issue-106684: Close :class:`asyncio.StreamWriter` when it is not closed
- by application leading to memory leaks. Patch by Kumar Aditya.
-
- - gh-issue-107396: tarfiles; Fixed use before assignment of self.exception
- for gzip decompression
-
- - gh-issue-106052: :mod:`re` module: fix the matching of possessive
- quantifiers in the case of a subpattern containing backtracking.
-
- - gh-issue-100061: Fix a bug that causes wrong matches for regular
- expressions with possessive qualifier.
-
- - gh-issue-99203: Restore following CPython <= 3.10.5 behavior of
- :func:`shutil.make_archive`: do not create an empty archive if
- ``root_dir`` is not a directory, and, in that case, raise
- :class:`FileNotFoundError` or :class:`NotADirectoryError` regardless of
- ``format`` choice. Beyond the brought-back behavior, the function may now
- also raise these exceptions in ``dry_run`` mode.
-
- Documentation
- -------------
-
- - gh-issue-105052: Update ``timeit`` doc to specify that time in seconds is
- just the default.
-
- Tests
- -----
-
- - gh-issue-89392: Removed support of ``test_main()`` function in tests. They
- now always use normal unittest test runner.
-
- - gh-issue-108388: Convert test_concurrent_futures to a package of 7
- sub-tests. Patch by Victor Stinner.
-
- - gh-issue-108388: Split test_multiprocessing_fork,
- test_multiprocessing_forkserver and test_multiprocessing_spawn into test
- packages. Each package is made of 4 sub-tests: processes, threads, manager
- and misc. It allows running more tests in parallel and so reduce the total
- test duration. Patch by Victor Stinner.
-
- - gh-issue-105776: Fix test_cppext when the C compiler command ``-std=c11``
- option: remove ``-std=`` options from the compiler command. Patch by
- Victor Stinner.
-
- - gh-issue-107178: Add the C API test for functions in the Mapping Protocol,
- the Sequence Protocol and some functions in the Object Protocol.
-
- Build
- -----
-
- - gh-issue-63760: Fix Solaris build: no longer redefine the
- ``gethostname()`` function. Solaris defines the function since 2005. Patch
- by Victor Stinner, original patch by Jakub Kulík.
-
- - gh-issue-107814: When calling ``find_python.bat`` with ``-q`` it did not
- properly silence the output of nuget. That is now fixed.
-
- Windows
- -------
-
- - gh-issue-107565: Update Windows build to use OpenSSL 3.0.10.
-
- - gh-issue-106242: Fixes :func:`~os.path.realpath` to behave consistently
- when passed a path containing an embedded null character on Windows. In
- strict mode, it now raises :exc:`OSError` instead of the unexpected
- :exc:`ValueError`, and in non-strict mode will make the path absolute.
-
- - gh-issue-106844: Fix integer overflow and truncating by the null character
- in :func:`!_winapi.LCMapStringEx` which affects :func:`ntpath.normcase`.
-
- macOS
- -----
-
- - gh-issue-107565: Update macOS installer to use OpenSSL 3.0.10.
-
- Tools/Demos
- -----------
-
- - gh-issue-107565: Update multissltests and GitHub CI workflows to use
- OpenSSL 1.1.1v, 3.0.10, and 3.1.2.
-
- - gh-issue-95065: Argument Clinic now supports overriding automatically
- generated signature by using directive ``@text_signature``.
-
- C API
- -----
-
- - gh-issue-107916: C API functions :c:func:`PyErr_SetFromErrnoWithFilename`,
- :c:func:`PyErr_SetExcFromWindowsErrWithFilename` and
- :c:func:`PyErr_SetFromWindowsErrWithFilename` save now the error code
- before calling :c:func:`PyUnicode_DecodeFSDefault`.
-
- - gh-issue-107915: Such C API functions as ``PyErr_SetString()``,
- ``PyErr_Format()``, ``PyErr_SetFromErrnoWithFilename()`` and many others
- no longer crash or ignore errors if it failed to format the error message
- or decode the filename. Instead, they keep a corresponding error.
-
- - gh-issue-107810: Improve :exc:`DeprecationWarning` for uses of
- :c:type:`PyType_Spec` with metaclasses that have custom ``tp_new``.
-
-
- What's New in Python 3.12.0 release candidate 1?
- ================================================
-
- *Release date: 2023-08-05*
-
- Security
- --------
-
- - gh-issue-102988: Reverted the :mod:`email.utils` security improvement
- change released in 3.12beta4 that unintentionally caused
- :mod:`email.utils.getaddresses` to fail to parse email addresses with a
- comma in the quoted name field. See :gh:`106669`.
-
- - gh-issue-102509: Start initializing ``ob_digit`` during creation of
- :c:type:`PyLongObject` objects. Patch by Illia Volochii.
-
- Core and Builtins
- -----------------
-
- - gh-issue-107263: Increase C recursion limit for functions other than the
- main interpreter from 800 to 1500. This should allow functions like
- ``list.__repr__`` and ``json.dumps`` to handle all the inputs that they
- could prior to 3.12
-
- - gh-issue-104432: Fix potential unaligned memory access on C APIs involving
- returned sequences of ``char *`` pointers within the :mod:`grp` and
- :mod:`socket` modules. These were revealed using a
- ``-fsaniziter=alignment`` build on ARM macOS. Patch by Christopher Chavez.
-
- - gh-issue-106898: Add the exception as the third argument to ``PY_UNIND``
- callbacks in ``sys.monitoring``. This makes the ``PY_UNWIND`` callback
- consistent with the other exception hanlding callbacks.
-
- - gh-issue-106895: Raise a ``ValueError`` when a monitoring callback funtion
- returns ``DISABLE`` for events that cannot be disabled locally.
-
- - gh-issue-106897: Add a ``RERAISE`` event to ``sys.monitoring``, which
- occurs when an exception is reraised, either explicitly by a plain
- ``raise`` statement, or implicitly in an ``except`` or ``finally`` block.
-
- - gh-issue-104621: Unsupported modules now always fail to be imported.
-
- - gh-issue-106917: Fix classmethod-style :func:`super` method calls (i.e.,
- where the second argument to :func:`super`, or the implied second argument
- drawn from ``self/cls`` in the case of zero-arg super, is a type) when the
- target of the call is not a classmethod.
-
- - gh-issue-105699: Python no longer crashes due an infrequent race when
- initialzing per-interpreter interned strings. The crash would manifest
- when the interpreter was finalized.
-
- - gh-issue-105699: Python no longer crashes due to an infrequent race in
- setting ``Py_FileSystemDefaultEncoding`` and
- ``Py_FileSystemDefaultEncodeErrors`` (both deprecated), when
- simultaneously initializing two isolated subinterpreters. Now they are
- only set during runtime initialization.
-
- - gh-issue-106092: Fix a segmentation fault caused by a use-after-free bug
- in ``frame_dealloc`` when the trashcan delays the deallocation of a
- ``PyFrameObject``.
-
- - gh-issue-106719: No longer suppress arbitrary errors in the
- ``__annotations__`` getter and setter in the type and module types.
-
- - gh-issue-106723: Propagate ``frozen_modules`` to multiprocessing spawned
- process interpreters.
-
- - gh-issue-105235: Prevent out-of-bounds memory access during
- ``mmap.find()`` calls.
-
- Library
- -------
-
- - gh-issue-107077: Seems that in some conditions, OpenSSL will return
- ``SSL_ERROR_SYSCALL`` instead of ``SSL_ERROR_SSL`` when a certification
- verification has failed, but the error parameters will still contain
- ``ERR_LIB_SSL`` and ``SSL_R_CERTIFICATE_VERIFY_FAILED``. We are now
- detecting this situation and raising the appropiate
- ``ssl.SSLCertVerificationError``. Patch by Pablo Galindo
-
- - gh-issue-107576: Fix :func:`types.get_original_bases` to only return
- :attr:`!__orig_bases__` if it is present on ``cls`` directly. Patch by
- James Hilton-Balfe.
-
- - gh-issue-46376: Prevent memory leak and use-after-free when using pointers
- to pointers with ctypes
-
- - gh-issue-62519: Make :func:`gettext.pgettext` search plural definitions
- when translation is not found.
-
- - gh-issue-83006: Document behavior of :func:`shutil.disk_usage` for
- non-mounted filesystems on Unix.
-
- - gh-issue-106186: Do not report ``MultipartInvariantViolationDefect``
- defect when the :class:`email.parser.Parser` class is used to parse emails
- with ``headersonly=True``.
-
- - gh-issue-105002: Fix invalid result from :meth:`PurePath.relative_to`
- method when attempting to walk a "``..``" segment in *other* with
- *walk_up* enabled. A :exc:`ValueError` exception is now raised in this
- case.
-
- - gh-issue-106831: Fix potential missing ``NULL`` check of
- ``d2i_SSL_SESSION`` result in ``_ssl.c``.
-
- - gh-issue-106774: Update the bundled copy of pip to version 23.2.1.
-
- - gh-issue-106752: Fixed several bugs in zipfile.Path, including: in
- ``Path.match``, Windows separators are no longer honored (and never were
- meant to be); Fixed ``name``/``suffix``/``suffixes``/``stem`` operations
- when no filename is present and the Path is not at the root of the
- zipfile; Reworked glob for performance and more correct matching behavior.
-
- - gh-issue-106602: Add __copy__ and __deepcopy__ in :mod:`enum`
-
- - gh-issue-106530: Revert a change to :func:`colorsys.rgb_to_hls` that
- caused division by zero for certain almost-white inputs. Patch by Terry
- Jan Reedy.
-
- - gh-issue-106403: Instances of :class:`typing.TypeVar`,
- :class:`typing.ParamSpec`, :class:`typing.ParamSpecArgs`,
- :class:`typing.ParamSpecKwargs`, and :class:`typing.TypeVarTuple` once
- again support weak references, fixing a regression introduced in Python
- 3.12.0 beta 1. Patch by Jelle Zijlstra.
-
- - gh-issue-106350: Detect possible memory allocation failure in the
- libtommath function :c:func:`mp_init` used by the ``_tkinter`` module.
-
- - gh-issue-106263: Fix crash when calling ``repr`` with a manually
- constructed SignalDict object. Patch by Charlie Zhao.
-
- - gh-issue-105626: Change the default return value of
- :meth:`http.client.HTTPConnection.get_proxy_response_headers` to be
- ``None`` and not ``{}``.
-
- - bpo-18319: Ensure ``gettext(msg)`` retrieve translations even if a plural
- form exists. In other words: ``gettext(msg) == ngettext(msg, '', 1)``.
-
- Documentation
- -------------
-
- - gh-issue-107305: Add documentation for :c:type:`PyInterpreterConfig` and
- :c:func:`Py_NewInterpreterFromConfig`. Also clarify some of the nearby
- docs relative to per-interpreter GIL.
-
- - gh-issue-107008: Document the :mod:`curses` module variables
- :const:`~curses.LINES` and :const:`~curses.COLS`.
-
- - gh-issue-106948: Add a number of standard external names to
- ``nitpick_ignore``.
-
- - gh-issue-54738: Add documentation on how to localize the :mod:`argparse`
- module.
-
- Tests
- -----
-
- - gh-issue-107237: ``test_logging``: Fix ``test_udp_reconnection()`` by
- increasing the timeout from 100 ms to 5 minutes (LONG_TIMEOUT). Patch by
- Victor Stinner.
-
- - gh-issue-106714: test_capi: Fix test_no_FatalError_infinite_loop() to no
- longer write a coredump, by using test.support.SuppressCrashReport. Patch
- by Victor Stinner.
-
- - gh-issue-104090: Avoid creating a reference to the test object in
- :meth:`~unittest.TestResult.collectedDurations`.
-
- - gh-issue-106752: Moved tests for ``zipfile.Path`` into
- ``Lib/test/test_zipfile/_path``. Made ``zipfile._path`` a package.
-
- Build
- -----
-
- - gh-issue-106881: Check for ``linux/limits.h`` before including it in
- ``Modules/posixmodule.c``.
-
- - gh-issue-106962: Detect MPI compilers in :file:`configure`.
-
- - gh-issue-101538: Add experimental wasi-threads support. Patch by Takashi
- Yamamoto.
-
- Windows
- -------
-
- - gh-issue-99079: Update Windows build to use OpenSSL 3.0.9
-
- macOS
- -----
-
- - gh-issue-99079: Update macOS installer to use OpenSSL 3.0.9.
-
- Tools/Demos
- -----------
-
- - gh-issue-106970: Fix bugs in the Argument Clinic ``destination <name>
- clear`` command; the destination buffers would never be cleared, and the
- ``destination`` directive parser would simply continue to the fault
- handler after processing the command. Patch by Erlend E. Aasland.
-
- - gh-issue-103186: ``freeze`` now fetches ``CONFIG_ARGS`` from the original
- CPython instance the Makefile uses to call utility scripts. Patch by
- Ijtaba Hussain.
-
- C API
- -----
-
- - gh-issue-107226: :c:func:`PyModule_AddObjectRef` is now only available in
- the limited API version 3.10 or later.
-
-
- What's New in Python 3.12.0 beta 4?
- ===================================
-
- *Release date: 2023-07-11*
-
- Security
- --------
-
- - gh-issue-102988: CVE-2023-27043: Prevent :func:`email.utils.parseaddr` and
- :func:`email.utils.getaddresses` from returning the realname portion of an
- invalid RFC2822 email header in the email address portion of the 2-tuple
- returned after being parsed by :class:`email._parseaddr.AddressList`.
-
- Core and Builtins
- -----------------
-
- - gh-issue-106396: When the format specification of an f-string expression
- is empty, the parser now generates an empty :class:`ast.JoinedStr` node
- for it instead of an one-element :class:`ast.JoinedStr` with an empty
- string :class:`ast.Constant`.
-
- - gh-issue-106145: Make ``end_lineno`` and ``end_col_offset`` required on
- ``type_param`` ast nodes.
-
- - gh-issue-105979: Fix crash in :func:`!_imp.get_frozen_object` due to
- improper exception handling.
-
- - gh-issue-98931: Ensure custom :exc:`SyntaxError` error messages are raised
- for invalid imports with multiple targets. Patch by Pablo Galindo
-
- - gh-issue-105908: Fixed bug where :gh:`99111` breaks future import
- ``barry_as_FLUFL`` in the Python REPL.
-
- - gh-issue-105340: Include the comprehension iteration variable in
- ``locals()`` inside a module- or class-scope comprehension.
-
- - gh-issue-105486: Change the repr of ``ParamSpec`` list of args in
- ``types.GenericAlias``.
-
- - gh-issue-101006: Improve error handling when read :mod:`marshal` data.
-
- Library
- -------
-
- - gh-issue-106524: Fix crash in :func:`!_sre.template` with templates
- containing invalid group indices.
-
- - gh-issue-106510: Improve debug output for atomic groups in regular
- expressions.
-
- - gh-issue-106503: Fix ref cycle in
- :class:`!asyncio._SelectorSocketTransport` by removing ``_write_ready`` in
- ``close``.
-
- - gh-issue-105497: Fix flag mask inversion when unnamed flags exist.
-
- - gh-issue-90876: Prevent :mod:`multiprocessing.spawn` from failing to
- *import* in environments where ``sys.executable`` is ``None``. This
- regressed in 3.11 with the addition of support for path-like objects in
- multiprocessing.
-
- - gh-issue-106292: Check for an instance-dict cached value in the
- :meth:`__get__` method of :func:`functools.cached_property`. This better
- matches the pre-3.12 behavior and improves compatibility for users
- subclassing :func:`functools.cached_property` and adding a :meth:`__set__`
- method.
-
- - gh-issue-106330: Fix incorrect matching of empty paths in
- :meth:`pathlib.PurePath.match`. This bug was introduced in Python 3.12.0
- beta 1.
-
- - gh-issue-102541: Make pydoc.doc catch bad module ImportError when output
- stream is not None.
-
- - gh-issue-106152: Added PY_THROW event hook for :mod:`cProfile` for
- generators
-
- - gh-issue-106075: Added ``asyncio.taskgroups.__all__`` to
- ``asyncio.__all__`` for export in star imports.
-
- - gh-issue-105987: Fix crash due to improper reference counting in
- :mod:`asyncio` eager task factory internal routines.
-
- - gh-issue-105974: Fix bug where a :class:`typing.Protocol` class that had
- one or more non-callable members would raise :exc:`TypeError` when
- :func:`issubclass` was called against it, even if it defined a custom
- ``__subclasshook__`` method. The behaviour in Python 3.11 and lower --
- which has now been restored -- was not to raise :exc:`TypeError` in these
- situations if a custom ``__subclasshook__`` method was defined. Patch by
- Alex Waygood.
-
- - gh-issue-96145: Reverted addition of ``json.AttrDict``.
-
- - gh-issue-105497: Fix flag inversion when alias/mask members exist.
-
- - gh-issue-104554: Add RTSPS scheme support in urllib.parse
-
- - gh-issue-94777: Fix hanging :mod:`multiprocessing` ``ProcessPoolExecutor``
- when a child process crashes while data is being written in the call
- queue.
-
- Documentation
- -------------
-
- - gh-issue-106232: Make timeit doc command lines compatible with Windows by
- using double quotes for arguments. This works on linux and macOS also.
-
- Tests
- -----
-
- - gh-issue-101634: When running the Python test suite with ``-jN`` option,
- if a worker stdout cannot be decoded from the locale encoding report a
- failed testn so the exitcode is non-zero. Patch by Victor Stinner.
-
- Build
- -----
-
- - gh-issue-106118: Fix compilation for platforms without :data:`!O_CLOEXEC`.
- The issue was introduced with Python 3.12b1 in :gh:`103295`. Patch by
- Erlend Aasland.
-
- - gh-issue-104692: Include ``commoninstall`` as a prerequisite for
- ``bininstall``
-
- This ensures that ``commoninstall`` is completed before ``bininstall`` is
- started when parallel builds are used (``make -j install``), and so the
- ``python3`` symlink is only installed after all standard library modules
- are installed.
-
- Tools/Demos
- -----------
-
- - gh-issue-106359: Argument Clinic now explicitly forbids "kwarg splats" in
- function calls used as annotations.
-
- C API
- -----
-
- - gh-issue-105227: The new :c:func:`PyType_GetDict` provides the dictionary
- for the given type object that is normally exposed by ``cls.__dict__``.
- Normally it's sufficient to use :c:member:`~PyTypeObject.tp_dict`, but for
- the static builtin types :c:member:`!tp_dict` is now always ``NULL``.
- :c:func:`!PyType_GetDict()` provides the correct dict object instead.
-
-
- What's New in Python 3.12.0 beta 3?
- ===================================
-
- *Release date: 2023-06-19*
-
- Core and Builtins
- -----------------
-
- - gh-issue-105840: Fix possible crashes when specializing function calls
- with too many ``__defaults__``.
-
- - gh-issue-105831: Fix an f-string bug, where using a debug expression (the
- ``=`` sign) that appears in the last line of a file results to the debug
- buffer that holds the expression text being one character too small.
-
- - gh-issue-105800: Correctly issue :exc:`SyntaxWarning` in f-strings if
- invalid sequences are used. Patch by Pablo Galindo
-
- - gh-issue-105587: The runtime can't guarantee that immortal objects will
- not be mutated by Extensions. Thus, this modifies
- _PyStaticObject_CheckRefcnt to warn instead of asserting.
-
- - gh-issue-105564: Don't include artificil newlines in the ``line``
- attribute of tokens in the APIs of the :mod:`tokenize` module. Patch by
- Pablo Galindo
-
- - gh-issue-105549: Tokenize separately ``NUMBER`` and ``NAME`` tokens that
- are not ambiguous. Patch by Pablo Galindo.
-
- - gh-issue-105588: Fix an issue that could result in crashes when compiling
- malformed :mod:`ast` nodes.
-
- - gh-issue-105375: Fix bugs in the :mod:`builtins` module where exceptions
- could end up being overwritten.
-
- - gh-issue-105375: Fix bug in the compiler where an exception could end up
- being overwritten.
-
- - gh-issue-105375: Improve error handling in
- :c:func:`PyUnicode_BuildEncodingMap` where an exception could end up being
- overwritten.
-
- - gh-issue-105435: Fix spurious newline character if file ends on a comment
- without a newline. Patch by Pablo Galindo
-
- - gh-issue-105390: Correctly raise :exc:`tokenize.TokenError` exceptions
- instead of :exc:`SyntaxError` for tokenize errors such as incomplete
- input. Patch by Pablo Galindo
-
- - gh-issue-104812: The "pending call" machinery now works for all
- interpreters, not just the main interpreter, and runs in all threads, not
- just the main thread. Some calls are still only done in the main thread,
- ergo in the main interpreter. This change does not affect signal handling
- nor the existing public C-API (``Py_AddPendingCall()``), which both still
- only target the main thread. The new functionality is meant strictly for
- internal use for now, since consequences of its use are not well
- understood yet outside some very restricted cases. This change brings the
- capability in line with the intention when the state was made
- per-interpreter several years ago.
-
- Library
- -------
-
- - gh-issue-105808: Fix a regression introduced in GH-101251 for 3.12,
- causing :meth:`gzip.GzipFile.flush` to not flush the compressor (nor pass
- along the ``zip_mode`` argument).
-
- - gh-issue-104799: Enable :func:`ast.unparse` to unparse function and class
- definitions created without the new ``type_params`` field from :pep:`695`.
- Patch by Jelle Zijlstra.
-
- - gh-issue-105745: Fix ``webbrowser.Konqueror.open`` method.
-
- - gh-issue-105375: Fix a bug in :c:func:`!_Unpickler_SetInputStream` where
- an exception could end up being overwritten in case of failure.
-
- - gh-issue-105375: Fix bugs in :mod:`sys` where exceptions could end up
- being overwritten because of deferred error handling.
-
- - gh-issue-105605: Harden :mod:`pyexpat` error handling during module
- initialisation to prevent exceptions from possibly being overwritten, and
- objects from being dereferenced twice.
-
- - gh-issue-105375: Fix bug in :mod:`decimal` where an exception could end up
- being overwritten.
-
- - gh-issue-105375: Fix bugs in :mod:`!_datetime` where exceptions could be
- overwritten in case of module initialisation failure.
-
- - gh-issue-105375: Fix bugs in :mod:`!_ssl` initialisation which could lead
- to leaked references and overwritten exceptions.
-
- - gh-issue-105375: Fix a bug in :class:`array.array` where an exception
- could end up being overwritten.
-
- - gh-issue-105375: Fix bugs in :mod:`_ctypes` where exceptions could end up
- being overwritten.
-
- - gh-issue-105375: Fix a bug in the :mod:`posix` module where an exception
- could be overwritten.
-
- - gh-issue-105375: Fix bugs in :mod:`!_elementtree` where exceptions could
- be overwritten.
-
- - gh-issue-105375: Fix bugs in :mod:`zoneinfo` where exceptions could be
- overwritten.
-
- - gh-issue-105375: Fix bugs in :mod:`errno` where exceptions could be
- overwritten.
-
- - gh-issue-105375: Fix bugs in :mod:`pickle` where exceptions could be
- overwritten.
-
- - gh-issue-105375: Fix a bug in :mod:`sqlite3` where an exception could be
- overwritten in the :meth:`collation <sqlite3.Connection.create_collation>`
- callback.
-
- - gh-issue-105332: Revert pickling method from by-name back to by-value.
-
- - gh-issue-104310: In the beta 1 release we added a utility function for
- extension module authors, to use when testing their module for support in
- multiple interpreters or under a per-interpreter GIL. The name of that
- function has changed from ``allowing_all_extensions`` to
- ``_incompatible_extension_module_restrictions``. The default for the
- "disable_check" argument has change from ``True`` to ``False``, to better
- match the new function name.
-
- - gh-issue-104996: Improve performance of :class:`pathlib.PurePath`
- initialisation by deferring joining of paths when multiple arguments are
- given.
-
- - gh-issue-102541: Hide traceback in :func:`help` prompt, when import
- failed.
-
- Tests
- -----
-
- - gh-issue-105084: When the Python build is configured
- ``--with-wheel-pkg-dir``, tests requiring the ``setuptools`` and ``wheel``
- wheels will search for the wheels in ``WHEEL_PKG_DIR``.
-
- Windows
- -------
-
- - gh-issue-105436: Ensure that an empty environment block is terminated by
- two null characters, as is required by Windows.
-
- C API
- -----
-
- - gh-issue-105375: Fix a bug in :c:func:`PyErr_WarnExplicit` where an
- exception could end up being overwritten if the API failed internally.
-
- - gh-issue-105603: We've renamed the new (in 3.12)
- ``PyInterpreterConfig.own_gil`` to ``PyInterpreterConfig.gil`` and changed
- the meaning of the value from "bool" to an integer with supported values
- of ``PyInterpreterConfig_DEFAULT_GIL``,
- ``PyInterpreterConfig_SHARED_GIL``, and ``PyInterpreterConfig_OWN_GIL``.
- The default is "shared".
-
- - gh-issue-105387: In the limited C API version 3.12, :c:func:`Py_INCREF`
- and :c:func:`Py_DECREF` functions are now implemented as opaque function
- calls to hide implementation details. Patch by Victor Stinner.
-
- - gh-issue-103968: :c:func:`PyType_FromMetaclass` now allows metaclasses
- with ``tp_new`` set to ``NULL``.
-
-
- What's New in Python 3.12.0 beta 2?
- ===================================
-
- *Release date: 2023-06-06*
-
- Security
- --------
-
- - gh-issue-103142: The version of OpenSSL used in our binary builds has been
- upgraded to 1.1.1u to address several CVEs.
-
- - gh-issue-99108: Refresh our new HACL* built-in :mod:`hashlib` code from
- upstream. Built-in SHA2 should be faster and an issue with SHA3 on 32-bit
- platforms is fixed.
-
- Core and Builtins
- -----------------
-
- - gh-issue-105259: Don't include newline character for trailing ``NEWLINE``
- tokens emitted in the :mod:`tokenize` module. Patch by Pablo Galindo
-
- - gh-issue-105324: Fix the main function of the :mod:`tokenize` module when
- reading from ``sys.stdin``. Patch by Pablo Galindo
-
- - gh-issue-98963: Restore the ability for a subclass of :class:`property` to
- define ``__slots__`` or otherwise be dict-less by ignoring failures to set
- a docstring on such a class. This behavior had regressed in 3.12beta1.
- An :exc:`AttributeError` where there had not previously been one was
- disruptive to existing code.
-
- - gh-issue-105194: Do not escape with backslashes f-string format
- specifiers. Patch by Pablo Galindo
-
- - gh-issue-105162: Fixed bug in generator.close()/throw() where an inner
- iterator would be ignored when the outer iterator was instrumented.
-
- - gh-issue-105164: Ensure annotations are set up correctly if the only
- annotation in a block is within a :keyword:`match` block. Patch by Jelle
- Zijlstra.
-
- - gh-issue-104799: Attributes of :mod:`ast` nodes that are lists now default
- to the empty list if omitted. This means that some code that previously
- raised :exc:`TypeError` when the AST node was used will now proceed with
- the empty list instead. Patch by Jelle Zijlstra.
-
- - gh-issue-105035: Fix :func:`super` calls on types with custom
- :attr:`tp_getattro` implementation (e.g. meta-types.)
-
- - gh-issue-105017: Show CRLF lines in the tokenize string attribute in both
- NL and NEWLINE tokens. Patch by Marta Gómez.
-
- - gh-issue-105013: Fix handling of multiline parenthesized lambdas in
- :func:`inspect.getsource`. Patch by Pablo Galindo
-
- - gh-issue-105017: Do not include an additional final ``NL`` token when
- parsing files having CRLF lines. Patch by Marta Gómez.
-
- - gh-issue-104976: Ensure that trailing ``DEDENT``
- :class:`tokenize.TokenInfo` objects emitted by the :mod:`tokenize` module
- are reported as in Python 3.11. Patch by Pablo Galindo
-
- - gh-issue-104972: Ensure that the ``line`` attribute in
- :class:`tokenize.TokenInfo` objects in the :mod:`tokenize` module are
- always correct. Patch by Pablo Galindo
-
- - gh-issue-104955: Fix signature for the new
- :meth:`~object.__release_buffer__` slot. Patch by Jelle Zijlstra.
-
- - gh-issue-104690: Starting new threads and process creation through
- :func:`os.fork` during interpreter shutdown (such as from :mod:`atexit`
- handlers) is no longer supported. It can lead to race condition between
- the main Python runtime thread freeing thread states while internal
- :mod:`threading` routines are trying to allocate and use the state of just
- created threads. Or forked children trying to use the mid-shutdown runtime
- and thread state in the child process.
-
- - gh-issue-104879: Fix crash when accessing the ``__module__`` attribute of
- type aliases defined outside a module. Patch by Jelle Zijlstra.
-
- - gh-issue-104825: Tokens emitted by the :mod:`tokenize` module do not
- include an implicit ``\n`` character in the ``line`` attribute anymore.
- Patch by Pablo Galindo
-
- Library
- -------
-
- - gh-issue-105280: Fix bug where ``isinstance([], collections.abc.Mapping)``
- could evaluate to ``True`` if garbage collection happened at the wrong
- time. The bug was caused by changes to the implementation of
- :class:`typing.Protocol` in Python 3.12.
-
- - gh-issue-105239: Fix longstanding bug where ``issubclass(object,
- typing.Protocol)`` would evaluate to ``True`` in some edge cases. Patch by
- Alex Waygood.
-
- - gh-issue-105080: Fixed inconsistent signature on derived classes for
- :func:`inspect.signature`
-
- - gh-issue-105144: Fix a recent regression in the :mod:`typing` module. The
- regression meant that doing ``class Foo(X, typing.Protocol)``, where ``X``
- was a class that had :class:`abc.ABCMeta` as its metaclass, would then
- cause subsequent ``isinstance(1, X)`` calls to erroneously raise
- :exc:`TypeError`. Patch by Alex Waygood.
-
- - gh-issue-105113: Improve performance of :meth:`pathlib.PurePath.match` by
- compiling an :class:`re.Pattern` object for the entire pattern.
-
- - gh-issue-101588: Deprecate undocumented copy/deepcopy/pickle support for
- itertools.
-
- - gh-issue-103631: Fix
- ``pathlib.PurePosixPath(pathlib.PureWindowsPath(...))`` not converting
- path separators to restore 3.11 compatible behavior.
-
- - gh-issue-104947: Make comparisons between :class:`pathlib.PureWindowsPath`
- objects consistent across Windows and Posix to match 3.11 behavior.
-
- - gh-issue-104935: Fix bugs with the interaction between
- :func:`typing.runtime_checkable` and :class:`typing.Generic` that were
- introduced by the :pep:`695` implementation. Patch by Jelle Zijlstra.
-
- - gh-issue-104874: Document the ``__name__`` and ``__supertype__``
- attributes of :class:`typing.NewType`. Patch by Jelle Zijlstra.
-
- - gh-issue-104799: Adjust the location of the (see :pep:`695`)
- ``type_params`` field on :class:`ast.ClassDef`,
- :class:`ast.AsyncFunctionDef`, and :class:`ast.FunctionDef` to better
- preserve backward compatibility. Patch by Jelle Zijlstra
-
- - gh-issue-104797: Allow :class:`typing.Protocol` classes to inherit from
- :class:`collections.abc.Buffer`. Patch by Jelle Zijlstra.
-
- - gh-issue-104372: On Linux where :mod:`subprocess` can use the ``vfork()``
- syscall for faster spawning, prevent the parent process from blocking
- other threads by dropping the GIL while it waits for the vfork'ed child
- process ``exec()`` outcome. This prevents spawning a binary from a slow
- filesystem from blocking the rest of the application.
-
- - gh-issue-99108: We now release the GIL around built-in :mod:`hashlib`
- computations of reasonable size for the SHA families and MD5 hash
- functions, matching what our OpenSSL backed hash computations already
- does.
-
- - gh-issue-104399: Prepare the ``_tkinter`` module for building with Tcl 9.0
- and future libtommath by replacing usage of deprecated functions
- :c:func:`mp_to_unsigned_bin_n` and :c:func:`mp_unsigned_bin_size` when
- necessary.
-
- - gh-issue-102024: Reduce calls of ``_idle_semaphore.release()`` in
- :func:`concurrent.futures.thread._worker`.
-
- Documentation
- -------------
-
- - gh-issue-89455: Add missing documentation for the ``max_group_depth`` and
- ``max_group_width`` parameters and the ``exceptions`` attribute of the
- :class:`traceback.TracebackException` class.
-
- - gh-issue-89412: Add missing documentation for the ``end_lineno`` and
- ``end_offset`` attributes of the :class:`traceback.TracebackException`
- class.
-
- - gh-issue-104943: Remove mentions of old Python versions in
- :class:`typing.NamedTuple`.
-
- Build
- -----
-
- - gh-issue-90005: Fix a regression in :file:`configure` where we could end
- up unintentionally linking with ``libbsd``.
-
- - gh-issue-89886: Autoconf 2.71 and aclocal 1.16.4 is now required to
- regenerate :file:`!configure`.
-
- Windows
- -------
-
- - gh-issue-105146: Updated the links at the end of the installer to point to
- Discourse rather than the mailing lists.
-
- - gh-issue-103646: When installed from the Microsoft Store, ``pip`` no
- longer defaults to per-user installs. However, as the install directory is
- unwritable, it should automatically decide to do a per-user install
- anyway. This should resolve issues when ``pip`` is passed an option that
- conflicts with ``--user``.
-
- - gh-issue-88745: Improve performance of :func:`shutil.copy2` by using the
- operating system's ``CopyFile2`` function. This may result in subtle
- changes to metadata copied along with some files, bringing them in line
- with normal OS behavior.
-
- - gh-issue-104820: Fixes :func:`~os.stat` and related functions on file
- systems that do not support file ID requests. This includes FAT32 and
- exFAT.
-
- - gh-issue-104803: Add :func:`os.path.isdevdrive` to detect whether a path
- is on a Windows Dev Drive. Returns ``False`` on platforms that do not
- support Dev Drive, and is absent on non-Windows platforms.
-
- macOS
- -----
-
- - gh-issue-103142: Update macOS installer to use OpenSSL 1.1.1u.
-
- IDLE
- ----
-
- - gh-issue-104719: Remove IDLE's modification of tokenize.tabsize and test
- other uses of tokenize data and methods.
-
- C API
- -----
-
- - gh-issue-105115: ``PyTypeObject.tp_bases`` (and ``tp_mro``) for builtin
- static types are now shared by all interpreters, whereas in 3.12-beta1
- they were stored on ``PyInterpreterState``. Also note that now the tuples
- are immortal objects.
-
- - gh-issue-105071: Add ``PyUnstable_Exc_PrepReraiseStar`` to the unstable C
- api to expose the implementation of :keyword:`except* <except_star>`.
-
- - gh-issue-104668: Don't call :c:var:`PyOS_InputHook` or
- :c:var:`PyOS_ReadlineFunctionPointer` in subinterpreters, since it's
- generally difficult to avoid using global state in their registered
- callbacks. This also avoids situations where extensions may find
- themselves running in a subinterpreter they don't support (or haven't yet
- been loaded in).
-
-
- What's New in Python 3.12.0 beta 1?
- ===================================
-
- *Release date: 2023-05-22*
-
- Security
- --------
-
- - gh-issue-99889: Fixed a security in flaw in :func:`uu.decode` that could
- allow for directory traversal based on the input if no ``out_file`` was
- specified.
-
- - gh-issue-104049: Do not expose the local on-disk location in directory
- indexes produced by :class:`http.client.SimpleHTTPRequestHandler`.
-
- - gh-issue-99108: Upgrade built-in :mod:`hashlib` SHA3 implementation to a
- verified implementation from the ``HACL*`` project. Used when OpenSSL is
- not present or lacks SHA3.
-
- - gh-issue-102153: :func:`urllib.parse.urlsplit` now strips leading C0
- control and space characters following the specification for URLs defined
- by WHATWG in response to CVE-2023-24329. Patch by Illia Volochii.
-
- Core and Builtins
- -----------------
-
- - gh-issue-102856: Implement PEP 701 changes in the :mod:`tokenize` module.
- Patch by Marta Gómez Macías and Pablo Galindo Salgado
-
- - gh-issue-104615: Fix wrong ordering of assignments in code like ``a, a =
- x, y``. Contributed by Carl Meyer.
-
- - gh-issue-104572: Improve syntax error message for invalid constructs in
- :pep:`695` contexts and in annotations when ``from __future__ import
- annotations`` is active.
-
- - gh-issue-104482: Fix three error handling bugs in ast.c's validation of
- pattern matching statements.
-
- - gh-issue-102818: Do not add a frame to the traceback in the
- ``sys.setprofile`` and ``sys.settrace`` trampoline functions. This ensures
- that frames are not duplicated if an exception is raised in the callback
- function, and ensures that frames are not omitted if a C callback is used
- and that does not add the frame.
-
- - gh-issue-104405: Fix an issue where some :term:`bytecode` instructions
- could ignore :pep:`523` when "inlining" calls.
-
- - gh-issue-103082: Change behavior of ``sys.monitoring.events.LINE`` events
- in ``sys.monitoring``: Line events now occur when a new line is reached
- dynamically, instead of using a static approximation, as before. This
- makes the behavior very similar to that of "line" events in
- ``sys.settrace``. This should ease porting of tools from 3.11 to 3.12.
-
- - gh-issue-104263: Fix ``float("nan")`` to produce a quiet NaN on platforms
- (like MIPS) where the meaning of the signalling / quiet bit is inverted
- from its usual meaning. Also introduce a new macro ``Py_INFINITY``
- matching C99's ``INFINITY``, and refactor internals to rely on C99's
- ``NAN`` and ``INFINITY`` macros instead of hard-coding bit patterns for
- infinities and NaNs. Thanks Sebastian Berg.
-
- - gh-issue-99113: Multi-phase init extension modules may now indicate that
- they support running in subinterpreters that have their own GIL. This is
- done by using ``Py_MOD_PER_INTERPRETER_GIL_SUPPORTED`` as the value for
- the ``Py_mod_multiple_interpreters`` module def slot. Otherwise the
- module, by default, cannot be imported in such subinterpreters. (This
- does not affect the main interpreter or subinterpreters that do not have
- their own GIL.) In addition to the isolation that multi-phase init
- already normally requires, support for per-interpreter GIL involves one
- additional constraint: thread-safety. If the module has external (linked)
- dependencies and those libraries have any state that isn't thread-safe
- then the module must do the additional work to add thread-safety. This
- should be an uncommon case.
-
- - gh-issue-99113: The GIL is now (optionally) per-interpreter. This is the
- fundamental change for PEP 684. This is all made possible by virtue of
- the isolated state of each interpreter in the process. The behavior of
- the main interpreter remains unchanged. Likewise, interpreters created
- using ``Py_NewInterpreter()`` are not affected. To get an interpreter
- with its own GIL, call ``Py_NewInterpreterFromConfig()``.
-
- - gh-issue-104108: Multi-phase init extension modules may now indicate
- whether or not they actually support multiple interpreters. By default
- such modules are expected to support use in multiple interpreters. In the
- uncommon case that one does not, it may use the new
- ``Py_mod_multiple_interpreters`` module def slot. A value of ``0`` means
- the module does not support them. ``1`` means it does. The default is
- ``1``.
-
- - gh-issue-104142: Fix an issue where :class:`list` or :class:`tuple`
- repetition could fail to respect :pep:`683`.
-
- - gh-issue-104078: Improve the performance of
- :c:func:`PyObject_HasAttrString`
-
- - gh-issue-104066: Improve the performance of :func:`hasattr` for module
- objects with a missing attribute.
-
- - gh-issue-104028: Reduce object creation while calling callback function
- from gc. Patch by Donghee Na.
-
- - gh-issue-104018: Disallow the "z" format specifier in %-format of bytes
- objects.
-
- - gh-issue-102213: Fix performance loss when accessing an object's
- attributes with ``__getattr__`` defined.
-
- - gh-issue-103895: Improve handling of edge cases in showing
- ``Exception.__notes__``. Ensures that the messages always end with a
- newline and that string/bytes are not exploded over multiple lines. Patch
- by Carey Metcalfe.
-
- - gh-issue-103907: Don't modify the refcounts of known immortal objects
- (:const:`True`, :const:`False`, and :const:`None`) in the main interpreter
- loop.
-
- - gh-issue-103899: Provide a helpful hint in the :exc:`TypeError` message
- when accidentally calling a :term:`module` object that has a callable
- attribute of the same name (such as :func:`dis.dis` or
- :class:`datetime.datetime`).
-
- - gh-issue-103845: Remove both line and instruction instrumentation before
- adding new ones for monitoring, to avoid newly added instrumentation being
- removed immediately.
-
- - gh-issue-103763: Implement :pep:`695`, adding syntactic support for
- generic classes, generic functions, and type aliases.
-
- A new ``type X = ...`` syntax is added for type aliases, which resolves at
- runtime to an instance of the new class ``typing.TypeAliasType``. The
- value is lazily evaluated and is accessible through the ``.__value__``
- attribute. This is implemented as a new AST node ``ast.TypeAlias``.
-
- New syntax (``class X[T]: ...``, ``def func[T](): ...``) is added for
- defining generic functions and classes. This is implemented as a new
- ``type_params`` attribute on the AST nodes for classes and functions. This
- node holds instances of the new AST classes ``ast.TypeVar``,
- ``ast.ParamSpec``, and ``ast.TypeVarTuple``.
-
- ``typing.TypeVar``, ``typing.ParamSpec``, ``typing.ParamSpecArgs``,
- ``typing.ParamSpecKwargs``, ``typing.TypeVarTuple``, and
- ``typing.Generic`` are now implemented in C rather than Python.
-
- There are new bytecode instructions ``LOAD_LOCALS``,
- ``LOAD_CLASSDICT_OR_GLOBAL``, and ``LOAD_CLASSDICT_OR_DEREF`` to support
- correct resolution of names in class namespaces.
-
- Patch by Eric Traut, Larry Hastings, and Jelle Zijlstra.
-
- - gh-issue-103801: Adds three minor linting fixes to the wasm module caught
- that were caught by ruff.
-
- - gh-issue-103793: Optimized asyncio Task creation by deferring expensive
- string formatting (task name generation) from Task creation to the first
- time ``get_name`` is called. This makes asyncio benchmarks up to 5%
- faster.
-
- - gh-issue-102310: Change the error range for invalid bytes literals.
-
- - gh-issue-103590: Do not wrap a single exception raised from a
- ``try-except*`` construct in an :exc:`ExceptionGroup`.
-
- - gh-issue-103650: Change the perf map format to remove the '0x' prefix from
- the addresses
-
- - gh-issue-102856: Implement the required C tokenizer changes for PEP 701.
- Patch by Pablo Galindo Salgado, Lysandros Nikolaou, Batuhan Taskaya, Marta
- Gómez Macías and sunmy2019.
-
- - gh-issue-100530: Clarify the error message raised when the called part of
- a class pattern isn't actually a class.
-
- - gh-issue-101517: Fix bug in line numbers of instructions emitted for
- :keyword:`except* <except_star>`.
-
- - gh-issue-103492: Clarify :exc:`SyntaxWarning` with literal ``is``
- comparison by specifying which literal is problematic, since comparisons
- using ``is`` with e.g. None and bool literals are idiomatic.
-
- - gh-issue-87729: Add :opcode:`LOAD_SUPER_ATTR` (and a specialization for
- ``super().method()``) to speed up ``super().method()`` and
- ``super().attr``. This makes ``super().method()`` roughly 2.3x faster and
- brings it within 20% of the performance of a simple method call. Patch by
- Vladimir Matveev and Carl Meyer.
-
- - gh-issue-103488: Change the internal offset distinguishing yield and
- return target addresses, so that the instruction pointer is correct for
- exception handling and other stack unwinding.
-
- - gh-issue-82012: The bitwise inversion operator (``~``) on bool is
- deprecated. It returns the bitwise inversion of the underlying ``int``
- representation such that ``bool(~True) == True``, which can be confusing.
- Use ``not`` for logical negation of bools. In the rare case that you
- really need the bitwise inversion of the underlying ``int``, convert to
- int explicitly ``~int(x)``.
-
- - gh-issue-77757: Exceptions raised in a typeobject's ``__set_name__``
- method are no longer wrapped by a :exc:`RuntimeError`. Context information
- is added to the exception as a :pep:`678` note.
-
- - gh-issue-103333: :exc:`AttributeError` now retains the ``name`` attribute
- when pickled and unpickled.
-
- - gh-issue-103242: Migrate :meth:`~ssl.SSLContext.set_ecdh_curve` method not
- to use deprecated OpenSSL APIs. Patch by Donghee Na.
-
- - gh-issue-103323: We've replaced our use of ``_PyRuntime.tstate_current``
- with a thread-local variable. This is a fairly low-level implementation
- detail, and there should be no change in behavior.
-
- - gh-issue-84436: The implementation of PEP-683 which adds Immortal Objects
- by using a fixed reference count that skips reference counting to make
- objects truly immutable.
-
- - gh-issue-102700: Allow built-in modules to be submodules. This allows
- submodules to be statically linked into a CPython binary.
-
- - gh-issue-103082: Implement :pep:`669` Low Impact Monitoring for CPython.
-
- - gh-issue-88691: Reduce the number of inline :opcode:`CACHE` entries for
- :opcode:`CALL`.
-
- - gh-issue-102500: Make the buffer protocol accessible in Python code using
- the new ``__buffer__`` and ``__release_buffer__`` magic methods. See
- :pep:`688` for details. Patch by Jelle Zijlstra.
-
- - gh-issue-97933: :pep:`709`: inline list, dict and set comprehensions to
- improve performance and reduce bytecode size.
-
- - gh-issue-99184: Bypass instance attribute access of ``__name__`` in
- ``repr`` of :class:`weakref.ref`.
-
- - gh-issue-98003: Complex function calls are now faster and consume no C
- stack space.
-
- - bpo-39610: ``len()`` for 0-dimensional :class:`memoryview` objects (such
- as ``memoryview(ctypes.c_uint8(42))``) now raises a :exc:`TypeError`.
- Previously this returned ``1``, which was not consistent with
- ``mem_0d[0]`` raising an :exc:`IndexError`.
-
- - bpo-31821: Fix :func:`!pause_reading` to work when called from
- :func:`!connection_made` in :mod:`asyncio`.
-
- Library
- -------
-
- - gh-issue-104600: :func:`functools.update_wrapper` now sets the
- ``__type_params__`` attribute (added by :pep:`695`).
-
- - gh-issue-104340: When an ``asyncio`` pipe protocol loses its connection
- due to an error, and the caller doesn't await ``wait_closed()`` on the
- corresponding ``StreamWriter``, don't log a warning about an exception
- that was never retrieved. After all, according to the
- ``StreamWriter.close()`` docs, the ``wait_closed()`` call is optional
- ("not mandatory").
-
- - gh-issue-104555: Fix issue where an :func:`issubclass` check comparing a
- class ``X`` against a :func:`runtime-checkable protocol
- <typing.runtime_checkable>` ``Y`` with non-callable members would not
- cause :exc:`TypeError` to be raised if an :func:`isinstance` call had
- previously been made comparing an instance of ``X`` to ``Y``. This issue
- was present in edge cases on Python 3.11, but became more prominent in
- 3.12 due to some unrelated changes that were made to runtime-checkable
- protocols. Patch by Alex Waygood.
-
- - gh-issue-104372: Refactored the ``_posixsubprocess`` internals to avoid
- Python C API usage between fork and exec when marking ``pass_fds=`` file
- descriptors inheritable.
-
- - gh-issue-104484: Added *case_sensitive* argument to
- :meth:`pathlib.PurePath.match`
-
- - gh-issue-75367: Fix data descriptor detection in
- :func:`inspect.getattr_static`.
-
- - gh-issue-104536: Fix a race condition in the internal
- :mod:`multiprocessing.process` cleanup logic that could manifest as an
- unintended ``AttributeError`` when calling ``process.close()``.
-
- - gh-issue-103857: Update datetime deprecations' stracktrace to point to the
- calling line
-
- - gh-issue-101520: Move the core functionality of the ``tracemalloc`` module
- in the ``Python/`` folder, leaving just the module wrapper in
- ``Modules/``.
-
- - gh-issue-104392: Remove undocumented and unused ``_paramspec_tvars``
- attribute from some classes in :mod:`typing`.
-
- - gh-issue-102613: Fix issue where :meth:`pathlib.Path.glob` raised
- :exc:`RecursionError` when walking deep directory trees.
-
- - gh-issue-103000: Improve performance of :func:`dataclasses.asdict` for the
- common case where *dict_factory* is ``dict``. Patch by David C Ellis.
-
- - gh-issue-104301: Allow leading whitespace in disambiguated statements in
- :mod:`pdb`.
-
- - gh-issue-104139: Teach :func:`urllib.parse.unsplit` to retain the ``"//"``
- when assembling ``itms-services://?action=generate-bugs`` style `Apple
- Platform Deployment
- <https://support.apple.com/en-gb/guide/deployment/depce7cefc4d/web>`_
- URLs.
-
- - gh-issue-104307: :func:`socket.getnameinfo` now releases the GIL while
- contacting the DNS server
-
- - gh-issue-104310: Users may now use
- ``importlib.util.allowing_all_extensions()`` (a context manager) to
- temporarily disable the strict compatibility checks for importing
- extension modules in subinterpreters.
-
- - gh-issue-87695: Fix issue where :meth:`pathlib.Path.glob` raised
- :exc:`OSError` when it encountered a symlink to an overly long path.
-
- - gh-issue-104265: Prevent possible crash by disallowing instantiation of
- the :class:`!_csv.Reader` and :class:`!_csv.Writer` types. The regression
- was introduced in 3.10.0a4 with PR 23224 (:issue:`14935`). Patch by
- Radislav Chugunov.
-
- - gh-issue-102613: Improve performance of :meth:`pathlib.Path.glob` when
- expanding recursive wildcards ("``**``") by merging adjacent wildcards and
- de-duplicating results only when necessary.
-
- - gh-issue-65772: Remove unneeded comments and code in turtle.py.
-
- - gh-issue-90208: Fixed issue where :meth:`pathlib.Path.glob` returned
- incomplete results when it encountered a :exc:`PermissionError`. This
- method now suppresses all :exc:`OSError` exceptions, except those raised
- from calling :meth:`~pathlib.Path.is_dir` on the top-level path.
-
- - gh-issue-104144: Optimize :class:`asyncio.TaskGroup` when using
- :func:`asyncio.eager_task_factory`. Skip scheduling a done callback if a
- TaskGroup task completes eagerly.
-
- - gh-issue-104144: Optimize :func:`asyncio.gather` when using
- :func:`asyncio.eager_task_factory` to complete eagerly if all fututres
- completed eagerly. Avoid scheduling done callbacks for futures that
- complete eagerly.
-
- - gh-issue-104114: Fix issue where :meth:`pathlib.Path.glob` returns paths
- using the case of non-wildcard segments for corresponding path segments,
- rather than the real filesystem case.
-
- - gh-issue-104104: Improve performance of :meth:`pathlib.Path.glob` by using
- :const:`re.IGNORECASE` to implement case-insensitive matching.
-
- - gh-issue-104102: Improve performance of :meth:`pathlib.Path.glob` when
- evaluating patterns that contain ``'../'`` segments.
-
- - gh-issue-103822: Update the return type of ``weekday`` to the newly added
- Day attribute
-
- - gh-issue-103629: Update the ``repr`` of :class:`typing.Unpack` according
- to :pep:`692`.
-
- - gh-issue-103963: Make :mod:`dis` display the names of the args for
- :opcode:`!CALL_INTRINSIC_*`.
-
- - gh-issue-104035: Do not ignore user-defined ``__getstate__`` and
- ``__setstate__`` methods for slotted frozen dataclasses.
-
- - gh-issue-103987: In :mod:`mmap`, fix several bugs that could lead to
- access to memory-mapped files after they have been invalidated.
-
- - gh-issue-103977: Improve import time of :mod:`platform` module.
-
- - gh-issue-88773: Added :func:`turtle.teleport` to the :mod:`turtle` module
- to move a turtle to a new point without tracing a line, visible or
- invisible. Patch by Liam Gersten.
-
- - gh-issue-103935: Use :func:`io.open_code` for files to be executed instead
- of raw :func:`open`
-
- - gh-issue-68968: Fixed garbled output of
- :meth:`~unittest.TestCase.assertEqual` when an input lacks final newline.
-
- - gh-issue-100370: Fix potential :exc:`OverflowError` in
- :meth:`sqlite3.Connection.blobopen` for 32-bit builds. Patch by Erlend E.
- Aasland.
-
- - gh-issue-102628: Substitute CTRL-D with CTRL-Z in :mod:`sqlite3` CLI
- banner when running on Windows.
-
- - gh-issue-103636: Module-level attributes ``January`` and ``February`` are
- deprecated from :mod:`calendar`.
-
- - gh-issue-103583: Isolate :mod:`!_multibytecodec` and codecs extension
- modules. Patches by Erlend E. Aasland.
-
- - gh-issue-103848: Add checks to ensure that ``[`` bracketed ``]`` hosts
- found by :func:`urllib.parse.urlsplit` are of IPv6 or IPvFuture format.
-
- - gh-issue-103872: Update the bundled copy of pip to version 23.1.2.
-
- - gh-issue-99944: Make :mod:`dis` display the value of oparg of
- :opcode:`KW_NAMES`.
-
- - gh-issue-74940: The C.UTF-8 locale is no longer converted to en_US.UTF-8,
- enabling the use of UTF-8 encoding on systems which have no locales
- installed.
-
- - gh-issue-103861: Fix ``zipfile.Zipfile`` creating invalid zip files when
- ``force_zip64`` was used to add files to them. Patch by Carey Metcalfe.
-
- - gh-issue-103857: Deprecated :meth:`datetime.datetime.utcnow` and
- :meth:`datetime.datetime.utcfromtimestamp`. (Patch by Paul Ganssle)
-
- - gh-issue-103839: Avoid compilation error due to tommath.h not being found
- when building Tkinter against Tcl 8.7 built with bundled libtommath.
-
- - gh-issue-103791: :class:`contextlib.suppress` now supports suppressing
- exceptions raised as part of an :exc:`ExceptionGroup`. If other exceptions
- exist on the group, they are re-raised in a group that does not contain
- the suppressed exceptions.
-
- - gh-issue-90750: Use :meth:`datetime.datetime.fromisocalendar` in the
- implementation of :meth:`datetime.datetime.strptime`, which should now
- accept only valid ISO dates. (Patch by Paul Ganssle)
-
- - gh-issue-103685: Prepare :meth:`tkinter.Menu.index` for Tk 8.7 so that it
- does not raise ``TclError: expected integer but got ""`` when it should
- return ``None``.
-
- - gh-issue-81403: :class:`urllib.request.CacheFTPHandler` no longer raises
- :class:`URLError` if a cached FTP instance is reused. ftplib's endtransfer
- method calls voidresp to drain the connection to handle FTP instance reuse
- properly.
-
- - gh-issue-103699: Add ``__orig_bases__`` to non-generic TypedDicts,
- call-based TypedDicts, and call-based NamedTuples. Other TypedDicts and
- NamedTuples already had the attribute.
-
- - gh-issue-103693: Add convenience variable feature to :mod:`pdb`
-
- - gh-issue-92248: Deprecate ``type``, ``choices``, and ``metavar``
- parameters of ``argparse.BooleanOptionalAction``.
-
- - gh-issue-89415: Add :mod:`socket` constants for source-specific multicast.
- Patch by Reese Hyde.
-
- - gh-issue-103673: :mod:`socketserver` gains ``ForkingUnixStreamServer`` and
- ``ForkingUnixDatagramServer`` classes. Patch by Jay Berry.
-
- - gh-issue-103636: Added Enum for months and days in the calendar module.
-
- - gh-issue-84976: Create a new ``Lib/_pydatetime.py`` file that defines the
- Python version of the ``datetime`` module, and make ``datetime`` import
- the contents of the new library only if the C implementation is missing.
- Currently, the full Python implementation is defined and then deleted if
- the C implementation is not available, slowing down ``import datetime``
- unnecessarily.
-
- - gh-issue-103596: Attributes/methods are no longer shadowed by same-named
- enum members, although they may be shadowed by enum.property's.
-
- - gh-issue-103584: Updated ``importlib.metadata`` with changes from
- ``importlib_metadata`` 5.2 through 6.5.0, including: Support
- ``installed-files.txt`` for ``Distribution.files`` when present.
- ``PackageMetadata`` now stipulates an additional ``get`` method allowing
- for easy querying of metadata keys that may not be present.
- ``packages_distributions`` now honors packages and modules with Python
- modules that not ``.py`` sources (e.g. ``.pyc``, ``.so``). Expand protocol
- for ``PackageMetadata.get_all`` to match the upstream implementation of
- ``email.message.Message.get_all`` in python/typeshed#9620. Deprecated use
- of ``Distribution`` without defining abstract methods. Deprecated
- expectation that ``PackageMetadata.__getitem__`` will return ``None`` for
- missing keys. In the future, it will raise a ``KeyError``.
-
- - gh-issue-103578: Fixed a bug where :mod:`pdb` crashes when reading source
- file with different encoding by replacing :func:`io.open` with
- :func:`io.open_code`. The new method would also call into the hook set by
- :c:func:`PyFile_SetOpenCodeHook`.
-
- - gh-issue-103556: Now creating :class:`inspect.Signature` objects with
- positional-only parameter with a default followed by a
- positional-or-keyword parameter without one is impossible.
-
- - gh-issue-103559: Update the bundled copy of pip to version 23.1.1.
-
- - gh-issue-103548: Improve performance of :meth:`pathlib.Path.absolute` and
- :meth:`~pathlib.Path.cwd` by joining paths only when necessary. Also
- improve performance of :meth:`pathlib.PurePath.is_absolute` on Posix by
- skipping path parsing and normalization.
-
- - gh-issue-103538: Remove ``_tkinter`` module code guarded by definition of
- the ``TK_AQUA`` macro which was only needed for Tk 8.4.7 or earlier and
- was never actually defined by any build system or documented for manual
- use.
-
- - gh-issue-103533: Update :mod:`cProfile` to use PEP 669 API
-
- - gh-issue-103525: Fix misleading exception message when mixed ``str`` and
- ``bytes`` arguments are supplied to :class:`pathlib.PurePath` and
- :class:`~pathlib.Path`.
-
- - gh-issue-103489: Add :meth:`~sqlite3.Connection.getconfig` and
- :meth:`~sqlite3.Connection.setconfig` to :class:`~sqlite3.Connection` to
- make configuration changes to a database connection. Patch by Erlend E.
- Aasland.
-
- - gh-issue-103365: Set default Flag boundary to ``STRICT`` and fix bitwise
- operations.
-
- - gh-issue-103472: Avoid a potential :exc:`ResourceWarning` in
- :class:`http.client.HTTPConnection` by closing the proxy / tunnel's
- CONNECT response explicitly.
-
- - gh-issue-103462: Fixed an issue with using
- :meth:`~asyncio.WriteTransport.writelines` in :mod:`asyncio` to send very
- large payloads that exceed the amount of data that can be written in one
- call to :meth:`socket.socket.send` or :meth:`socket.socket.sendmsg`,
- resulting in the remaining buffer being left unwritten.
-
- - gh-issue-103449: Fix a bug in doc string generation in
- :func:`dataclasses.dataclass`.
-
- - gh-issue-103092: Isolate :mod:`!_collections` (apply :pep:`687`). Patch by
- Erlend E. Aasland.
-
- - gh-issue-103357: Added support for :class:`logging.Formatter` ``defaults``
- parameter to :func:`logging.config.dictConfig` and
- :func:`logging.config.fileConfig`. Patch by Bar Harel.
-
- - gh-issue-103092: Adapt the :mod:`winreg` extension module to :pep:`687`.
-
- - gh-issue-74690: The performance of :func:`isinstance` checks against
- :func:`runtime-checkable protocols <typing.runtime_checkable>` has been
- considerably improved for protocols that only have a few members. To
- achieve this improvement, several internal implementation details of the
- :mod:`typing` module have been refactored, including
- ``typing._ProtocolMeta.__instancecheck__``,
- ``typing._is_callable_members_only``, and ``typing._get_protocol_attrs``.
- Patches by Alex Waygood.
-
- - gh-issue-74690: The members of a runtime-checkable protocol are now
- considered "frozen" at runtime as soon as the class has been created. See
- :ref:`"What's new in Python 3.12" <whatsnew-typing-py312>` for more
- details.
-
- - gh-issue-103256: Fixed a bug that caused :mod:`hmac` to raise an exception
- when the requested hash algorithm was not available in OpenSSL despite
- being available separately as part of ``hashlib`` itself. It now falls
- back properly to the built-in. This could happen when, for example, your
- OpenSSL does not include SHA3 support and you want to compute
- ``hmac.digest(b'K', b'M', 'sha3_256')``.
-
- - gh-issue-102778: Support ``sys.last_exc`` in :mod:`idlelib`.
-
- - gh-issue-103285: Improve performance of :func:`ast.get_source_segment`.
-
- - gh-issue-103225: Fix a bug in :mod:`pdb` when displaying line numbers of
- module-level source code.
-
- - gh-issue-103092: Adapt the :mod:`msvcrt` extension module to :pep:`687`.
-
- - gh-issue-103092: Adapt the :mod:`winsound` extension module to :pep:`687`.
-
- - gh-issue-93910: Remove deprecation of enum ``memmber.member`` access.
-
- - gh-issue-102978: Fixes :func:`unittest.mock.patch` not enforcing function
- signatures for methods decorated with ``@classmethod`` or
- ``@staticmethod`` when patch is called with ``autospec=True``.
-
- - gh-issue-103092: Isolate :mod:`!_socket` (apply :pep:`687`). Patch by
- Erlend E. Aasland.
-
- - gh-issue-100479: Add :meth:`pathlib.PurePath.with_segments`, which creates
- a path object from arguments. This method is called whenever a derivative
- path is created, such as from :attr:`pathlib.PurePath.parent`. Subclasses
- may override this method to share information between path objects.
-
- - gh-issue-103220: Fix issue where :func:`os.path.join` added a slash when
- joining onto an incomplete UNC drive with a trailing slash on Windows.
-
- - gh-issue-103204: Fixes :mod:`http.server` accepting HTTP requests with
- HTTP version numbers preceded by '+', or '-', or with digit-separating '_'
- characters. The length of the version numbers is also constrained.
-
- - gh-issue-75586: Fix various Windows-specific issues with ``shutil.which``.
-
- - gh-issue-103193: Improve performance of :func:`inspect.getattr_static`.
- Patch by Alex Waygood.
-
- - gh-issue-103176: :func:`sys._current_exceptions` now returns a mapping
- from thread-id to an exception instance, rather than to a ``(typ, exc,
- tb)`` tuple.
-
- - gh-issue-103143: Polish the help messages and docstrings of :mod:`pdb`.
-
- - gh-issue-103015: Add *entrypoint* keyword-only parameter to
- :meth:`sqlite3.Connection.load_extension`, for overriding the SQLite
- extension entry point. Patch by Erlend E. Aasland.
-
- - gh-issue-103000: Improve performance of :func:`dataclasses.astuple` and
- :func:`dataclasses.asdict` in cases where the contents are common Python
- types.
-
- - gh-issue-102953: The extraction methods in :mod:`tarfile`, and
- :func:`shutil.unpack_archive`, have a new a *filter* argument that allows
- limiting tar features than may be surprising or dangerous, such as
- creating files outside the destination directory. See
- :ref:`tarfile-extraction-filter` for details.
-
- - gh-issue-97696: Implemented an eager task factory in asyncio. When used as
- a task factory on an event loop, it performs eager execution of
- coroutines. Coroutines that are able to complete synchronously (e.g.
- return or raise without blocking) are returned immediately as a finished
- task, and the task is never scheduled to the event loop. If the coroutine
- blocks, the (pending) task is scheduled and returned.
-
- - gh-issue-81079: Add *case_sensitive* keyword-only argument to
- :meth:`pathlib.Path.glob` and :meth:`~pathlib.Path.rglob`.
-
- - gh-issue-101819: Isolate the :mod:`io` extension module by applying
- :pep:`687`. Patch by Kumar Aditya, Victor Stinner, and Erlend E. Aasland.
-
- - gh-issue-91896: Deprecate :class:`collections.abc.ByteString`
-
- - gh-issue-101362: Speed up :class:`pathlib.Path` construction by omitting
- the path anchor from the internal list of path parts.
-
- - gh-issue-102114: Functions in the :mod:`dis` module that accept a source
- code string as argument now print a more concise traceback when the string
- contains a syntax or indentation error.
-
- - gh-issue-62432: The :mod:`unittest` runner will now exit with status code
- 5 if no tests were run. It is common for test runner misconfiguration to
- fail to find any tests, this should be an error.
-
- - gh-issue-78079: Fix incorrect normalization of UNC device path roots, and
- partial UNC share path roots, in :class:`pathlib.PurePath`. Pathlib no
- longer appends a trailing slash to such paths.
-
- - gh-issue-85984: Add :func:`tty.cfmakeraw` and :func:`tty.cfmakecbreak` to
- :mod:`tty` and modernize, the behavior of :func:`tty.setraw` and
- :func:`tty.setcbreak` to use POSIX.1-2017 Chapter 11 "General Terminal
- Interface" flag masks by default.
-
- - gh-issue-101688: Implement :func:`types.get_original_bases` to provide
- further introspection for types.
-
- - gh-issue-101640: :class:`argparse.ArgumentParser` now catches errors when
- writing messages, such as when :data:`sys.stderr` is ``None``. Patch by
- Oleg Iarygin.
-
- - gh-issue-83861: Fix datetime.astimezone method return value when invoked
- on a naive datetime instance that represents local time falling in a
- timezone transition gap. PEP 495 requires that instances with fold=1
- produce earlier times than those with fold=0 in this case.
-
- - gh-issue-89550: Decrease execution time of some :mod:`gzip` file writes by
- 15% by adding more appropriate buffering.
-
- - gh-issue-95299: Remove the bundled setuptools wheel from ``ensurepip``,
- and stop installing setuptools in environments created by ``venv``.
-
- - gh-issue-99353: Respect the :class:`http.client.HTTPConnection`
- ``.debuglevel`` flag in :class:`urllib.request.AbstractHTTPHandler` when
- its constructor parameter ``debuglevel`` is not set. And do the same for
- ``*HTTPS*``.
-
- - gh-issue-98040: Remove the long-deprecated ``imp`` module.
-
- - gh-issue-97850: Deprecate :func:`pkgutil.find_loader` and
- :func:`pkgutil.get_loader` in favor of :func:`importlib.util.find_spec`.
-
- - gh-issue-94473: Flatten arguments in :meth:`tkinter.Canvas.coords`. It now
- accepts not only ``x1, y1, x2, y2, ...`` and ``[x1, y1, x2, y2, ...]``,
- but also ``(x1, y1), (x2, y2), ...`` and ``[(x1, y1), (x2, y2), ...]``.
-
- - gh-issue-98040: Remove more deprecated importlib APIs: ``find_loader()``,
- ``find_module()``, ``importlib.abc.Finder``, ``pkgutil.ImpImporter``,
- ``pkgutil.ImpLoader``.
-
- - gh-issue-96522: Fix potential deadlock in pty.spawn()
-
- - gh-issue-96534: Support divert(4) added in FreeBSD 14.
-
- - gh-issue-87474: Fix potential file descriptor leaks in
- :class:`subprocess.Popen`.
-
- - gh-issue-94906: Support multiple steps in :func:`math.nextafter`. Patch by
- Shantanu Jain and Matthias Gorgens.
-
- - gh-issue-51574: Make :func:`tempfile.mkdtemp` return absolute paths when
- its *dir* parameter is relative.
-
- - gh-issue-94518: Convert private :meth:`_posixsubprocess.fork_exec` to use
- Argument Clinic.
-
- - gh-issue-92184: When creating zip files using :mod:`zipfile`,
- ``os.altsep``, if not ``None``, will always be treated as a path separator
- even when it is not ``/``. Patch by Carey Metcalfe.
-
- - bpo-46797: Deprecation warnings are now emitted for :class:`!ast.Num`,
- :class:`!ast.Bytes`, :class:`!ast.Str`, :class:`!ast.NameConstant` and
- :class:`!ast.Ellipsis`. These have been documented as deprecated since
- Python 3.8, and will be removed in Python 3.14.
-
- - bpo-44844: Enables :mod:`webbrowser` to detect and launch Microsoft Edge
- browser.
-
- - bpo-45606: Fixed the bug in :meth:`pathlib.Path.glob` -- previously a
- dangling symlink would not be found by this method when the pattern is an
- exact match, but would be found when the pattern contains a wildcard or
- the recursive wildcard (``**``). With this change, a dangling symlink will
- be found in both cases.
-
- - bpo-23041: Add :const:`~csv.QUOTE_STRINGS` and :const:`~csv.QUOTE_NOTNULL`
- to the suite of :mod:`csv` module quoting styles.
-
- - bpo-24964: Added
- :meth:`http.client.HTTPConnection.get_proxy_response_headers` that
- provides access to the HTTP headers on a proxy server response to the
- ``CONNECT`` request.
-
- - bpo-17258: :mod:`multiprocessing` now supports stronger HMAC algorithms
- for inter-process connection authentication rather than only HMAC-MD5.
-
- - bpo-39744: Make :func:`asyncio.subprocess.Process.communicate` close the
- subprocess's stdin even when called with ``input=None``.
-
- - bpo-22708: http.client CONNECT method tunnel improvements: Use HTTP 1.1
- protocol; send a matching Host: header with CONNECT, if one is not
- provided; convert IDN domain names to Punycode. Patch by Michael Handler.
-
- Documentation
- -------------
-
- - gh-issue-67056: Document that the effect of registering or unregistering
- an :mod:`atexit` cleanup function from within a registered cleanup
- function is undefined.
-
- - gh-issue-103629: Mention the new way of typing ``**kwargs`` with
- ``Unpack`` and ``TypedDict`` introduced in :pep:`692`.
-
- - gh-issue-48241: Clarifying documentation about the url parameter to
- urllib.request.urlopen and urllib.request.Request needing to be encoded
- properly.
-
- - gh-issue-86094: Add support for Unicode Path Extra Field in ZipFile. Patch
- by Yeojin Kim and Andrea Giudiceandrea
-
- - gh-issue-99202: Fix extension type from documentation for compiling in
- C++20 mode
-
- Tests
- -----
-
- - gh-issue-104494: Update ``test_pack_configure_in`` and
- ``test_place_configure_in`` for changes to error message formatting in Tk
- 8.7.
-
- - gh-issue-104461: Run test_configure_screen on X11 only, since the
- ``DISPLAY`` environment variable and ``-screen`` option for toplevels are
- not useful on Tk for Win32 or Aqua.
-
- - gh-issue-86275: Added property-based tests to the :mod:`zoneinfo` tests,
- along with stubs for the ``hypothesis`` interface. (Patch by Paul Ganssle)
-
- - gh-issue-103329: Regression tests for the behaviour of
- ``unittest.mock.PropertyMock`` were added.
-
- - gh-issue-102795: fix use of poll in test_epoll's test_control_and_wait
-
- - gh-issue-75729: Fix the :func:`os.spawn* <os.spawnl>` tests failing on
- Windows when the working directory or interpreter path contains spaces.
-
- Build
- -----
-
- - gh-issue-101282: BOLT optimization is now applied to the libpython shared
- library if building a shared library. BOLT instrumentation and application
- settings can now be influenced via the ``BOLT_INSTRUMENT_FLAGS`` and
- ``BOLT_APPLY_FLAGS`` configure variables.
-
- - gh-issue-99017: ``PYTHON_FOR_REGEN`` now require Python 3.10 or newer.
-
- - gh-issue-104490: Define ``.PHONY`` / virtual make targets consistently and
- properly.
-
- - gh-issue-104106: Add gcc fallback of mkfifoat/mknodat for macOS. Patch by
- Donghee Na.
-
- - gh-issue-103532: The ``TKINTER_PROTECT_LOADTK`` macro is no longer defined
- or used in the ``_tkinter`` module. It was previously only defined when
- building against Tk 8.4.13 and older, but Tk older than 8.5.12 has been
- unsupported since gh-issue-91152.
-
- - gh-issue-99069: Extended workaround defining ``static_assert`` when
- missing from the libc headers to all clang and gcc builds. In particular,
- this fixes building on macOS <= 10.10.
-
- - gh-issue-100220: Changed the default value of the ``SHELL`` Makefile
- variable from ``/bin/sh`` to ``/bin/sh -e`` to ensure that complex recipes
- correctly fail after an error. Previously, ``make install`` could fail to
- install some files and yet return a successful result.
-
- - gh-issue-90656: Add platform triplets for 64-bit LoongArch:
-
- * loongarch64-linux-gnusf
- * loongarch64-linux-gnuf32
- * loongarch64-linux-gnu
-
- Patch by Zhang Na.
-
- Windows
- -------
-
- - gh-issue-104623: Update Windows installer to use SQLite 3.42.0.
-
- - gh-issue-82814: Fix a potential ``[Errno 13] Permission denied`` when
- using :func:`shutil.copystat` within Windows Subsystem for Linux (WSL) on
- a mounted filesystem by adding ``errno.EACCES`` to the list of ignored
- errors within the internal implementation.
-
- - gh-issue-103088: Fix virtual environment :file:`activate` script having
- incorrect line endings for Cygwin.
-
- - gh-issue-103088: Fixes venvs not working in bash on Windows across
- different disks
-
- - gh-issue-102997: Update Windows installer to use SQLite 3.41.2.
-
- - gh-issue-88013: Fixed a bug where :exc:`TypeError` was raised when calling
- :func:`ntpath.realpath` with a bytes parameter in some cases.
-
- macOS
- -----
-
- - gh-issue-99834: Update macOS installer to Tcl/Tk 8.6.13.
-
- - gh-issue-104623: Update macOS installer to SQLite 3.42.0.
-
- - gh-issue-103545: Add ``os.PRIO_DARWIN_THREAD``,
- ``os.PRIO_DARWIN_PROCESS``, ``os.PRIO_DARWIN_BG`` and
- ``os.PRIO_DARWIN_NONUI``. These can be used with ``os.setpriority`` to run
- the process at a lower priority and make use of the efficiency cores on
- Apple Silicon systems.
-
- - gh-issue-104180: Support reading SOCKS proxy configuration from macOS
- System Configuration. Patch by Sam Schott.
-
- - gh-issue-60436: update curses textbox to additionally handle backspace
- using the ``curses.ascii.DEL`` key press.
-
- - gh-issue-102997: Update macOS installer to SQLite 3.41.2.
-
- IDLE
- ----
-
- - gh-issue-104499: Fix completions for Tk Aqua 8.7 (currently blank).
-
- - gh-issue-104496: About prints both tcl and tk versions if different
- (expected someday).
-
- - gh-issue-88496: Fix IDLE test hang on macOS.
-
- Tools/Demos
- -----------
-
- - gh-issue-104389: Argument Clinic C converters now accept the ``unused``
- keyword, for wrapping a parameter with :c:macro:`Py_UNUSED`. Patch by
- Erlend E. Aasland.
-
- C API
- -----
-
- - gh-issue-101291: Added unstable C API for extracting the value of
- "compact" integers: :c:func:`PyUnstable_Long_IsCompact` and
- :c:func:`PyUnstable_Long_CompactValue`.
-
- - gh-issue-104109: We've added ``Py_NewInterpreterFromConfig()`` and
- ``PyInterpreterConfig`` to the public C-API (but not the stable ABI; not
- yet at least). The new function may be used to create a new interpreter
- with various features configured. The function was added to support PEP
- 684 (per-interpreter GIL).
-
- - gh-issue-103968: :c:func:`PyType_FromSpec` and its variants now allow
- creating classes whose metaclass overrides
- :c:member:`~PyTypeObject.tp_new`. The ``tp_new`` is ignored. This behavior
- is deprecated and will be disallowed in 3.14+. The new
- :c:func:`PyType_FromMetaclass` already disallows it.
-
- - gh-issue-103743: Add :c:func:`PyUnstable_Object_GC_NewWithExtraData`
- function that can be used to allocate additional memory after an object
- for data not managed by Python.
-
- - gh-issue-103295: Introduced :c:func:`PyUnstable_WritePerfMapEntry`,
- :c:func:`PyUnstable_PerfMapState_Init` and
- :c:func:`PyUnstable_PerfMapState_Fini`. These allow extension modules (JIT
- compilers in particular) to write to perf-map files in a thread safe
- manner. The :doc:`../howto/perf_profiling` also uses these APIs to write
- entries in the perf-map file.
-
- - gh-issue-103509: Added C API for extending types whose instance memory
- layout is opaque: :c:member:`PyType_Spec.basicsize` can now be zero or
- negative, :c:func:`PyObject_GetTypeData` can be used to get
- subclass-specific data, and :c:macro:`Py_TPFLAGS_ITEMS_AT_END` can be used
- to safely extend variable-size objects. See :pep:`697` for details.
-
- - gh-issue-103091: Add a new C-API function to eagerly assign a version tag
- to a PyTypeObject: ``PyUnstable_Type_AssignVersionTag()``.
-
- - gh-issue-101408: :c:macro:`PyObject_GC_Resize` should calculate preheader
- size if needed. Patch by Donghee Na.
-
- - gh-issue-98836: Add support of more formatting options (left aligning,
- octals, uppercase hexadecimals, :c:type:`intmax_t`, :c:type:`ptrdiff_t`,
- :c:type:`wchar_t` C strings, variable width and precision) in
- :c:func:`PyUnicode_FromFormat` and :c:func:`PyUnicode_FromFormatV`.
-
- - gh-issue-96803: Add unstable C-API functions to get the code object, lasti
- and line number from the internal ``_PyInterpreterFrame`` in the limited
- API. The functions are:
-
- * ``PyCodeObject * PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame)``
- * ``int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame)``
- * ``int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame)``
-
-
- What's New in Python 3.12.0 alpha 7?
- ====================================
-
- *Release date: 2023-04-04*
-
- Core and Builtins
- -----------------
-
- - gh-issue-102192: Deprecated ``_PyErr_ChainExceptions`` in favour of
- ``_PyErr_ChainExceptions1``.
-
- - gh-issue-89987: Reduce the number of inline :opcode:`CACHE` entries for
- :opcode:`BINARY_SUBSCR`.
-
- - gh-issue-102859: Removed :opcode:`!JUMP_IF_FALSE_OR_POP` and
- :opcode:`!JUMP_IF_TRUE_OR_POP` instructions.
-
- - gh-issue-101975: Fixed ``stacktop`` value on tracing entries to avoid
- corruption on garbage collection.
-
- - gh-issue-102778: Add :data:`sys.last_exc` and deprecate
- :data:`sys.last_type`, :data:`sys.last_value` and
- :data:`sys.last_traceback`, which hold the same information in its legacy
- form.
-
- - gh-issue-100982: Replace all occurrences of ``COMPARE_AND_BRANCH`` with
- :opcode:`COMPARE_OP`.
-
- - gh-issue-102701: Fix overflow when creating very large dict.
-
- - gh-issue-102755: Add :c:func:`PyErr_DisplayException` which takes just an
- exception instance, to replace the legacy :c:func:`PyErr_Display` which
- takes the ``(typ, exc, tb)`` triplet.
-
- - gh-issue-102594: Add note to exception raised in ``PyErr_SetObject`` when
- normalization fails.
-
- - gh-issue-90997: Shrink the number of inline :opcode:`CACHE` entries used
- by :opcode:`LOAD_GLOBAL`.
-
- - gh-issue-102491: Improve import time of ``platform`` by removing
- IronPython version parsing. The IronPython version parsing was not
- functional (see https://github.com/IronLanguages/ironpython3/issues/1667).
-
- - gh-issue-101291: Rearrage bits in first field (after header) of
- PyLongObject. * Bits 0 and 1: 1 - sign. I.e. 0 for positive numbers, 1 for
- zero and 2 for negative numbers. * Bit 2 reserved (probably for the
- immortal bit) * Bits 3+ the unsigned size.
-
- This makes a few operations slightly more efficient, and will enable a
- more compact and faster 2s-complement representation of most ints in
- future.
-
- - gh-issue-102397: Fix segfault from race condition in signal handling
- during garbage collection. Patch by Kumar Aditya.
-
- - gh-issue-102406: :mod:`codecs` encoding/decoding errors now get the
- context information (which operation and which codecs) attached as
- :pep:`678` notes instead of through chaining a new instance of the
- exception.
-
- - gh-issue-102281: Fix potential nullptr dereference and use of
- uninitialized memory in fileutils. Patch by Max Bachmann.
-
- - gh-issue-102300: Reuse operands with refcount of 1 in float
- specializations of BINARY_OP.
-
- - gh-issue-102213: Fix performance loss when accessing an object's
- attributes with ``__getattr__`` defined.
-
- - gh-issue-102255: Improve build support for the Xbox. Patch by Max
- Bachmann.
-
- - gh-issue-102027: Fix SSE2 and SSE3 detection in ``_blake2`` internal
- module. Patch by Max Bachmann.
-
- - gh-issue-101865: Deprecate ``co_lnotab`` in code objects, schedule it for
- removal in Python 3.14
-
- - bpo-1635741: Adapt :mod:`!_pickle` to :pep:`687`. Patch by Mohamed Koubaa
- and Erlend Aasland.
-
- Library
- -------
-
- - gh-issue-103085: Pure python :func:`locale.getencoding()` will not warn
- deprecation.
-
- - gh-issue-103068: It's no longer possible to register conditional
- breakpoints in :class:`~pdb.Pdb` that raise :exc:`SyntaxError`. Patch by
- Tian Gao.
-
- - gh-issue-102549: Don't ignore exceptions in member type creation.
-
- - gh-issue-103056: Ensure final ``_generate_next_value_`` is a
- ``staticmethod``.
-
- - gh-issue-103046: Display current line label correctly in :mod:`dis` when
- ``show_caches`` is False and ``lasti`` points to a CACHE entry.
-
- - gh-issue-102433: :func:`isinstance` checks against
- :func:`runtime-checkable protocols <typing.runtime_checkable>` now use
- :func:`inspect.getattr_static` rather than :func:`hasattr` to lookup
- whether attributes exist. This means that descriptors and
- :meth:`~object.__getattr__` methods are no longer unexpectedly evaluated
- during ``isinstance()`` checks against runtime-checkable protocols.
- However, it may also mean that some objects which used to be considered
- instances of a runtime-checkable protocol may no longer be considered
- instances of that protocol on Python 3.12+, and vice versa. Most users are
- unlikely to be affected by this change. Patch by Alex Waygood.
-
- - gh-issue-103023: It's no longer possible to register expressions to
- display in :class:`~pdb.Pdb` that raise :exc:`SyntaxError`. Patch by Tian
- Gao.
-
- - gh-issue-102947: Improve traceback when :func:`dataclasses.fields` is
- called on a non-dataclass. Patch by Alex Waygood
-
- - gh-issue-102780: The :class:`asyncio.Timeout` context manager now works
- reliably even when performing cleanup due to task cancellation.
- Previously it could raise a :exc:`~asyncio.CancelledError` instead of an
- :exc:`~asyncio.TimeoutError` in such cases.
-
- - gh-issue-102871: Remove support for obsolete browsers from
- :mod:`webbrowser`. Removed browsers include Grail, Mosaic, Netscape,
- Galeon, Skipstone, Iceape, Firebird, and Firefox versions 35 and below.
-
- - gh-issue-102839: Improve performance of :func:`math.log` arguments
- handling by removing the argument clinic.
-
- - gh-issue-102828: Add the ``onexc`` arg to :func:`shutil.rmtree`, which is
- like ``onerror`` but expects an exception instance rather than an exc_info
- tuple. Deprecate ``onerror``.
-
- - gh-issue-88965: typing: Fix a bug relating to substitution in custom
- classes generic over a :class:`~typing.ParamSpec`. Previously, if the
- ``ParamSpec`` was substituted with a parameters list that itself contained
- a :class:`~typing.TypeVar`, the ``TypeVar`` in the parameters list could
- not be subsequently substituted. This is now fixed.
-
- Patch by Nikita Sobolev.
-
- - gh-issue-76846: Fix issue where ``__new__()`` and ``__init__()`` methods
- of :class:`pathlib.PurePath` and :class:`~pathlib.Path` subclasses were
- not called in some circumstances.
-
- - gh-issue-78530: :func:`asyncio.wait` now accepts generators yielding
- tasks. Patch by Kumar Aditya.
-
- - gh-issue-102748: :func:`asyncio.iscoroutine` now returns ``False`` for
- generators as :mod:`asyncio` does not support legacy generator-based
- coroutines. Patch by Kumar Aditya.
-
- - gh-issue-102670: Optimized fmean(), correlation(), covariance(), and
- linear_regression() using the new math.sumprod() function.
-
- - gh-issue-102615: Typing: Improve the ``repr`` of generic aliases for
- classes generic over a :class:`~typing.ParamSpec`. (Use square brackets to
- represent a parameter list.)
-
- - gh-issue-100112: :meth:`asyncio.Task.get_coro` now always returns a
- coroutine when wrapping an awaitable object. Patch by Kumar Aditya.
-
- - gh-issue-102578: Speed up setting or deleting mutable attributes on
- non-dataclass subclasses of frozen dataclasses. Due to the implementation
- of ``__setattr__`` and ``__delattr__`` for frozen dataclasses, this
- previously had a time complexity of *O*\ (*n*). It now has a time
- complexity of *O*\ (1).
-
- - gh-issue-102519: Add :func:`os.listdrives`, :func:`os.listvolumes` and
- :func:`os.listmounts` functions on Windows for enumerating drives, volumes
- and mount points
-
- - gh-issue-74468: Attribute name of the extracted :mod:`tarfile` file object
- now holds filename of itself rather than of the archive it is contained
- in. Patch by Oleg Iarygin.
-
- - gh-issue-102378: Private helper method
- ``inspect._signature_strip_non_python_syntax`` will no longer strip ``/``
- from the input string.
-
- - gh-issue-79940: Add :func:`inspect.getasyncgenstate` and
- :func:`inspect.getasyncgenlocals`. Patch by Thomas Krennwallner.
-
- - gh-issue-102103: Add ``module`` argument to
- :func:`dataclasses.make_dataclass` and make classes produced by it
- pickleable.
-
- - gh-issue-102069: Fix ``__weakref__`` descriptor generation for custom
- dataclasses.
-
- - gh-issue-102038: Skip a ``stat`` in :mod:`site` if we have already found a
- ``pyvenv.cfg``
-
- - gh-issue-98886: Fix issues when defining dataclasses that have fields with
- specific underscore names that aren't clearly reserved by
- :mod:`dataclasses`.
-
- - gh-issue-101673: Fix a :mod:`pdb` bug where ``ll`` clears the changes to
- local variables.
-
- - gh-issue-101313: Added -h and --help arguments to the webbrowser CLI
-
- - gh-issue-100372: :meth:`ssl.SSLContext.load_verify_locations` no longer
- incorrectly accepts some cases of trailing data when parsing DER.
-
- - gh-issue-89727: Fix pathlib.Path.walk RecursionError on deep directory
- trees by rewriting it using iteration instead of recursion.
-
- - gh-issue-100131: Added an optional ``delete`` keyword argument to
- :class:`tempfile.TemporaryDirectory`.
-
- - gh-issue-48330: Added ``--durations`` command line option, showing the N
- slowest test cases. :class:`unittest.TextTestRunner` and
- :class:`unittest.TextTestResult` constructors accept a new *durations*
- keyword argument. Subclasses should take this into account or accept
- ``**kwargs``. Added :meth:`unittest.TestResult.addDuration` method and
- :attr:`unittest.TestResult.collectedDurations` attribute.
-
- (Contributed by Giampaolo Rodola)
-
- - gh-issue-98169: Fix :func:`dataclasses.astuple` crash when
- :class:`collections.defaultdict` is present in the attributes.
-
- - gh-issue-96931: Fix incorrect results from
- :meth:`ssl.SSLSocket.shared_ciphers`
-
- - 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 :const:`~ssl.OP_IGNORE_UNEXPECTED_EOF` by default. This
- option may be set to specify the previous OpenSSL 3.0 behavior.
-
- - gh-issue-94684: Now :func:`uuid.uuid3` and :func:`uuid.uuid5` functions
- support :class:`bytes` objects as their *name* argument.
-
- - gh-issue-94440: Fix a :mod:`concurrent.futures.process` bug where
- ``ProcessPoolExecutor`` shutdown could hang after a future has been
- quickly submitted and canceled.
-
- - gh-issue-72346: Added deprecation warning to *isdst* parameter of
- :func:`email.utils.localtime`.
-
- - bpo-36305: Fix handling of Windows filenames that resemble drives, such as
- ``./a:b``, in :mod:`pathlib`.
-
- Documentation
- -------------
-
- - gh-issue-103112: Add docstring to :meth:`http.client.HTTPResponse.read` to
- fix ``pydoc`` output.
-
- 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-102973: Add a dev container (along with accompanying Dockerfile)
- for development purposes.
-
- - gh-issue-102711: Fix ``-Wstrict-prototypes`` compiler warnings.
-
- Windows
- -------
-
- - gh-issue-102690: Update :mod:`webbrowser` to fall back to Microsoft Edge
- instead of Internet Explorer.
-
- - gh-issue-99726: Improves correctness of stat results for Windows, and uses
- faster API when available
-
- Tools/Demos
- -----------
-
- - gh-issue-102809: ``Misc/gdbinit`` was removed.
-
- C API
- -----
-
- - gh-issue-102013: Add a new (unstable) C-API function for iterating over
- GC'able objects using a callback: ``PyUnstable_VisitObjects``.
-
-
- What's New in Python 3.12.0 alpha 6?
- ====================================
-
- *Release date: 2023-03-07*
-
- Security
- --------
-
- - gh-issue-99108: Replace builtin hashlib implementations of MD5 and SHA1
- with verified ones from the HACL* project.
-
- - 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-99108: Replace the builtin :mod:`hashlib` implementations of
- SHA2-384 and SHA2-512 originally from LibTomCrypt with formally verified,
- side-channel resistant code from the `HACL*
- <https://github.com/hacl-star/hacl-star/>`_ project. The builtins remain a
- fallback only used when OpenSSL does not provide them.
-
- - 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-102493: Fix regression in semantics of normalisation in
- ``PyErr_SetObject``.
-
- - 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-102336: Cleanup Windows 7 specific special handling. Patch by Max
- Bachmann.
-
- - gh-issue-102250: Fixed a segfault occurring when the interpreter calls a
- ``__bool__`` method that raises.
-
- - 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: Use ``GetCurrentProcessId`` on Windows when ``getpid`` is
- unavailable. Patch by Max Bachmann.
-
- - gh-issue-102056: Fix error handling bugs in interpreter's exception
- printing code, which could cause a crash on infinite recursion.
-
- - gh-issue-100982: Restrict the scope of the :opcode:`FOR_ITER_RANGE`
- instruction to the scope of the original :opcode:`FOR_ITER` instruction,
- to allow instrumentation.
-
- - gh-issue-101967: Fix possible segfault in
- ``positional_only_passed_as_keyword`` function, when new list created.
-
- - gh-issue-101952: Fix possible segfault in ``BUILD_SET`` opcode, when new
- set created.
-
- - gh-issue-74895: :mod:`socket.getaddrinfo` no longer raises
- :class:`OverflowError` for :class:`int` **port** values outside of the C
- long range. Out of range values are left up to the underlying string based
- C library API to report. A :class:`socket.gaierror` ``SAI_SERVICE`` may
- occur instead, or no error at all as not all platform C libraries generate
- an error.
-
- - gh-issue-101799: Add :opcode:`CALL_INTRINSIC_2` and use it instead of
- :opcode:`!PREP_RERAISE_STAR`.
-
- - gh-issue-101857: Fix xattr support detection on Linux systems by widening
- the check to linux, not just glibc. This fixes support for musl.
-
- - gh-issue-84783: Make the slice object hashable. Patch by Will Bradshaw and
- Furkan Onder.
-
- - gh-issue-87849: Change the ``SEND`` instruction to leave the receiver on
- the stack. This allows the specialized form of ``SEND`` to skip the chain
- of C calls and jump directly to the ``RESUME`` in the generator or
- coroutine.
-
- - gh-issue-101765: Fix SystemError / segmentation fault in iter
- ``__reduce__`` when internal access of ``builtins.__dict__`` keys mutates
- the iter object.
-
- - gh-issue-101430: Update :mod:`tracemalloc` to handle presize of object
- properly. Patch by Donghee Na.
-
- - gh-issue-101696: Invalidate type version tag in ``_PyStaticType_Dealloc``
- for static types, avoiding bug where a false cache hit could crash the
- interpreter. Patch by Kumar Aditya.
-
- - gh-issue-101632: Adds a new :opcode:`RETURN_CONST` instruction.
-
- - gh-issue-100719: Remove gi_code field from generator (and coroutine and
- async generator) objects as it is redundant. The frame already includes a
- reference to the code object.
-
- - gh-issue-98627: When an interpreter is configured to check (and only
- then), importing an extension module will now fail when the extension does
- not support multiple interpreters (i.e. doesn't implement PEP 489
- multi-phase init). This does not apply to the main interpreter, nor to
- subinterpreters created with ``Py_NewInterpreter()``.
-
- Library
- -------
-
- - gh-issue-102302: Micro-optimise hashing of :class:`inspect.Parameter`,
- reducing the time it takes to hash an instance by around 40%.
-
- - 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-91038: :meth:`platform.platform` now has boolean default
- arguments.
-
- - gh-issue-81652: Add :const:`mmap.MAP_ALIGNED_SUPER` FreeBSD and
- :const:`mmap.MAP_CONCEAL` OpenBSD constants to :mod:`mmap`. 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, sync Path with `zipp 3.14
- <https://zipp.readthedocs.io/en/latest/history.html#v3-14-0>`_, including
- fix for extractall on the underlying zipfile after being wrapped in
- ``Path``.
-
- - gh-issue-97930: Apply changes from `importlib_resources 5.12
- <https://importlib-resources.readthedocs.io/en/latest/history.html#v5-12-0>`_,
- including fix for ``MultiplexedPath`` to support directories in multiple
- namespaces (python/importlib_resources#265).
-
- - gh-issue-101997: Upgrade pip wheel bundled with ensurepip (pip 23.0.1)
-
- - gh-issue-99108: The built-in extension modules for :mod:`hashlib` SHA2
- algorithms, used when OpenSSL does not provide them, now live in a single
- internal ``_sha2`` module instead of separate ``_sha256`` and ``_sha512``
- modules.
-
- - 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-87634: Remove locking behavior from
- :func:`functools.cached_property`.
-
- - 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-101773: Optimize :class:`fractions.Fraction` for small
- components. The private argument ``_normalize`` of the
- :class:`fractions.Fraction` constructor has been removed.
-
- - gh-issue-101693: In :meth:`sqlite3.Cursor.execute`,
- :exc:`DeprecationWarning` is now emitted when :ref:`named placeholders
- <sqlite3-placeholders>` are used together with parameters supplied as a
- :term:`sequence` instead of as a :class:`dict`. Starting from Python 3.14,
- using named placeholders with parameters supplied as a sequence will raise
- a :exc:`~sqlite3.ProgrammingError`. Patch by Erlend E. Aasland.
-
- - gh-issue-101446: Change repr of :class:`collections.OrderedDict` to use
- regular dictionary formating instead of pairs of keys and values.
-
- - gh-issue-101362: Speed up :class:`pathlib.PurePath` construction by
- handling arguments more uniformly. When a :class:`pathlib.Path` argument
- is supplied, we use its string representation rather than joining its
- parts with :func:`os.path.join`.
-
- - gh-issue-101362: Speed up :class:`pathlib.PurePath` construction by
- calling :func:`os.path.join` only when two or more arguments are given.
-
- - gh-issue-101362: Speed up :class:`pathlib.Path` construction by running
- the path flavour compatibility check only when pathlib is imported.
-
- - gh-issue-85984: Refactored the implementation of :func:`pty.fork` to use
- :func:`os.login_tty`.
-
- A :exc:`DeprecationWarning` is now raised by ``pty.master_open()`` and
- ``pty.slave_open()``. They were undocumented and deprecated long long ago
- in the docstring in favor of :func:`pty.openpty`.
-
- - gh-issue-101561: Add a new decorator :func:`typing.override`. See
- :pep:`698` for details. Patch by Steven Troxler.
-
- - gh-issue-63301: Set exit code when :mod:`tabnanny` CLI exits on error.
-
- - gh-issue-101360: Fix anchor matching in
- :meth:`pathlib.PureWindowsPath.match`. Path and pattern anchors are now
- matched with :mod:`fnmatch`, just like other path parts. This allows
- patterns such as ``"*:/Users/*"`` to be matched.
-
- - gh-issue-101277: Remove global state from :mod:`itertools` module
- (:pep:`687`). Patches by Erlend E. Aasland.
-
- - gh-issue-100809: Fix handling of drive-relative paths (like 'C:' and
- 'C:foo') in :meth:`pathlib.Path.absolute`. This method now uses the OS API
- to retrieve the correct current working directory for the drive.
-
- - gh-issue-99138: Apply :pep:`687` to :mod:`zoneinfo`. Patch by Erlend E.
- Aasland.
-
- - gh-issue-96764: :func:`asyncio.wait_for` now uses :func:`asyncio.timeout`
- as its underlying implementation. Patch by Kumar Aditya.
-
- - gh-issue-88233: Correctly preserve "extra" fields in ``zipfile``
- regardless of their ordering relative to a zip64 "extra."
-
- - bpo-23224: Fix segfaults when creating :class:`lzma.LZMADecompressor` and
- :class:`bz2.BZ2Decompressor` objects without calling ``__init__()``, and
- fix leakage of locks and internal buffers when calling the ``__init__()``
- methods of :class:`lzma.LZMADecompressor`, :class:`lzma.LZMACompressor`,
- :class:`bz2.BZ2Compressor`, and :class:`bz2.BZ2Decompressor` objects
- multiple times.
-
- Documentation
- -------------
-
- - 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-102019: Fix deadlock on shutdown if
- ``test_current_{exception,frames}`` fails. Patch by Jacob Bower.
-
- - gh-issue-85984: Utilize new "winsize" functions from termios in pty tests.
-
- - gh-issue-89792: ``test_tools`` now copies up to 10x less source data to a
- temporary directory during the ``freeze`` test by ignoring git metadata
- and other artifacts. It also limits its python build parallelism based on
- os.cpu_count instead of hard coding it as 8 cores.
-
- Build
- -----
-
- - gh-issue-99942: On Android, in a static build, python-config in embed mode
- no longer incorrectly reports a library to link to.
-
- - gh-issue-99942: On Android, python.pc now correctly reports the library to
- link to, the same as python-config.sh.
-
- - gh-issue-100221: Fix creating install directories in ``make
- sharedinstall`` if they exist outside ``DESTDIR`` already.
-
- - gh-issue-96821: Explicitly mark C extension modules that need defined
- signed integer overflow, and add a configure option
- :option:`--with-strict-overflow`. Patch by Matthias Görgens and Shantanu
- Jain.
-
- Windows
- -------
-
- - gh-issue-102344: Implement ``winreg.QueryValue`` using ``QueryValueEx``
- and ``winreg.SetValue`` using ``SetValueEx``. Patch by Max Bachmann.
-
- - gh-issue-101881: Handle read and write operations on non-blocking pipes
- properly on Windows.
-
- - gh-issue-101881: Add support for the os.get_blocking() and
- os.set_blocking() functions on Windows.
-
- - gh-issue-101849: Ensures installer will correctly upgrade existing
- ``py.exe`` launcher installs.
-
- - gh-issue-101763: Updates copy of libffi bundled with Windows installs to
- 3.4.4.
-
- - 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``.
-
- - gh-issue-101196: The functions ``os.path.isdir``, ``os.path.isfile``,
- ``os.path.islink`` and ``os.path.exists`` are now 13% to 28% faster on
- Windows, by making fewer Win32 API calls.
-
- macOS
- -----
-
- - gh-issue-101759: Update macOS installer to SQLite 3.40.1.
-
- C API
- -----
-
- - gh-issue-101907: Removes use of non-standard C++ extension in public
- header files.
-
- - gh-issue-99293: Document that the Py_TPFLAGS_VALID_VERSION_TAG is an
- internal feature, should not be used, and will be removed.
-
- - gh-issue-101578: Add :c:func:`PyErr_GetRaisedException` and
- :c:func:`PyErr_SetRaisedException` for saving and restoring the current
- exception. These functions return and accept a single exception object,
- rather than the triple arguments of the now-deprecated
- :c:func:`PyErr_Fetch` and :c:func:`PyErr_Restore`. This is less error
- prone and a bit more efficient.
-
- Add :c:func:`PyException_GetArgs` and :c:func:`PyException_SetArgs` as
- convenience functions for retrieving and modifying the
- :attr:`~BaseException.args` passed to the exception's constructor.
-
- - gh-issue-91744: Introduced the *Unstable C API tier*, marking APi that is
- allowed to change in minor releases without a deprecation period. See
- :pep:`689` for details.
-
-
- What's New in Python 3.12.0 alpha 5?
- ====================================
-
- *Release date: 2023-02-07*
-
- Security
- --------
-
- - gh-issue-99108: Replace the builtin :mod:`hashlib` implementations of
- SHA2-224 and SHA2-256 originally from LibTomCrypt with formally verified,
- side-channel resistant code from the `HACL*
- <https://github.com/hacl-star/hacl-star/>`_ project. The builtins remain a
- fallback only used when OpenSSL does not provide them.
-
- Core and Builtins
- -----------------
-
- - gh-issue-92173: Fix the ``defs`` and ``kwdefs`` arguments to
- :c:func:`PyEval_EvalCodeEx` and a reference leak in that function.
-
- - gh-issue-59956: The GILState API is now partially compatible with
- subinterpreters. Previously, ``PyThreadState_GET()`` and
- ``PyGILState_GetThisThreadState()`` would get out of sync, causing
- inconsistent behavior and crashes.
-
- - gh-issue-101400: Fix wrong lineno in exception message on
- :keyword:`continue` or :keyword:`break` which are not in a loop. Patch by
- Donghee Na.
-
- - gh-issue-101372: Fix :func:`~unicodedata.is_normalized` to properly handle
- the UCD 3.2.0 cases. Patch by Donghee Na.
-
- - gh-issue-101266: Fix :func:`sys.getsizeof` reporting for :class:`int`
- subclasses.
-
- - gh-issue-101291: Refactor the ``PyLongObject`` struct into a normal Python
- object header and a ``PyLongValue`` struct.
-
- - gh-issue-101046: Fix a possible memory leak in the parser when raising
- :exc:`MemoryError`. Patch by Pablo Galindo
-
- - gh-issue-101037: Fix potential memory underallocation issue for instances
- of :class:`int` subclasses with value zero.
-
- - gh-issue-100762: Record the (virtual) exception block depth in the oparg
- of :opcode:`YIELD_VALUE`. Use this to avoid the expensive ``throw()`` when
- closing generators (and coroutines) that can be closed trivially.
-
- - gh-issue-100982: Adds a new :opcode:`COMPARE_AND_BRANCH` instruction. This
- is a bit more efficient when performing a comparison immediately followed
- by a branch, and restores the design intent of PEP 659 that
- specializations are local to a single instruction.
-
- - 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-100923: Remove the ``mask`` cache entry for the
- :opcode:`COMPARE_OP` instruction and embed the mask into the oparg.
-
- - gh-issue-100892: Fix race while iterating over thread states in clearing
- :class:`threading.local`. Patch by Kumar Aditya.
-
- - gh-issue-91351: Fix a case where re-entrant imports could corrupt the
- import deadlock detection code and cause a :exc:`KeyError` to be raised
- out of :mod:`importlib/_bootstrap`. In addition to the straightforward
- cases, this could also happen when garbage collection leads to a warning
- being emitted -- as happens when it collects an open socket or file)
-
- - gh-issue-100726: Optimize construction of ``range`` object for medium size
- integers.
-
- - gh-issue-100712: Added option to build cpython with specialization
- disabled, by setting ``ENABLE_SPECIALIZATION=False`` in :mod:`opcode`,
- followed by ``make regen-all``.
-
- - bpo-32780: Inter-field padding is now inserted into the PEP3118 format
- strings obtained from :class:`ctypes.Structure` objects, reflecting their
- true representation in memory.
-
- Library
- -------
-
- - gh-issue-101541: [Enum] - fix psuedo-flag creation
-
- - gh-issue-101570: Upgrade pip wheel bundled with ensurepip (pip 23.0)
-
- - gh-issue-101323: Fix a bug where errors where not thrown by
- zlib._ZlibDecompressor if encountered during decompressing.
-
- - gh-issue-101317: Add *ssl_shutdown_timeout* parameter for
- :meth:`asyncio.StreamWriter.start_tls`.
-
- - gh-issue-101326: Fix regression when passing ``None`` as second or third
- argument to ``FutureIter.throw``.
-
- - gh-issue-92123: Adapt the ``_elementtree`` extension module to multi-phase
- init (:pep:`489`). Patches by Erlend E. Aasland.
-
- - 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. 3.10
- introduced a regression where supplying it as a positional argument would
- lead to a :exc:`TypeError`.
-
- - gh-issue-94518: Group-related variables of ``_posixsubprocess`` module are
- renamed to stress that supplimentary group affinity is added to a fork,
- not replace the inherited ones. Patch by Oleg Iarygin.
-
- - gh-issue-101015: Fix :func:`typing.get_type_hints` on ``'*tuple[...]'``
- and ``*tuple[...]``. It must not drop the ``Unpack`` part.
-
- - gh-issue-101000: Add :func:`os.path.splitroot()`, which splits a path into
- a 3-item tuple ``(drive, root, tail)``. This new function is used by
- :mod:`pathlib` to improve the performance of path construction by up to a
- third.
-
- - 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-39615: :func:`warnings.warn` now has the ability to skip stack
- frames based on code filename prefix rather than only a numeric
- ``stacklevel`` via the new ``skip_file_prefixes`` keyword argument.
-
- - gh-issue-100750: pass encoding kwarg to subprocess in platform
-
- - gh-issue-100160: Emit a deprecation warning in
- :meth:`asyncio.DefaultEventLoopPolicy.get_event_loop` if there is no
- current event loop set and it decides to create one.
-
- - gh-issue-96290: Fix handling of partial and invalid UNC drives in
- ``ntpath.splitdrive()``, and in ``ntpath.normpath()`` on non-Windows
- systems. Paths such as '\\server' and '\\' are now considered by
- ``splitdrive()`` to contain only a drive, and consequently are not
- modified by ``normpath()`` on non-Windows systems. The behaviour of
- ``normpath()`` on Windows systems is unaffected, as native OS APIs are
- used. Patch by Eryk Sun, with contributions by Barney Gale.
-
- - gh-issue-99952: Fix a reference undercounting issue in
- :class:`ctypes.Structure` with ``from_param()`` results larger than a C
- pointer.
-
- - gh-issue-67790: Add float-style formatting support for
- :class:`fractions.Fraction` instances.
-
- - gh-issue-99266: Preserve more detailed error messages in :mod:`ctypes`.
-
- - gh-issue-86682: Ensure runtime-created collections have the correct module
- name using the newly added (internal) :func:`sys._getframemodulename`.
-
- - gh-issue-88597: :mod:`uuid` now has a command line interface. Try ``python
- -m uuid -h``.
-
- - gh-issue-60580: :data:`ctypes.wintypes.BYTE` definition changed from
- :data:`~ctypes.c_byte` to :data:`~ctypes.c_ubyte` to match Windows SDK.
- Patch by Anatoly Techtonik and Oleg Iarygin.
-
- - gh-issue-94518: ``_posixsubprocess`` now initializes all UID and GID
- variables using a reserved ``-1`` value instead of a separate flag. Patch
- by Oleg Iarygin.
-
- - bpo-38941: The :mod:`xml.etree.ElementTree` module now emits
- :exc:`DeprecationWarning` when testing the truth value of an
- :class:`xml.etree.ElementTree.Element`. Before, the Python implementation
- emitted :exc:`FutureWarning`, and the C implementation emitted nothing.
-
- - bpo-40077: Convert :mod:`elementtree` types to heap types. Patch by Erlend
- E. Aasland.
-
- - bpo-29847: Fix a bug where :class:`pathlib.Path` accepted and ignored
- keyword arguments. Patch provided by Yurii Karabas.
-
- - gh-issue-77772: :class:`ctypes.CDLL`, :class:`ctypes.OleDLL`,
- :class:`ctypes.WinDLL`, and :class:`ctypes.PyDLL` now accept
- :term:`path-like objects <path-like object>` as their ``name`` argument.
- Patch by Robert Hoelzl.
-
- Documentation
- -------------
-
- - gh-issue-88324: Reword :mod:`subprocess` to emphasize default behavior of
- *stdin*, *stdout*, and *stderr* arguments. Remove inaccurate statement
- about child file handle inheritance.
-
- Tests
- -----
-
- - gh-issue-101334: ``test_tarfile`` has been updated to pass when run as a
- high UID.
-
- Build
- -----
-
- - gh-issue-101282: Update BOLT configration not to use depreacted usage of
- ``--split functions``. Patch by Donghee Na.
-
- - gh-issue-101522: Allow overriding Windows dependencies versions and paths
- using MSBuild properties.
-
- - gh-issue-77532: Minor fixes to allow building with
- ``PlatformToolset=ClangCL`` on Windows.
-
- - gh-issue-101152: In accordance with :PEP:`699`, the ``ma_version_tag``
- field in :c:type:`PyDictObject` is deprecated for extension modules.
- Accessing this field will generate a compiler warning at compile time.
- This field will be removed in Python 3.14.
-
- - gh-issue-100340: Allows -Wno-int-conversion for wasm-sdk 17 and onwards,
- thus enables building WASI builds once against the latest sdk.
-
- - gh-issue-101060: Conditionally add ``-fno-reorder-blocks-and-partition``
- in configure. Effectively fixes ``--enable-bolt`` when using Clang, as
- this appears to be a GCC-only flag.
-
- - gh-issue-98705: ``__bool__`` is defined in AIX system header files which
- breaks the build in AIX, so undefine it.
-
- - gh-issue-98636: Fix a regression in detecting ``gdbm_compat`` library for
- the ``_gdbm`` module build.
-
- - gh-issue-96305: ``_aix_support`` now uses a simple code to get platform
- details rather than the now non-existent ``_bootsubprocess`` during
- bootstrap.
-
- Windows
- -------
-
- - gh-issue-101543: Ensure the install path in the registry is only used when
- the standard library hasn't been located in any other way.
-
- - gh-issue-101467: The ``py.exe`` launcher now correctly filters when only a
- single runtime is installed. It also correctly handles prefix matches on
- tags so that ``-3.1`` does not match ``3.11``, but would still match
- ``3.1-32``.
-
- - gh-issue-99834: Updates bundled copy of Tcl/Tk to 8.6.13.0
-
- - gh-issue-101135: Restore ability to launch older 32-bit versions from the
- :file:`py.exe` launcher when both 32-bit and 64-bit installs of the same
- version are available.
-
- - 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-100320: Ensures the ``PythonPath`` registry key from an install
- is used when launching from a different copy of Python that relies on an
- existing install to provide a copy of its modules and standard library.
-
- - gh-issue-100247: Restores support for the :file:`py.exe` launcher finding
- shebang commands in its configuration file using the full command name.
-
-
- What's New in Python 3.12.0 alpha 4?
- ====================================
-
- *Release date: 2023-01-10*
-
- Core and Builtins
- -----------------
-
- - gh-issue-100776: Fix misleading default value in :func:`input`'s
- ``__text_signature__``.
-
- - gh-issue-99005: Remove :opcode:`!UNARY_POSITIVE`,
- :opcode:`!ASYNC_GEN_WRAP` and :opcode:`!LIST_TO_TUPLE`, replacing them
- with intrinsics.
-
- - gh-issue-99005: Add new :opcode:`CALL_INTRINSIC_1` instruction. Remove
- :opcode:`IMPORT_STAR`, :opcode:`PRINT_EXPR` and
- :opcode:`STOPITERATION_ERROR`, replacing them with the
- :opcode:`CALL_INTRINSIC_1` instruction.
-
- - gh-issue-100288: Remove the LOAD_ATTR_METHOD_WITH_DICT specialized
- instruction. Stats show it is not useful.
-
- - gh-issue-100720: Added ``_PyFrame_NumSlotsForCodeObject``, which returns
- the number of slots needed in a frame for a given code object.
-
- - gh-issue-100719: Removed the co_nplaincellvars field from the code object,
- as it is redundant.
-
- - gh-issue-100637: Fix :func:`int.__sizeof__` calculation to include the 1
- element ob_digit array for 0 and False.
-
- - gh-issue-100649: Update the native_thread_id field of PyThreadState after
- fork.
-
- - gh-issue-100126: Fix an issue where "incomplete" frames could be briefly
- visible to C code while other frames are being torn down, possibly
- resulting in corruption or hard crashes of the interpreter while running
- finalizers.
-
- - gh-issue-87447: Fix :exc:`SyntaxError` on comprehension rebind checking
- with names that are not actually redefined.
-
- Now reassigning ``b`` in ``[(b := 1) for a, b.prop in some_iter]`` is
- allowed. Reassigning ``a`` is still disallowed as per :pep:`572`.
-
- - gh-issue-100268: Add :meth:`int.is_integer` to improve duck type
- compatibility between :class:`int` and :class:`float`.
-
- - gh-issue-100425: Improve the accuracy of ``sum()`` with compensated
- summation.
-
- - gh-issue-100374: Fix incorrect result and delay in :func:`socket.getfqdn`.
- Patch by Dominic Socular.
-
- - gh-issue-100357: Convert ``vars``, ``dir``, ``next``, ``getattr``, and
- ``iter`` to argument clinic.
-
- - gh-issue-100117: Improve the output of :meth:`codeobject.co_lines` by
- emitting only one entry for each line range.
-
- - gh-issue-90043: Handle NaNs when specializing :opcode:`COMPARE_OP` for
- :class:`float` values.
-
- - gh-issue-100222: Redefine the ``_Py_CODEUNIT`` typedef as a union to
- describe its layout to the C compiler, avoiding type punning and improving
- clarity.
-
- - gh-issue-99955: Internal compiler functions (in compile.c) now
- consistently return -1 on error and 0 on success.
-
- - gh-issue-100188: The ``BINARY_SUBSCR_LIST_INT`` and
- ``BINARY_SUBSCR_TUPLE_INT`` instructions are no longer used for negative
- integers because those instructions always miss when encountering negative
- integers.
-
- - gh-issue-99110: Initialize frame->previous in frameobject.c to fix a
- segmentation fault when accessing frames created by :c:func:`PyFrame_New`.
-
- - gh-issue-94155: Improved the hashing algorithm for code objects,
- mitigating some hash collisions.
-
- - gh-issue-99540: ``None`` now hashes to a constant value. This is not a
- requirements change.
-
- - gh-issue-100143: When built with ``--enable-pystats``, stats collection is
- now off by default. To enable it early at startup, pass the ``-Xpystats``
- flag. Stats are now always dumped, even if switched off.
-
- - gh-issue-100146: Improve ``BUILD_LIST`` opcode so that it works similarly
- to the ``BUILD_TUPLE`` opcode, by stealing references from the stack
- rather than repeatedly using stack operations to set list elements.
- Implementation details are in a new private API
- :c:func:`_PyList_FromArraySteal`.
-
- - gh-issue-100110: Specialize ``FOR_ITER`` for tuples.
-
- - gh-issue-100050: Honor existing errors obtained when searching for
- mismatching parentheses in the tokenizer. Patch by Pablo Galindo
-
- - gh-issue-92216: Improve the performance of :func:`hasattr` for type
- objects with a missing attribute.
-
- - gh-issue-99582: Freeze :mod:`zipimport` module into ``_bootstrap_python``.
-
- - gh-issue-99554: Pack debugging location tables more efficiently during
- bytecode compilation.
-
- - gh-issue-98522: Add an internal version number to code objects, to give
- better versioning of inner functions and comprehensions, and thus better
- specialization of those functions. This change is invisible to both Python
- and C extensions.
-
- - gh-issue-94603: Improve performance of ``list.pop`` for small lists.
-
- - gh-issue-89051: Add :const:`ssl.OP_LEGACY_SERVER_CONNECT`
-
- - 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-100833: Speed up :func:`math.fsum` by removing defensive
- ``volatile`` qualifiers.
-
- - gh-issue-100805: Modify :func:`random.choice` implementation to once again
- work with NumPy arrays.
-
- - gh-issue-100813: Add :const:`socket.IP_PKTINFO` constant.
-
- - gh-issue-100792: Make :meth:`email.message.Message.__contains__` twice as
- fast.
-
- - gh-issue-91851: Microoptimizations for
- :meth:`fractions.Fraction.__round__`, :meth:`fractions.Fraction.__ceil__`
- and :meth:`fractions.Fraction.__floor__`.
-
- - 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-91219: Change ``SimpleHTTPRequestHandler`` to support subclassing
- to provide a different set of index file names instead of using
- ``__init__`` parameters.
-
- - gh-issue-100690: ``Mock`` objects which are not unsafe will now raise an
- ``AttributeError`` when accessing an attribute that matches the name of an
- assertion but without the prefix ``assert_``, e.g. accessing
- ``called_once`` instead of ``assert_called_once``. This is in addition to
- this already happening for accessing attributes with prefixes ``assert``,
- ``assret``, ``asert``, ``aseert``, and ``assrt``.
-
- - gh-issue-89727: Simplify and optimize :func:`os.walk` by using
- :func:`isinstance` checks to check the top of the stack.
-
- - gh-issue-100485: Add math.sumprod() to compute the sum of products.
-
- - gh-issue-86508: Fix :func:`asyncio.open_connection` to skip binding to
- local addresses of different family. Patch by Kumar Aditya.
-
- - gh-issue-97930: ``importlib.resources.files`` now accepts a module as an
- anchor instead of only accepting packages. If a module is passed,
- resources are resolved adjacent to that module (in the same package or at
- the package root). The parameter was renamed from ``package`` to
- ``anchor`` with a compatibility shim for those passing by keyword.
- Additionally, the new ``anchor`` parameter is now optional and will
- default to the caller's module.
-
- - gh-issue-100585: Fixed a bug where importlib.resources.as_file was leaving
- file pointers open
-
- - gh-issue-100562: Improve performance of :meth:`pathlib.Path.absolute` by
- nearly 2x. This comes at the cost of a performance regression in
- :meth:`pathlib.Path.cwd`, which is generally used less frequently in user
- code.
-
- - gh-issue-100519: Small simplification of
- :func:`http.cookiejar.eff_request_host` that improves readability and
- better matches the RFC wording.
-
- - gh-issue-100287: Fix the interaction of :func:`unittest.mock.seal` with
- :class:`unittest.mock.AsyncMock`.
-
- - gh-issue-100488: Add :meth:`Fraction.is_integer` to check whether a
- :class:`fractions.Fraction` is an integer. This improves duck type
- compatibility with :class:`float` and :class:`int`.
-
- - 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-100363: Speed up :func:`asyncio.get_running_loop` by removing
- redundant ``getpid`` checks. Patch by Kumar Aditya.
-
- - gh-issue-78878: Fix crash when creating an instance of
- :class:`!_ctypes.CField`.
-
- - gh-issue-100348: Fix ref cycle in
- :class:`!asyncio._SelectorSocketTransport` by removing ``_read_ready_cb``
- in ``close``.
-
- - gh-issue-100344: Provide C implementation for :func:`asyncio.current_task`
- for a 4x-6x speedup.
-
- - gh-issue-100272: Fix JSON serialization of OrderedDict. It now preserves
- the order of keys.
-
- - gh-issue-83076: Instantiation of ``Mock()`` and ``AsyncMock()`` is now
- 3.8x faster.
-
- - gh-issue-100234: Set a default value of 1.0 for the ``lambd`` parameter in
- random.expovariate().
-
- - gh-issue-100228: A :exc:`DeprecationWarning` may be raised when
- :func:`os.fork()` or :func:`os.forkpty()` is called from multi-threaded
- processes. Forking with threads is unsafe and can cause deadlocks,
- crashes and subtle problems. Lack of a warning does not indicate that the
- fork call was actually safe, as Python may not be aware of all threads.
-
- - gh-issue-100039: Improve signatures for enums and flags.
-
- - gh-issue-100133: Fix regression in :mod:`asyncio` where a subprocess would
- sometimes lose data received from pipe.
-
- - bpo-44592: Fixes inconsistent handling of case sensitivity of
- *extrasaction* arg in :class:`csv.DictWriter`.
-
- - gh-issue-100098: Fix ``tuple`` subclasses being cast to ``tuple`` when
- used as enum values.
-
- - gh-issue-85432: Rename the *fmt* parameter of the pure-Python
- implementation of :meth:`datetime.time.strftime` to *format*. Rename the
- *t* parameter of :meth:`datetime.datetime.fromtimestamp` to *timestamp*.
- These changes mean the parameter names in the pure-Python implementation
- now match the parameter names in the C implementation. Patch by Alex
- Waygood.
-
- - gh-issue-98778: Update :exc:`~urllib.error.HTTPError` to be initialized
- properly, even if the ``fp`` is ``None``. Patch by Donghee Na.
-
- - gh-issue-99925: Unify error messages in JSON serialization between
- ``json.dumps(float('nan'), allow_nan=False)`` and
- ``json.dumps(float('nan'), allow_nan=False, indent=<SOMETHING>)``. Now
- both include the representation of the value that could not be serialized.
-
- - gh-issue-89727: Fix issue with :func:`os.walk` where a
- :exc:`RecursionError` would occur on deep directory structures by
- adjusting the implementation of :func:`os.walk` to be iterative instead of
- recursive.
-
- - gh-issue-94943: Add :ref:`enum-dataclass-support` to the
- :class:`~enum.Enum` :meth:`~enum.Enum.__repr__`. When inheriting from a
- :class:`~dataclasses.dataclass`, only show the field names in the value
- section of the member :func:`repr`, and not the dataclass' class name.
-
- - gh-issue-83035: Fix :func:`inspect.getsource` handling of decorator calls
- with nested parentheses.
-
- - gh-issue-99576: Fix ``.save()`` method for ``LWPCookieJar`` and
- ``MozillaCookieJar``: saved file was not truncated on repeated save.
-
- - gh-issue-94912: Add :func:`inspect.markcoroutinefunction` decorator which
- manually marks a function as a coroutine for the benefit of
- :func:`iscoroutinefunction`.
-
- - gh-issue-99509: Add :pep:`585` support for
- :class:`multiprocessing.queues.Queue`.
-
- - gh-issue-99482: Remove ``Jython`` partial compatibility code from several
- stdlib modules.
-
- - gh-issue-99433: Fix :mod:`doctest` failure on
- :class:`types.MethodWrapperType` in modules.
-
- - 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-91166: :mod:`asyncio` is optimized to avoid excessive copying
- when writing to socket and use :meth:`~socket.socket.sendmsg` if the
- platform supports it. Patch by Kumar Aditya.
-
- - gh-issue-98030: Add missing TCP socket options from Linux: ``TCP_MD5SIG``,
- ``TCP_THIN_LINEAR_TIMEOUTS``, ``TCP_THIN_DUPACK``, ``TCP_REPAIR``,
- ``TCP_REPAIR_QUEUE``, ``TCP_QUEUE_SEQ``, ``TCP_REPAIR_OPTIONS``,
- ``TCP_TIMESTAMP``, ``TCP_CC_INFO``, ``TCP_SAVE_SYN``, ``TCP_SAVED_SYN``,
- ``TCP_REPAIR_WINDOW``, ``TCP_FASTOPEN_CONNECT``, ``TCP_ULP``,
- ``TCP_MD5SIG_EXT``, ``TCP_FASTOPEN_KEY``, ``TCP_FASTOPEN_NO_COOKIE``,
- ``TCP_ZEROCOPY_RECEIVE``, ``TCP_INQ``, ``TCP_TX_DELAY``.
-
- - gh-issue-88500: Reduced the memory usage of :func:`urllib.parse.unquote`
- and :func:`urllib.parse.unquote_to_bytes` on large values.
-
- - gh-issue-96127: ``inspect.signature`` was raising ``TypeError`` on call
- with mock objects. Now it correctly returns ``(*args, **kwargs)`` as
- infered signature.
-
- - gh-issue-95882: Fix a 3.11 regression in
- :func:`~contextlib.asynccontextmanager`, which caused it to propagate
- exceptions with incorrect tracebacks and fix a 3.11 regression in
- :func:`~contextlib.contextmanager`, which caused it to propagate
- exceptions with incorrect tracebacks for :exc:`StopIteration`.
-
- - gh-issue-78707: Deprecate passing more than one positional argument to
- :meth:`pathlib.PurePath.relative_to` and
- :meth:`~pathlib.PurePath.is_relative_to`.
-
- - gh-issue-92122: Fix reStructuredText syntax errors in docstrings in the
- :mod:`enum` module.
-
- - gh-issue-91851: Optimize the :class:`~fractions.Fraction` arithmetics for
- small components.
-
- - bpo-24132: Make :class:`pathlib.PurePath` and :class:`~pathlib.Path`
- subclassable (private to start). Previously, attempting to instantiate a
- subclass resulted in an :exc:`AttributeError` being raised. Patch by
- Barney Gale.
-
- - 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`.
-
- - bpo-25377: Clarify use of octal format of mode argument in help(os.chmod)
- as well as help(os.fchmod)
-
- Tests
- -----
-
- - gh-issue-100454: Start running SSL tests with OpenSSL 3.1.0-beta1.
-
- - gh-issue-100086: The Python test runner (libregrtest) now logs Python
- build information like "debug" vs "release" build, or LTO and PGO
- optimizations. Patch by Victor Stinner.
-
- - gh-issue-93018: Make two tests forgiving towards host system libexpat with
- backported security fixes applied.
-
- Build
- -----
-
- - gh-issue-100540: Removed the ``--with-system-ffi`` ``configure`` option;
- ``libffi`` must now always be supplied by the system on all non-Windows
- platforms. The option has had no effect on non-Darwin platforms for
- several releases, and in 3.11 only had the non-obvious effect of invoking
- ``pkg-config`` to find ``libffi`` and never setting
- ``-DUSING_APPLE_OS_LIBFFI``. Now on Darwin platforms ``configure`` will
- first check for the OS ``libffi`` and then fall back to the same
- processing as other platforms if it is not found.
-
- - gh-issue-88267: Avoid exporting Python symbols in linked Windows
- applications when the core is built as static.
-
- - bpo-41916: Allow override of ac_cv_cxx_thread so that cross compiled
- python can set -pthread for CXX.
-
- Windows
- -------
-
- - gh-issue-100180: Update Windows installer to OpenSSL 1.1.1s
-
- - gh-issue-99191: Use ``_MSVC_LANG >= 202002L`` instead of less-precise
- ``_MSC_VER >=1929`` to more accurately test for C++20 support in
- :file:`PC/_wmimodule.cpp`.
-
- - gh-issue-79218: Define ``MS_WIN64`` for Mingw-w64 64bit, fix cython
- compilation failure.
-
- - gh-issue-99941: Ensure that :func:`asyncio.Protocol.data_received`
- receives an immutable :class:`bytes` object (as documented), instead of
- :class:`bytearray`.
-
- - 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.
-
- - bpo-34816: ``hasattr(ctypes.windll, 'nonexistant')`` now returns ``False``
- instead of raising :exc:`OSError`.
-
- macOS
- -----
-
- - gh-issue-100180: Update macOS installer to OpenSSL 1.1.1s
-
- - gh-issue-100540: Removed obsolete ``dlfcn.h`` shim from the ``_ctypes``
- extension module, which has not been necessary since Mac OS X 10.2.
-
- Tools/Demos
- -----------
-
- - bpo-45256: Fix a bug that caused an :exc:`AttributeError` to be raised in
- ``python-gdb.py`` when ``py-locals`` is used without a frame.
-
- - gh-issue-100342: Add missing ``NULL`` check for possible allocation
- failure in ``*args`` parsing in Argument Clinic.
-
- C API
- -----
-
- - gh-issue-99947: Raising SystemError on import will now have its cause be
- set to the original unexpected exception.
-
- - gh-issue-99240: In argument parsing, after deallocating newly allocated
- memory, reset its pointer to NULL.
-
- - gh-issue-98724: The :c:macro:`Py_CLEAR`, :c:macro:`Py_SETREF` and
- :c:macro:`Py_XSETREF` macros now only evaluate their arguments once. If an
- argument has side effects, these side effects are no longer duplicated.
- Patch by Victor Stinner.
-
-
- What's New in Python 3.12.0 alpha 3?
- ====================================
-
- *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 :samp:`\\x{HH}` hex escape before printing.
-
- - gh-issue-87604: Avoid publishing list of active per-interpreter audit
- hooks via the :mod:`gc` module
-
- Core and Builtins
- -----------------
-
- - gh-issue-99891: Fix a bug in the tokenizer that could cause infinite
- recursion when showing syntax warnings that happen in the first line of
- the source. Patch by Pablo Galindo
-
- - gh-issue-91054: Add :c:func:`PyCode_AddWatcher` and
- :c:func:`PyCode_ClearWatcher` APIs to register callbacks to receive
- notification on creation and destruction of code objects.
-
- - gh-issue-99729: Fix an issue that could cause frames to be visible to
- Python code as they are being torn down, possibly leading to memory
- corruption or hard crashes of the interpreter.
-
- - gh-issue-99708: Fix bug where compiler crashes on an if expression with an
- empty body block.
-
- - 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-99553: Fix bug where an :exc:`ExceptionGroup` subclass can wrap a
- :exc:`BaseException`.
-
- - gh-issue-99547: Add a function to os.path to check if a path is a
- junction: isjunction. Add similar functionality to pathlib.Path as
- is_junction.
-
- - gh-issue-99370: Fix zip path for venv created from a non-installed python
- on POSIX platforms.
-
- - gh-issue-99377: Add audit events for thread creation and clear operations.
-
- - gh-issue-98686: Remove the ``BINARY_OP_GENERIC`` and
- ``COMPARE_OP_GENERIC`` "specializations".
-
- - gh-issue-99298: Remove the remaining error paths for attribute
- specializations, and refuse to specialize attribute accesses on types that
- haven't had :c:func:`PyType_Ready` called on them yet.
-
- - gh-issue-99127: Allow some features of :mod:`syslog` to the main
- interpreter only. Patch by Donghee Na.
-
- - gh-issue-91053: Optimizing interpreters and JIT compilers may need to
- invalidate internal metadata when functions are modified. This change adds
- the ability to provide a callback that will be invoked each time a
- function is created, modified, or destroyed.
-
- - gh-issue-90994: Improve error messages when there's a syntax error with
- call arguments. The following three cases are covered: - No value is
- assigned to a named argument, eg ``foo(a=)``. - A value is assigned to a
- star argument, eg ``foo(*args=[0])``. - A value is assigned to a
- double-star keyword argument, eg ``foo(**kwarg={'a': 0})``.
-
- - bpo-45026: Optimize the :class:`range` object iterator. It is now smaller,
- faster iteration of ranges containing large numbers. Smaller pickles,
- faster unpickling.
-
- - 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-99957: Add ``frozen_default`` parameter to
- :func:`typing.dataclass_transform`.
-
- - gh-issue-79033: Fix :func:`asyncio.Server.wait_closed` to actually do what
- the docs promise -- wait for all existing connections to complete, after
- closing the server.
-
- - 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-99508: Fix ``TypeError`` in
- ``Lib/importlib/_bootstrap_external.py`` while calling
- ``_imp.source_hash()``.
-
- - gh-issue-66285: Fix :mod:`asyncio` to not share event loop and signal
- wakeupfd in forked processes. Patch by Kumar Aditya.
-
- - gh-issue-97001: Release the GIL when calling termios APIs to avoid
- blocking threads.
-
- - gh-issue-92647: Use final status of an enum to determine lookup or
- creation branch of functional API.
-
- - gh-issue-99388: Add *loop_factory* parameter to :func:`asyncio.run` to
- allow specifying a custom event loop factory. Patch by Kumar Aditya.
-
- - gh-issue-99341: Fix :func:`ast.increment_lineno` to also cover
- :class:`ast.TypeIgnore` when changing line numbers.
-
- - gh-issue-99382: Check the number of arguments in substitution in user
- generics containing a :class:`~typing.TypeVarTuple` and one or more
- :class:`~typing.TypeVar`.
-
- - gh-issue-99379: Fix substitution of :class:`~typing.ParamSpec` followed by
- :class:`~typing.TypeVarTuple` in generic aliases.
-
- - gh-issue-99344: Fix substitution of :class:`~typing.TypeVarTuple` and
- :class:`~typing.ParamSpec` together in user generics.
-
- - gh-issue-99284: Remove ``_use_broken_old_ctypes_structure_semantics_`` old
- untested and undocumented hack from :mod:`ctypes`.
-
- - gh-issue-99201: Fix :exc:`IndexError` when initializing the config
- variables on Windows if ``HAVE_DYNAMIC_LOADING`` is not set.
-
- - 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-64490: Fix refcount error when arguments are packed to tuple in
- Argument Clinic.
-
- - gh-issue-99029: :meth:`pathlib.PurePath.relative_to()` now treats naked
- Windows drive paths as relative. This brings its behaviour in line with
- other parts of pathlib.
-
- - gh-issue-98253: The implementation of the typing module is now more
- resilient to reference leaks in binary extension modules.
-
- Previously, a reference leak in a typed C API-based extension module could
- leak internals of the typing module, which could in turn introduce leaks
- in essentially any other package with typed function signatures. Although
- the typing package is not the original source of the problem, such
- non-local dependences exacerbate debugging of large-scale projects, and
- the implementation was therefore changed to reduce harm by providing
- better isolation.
-
- - gh-issue-98458: Fix infinite loop in unittest when a self-referencing
- chained exception is raised
-
- - gh-issue-93453: :func:`asyncio.get_event_loop` and many other
- :mod:`asyncio` functions like :func:`asyncio.ensure_future`,
- :func:`asyncio.shield` or :func:`asyncio.gather`, and also the
- :meth:`~asyncio.BaseDefaultEventLoopPolicy.get_event_loop` method of
- :class:`asyncio.BaseDefaultEventLoopPolicy` now raise a
- :exc:`RuntimeError` if called when there is no running event loop and the
- current event loop was not set. Previously they implicitly created and set
- a new current event loop. :exc:`DeprecationWarning` is no longer emitted
- if there is no running event loop but the current event loop was set.
-
- - gh-issue-97966: On ``uname_result``, restored expectation that ``_fields``
- and ``_asdict`` would include all six properties including ``processor``.
-
- - gh-issue-98248: Provide informative error messages in :func:`struct.pack`
- when its integral arguments are not in range.
-
- - gh-issue-98108: ``zipfile.Path`` is now pickleable if its initialization
- parameters were pickleable (e.g. for file system paths).
-
- - gh-issue-98098: Created packages from zipfile and test_zipfile modules,
- separating ``zipfile.Path`` functionality.
-
- - gh-issue-82836: Fix :attr:`~ipaddress.IPv4Address.is_private` properties
- in the :mod:`ipaddress` module. Previously non-private networks
- (0.0.0.0/0) would return True from this method; now they correctly return
- False.
-
- - gh-issue-96828: Add an :const:`~ssl.OP_ENABLE_KTLS` option for enabling
- the use of the kernel TLS (kTLS). Patch by Illia Volochii.
-
- - 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-91078: :meth:`TarFile.next` now returns ``None`` when called on
- an empty tarfile.
-
- - bpo-47220: Document the optional *callback* parameter of
- :class:`WeakMethod`. Patch by Géry Ogam.
-
- - bpo-44817: Ignore WinError 53 (ERROR_BAD_NETPATH), 65
- (ERROR_NETWORK_ACCESS_DENIED) and 161 (ERROR_BAD_PATHNAME) when using
- ntpath.realpath().
-
- - bpo-41260: Rename the *fmt* parameter of the pure Python implementation of
- :meth:`datetime.date.strftime` to *format*.
-
- - bpo-15999: All built-in functions now accept arguments of any type instead
- of just ``bool`` and ``int`` for boolean parameters.
-
- Documentation
- -------------
-
- - gh-issue-99931: Use `sphinxext-opengraph
- <https://sphinxext-opengraph.readthedocs.io/>`__ to generate `OpenGraph
- metadata <https://ogp.me/>`__.
-
- - gh-issue-89682: Reworded docstring of the default ``__contains__`` to
- clarify that it returns a :class:`bool`.
-
- - gh-issue-88330: Improved the description of what a resource is in
- importlib.resources docs.
-
- - gh-issue-92892: Document that calling variadic functions with ctypes
- requires special care on macOS/arm64 (and possibly other platforms).
-
- - bpo-41825: Restructured the documentation for the :func:`os.wait*
- <os.wait>` family of functions, and improved the docs for
- :func:`os.waitid` with more explanation of the possible argument
- constants.
-
- 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.
-
- - gh-issue-99934: Correct test_marsh on (32 bit) x86: test_deterministic
- sets was failing.
-
- - gh-issue-99741: We've implemented multi-phase init (PEP 489/630/687) for
- the internal (for testing) _xxsubinterpreters module.
-
- - gh-issue-99659: Optional big memory tests in ``test_sqlite3`` now catch
- the correct :exc:`sqlite.DataError` exception type in case of too large
- strings and/or blobs passed.
-
- - gh-issue-99593: Cover the Unicode C API with tests.
-
- - gh-issue-96002: Add functional test for Argument Clinic.
-
- Build
- -----
-
- - gh-issue-99086: Fix ``-Wimplicit-int``, ``-Wstrict-prototypes``, and
- ``-Wimplicit-function-declaration`` compiler warnings in
- :program:`configure` checks.
-
- - gh-issue-99337: Fix a compilation issue with GCC 12 on macOS.
-
- - gh-issue-99289: Add a ``COMPILEALL_OPTS`` variable in Makefile to override
- :mod:`compileall` options (default: ``-j0``) in ``make install``. Also
- merged the ``compileall`` commands into a single command building .pyc
- files for the all optimization levels (0, 1, 2) at once. Patch by Victor
- Stinner.
-
- - gh-issue-98872: Fix a possible fd leak in ``Programs/_freeze_module.c``
- introduced in Python 3.11.
-
- - gh-issue-88226: Always define ``TARGET_*`` labels in ``Python/ceval.c``,
- even if ``USE_COMPUTED_GOTOS`` is disabled. This allows breakpoints to be
- set at those labels in (for instance) ``gdb``.
-
- Windows
- -------
-
- - gh-issue-99345: Use faster initialization functions to detect install
- location for Windows Store package
-
- - gh-issue-98629: Fix initialization of :data:`sys.version` and ``sys._git``
- on Windows
-
- - gh-issue-99442: Fix handling in :ref:`launcher` when ``argv[0]`` does not
- include a file extension.
-
- - bpo-40882: Fix a memory leak in
- :class:`multiprocessing.shared_memory.SharedMemory` on Windows.
-
- macOS
- -----
-
- - gh-issue-87235: On macOS ``python3 /dev/fd/9 9</path/to/script.py`` failed
- for any script longer than a couple of bytes.
-
- - gh-issue-98940: Fix ``Mac/Extras.install.py`` file filter bug.
-
- Tools/Demos
- -----------
-
- - gh-issue-64490: Argument Clinic varargs bugfixes
-
- * Fix out-of-bounds error in :c:func:`!_PyArg_UnpackKeywordsWithVararg`.
- * Fix incorrect check which allowed more than one varargs in clinic.py.
- * Fix miscalculation of ``noptargs`` in generated code.
- * Do not generate ``noptargs`` when there is a vararg argument and no optional argument.
-
- C API
- -----
-
- - gh-issue-98680: ``PyBUF_*`` constants were marked as part of Limited API
- of Python 3.11+. These were available in 3.11.0 with
- :c:macro:`Py_LIMITED_API` defined for 3.11, and are necessary to use the
- buffer API.
-
- - gh-issue-99612: Fix :c:func:`PyUnicode_DecodeUTF8Stateful` for ASCII-only
- data: ``*consumed`` was not set.
-
- - gh-issue-47146: The ``structmember.h`` header is deprecated. Its
- non-deprecated contents are now available just by including ``Python.h``,
- with a ``Py_`` prefix added if it was missing. (Deprecated contents are
- :c:macro:`T_OBJECT`, :c:macro:`T_NONE`, and no-op flags.) Patch by Petr
- Viktorin, based on earlier work by Alexander Belopolsky and Matthias
- Braun.
-
-
- What's New in Python 3.12.0 alpha 2?
- ====================================
-
- *Release date: 2022-11-14*
-
- Security
- --------
-
- - 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 :samp:`3{xx}` redirects potentially allow for an
- attacker to supply such a name.
-
- Individual labels within an IDNA encoded DNS name will now raise an error
- early during IDNA decoding if they are longer than 1024 unicode characters
- given that each decoded DNS label must be 63 or fewer characters and the
- entire decoded DNS name is limited to 255. Only an application presenting
- a hostname or label consisting primarily of :rfc:`3454` section 3.1
- "Nothing" characters to be removed would run into of this new limit. See
- also :rfc:`5894` section 6 and :rfc:`3491`.
-
- - gh-issue-98739: Update bundled libexpat to 2.5.0
-
- Core and Builtins
- -----------------
-
- - gh-issue-81057: The docs clearly say that ``PyImport_Inittab``,
- :c:func:`PyImport_AppendInittab`, and :c:func:`PyImport_ExtendInittab`
- should not be used after :c:func:`Py_Initialize` has been called. We now
- enforce this for the two functions. Additionally, the runtime now uses an
- internal copy of ``PyImport_Inittab``, to guard against modification.
-
- - gh-issue-99298: Fix an issue that could potentially cause incorrect error
- handling for some bytecode instructions.
-
- - gh-issue-99254: The compiler now removes all unused constants from code
- objects (except the first one, which may be a docstring).
-
- - gh-issue-99205: Fix an issue that prevented :c:type:`PyThreadState` and
- :c:type:`PyInterpreterState` memory from being freed properly.
-
- - gh-issue-81057: The 18 global C variables holding the state of the
- allocators have been moved to ``_PyRuntimeState``. This is a strictly
- internal change with no change in behavior.
-
- - gh-issue-99181: Fix failure in :keyword:`except* <except_star>` with
- unhashable exceptions.
-
- - gh-issue-99204: Fix calculation of :data:`sys._base_executable` when
- inside a POSIX virtual environment using copies of the python binary when
- the base installation does not provide the executable name used by the
- venv. Calculation will fall back to alternative names ("python<MAJOR>",
- "python<MAJOR>.<MINOR>").
-
- - gh-issue-96055: Update :mod:`faulthandler` to emit an error message with
- the proper unexpected signal number. Patch by Donghee Na.
-
- - gh-issue-99153: Fix location of :exc:`SyntaxError` for a :keyword:`try`
- block with both :keyword:`except` and :keyword:`except* <except_star>`.
-
- - gh-issue-98686: Merge the adaptive opcode logic into each instruction's
- unquickened variant, and merge the logic in ``EXTENDED_ARG_QUICK`` into
- :opcode:`EXTENDED_ARG`. With these changes, the quickening that happens at
- code object creation is now only responsible for initializing warmup
- counters and inserting superinstructions.
-
- - gh-issue-99103: Fix the error reporting positions of specialized traceback
- anchors when the source line contains Unicode characters.
-
- - gh-issue-99139: Improve the error suggestion for :exc:`NameError`
- exceptions for instances. Now if a :exc:`NameError` is raised in a method
- and the instance has an attribute that's exactly equal to the name in the
- exception, the suggestion will include ``self.<NAME>`` instead of the
- closest match in the method scope. Patch by Pablo Galindo
-
- - gh-issue-98401: Octal escapes with value larger than ``0o377`` (ex:
- ``"\477"``), deprecated in Python 3.11, now produce a
- :exc:`SyntaxWarning`, instead of :exc:`DeprecationWarning`. In a future
- Python version they will be eventually a :exc:`SyntaxError`. Patch by
- Victor Stinner.
-
- - gh-issue-98401: A backslash-character pair that is not a valid escape
- sequence now generates a :exc:`SyntaxWarning`, instead of
- :exc:`DeprecationWarning`. For example, ``re.compile("\d+\.\d+")`` now
- emits a :exc:`SyntaxWarning` (``"\d"`` is an invalid escape sequence), use
- raw strings for regular expression: ``re.compile(r"\d+\.\d+")``. In a
- future Python version, :exc:`SyntaxError` will eventually be raised,
- instead of :exc:`SyntaxWarning`. Patch by Victor Stinner.
-
- - gh-issue-96793: Handle StopIteration and StopAsyncIteration raised in
- generator or coroutines in the bytecode, rather than in wrapping C code.
-
- - gh-issue-98931: Improve the :exc:`SyntaxError` error message when the user
- types ``import x from y`` instead of ``from y import x``. Patch by Pablo
- Galindo
-
- - gh-issue-98852: Fix subscription of type aliases containing bare generic
- types or types like :class:`~typing.TypeVar`: for example ``tuple[A,
- T][int]`` and ``tuple[TypeVar, T][int]``, where ``A`` is a generic type,
- and ``T`` is a type variable.
-
- - gh-issue-98925: Lower the recursion depth for marshal on WASI to support
- (in-development) wasmtime 2.0.
-
- - gh-issue-98783: Fix multiple crashes in debug mode when ``str`` subclasses
- are used instead of ``str`` itself.
-
- - gh-issue-98811: Use complete source locations to simplify detection of
- ``__future__`` imports which are not at the beginning of the file. Also
- corrects the offset in the exception raised in one case, which was off by
- one and impeded highlighting.
-
- - gh-issue-96793: Add specialization of :opcode:`FOR_ITER` for generators.
- Saves multiple layers of dispatch and checking to get from the
- :opcode:`FOR_ITER` instruction in the caller to the :opcode:`RESUME` in
- the generator.
-
- - gh-issue-98762: Fix source locations of :keyword:`match` sub-patterns.
-
- - gh-issue-98586: Added the methods :c:func:`PyObject_Vectorcall` and
- :c:func:`PyObject_VectorcallMethod` to the :ref:`Limited API <stable>`
- along with the auxiliary macro constant
- :c:macro:`PY_VECTORCALL_ARGUMENTS_OFFSET`.
-
- The availability of these functions enables more efficient :PEP:`590`
- vector calls from binary extension modules that avoid argument
- boxing/unboxing overheads.
-
- - gh-issue-99257: Fix an issue where member descriptors (such as those for
- :attr:`~object.__slots__`) could behave incorrectly or crash instead of
- raising a :exc:`TypeError` when accessed via an instance of an invalid
- type.
-
- - gh-issue-93143: Rather than changing :attr:`~types.CodeType.co_code`, the
- interpreter will now display a :exc:`RuntimeWarning` and assign
- :const:`None` to any fast locals that are left unbound after jumps or
- :keyword:`del` statements executed while tracing.
-
- - gh-issue-96421: When calling into Python code from C code, through
- :c:func:`PyEval_EvalFrameEx` or a related C-API function, a shim frame in
- inserted into the call stack. This occurs in the
- ``_PyEval_EvalFrameDefault()`` function. The extra frame should be
- invisible to all Python and most C extensions, but out-of-process
- profilers and debuggers need to be aware of it. These shim frames can be
- detected by checking ``frame->owner == FRAME_OWNED_BY_CSTACK``.
-
- Extensions implementing their own interpreters using PEP 523 need to be
- aware of this shim frame and the changes to the semantics of
- :opcode:`RETURN_VALUE`, :opcode:`YIELD_VALUE`, and
- :opcode:`RETURN_GENERATOR`, which now clear the frame.
-
- - gh-issue-98415: Fix detection of MAC addresses for :mod:`uuid` on certain
- OSs. Patch by Chaim Sanders
-
- - gh-issue-98686: Quicken all code objects, and specialize adaptive bytecode
- instructions more aggressively.
-
- - gh-issue-92119: Print exception class name instead of its string
- representation when raising errors from :mod:`ctypes` calls.
-
- - gh-issue-91058: :exc:`ImportError` raised from failed ``from <module>
- import <name>`` now include suggestions for the value of ``<name>`` based
- on the available names in ``<module>``. Patch by Pablo Galindo
-
- - gh-issue-96793: The :opcode:`FOR_ITER` now leaves the iterator on the
- stack on termination of the loop. This is to assist specialization of
- loops for generators.
-
- - gh-issue-90716: Add _pylong.py module. It includes asymptotically faster
- algorithms that can be used for operations on integers with many digits.
- It is used by longobject.c to speed up some operations.
-
- - gh-issue-95389: Expose :const:`~socket.ETH_P_ALL` and some of the
- :ref:`ETHERTYPE_* constants <socket-ethernet-types>` in :mod:`socket`.
- Patch by Noam Cohen.
-
- - gh-issue-93696: Allow :mod:`pdb` to locate source for frozen modules in
- the standard library.
-
- Library
- -------
-
- - gh-issue-99418: Fix bug in :func:`urllib.parse.urlparse` that causes URL
- schemes that begin with a digit, a plus sign, or a minus sign to be parsed
- incorrectly.
-
- - gh-issue-94597: Deprecate :class:`asyncio.AbstractChildWatcher` to be
- removed in Python 3.14. Patch by Kumar Aditya.
-
- - gh-issue-99305: Improve performance of :func:`secrets.token_hex`.
-
- - 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-99277: Remove older version of
- ``_SSLProtocolTransport.get_write_buffer_limits`` in
- :mod:`!asyncio.sslproto`
-
- - gh-issue-99248: fix negative numbers failing in verify()
-
- - gh-issue-99155: Fix :class:`statistics.NormalDist` pickle with ``0`` and
- ``1`` protocols.
-
- - gh-issue-93464: ``enum.auto()`` is now correctly activated when combined
- with other assignment values. E.g. ``ONE = auto(), 'some text'`` will now
- evaluate as ``(1, 'some text')``.
-
- - gh-issue-99134: Update the bundled copy of pip to version 22.3.1.
-
- - gh-issue-92584: Remove the ``distutils`` package. It was deprecated in
- Python 3.10 by :pep:`632` "Deprecate distutils module". For projects still
- using ``distutils`` and cannot be updated to something else, the
- ``setuptools`` project can be installed: it still provides ``distutils``.
- Patch by Victor Stinner.
-
- - gh-issue-98999: Now :mod:`_pyio` is consistent with :mod:`_io` in raising
- ``ValueError`` when executing methods over closed buffers.
-
- - gh-issue-83004: Clean up refleak on failed module initialisation in
- :mod:`_zoneinfo`
-
- - gh-issue-83004: Clean up refleaks on failed module initialisation 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-98878: Use the frame bound builtins when offering a name
- suggestion in :mod:`traceback` to prevent crashing when ``__builtins__``
- is not a dict.
-
- - gh-issue-98139: In :mod:`importlib._bootstrap`, enhance namespace package
- repr to ``<module 'x' (namespace) from ['path']>``.
-
- - gh-issue-90352: Fix ``_SelectorDatagramTransport`` to inherit from
- :class:`~asyncio.DatagramTransport` in :mod:`asyncio`. Patch by Kumar
- Aditya.
-
- - gh-issue-98793: Fix argument typechecks in :func:`!_overlapped.WSAConnect`
- and :func:`!_overlapped.Overlapped.WSASendTo` functions.
-
- - gh-issue-98744: Prevent crashing in :mod:`traceback` when retrieving the
- byte-offset for some source files that contain certain unicode characters.
-
- - 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-98658: The :class:`array.array` class now supports subscripting,
- making it a :term:`generic type`.
-
- - gh-issue-98284: Improved :class:`TypeError` message for undefined abstract
- methods of a :class:`abc.ABC` instance. The names of the missing methods
- are surrounded by single-quotes to highlight them.
-
- - 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-72719: Remove modules :mod:`!asyncore` and :mod:`!asynchat`,
- which were deprecated by :pep:`594`.
-
- - gh-issue-96192: Fix handling of ``bytes`` :term:`path-like objects
- <path-like object>` in :func:`os.ismount()`.
-
- - gh-issue-94172: :mod:`ftplib`: Remove the ``FTP_TLS.ssl_version`` class
- attribute: use the *context* parameter instead. Patch by Victor Stinner
-
- - gh-issue-94172: Remove the *keyfile* and *certfile* parameters from the
- :mod:`ftplib`, :mod:`imaplib`, :mod:`poplib` and :mod:`smtplib` modules,
- and the *key_file*, *cert_file* and *check_hostname* parameters from the
- :mod:`http.client` module, all deprecated since Python 3.6. Use the
- *context* parameter (*ssl_context* in :mod:`imaplib`) instead. Patch by
- Victor Stinner.
-
- - gh-issue-83638: Add the :attr:`~sqlite3.Connection.autocommit` attribute
- to :class:`sqlite3.Connection` and the *autocommit* parameter to
- :func:`sqlite3.connect` to control :pep:`249`-compliant :ref:`transaction
- handling <sqlite3-transaction-control-autocommit>`. Patch by Erlend E.
- Aasland.
-
- - gh-issue-92452: Fixed a race condition that could cause
- :func:`sysconfig.get_config_var` to incorrectly return :const:`None` in
- multi-threaded programs.
-
- - gh-issue-91803: Fix an error when using a method of objects mocked with
- :func:`unittest.mock.create_autospec` after it was sealed with
- :func:`unittest.mock.seal` function.
-
- - bpo-38523: :func:`shutil.copytree` now applies the
- *ignore_dangling_symlinks* argument recursively.
-
- - bpo-40358: Add walk_up argument in :meth:`pathlib.PurePath.relative_to`.
-
- - bpo-36267: Fix IndexError in :class:`argparse.ArgumentParser` when a
- ``store_true`` action is given an explicit argument.
-
- Documentation
- -------------
-
- - gh-issue-98832: Changes wording of docstring for
- :func:`pathlib.Path.iterdir`.
-
- - gh-issue-97966: Update uname docs to clarify the special nature of the
- platform attribute and to indicate when it became late-bound.
-
- Tests
- -----
-
- - gh-issue-98903: The Python test suite now fails wit exit code 4 if no
- tests ran. It should help detecting typos in test names and test methods.
-
- - gh-issue-98713: Fix a bug in the :mod:`typing` tests where a test relying
- on CPython-specific implementation details was not decorated with
- ``@cpython_only`` and was not skipped on other implementations.
-
- - gh-issue-87390: Add tests for star-unpacking with PEP 646, and some other
- miscellaneous PEP 646 tests.
-
- - gh-issue-96853: Added explicit coverage of ``Py_Initialize`` (and hence
- ``Py_InitializeEx``) back to the embedding tests (all other embedding
- tests migrated to ``Py_InitializeFromConfig`` in Python 3.11)
-
- - bpo-34272: Some C API tests were moved into the new Lib/test/test_capi/
- directory.
-
- Build
- -----
-
- - gh-issue-99086: Fix ``-Wimplicit-int`` compiler warning in
- :program:`configure` check for ``PTHREAD_SCOPE_SYSTEM``.
-
- - gh-issue-99016: Fix build with ``PYTHON_FOR_REGEN=python3.8``.
-
- - gh-issue-97731: Specify the full path to the source location for ``make
- docclean`` (needed for cross-builds).
-
- - gh-issue-98949: Drop unused build dependency on ``readelf``.
-
- - gh-issue-98989: Use ``python3.11``, if available, for regeneration and
- freezing.
-
- - gh-issue-98831: Add new tooling, in ``Tools/cases_generator``, to generate
- the interpreter switch statement from a list of opcode definitions. This
- only affects adding, modifying or removing instruction definitions. The
- instruction definitions now live in ``Python/bytecodes.c``, in the form of
- a `custom DSL (under development)
- <https://github.com/faster-cpython/ideas/blob/main/3.12/interpreter_definition.md>`__.
- The tooling reads this file and writes ``Python/generated_cases.c.h``,
- which is then included by ``Python/ceval.c`` to provide most of the cases
- of the main interpreter switch.
-
- - gh-issue-98817: Remove PCbuild/lib.pyproj: it's not used for anything, is
- only a minor convenience for Visual Studio users (who probably mostly
- don't even know about it), and it takes a lot of maintenance effort to
- keep updated.
-
- - gh-issue-98776: Fix ``make regen-test-levenshtein`` for out-of-tree
- builds.
-
- - gh-issue-98707: Don't use vendored ``libmpdec`` headers if
- :option:`--with-system-libmpdec` is passed to :program:`configure`. Don't
- use vendored ``libexpat`` headers if :option:`--with-system-expat` is
- passed to :program:`configure`.
-
- Windows
- -------
-
- - 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-98790: Assumes that a missing ``DLLs`` directory means that
- standard extension modules are in the executable's directory.
-
- - gh-issue-98745: Update :file:`py.exe` launcher to install 3.11 by default
- and 3.12 on request.
-
- - gh-issue-98692: Fix the :ref:`launcher` ignoring unrecognized shebang
- lines instead of treating them as local paths
-
- - gh-issue-94328: Update Windows installer to use SQLite 3.39.4.
-
- macOS
- -----
-
- - gh-issue-94328: Update macOS installer to SQLite 3.39.4.
-
- C API
- -----
-
- - gh-issue-98724: The :c:macro:`Py_CLEAR`, :c:macro:`Py_SETREF` and
- :c:macro:`Py_XSETREF` macros now only evaluate their argument once. If the
- argument has side effects, these side effects are no longer duplicated.
- Patch by Victor Stinner.
-
- - gh-issue-98978: Fix use-after-free in ``Py_SetPythonHome(NULL)``,
- ``Py_SetProgramName(NULL)`` and ``_Py_SetProgramFullPath(NULL)`` function
- calls. Issue reported by Benedikt Reinartz. Patch by Victor Stinner.
-
- - gh-issue-98410: Add ``getbufferproc`` and ``releasebufferproc`` to the
- stable API.
-
- - gh-issue-98610: Some configurable capabilities of sub-interpreters have
- changed. They always allow subprocesses (:mod:`subprocess`) now, whereas
- before subprocesses could be optionally disallowed for a sub-interpreter.
- Instead :func:`os.exec` can now be disallowed. Disallowing daemon threads
- is now supported. Disallowing all threads is still allowed, but is never
- done by default. Note that the optional restrictions are only available
- through ``_Py_NewInterpreterFromConfig()``, which isn't a public API. They
- do not affect the main interpreter, nor :c:func:`Py_NewInterpreter`.
-
- - gh-issue-98608: A ``_PyInterpreterConfig`` has been added and
- ``_Py_NewInterpreter()`` has been renamed to
- ``_Py_NewInterpreterFromConfig()``. The "isolated_subinterpreters"
- argument is now a granular config that captures the previous behavior.
- Note that this is all "private" API.
-
- - gh-issue-96853: ``Py_InitializeEx`` now correctly calls ``PyConfig_Clear``
- after initializing the interpreter (the omission didn't cause a memory
- leak only because none of the dynamically allocated config fields are
- populated by the wrapper function)
-
- - gh-issue-91248: Add :c:func:`PyFrame_GetVar` and
- :c:func:`PyFrame_GetVarString` functions to get a frame variable by its
- name. Patch by Victor Stinner.
-
-
- What's New in Python 3.12.0 alpha 1?
- ====================================
-
- *Release date: 2022-10-25*
-
- 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-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>`_.
-
- - 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-79096: LWPCookieJar and MozillaCookieJar create files with file
- mode 600 instead of 644 (Microsoft Windows is not affected)
-
- - gh-issue-92888: Fix ``memoryview`` use after free when accessing the
- backing buffer in certain cases.
-
- - 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-98374: Suppress ImportError for invalid query for help() command.
- Patch by Donghee Na.
-
- - gh-issue-98461: Fix source location in bytecode for list, set and dict
- comprehensions as well as generator expressions.
-
- - gh-issue-98354: Added unicode check for ``name`` attribute of ``spec``
- argument passed in :func:`_imp.create_builtin` function.
-
- - gh-issue-98398: Fix source location of 'assert' bytecodes.
-
- - gh-issue-98390: Fix location of sub-expressions of boolean expressions, by
- reducing their scope to that of the sub-expression.
-
- - gh-issue-98254: Modules from the standard library are now potentially
- suggested as part of the error messages displayed by the interpreter when
- an :exc:`NameError` is raised to the top level. Patch by Pablo Galindo
-
- - gh-issue-97997: Add running column offset to the tokenizer state to avoid
- calculating AST column information with pointer arithmetic.
-
- - gh-issue-97973: Modify the tokenizer to return all necessary information
- the parser needs to set location information in the AST nodes, so that the
- parser does not have to calculate those doing pointer arithmetic.
-
- - gh-issue-96078: :func:`os.sched_yield` now release the GIL while calling
- sched_yield(2). Patch by Donghee Na.
-
- - gh-issue-97955: Migrate :mod:`zoneinfo` to Argument Clinic.
-
- - gh-issue-97912: The compiler now avoids quadratic behavior when finding
- which instructions should use the :opcode:`LOAD_FAST_CHECK` opcode.
-
- - gh-issue-97002: Fix an issue where several frame objects could be backed
- by the same interpreter frame, possibly leading to corrupted memory and
- hard crashes of the interpreter.
-
- - gh-issue-97943: Bugfix: :c:func:`PyFunction_GetAnnotations` should return
- a borrowed reference. It was returning a new reference.
-
- - gh-issue-97922: The Garbage Collector now runs only on the eval breaker
- mechanism of the Python bytecode evaluation loop instead on object
- allocations. The GC can also run when :c:func:`PyErr_CheckSignals` is
- called so C extensions that need to run for a long time without executing
- any Python code also have a chance to execute the GC periodically.
-
- - gh-issue-65961: When ``__package__`` is different than
- ``__spec__.parent``, raise a ``DeprecationWarning`` instead of
- ``ImportWarning``.
-
- Also remove ``importlib.util.set_package()`` which was scheduled for
- removal.
-
- - gh-issue-97850: Long deprecated, ``module_repr()`` should now be
- completely eradicated.
-
- - gh-issue-86298: In cases where ``warnings.warn_explicit()`` consults the
- module's loader, an ``DeprecationWarning`` is issued when ``m.__loader__``
- differs from ``m.__spec__.loader``.
-
- - gh-issue-97779: Ensure that all Python frame objects are backed by
- "complete" frames.
-
- - gh-issue-91052: Add API for subscribing to modification events on selected
- dictionaries.
-
- - gh-issue-97752: Fix possible data corruption or crashes when accessing the
- ``f_back`` member of newly-created generator or coroutine frames.
-
- - gh-issue-97591: Fixed a missing incref/decref pair in
- ``Exception.__setstate__()``. Patch by Ofey Chan.
-
- - gh-issue-97670: Remove the :func:`sys.getdxp` function and the
- ``Tools/scripts/analyze_dxp.py`` script. DXP stands for "dynamic execution
- pairs". They were related to ``DYNAMIC_EXECUTION_PROFILE`` and ``DXPAIRS``
- macros which have been removed in Python 3.11. Python can now be built
- with :option:`./configure --enable-pystats <--enable-pystats>` to gather
- statistics on Python opcodes. Patch by Victor Stinner.
-
- - gh-issue-94526: Fix the Python path configuration used to initialized
- :data:`sys.path` at Python startup. Paths are no longer encoded to
- UTF-8/strict to avoid encoding errors if it contains surrogate characters
- (bytes paths are decoded with the surrogateescape error handler). Patch by
- Victor Stinner.
-
- - gh-issue-96670: The parser now raises :exc:`SyntaxError` when parsing
- source code containing null bytes. Patch by Pablo Galindo
-
- - gh-issue-96975: Fix a crash occurring when :c:func:`PyEval_GetFrame` is
- called while the topmost Python frame is in a partially-initialized state.
-
- - 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 ``audioop.c``.
-
- - 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-95778: The ``PyLong_FromString`` function was refactored to make
- it more maintainable and extensible.
-
- - gh-issue-96678: Fix undefined behaviour in C code of null pointer
- arithmetic.
-
- - gh-issue-96754: Make sure that all frame objects created are created from
- valid interpreter frames. Prevents the possibility of invalid frames in
- backtraces and signal handlers.
-
- - gh-issue-90997: Improve the performance of reading and writing inline
- bytecode caches on some platforms.
-
- - gh-issue-96751: Remove dead code from ``CALL_FUNCTION_EX`` opcode.
-
- - gh-issue-90751: :class:`memoryview` now supports half-floats. Patch by
- Donghee Na and Antoine Pitrou.
-
- - gh-issue-96678: Fix case of undefined behavior in ceval.c
-
- - gh-issue-64373: Convert :mod:`_functools` to argument clinic.
-
- - gh-issue-96641: Do not expose ``KeyWrapper`` in :mod:`_functools`.
-
- - gh-issue-96636: Ensure that tracing, ``sys.setrace()``, is turned on
- immediately. In pre-release versions of 3.11, some tracing events might
- have been lost when turning on tracing in a ``__del__`` method or
- interrupt.
-
- - gh-issue-96572: Fix use after free in trace refs build mode. Patch by
- Kumar Aditya.
-
- - gh-issue-96611: When loading a file with invalid UTF-8 inside a multi-line
- string, a correct SyntaxError is emitted.
-
- - gh-issue-96612: Make sure that incomplete frames do not show up in
- tracemalloc traces.
-
- - gh-issue-90230: Fix compiler warnings and test failures when building with
- ``--enable-pystats``.
-
- - gh-issue-96587: Correctly raise ``SyntaxError`` on exception groups
- (:pep:`654`) on python versions prior to 3.11
-
- - gh-issue-96569: Remove two cases of undefined behavoir, by adding NULL
- checks.
-
- - gh-issue-96582: Fix possible ``NULL`` pointer dereference in
- ``_PyThread_CurrentFrames``. Patch by Kumar Aditya.
-
- - gh-issue-91079: Separate Python recursion checking from C recursion
- checking which reduces the chance of C stack overflow and allows the
- recursion limit to be increased safely.
-
- - gh-issue-93911: Fix an issue that could prevent :opcode:`LOAD_ATTR` from
- specializing properly when accessing properties.
-
- - gh-issue-96348: Emit a DeprecationWarning when :meth:`~generator.throw`,
- :meth:`~coroutine.throw` or :meth:`~agen.athrow` are called with more than
- one argument.
-
- - gh-issue-95196: Disable incorrect pickling of the C implemented
- classmethod descriptors.
-
- - gh-issue-96364: Fix text signatures of ``list.__getitem__`` and
- ``dict.__getitem__``.
-
- - gh-issue-96352: Fix :exc:`AttributeError` missing ``name`` and ``obj``
- attributes in :meth:`object.__getattribute__`. Patch by Philip Georgi.
-
- - gh-issue-93554: Change the jump opcodes so that all conditional jumps are
- forward jumps. Backward jumps are converted by the assembler into a
- conditional forward jump whose target is the fallthrough block (and with a
- reversed condition), followed by an unconditional backward jump. For
- example:
-
- ``POP_JUMP_IF_TRUE BACKWARD_TARGET`` becomes ``POP_JUMP_IF_FALSE
- NEXT_BLOCK; JUMP BACKWARD_TARGET``.
-
- All the directed conditional jump opcodes were removed:
- ``POP_JUMP_FORWARD_IF_TRUE``, ``POP_JUMP_BACKWARD_IF_TRUE``,
- ``POP_JUMP_FORWARD_IF_FALSE``, ``POP_JUMP_BACKWARD_IF_FALSE``,
- ``POP_JUMP_FORWARD_IF_NONE``, ``POP_JUMP_BACKWARD_IF_NONE``,
- ``POP_JUMP_FORWARD_IF_NOT_NONE``, ``POP_JUMP_BACKWARD_IF_NOT_NONE``.
-
- The corresponding opcodes without direction are no longer
- pseudo-instructions, and they implement the forward conditional jumps.
-
- - gh-issue-96268: Loading a file with invalid UTF-8 will now report the
- broken character at the correct location.
-
- - gh-issue-96237: The internal field ``_PyInterpreterFrame.f_func`` is
- renamed to ``_PyInterpreterFrame.f_funcobj`` and may be any object. The
- ``f_globals`` and ``f_builtin`` fields may hold junk values.
-
- It is safest to treat the ``_PyInterpreterFrame`` struct as opaque.
-
- - gh-issue-96187: Fixed a bug that caused ``_PyCode_GetExtra`` to return
- garbage for negative indexes. Patch by Pablo Galindo
-
- - gh-issue-96143: Add a new ``-X perf`` Python command line option as well
- as :func:`sys.activate_stack_trampoline` and
- :func:`sys.deactivate_stack_trampoline` function in the :mod:`sys` module
- that allows to set/unset the interpreter in a way that the Linux ``perf``
- profiler can detect Python calls. The new
- :func:`sys.is_stack_trampoline_active` function allows to query the state
- of the perf trampoline. Design by Pablo Galindo. Patch by Pablo Galindo
- and Christian Heimes with contributions from Gregory P. Smith [Google] and
- Mark Shannon.
-
- - gh-issue-96071: Fix a deadlock in :c:func:`PyGILState_Ensure` when
- allocating new thread state. Patch by Kumar Aditya.
-
- - gh-issue-96046: :c:func:`PyType_Ready` now initializes ``ht_cached_keys``
- and performs additional checks to ensure that type objects are properly
- configured. This avoids crashes in 3rd party packages that don't use
- regular API to create new types.
-
- - gh-issue-96005: On WASI :const:`~errno.ENOTCAPABLE` is now mapped to
- :exc:`PermissionError`. The :mod:`errno` modules exposes the new error
- number. ``getpath.py`` now ignores :exc:`PermissionError` when it cannot
- open landmark files ``pybuilddir.txt`` and ``pyenv.cfg``.
-
- - gh-issue-93678: Added test a harness for direct unit tests of the
- compiler's optimization stage. The ``_testinternalcapi.optimize_cfg()``
- function runs the optimiser on a sequence of instructions. The
- ``CfgOptimizationTestCase`` class in ``test.support`` has utilities for
- invoking the optimizer and checking the output.
-
- - gh-issue-95245: Reduces the size of a "simple" Python object from 8 to 6
- words by moving the weakreflist pointer into the pre-header directly
- before the object's dict/values pointer.
-
- - gh-issue-90997: Compile virtual :keyword:`try`/:keyword:`except` blocks to
- handle exceptions raised during :meth:`~generator.close` or
- :meth:`~generator.throw` calls through a suspended frame.
-
- - gh-issue-95977: Optimized calling :meth:`~object.__get__` with vectorcall.
- Patch by Kumar Aditya.
-
- - gh-issue-91210: Improve error message when a parameter without a default
- value follows one with a default value, and show the same message, even
- when the non-default/default sequence is preceded by positional-only
- parameters.
-
- - gh-issue-95922: Fixed bug where the compiler's
- ``eliminate_empty_basic_blocks`` function ignores the last block of the
- code unit.
-
- - gh-issue-95818: Skip over incomplete frames in
- :c:func:`PyThreadState_GetFrame`.
-
- - 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-95150: Update code object hashing and equality to consider all
- debugging and exception handling tables. This fixes an issue where certain
- non-identical code objects could be "deduplicated" during compilation.
-
- - gh-issue-91146: Reduce allocation size of :class:`list` from
- :meth:`str.split` and :meth:`str.rsplit`. Patch by Donghee Na and Inada
- Naoki.
-
- - gh-issue-87092: Create a 'jump target label' abstraction in the compiler
- so that the compiler's codegen stage does not work directly with basic
- blocks. This prepares the code for changes to the underlying CFG
- generation mechanism.
-
- - gh-issue-95355: ``_PyPegen_Parser_New`` now properly detects token memory
- allocation errors. Patch by Honglin Zhu.
-
- - gh-issue-90081: Run Python code in tracer/profiler function at full speed.
- Fixes slowdown in earlier versions of 3.11.
-
- - gh-issue-95324: Emit a warning in debug mode if an object does not call
- :c:func:`PyObject_GC_UnTrack` before deallocation. Patch by Pablo Galindo.
-
- - gh-issue-95245: Merge managed dict and values pointer into a single tagged
- pointer to save one word in the pre-header.
-
- - gh-issue-93678: Add cfg_builder struct and refactor the relevant code so
- that a cfg can be constructed without an instance of the compiler struct.
-
- - gh-issue-95185: Prevented crashes in the AST constructor when compiling
- some absurdly long expressions like ``"+0"*1000000``.
- :exc:`RecursionError` is now raised instead. Patch by Pablo Galindo
-
- - gh-issue-93351: :class:`ast.AST` node positions are now validated when
- provided to :func:`compile` and other related functions. If invalid
- positions are detected, a :exc:`ValueError` will be raised.
-
- - gh-issue-94438: Fix an issue that caused extended opcode arguments and
- some conditional pops to be ignored when calculating valid jump targets
- for assignments to the ``f_lineno`` attribute of frame objects. In some
- cases, this could cause inconsistent internal state, resulting in a hard
- crash of the interpreter.
-
- - gh-issue-95060: Undocumented ``PyCode_Addr2Location`` function now
- properly returns when ``addrq`` argument is less than zero.
-
- - gh-issue-95113: Replace all ``EXTENDED_ARG_QUICK`` instructions with basic
- :opcode:`EXTENDED_ARG` instructions in unquickened code. Consumers of
- non-adaptive bytecode should be able to handle extended arguments the same
- way they were handled in CPython 3.10 and older.
-
- - gh-issue-91409: Fix incorrect source location info caused by certain
- optimizations in the bytecode compiler.
-
- - gh-issue-95023: Implement :func:`os.setns` and :func:`os.unshare` for
- Linux. Patch by Noam Cohen.
-
- - gh-issue-94036: Fix incorrect source location info for some multi-line
- attribute accesses and method calls.
-
- - 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-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.
-
- - gh-issue-94739: Allow jumping within, out of, and across exception
- handlers in the debugger.
-
- - 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-91256: Ensures the program name is known for help text during
- interpreter startup.
-
- - gh-issue-94869: Fix the column offsets for some expressions in multi-line
- f-strings :mod:`ast` nodes. Patch by Pablo Galindo.
-
- - gh-issue-94893: Fix an issue where frame object manipulations could
- corrupt inline bytecode caches.
-
- - gh-issue-94822: Fix an issue where lookups of metaclass descriptors may be
- ignored when an identically-named attribute also exists on the class
- itself.
-
- - 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-90699: Fix reference counting bug in :meth:`bool.__repr__`. Patch
- by Kumar Aditya.
-
- - gh-issue-94694: Fix an issue that could cause code with multi-line method
- lookups to have misleading or incorrect column offset information. In some
- cases (when compiling a hand-built AST) this could have resulted in a hard
- crash of the interpreter.
-
- - gh-issue-93252: Fix an issue that caused internal frames to outlive failed
- Python function calls, possibly resulting in memory leaks or hard
- interpreter crashes.
-
- - gh-issue-94215: Fix an issue where exceptions raised by line-tracing
- events would cause frames to be left in an invalid state, possibly
- resulting in a hard crash of the interpreter.
-
- - gh-issue-92228: Disable the compiler's inline-small-exit-blocks
- optimization for exit blocks that are associated with source code lines.
- This fixes a bug where the debugger cannot tell where an exception handler
- ends and the following code block begins.
-
- - gh-issue-94485: Line number of a module's ``RESUME`` instruction is set to
- 0 as specified in :pep:`626`.
-
- - gh-issue-94438: Account for instructions that can push NULL to the stack
- when setting line number in a frame. Prevents some (unlikely) crashes.
-
- - gh-issue-91719: Reload ``opcode`` when raising ``unknown opcode error`` in
- the interpreter main loop, for C compilers to generate dispatching code
- independently.
-
- - 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-88116: Fix an issue when reading line numbers from code objects
- if the encoded line numbers are close to ``INT_MIN``. Patch by Pablo
- Galindo
-
- - gh-issue-94262: Don't create frame objects for incomplete frames. Prevents
- the creation of generators and closures from being observable to Python
- and C extensions, restoring the behavior of 3.10 and earlier.
-
- - gh-issue-94192: Fix error for dictionary literals with invalid expression
- as value.
-
- - gh-issue-87995: :class:`types.MappingProxyType` instances are now hashable
- if the underlying mapping is hashable.
-
- - gh-issue-93883: Revise the display strategy of traceback enhanced error
- locations. The indicators are only shown when the location doesn't span
- the whole line.
-
- - gh-issue-94163: Add :opcode:`BINARY_SLICE` and :opcode:`STORE_SLICE`
- instructions for more efficient handling and better specialization of
- slicing operations, where the slice is explicit in the source code.
-
- - gh-issue-94021: Fix unreachable code warning in ``Python/specialize.c``.
-
- - gh-issue-93911: Specialize ``LOAD_ATTR`` for objects with custom
- ``__getattribute__``.
-
- - gh-issue-93955: Improve performance of attribute lookups on objects with
- custom ``__getattribute__`` and ``__getattr__``. Patch by Ken Jin.
-
- - gh-issue-93911: Specialize ``LOAD_ATTR`` for ``property()`` attributes.
-
- - gh-issue-93678: Refactor compiler optimisation code so that it no longer
- needs the ``struct assembler`` and ``struct compiler`` passed around.
- Instead, each function takes the CFG and other data that it actually
- needs. This will make it possible to test this code directly.
-
- - gh-issue-93841: When built with ``-enable-pystats``, ``sys._stats_on()``,
- ``sys._stats_off()``, ``sys._stats_clear()`` and ``sys._stats_dump()``
- functions have been added to enable gathering stats for parts of programs.
-
- - gh-issue-93516: Store offset of first traceable instruction in code object
- to avoid having to recompute it for each instruction when tracing.
-
- - gh-issue-93516: Lazily create a table mapping bytecode offsets to line
- numbers to speed up calculation of line numbers when tracing.
-
- - gh-issue-89828: :class:`types.GenericAlias` no longer relays the
- ``__class__`` attribute. For example, ``isinstance(list[int], type)`` no
- longer returns ``True``.
-
- - gh-issue-93678: Refactor the compiler to reduce boilerplate and
- repetition.
-
- - gh-issue-93671: Fix some exponential backtrace case happening with deeply
- nested sequence patterns in match statements. Patch by Pablo Galindo
-
- - gh-issue-93662: Make sure that the end column offsets are correct in
- multi-line method calls. Previously, the end column could precede the
- column offset.
-
- - gh-issue-93461: :func:`importlib.invalidate_caches` now drops entries from
- :data:`sys.path_importer_cache` with a relative path as name. This solves
- a caching issue when a process changes its current working directory.
-
- ``FileFinder`` no longer inserts a dot in the path, e.g. ``/egg/./spam``
- is now ``/egg/spam``.
-
- - gh-issue-93621: Change order of bytecode instructions emitted for
- :keyword:`with` and :keyword:`async with` to reduce the number of entries
- in the exception table.
-
- - gh-issue-93533: Reduce the size of the inline cache for ``LOAD_METHOD`` by
- 2 bytes.
-
- - gh-issue-93444: Removed redundant fields from the compiler's basicblock
- struct: ``b_nofallthrough``, ``b_exit``, ``b_return``. They can be easily
- calculated from the opcode of the last instruction of the block.
-
- - gh-issue-93429: ``LOAD_METHOD`` instruction has been removed. It was
- merged back into ``LOAD_ATTR``.
-
- - 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-93382: Cache the result of :c:func:`PyCode_GetCode` function to
- restore the *O*\ (1) lookup of the :attr:`~types.CodeType.co_code`
- attribute.
-
- - gh-issue-93359: Ensure that custom :mod:`ast` nodes without explicit end
- positions can be compiled. Patch by Pablo Galindo.
-
- - gh-issue-93356: Code for exception handlers is emitted at the end of the
- code unit's bytecode. This avoids one jump when no exception is raised.
-
- - gh-issue-93354: Use exponential backoff for specialization counters in the
- interpreter. Can reduce the number of failed specializations significantly
- and avoid slowdown for those parts of a program that are not suitable for
- specialization.
-
- - gh-issue-93283: Improve error message for invalid syntax of conversion
- character in f-string expressions.
-
- - gh-issue-93345: Fix a crash in substitution of a ``TypeVar`` in nested
- generic alias after ``TypeVarTuple``.
-
- - gh-issue-93223: When a bytecode instruction jumps to an unconditional jump
- instruction, the first instruction can often be optimized to target the
- unconditional jump's target directly. For tracing reasons, this would
- previously only occur if both instructions have the same line number. This
- also now occurs if the unconditional jump is artificial, i.e., if it has
- no associated line number.
-
- - gh-issue-84694: The ``--experimental-isolated-subinterpreters`` configure
- option and ``EXPERIMENTAL_ISOLATED_SUBINTERPRETERS`` macro have been
- removed.
-
- - gh-issue-91924: Fix ``__lltrace__`` debug feature if the stdout encoding
- is not UTF-8. Patch by Victor Stinner.
-
- - gh-issue-93040: Wraps unused parameters in ``Objects/obmalloc.c`` with
- ``Py_UNUSED``.
-
- - gh-issue-93143: Avoid ``NULL`` checks for uninitialized local variables by
- determining at compile time which variables must be initialized.
-
- - 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-93012: Added the new function :c:func:`PyType_FromMetaclass`,
- which generalizes the existing :c:func:`PyType_FromModuleAndSpec` using an
- additional metaclass argument. This is useful for language binding tools,
- where it can be used to intercept type-related operations like subclassing
- or static attribute access by specifying a metaclass with custom slots.
-
- Importantly, :c:func:`PyType_FromMetaclass` is available in the Limited
- API, which provides a path towards migrating more binding tools onto the
- Stable ABI.
-
- - gh-issue-93021: Fix the :attr:`__text_signature__` for :meth:`__get__`
- methods implemented in C. Patch by Jelle Zijlstra.
-
- - gh-issue-89914: The operand of the ``YIELD_VALUE`` instruction is set to
- the stack depth. This is done to help frame handling on ``yield`` and may
- assist debuggers.
-
- - gh-issue-92955: Fix memory leak in code object's lines and positions
- iterators as they were not finalized at exit. Patch by Kumar Aditya.
-
- - gh-issue-92930: Fixed a crash in ``_pickle.c`` from mutating collections
- during ``__reduce__`` or ``persistent_id``.
-
- - gh-issue-90690: The PRECALL instruction has been removed. It offered only
- a small advantage for specialization and is not needed in the vast
- majority of cases.
-
- - 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 ':'
-
- - gh-issue-90473: Decrease default recursion limit on WASI to address
- limited call stack size.
-
- - gh-issue-92804: Fix memory leak in ``memoryview`` iterator as it was not
- finalized at exit. Patch by Kumar Aditya.
-
- - gh-issue-92777: Specialize ``LOAD_METHOD`` for objects with lazy
- dictionaries. Patch by Ken Jin.
-
- - gh-issue-92658: Add support for connecting and binding to Hyper-V sockets
- on Windows Hyper-V hosts and guests.
-
- - gh-issue-92236: Remove spurious "LINE" event when starting a generator or
- coroutine, visible tracing functions implemented in C.
-
- - gh-issue-91102: :meth:`_warnings.warn_explicit` is ported to Argument
- Clinic.
-
- - gh-issue-92619: Make the compiler duplicate an exit block only if none of
- its instructions have a lineno (previously only the first instruction in
- the block was checked, leading to unnecessarily duplicated blocks).
-
- - gh-issue-88750: The deprecated debug build only ``PYTHONTHREADDEBUG``
- environment variable no longer does anything.
-
- - gh-issue-92261: Fix hang when trying to iterate over a ``typing.Union``.
-
- - gh-issue-91432: Specialized the :opcode:`FOR_ITER` opcode using the PEP
- 659 machinery
-
- - gh-issue-91399: Removed duplicate '{0, 0, 0, 0, 0, 0}' entry in
- 'Objects/unicodetype_db.h'.
-
- - gh-issue-91578: Updates the error message for abstract class.
-
- - bpo-47091: Improve performance of repetition of :class:`list` and
- :class:`tuple` by using ``memcpy`` to copy data and performing the
- reference increments in one step.
-
- - bpo-46142: Make ``--help`` output shorter by moving some info to the new
- ``--help-env`` and ``--help-xoptions`` command-line options. Also add
- ``--help-all`` option to print complete usage.
-
- - bpo-42316: Document some places where an assignment expression needs
- parentheses.
-
- Library
- -------
-
- - gh-issue-89237: Fix hang on Windows in ``subprocess.wait_closed()`` in
- :mod:`asyncio` with :class:`~asyncio.ProactorEventLoop`. Patch by Kumar
- Aditya.
-
- - gh-issue-97928: :meth:`tkinter.Text.count` raises now an exception for
- options starting with "-" instead of silently ignoring them.
-
- - gh-issue-98393: The :mod:`os` module no longer accepts bytes-like paths,
- like :class:`bytearray` and :class:`memoryview` types: only the exact
- :class:`bytes` type is accepted for bytes strings. Patch by Victor
- Stinner.
-
- - gh-issue-98363: Added itertools.batched() to batch data into lists of a
- given length with the last list possibly being shorter than the others.
-
- - gh-issue-98331: Update the bundled copies of pip and setuptools to
- versions 22.3 and 65.5.0 respectively.
-
- - gh-issue-98307: A :meth:`~logging.handlers.SysLogHandler.createSocket`
- method was added to :class:`~logging.handlers.SysLogHandler`.
-
- - 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-98257: Make :func:`sys.setprofile` and :func:`sys.settrace`
- functions reentrant. They can no long fail with: ``RuntimeError("Cannot
- install a trace function while another trace function is being
- installed")``. Patch by Victor Stinner.
-
- - 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-94597: Deprecated
- :meth:`asyncio.AbstractEventLoopPolicy.get_child_watcher` and
- :meth:`asyncio.AbstractEventLoopPolicy.set_child_watcher` methods to be
- removed in Python 3.14. Patch by Kumar Aditya.
-
- - 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-44098: Release the GIL when creating :class:`mmap.mmap` objects
- on Unix.
-
- - 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-94597: The child watcher classes
- :class:`~asyncio.MultiLoopChildWatcher`,
- :class:`~asyncio.FastChildWatcher` and :class:`~asyncio.SafeChildWatcher`
- are deprecated and will be removed in Python 3.14. Patch by Kumar Aditya.
-
- - gh-issue-98023: Change default child watcher to
- :class:`~asyncio.PidfdChildWatcher` on Linux systems which supports it.
- Patch by Kumar Aditya.
-
- - gh-issue-90985: Earlier in 3.11 we deprecated
- ``asyncio.Task.cancel("message")``. We realized we were too harsh, and
- have undeprecated it.
-
- - gh-issue-65961: Do not rely solely on ``__cached__`` on modules; code will
- also support ``__spec__.cached``.
-
- - gh-issue-97646: Replace deprecated ``application/javascript`` with
- ``text/javascript`` in :mod:`mimetypes`. See :rfc:`9239`. Patch by Noam
- Cohen.
-
- - gh-issue-97930: Apply changes from importlib_resources 5.8 and 5.9:
- ``Traversable.joinpath`` provides a concrete implementation. ``as_file``
- now supports directories of resources.
-
- - gh-issue-97850: Remove deprecated :func:`!importlib.util.set_loader` and
- :func:`!importlib.util.module_for_loader` from :mod:`importlib.util`.
-
- - gh-issue-97837: Change deprecate warning message in :mod:`unittest` from
-
- ``It is deprecated to return a value!=None``
-
- to
-
- ``It is deprecated to return a value that is not None from a test case``
-
- - 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-97008: :exc:`NameError` and :exc:`AttributeError` spelling
- suggestions provided since :gh:`82711` are now also emitted by the pure
- Python :mod:`traceback` module. Tests for those suggestions now exercise
- both implementations to ensure they are equivalent. Patch by Carl
- Friedrich Bolz-Tereick and Łukasz Langa.
-
- - gh-issue-97799: :mod:`dataclass` now uses :func:`inspect.get_annotations`
- to examine the annotations on class objects.
-
- - gh-issue-97781: Removed deprecated interfaces in ``importlib.metadata``
- (entry points accessed as dictionary, implicit dictionary construction of
- sequence of ``EntryPoint`` objects, mutablility of ``EntryPoints`` result,
- access of entry point by index). ``entry_points`` now has a simpler, more
- straightforward API (returning ``EntryPoints``).
-
- - 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-95534: :meth:`gzip.GzipFile.read` reads 10% faster.
-
- - 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-96865: fix Flag to use boundary CONFORM
-
- This restores previous Flag behavior of allowing flags with non-sequential
- values to be combined; e.g.
-
- class Skip(Flag): TWO = 2 EIGHT = 8
-
- Skip.TWO | Skip.EIGHT -> <Skip.TWO|EIGHT: 10>
-
- - 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-96704: Pass the correct ``contextvars.Context`` when a
- ``asyncio`` exception handler is called on behalf of a task or callback
- handle. This adds a new ``Task`` method, ``get_context``, and also a new
- ``Handle`` method with the same name. If this method is not found on a
- task object (perhaps because it is a third-party library that does not yet
- provide this method), the context prevailing at the time the exception
- handler is called is used.
-
- - 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-95865: Reduce :func:`urllib.parse.quote_from_bytes` memory use on
- large values.
-
- Contributed by Dennis Sweeney.
-
- - gh-issue-96741: Corrected type annotation for dataclass attribute
- ``pstats.FunctionProfile.ncalls`` to be ``str``.
-
- - gh-issue-96734: Update :mod:`unicodedata` database to Unicode 15.0.0.
-
- - gh-issue-96735: Fix undefined behaviour in :func:`struct.unpack`.
-
- - gh-issue-46412: Improve performance of ``bool(db)`` for large ndb/gdb
- databases. Previously this would call ``len(db)`` which would iterate over
- all keys -- the answer (empty or not) is known after the first key.
-
- - 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-68163: Correct conversion of :class:`numbers.Rational`'s to
- :class:`float`.
-
- - gh-issue-96538: Speed up ``bisect.bisect()`` functions by taking advantage
- of type-stability.
-
- - gh-issue-96465: Fraction hashes are now cached.
-
- - gh-issue-96079: In :mod:`typing`, fix missing field ``name`` and incorrect
- ``__module__`` in _AnnotatedAlias.
-
- - gh-issue-96415: Remove ``types._cell_factory`` from module namespace.
-
- - gh-issue-95987: Fix ``repr`` of ``Any`` subclasses.
-
- - gh-issue-96388: Work around missing socket functions in
- :class:`~socket.socket`'s ``__repr__``.
-
- - gh-issue-96385: Fix ``TypeVarTuple.__typing_prepare_subst__``.
- ``TypeError`` was not raised when using more than one ``TypeVarTuple``,
- like ``[*T, *V]`` in type alias substitutions.
-
- - gh-issue-96142: Add ``match_args``, ``kw_only``, ``slots``, and
- ``weakref_slot`` to ``_DataclassParams``.
-
- - gh-issue-96073: In :mod:`inspect`, fix overeager replacement of
- "``typing.``" in formatting annotations.
-
- - gh-issue-89258: Added a :meth:`~logging.Logger.getChildren` method to
- :class:`logging.Logger`, to get the immediate child loggers of a logger.
-
- - gh-issue-96346: Use double caching for compiled RE patterns.
-
- - gh-issue-96349: Fixed a minor performance regression in
- :func:`threading.Event.__init__`
-
- - 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-96172: Fix a bug in ``unicodedata``: ``east_asian_width`` used to
- return the wrong value for unassigned characters; and for yet unassigned,
- but reserved characters.
-
- - 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-96145: Add AttrDict to JSON module for use with object_hook.
-
- - 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-96125: Fix incorrect condition that causes
- ``sys.thread_info.name`` to be wrong on pthread platforms.
-
- - gh-issue-96019: Fix a bug in the ``makeunicodedata.py`` script leading to
- about 13 KiB of space saving in the ``unicodedata`` module, specifically
- the character decomposition data.
-
- - gh-issue-95463: Remove an incompatible change from :issue:`28080` that
- caused a regression that ignored the utf8 in ``ZipInfo.flag_bits``. Patch
- by Pablo Galindo.
-
- - gh-issue-69142: Add ``%:z`` strftime format code (generates tzoffset with
- colons as separator), see :ref:`strftime-strptime-behavior`.
-
- - gh-issue-95899: Fix :class:`asyncio.Runner` to call
- :func:`asyncio.set_event_loop` only once to avoid calling
- :meth:`~asyncio.AbstractChildWatcher.attach_loop` multiple times on child
- watchers. Patch by Kumar Aditya.
-
- - gh-issue-95736: Fix :class:`unittest.IsolatedAsyncioTestCase` to set event
- loop before calling setup functions. Patch by Kumar Aditya.
-
- - gh-issue-95865: Speed up :func:`urllib.parse.quote_from_bytes` by
- replacing a list comprehension with ``map()``.
-
- - gh-issue-95861: Add support for computing Spearman's correlation
- coefficient to the existing statistics.correlation() function.
-
- - gh-issue-95804: Fix ``logging`` shutdown handler so it respects
- ``MemoryHandler.flushOnClose``.
-
- - gh-issue-95704: When a task catches :exc:`asyncio.CancelledError` and
- raises some other error, the other error should generally not silently be
- suppressed.
-
- - gh-issue-95149: The :class:`HTTPStatus <http.HTTPStatus>` enum offers a
- couple of properties to indicate the HTTP status category e.g.
- ``HTTPStatus.OK.is_success``.
-
- - gh-issue-95609: Update bundled pip to 22.2.2.
-
- - gh-issue-95289: Fix :class:`asyncio.TaskGroup` to propagate exception when
- :exc:`asyncio.CancelledError` was replaced with another exception by a
- context manger. Patch by Kumar Aditya and Guido van Rossum.
-
- - gh-issue-94909: Fix incorrect joining of relative Windows paths with
- drives in :class:`pathlib.PurePath` initializer.
-
- - gh-issue-95385: Faster ``json.dumps()`` when sorting of keys is not
- requested (default).
-
- - gh-issue-83901: Improve :meth:`Signature.bind <inspect.Signature.bind>`
- error message for missing keyword-only arguments.
-
- - 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-95231: Fail gracefully if :const:`~errno.EPERM` or
- :const:`~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.
-
- - gh-issue-95097: Fix :func:`asyncio.run` for :class:`asyncio.Task`
- implementations without :meth:`~asyncio.Task.uncancel` method. 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 :const:`os.EFD_CLOEXEC`,
- :const:`os.EFD_NONBLOCK` and :const:`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-95132: Fix a :mod:`sqlite3` regression where ``*args`` and
- ``**kwds`` were incorrectly relayed from :py:func:`~sqlite3.connect` to
- the :class:`~sqlite3.Connection` factory. The regression was introduced in
- 3.11a1 with PR 24421 (:gh:`85128`). Patch by Erlend E. Aasland.
-
- - gh-issue-93157: Fix :mod:`fileinput` module didn't support ``errors``
- option when ``inplace`` is true.
-
- - gh-issue-91212: Fixed flickering of the turtle window when the tracer is
- turned off. Patch by Shin-myoung-serp.
-
- - gh-issue-95077: Add deprecation warning for enum ``member.member`` access
- (e.g. ``Color.RED.BLUE``). Remove ``EnumMeta.__getattr__``.
-
- - gh-issue-95109: Ensure that timeouts scheduled with
- :class:`asyncio.Timeout` that have already expired are delivered promptly.
-
- - gh-issue-95105: :meth:`wsgiref.types.InputStream.__iter__` should return
- ``Iterator[bytes]``, not ``Iterable[bytes]``. Patch by Shantanu Jain.
-
- - gh-issue-95066: Replaced assert with exception in :func:`ast.parse`, when
- ``feature_version`` has an invalid major version. Patch by Shantanu Jain.
-
- - gh-issue-77617: Add :mod:`sqlite3` :ref:`command-line interface
- <sqlite3-cli>`. Patch by Erlend Aasland.
-
- - gh-issue-95005: Replace :c:expr:`_PyAccu` with :c:expr:`_PyUnicodeWriter`
- in JSON encoder and StringIO and remove the :c:expr:`_PyAccu`
- implementation.
-
- - gh-issue-90085: Remove ``-c/--clock`` and ``-t/--time`` CLI options of
- :mod:`timeit`. The options had been deprecated since Python 3.3 and the
- functionality was removed in Python 3.7. Patch by Shantanu Jain.
-
- - gh-issue-94857: Fix refleak in ``_io.TextIOWrapper.reconfigure``. Patch by
- Kumar Aditya.
-
- - 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-81620: Add random.binomialvariate().
-
- - gh-issue-74116: Allow :meth:`asyncio.StreamWriter.drain` to be awaited
- concurrently by multiple tasks. Patch by Kumar Aditya.
-
- - gh-issue-87822: When called with ``capture_locals=True``, the
- :mod:`traceback` module functions swallow exceptions raised from calls to
- ``repr()`` on local variables of frames. This is in order to prioritize
- the original exception over rendering errors. An indication of the
- failure is printed in place of the missing value. (Patch by Simon-Martin
- Schroeder).
-
- - gh-issue-88050: Fix :mod:`asyncio` subprocess transport to kill process
- cleanly when process is blocked and avoid ``RuntimeError`` when loop is
- closed. 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-94309: Deprecate aliases :class:`typing.Hashable` and
- :class:`typing.Sized`
-
- - gh-issue-92546: An undocumented ``python -m pprint`` benchmark is moved
- into ``pprint`` suite of pyperformance. Patch by Oleg Iarygin.
-
- - gh-issue-94607: Fix subclassing complex generics with type variables in
- :mod:`typing`. Previously an error message saying ``Some type variables
- ... are not listed in Generic[...]`` was shown. :mod:`typing` no longer
- populates ``__parameters__`` with the ``__parameters__`` of a Python
- class.
-
- - gh-issue-94619: Remove the long-deprecated ``module_repr()`` from
- :mod:`importlib`.
-
- - gh-issue-93910: The ability to access the other values of an enum on an
- enum (e.g. ``Color.RED.BLUE``) has been restored in order to fix a
- performance regression.
-
- - gh-issue-93896: Fix :func:`asyncio.run` and
- :class:`unittest.IsolatedAsyncioTestCase` to always the set event loop as
- it was done in Python 3.10 and earlier. Patch by Kumar Aditya.
-
- - gh-issue-94343: Allow setting the attributes of ``reprlib.Repr`` during
- object initialization
-
- - gh-issue-94382: Port static types of ``_multiprocessing`` module to heap
- types. Patch by Kumar Aditya.
-
- - gh-issue-78724: Fix crash in :class:`struct.Struct` when it was not
- completely initialized by initializing it in :meth:`~object.__new__`.
- Patch by Kumar Aditya.
-
- - 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-94398: Once a :class:`asyncio.TaskGroup` has started shutting
- down (i.e., at least one task has failed and the task group has started
- cancelling the remaining tasks), it should not be possible to add new
- tasks to the task group.
-
- - gh-issue-94383: :mod:`xml.etree`: Remove the
- ``ElementTree.Element.copy()`` method of the pure Python implementation,
- deprecated in Python 3.10, use the :func:`copy.copy` function instead. The
- C implementation of :mod:`xml.etree` has no ``copy()`` method, only a
- ``__copy__()`` method. Patch by Victor Stinner.
-
- - gh-issue-94379: :mod:`zipimport`: Remove ``find_loader()`` and
- ``find_module()`` methods, deprecated in Python 3.10: use the
- ``find_spec()`` method instead. See :pep:`451` for the rationale. Patch by
- Victor Stinner.
-
- - gh-issue-94352: :func:`shlex.split`: Passing ``None`` for *s* argument now
- raises an exception, rather than reading :data:`sys.stdin`. The feature
- was deprecated in Python 3.9. Patch by Victor Stinner.
-
- - gh-issue-94318: Strip trailing spaces in :mod:`pydoc` text output.
-
- - gh-issue-89988: Fix memory leak in :class:`pickle.Pickler` when looking up
- :attr:`dispatch_table`. Patch by Kumar Aditya.
-
- - gh-issue-90016: Deprecate :mod:`sqlite3` :ref:`default adapters and
- converters <sqlite3-default-converters>`. Patch by Erlend E. Aasland.
-
- - gh-issue-94254: Fixed types of :mod:`struct` module to be immutable. Patch
- by Kumar Aditya.
-
- - gh-issue-93259: Now raise ``ValueError`` when ``None`` or an empty string
- are passed to ``Distribution.from_name`` (and other callers).
-
- - gh-issue-74696: :func:`shutil.make_archive` now passes the *root_dir*
- argument to custom archivers which support it.
-
- - gh-issue-94216: The :mod:`dis` module now has the opcodes for pseudo
- instructions (those which are used by the compiler during code generation
- but then removed or replaced by real opcodes before the final bytecode is
- emitted).
-
- - gh-issue-93096: Removed undocumented ``python -m codecs``. Use ``python -m
- unittest test.test_codecs.EncodedFileTest`` instead.
-
- - gh-issue-94207: Made :class:`_struct.Struct` GC-tracked in order to fix a
- reference leak in the :mod:`_struct` module.
-
- - gh-issue-93096: Removed undocumented ``-t`` argument of ``python -m
- base64``. Use ``python -m unittest
- test.test_base64.LegacyBase64TestCase.test_encodebytes`` instead.
-
- - gh-issue-94226: Remove the :func:`locale.format` function, deprecated in
- Python 3.7: use :func:`locale.format_string` instead. Patch by Victor
- Stinner.
-
- - gh-issue-94199: Remove the :func:`ssl.match_hostname` function. The
- :func:`ssl.match_hostname` was deprecated in Python 3.7. OpenSSL performs
- hostname matching since Python 3.7, Python no longer uses the
- :func:`ssl.match_hostname` function. Patch by Victor Stinner.
-
- - gh-issue-94214: Document the ``context`` object used in the
- ``venv.EnvBuilder`` class, and add the new environment's library path to
- it.
-
- - gh-issue-94199: Remove the :func:`ssl.wrap_socket` function, deprecated in
- Python 3.7: instead, create a :class:`ssl.SSLContext` object and call its
- :class:`ssl.SSLContext.wrap_socket` method. Any package that still uses
- :func:`ssl.wrap_socket` is broken and insecure. The function neither sends
- a SNI TLS extension nor validates server hostname. Code is subject to
- `CWE-295 <https://cwe.mitre.org/data/definitions/295.html>`_: Improper
- Certificate Validation. Patch by Victor Stinner.
-
- - gh-issue-94199: Remove the :func:`ssl.RAND_pseudo_bytes` function,
- deprecated in Python 3.6: use :func:`os.urandom` or :func:`ssl.RAND_bytes`
- instead. Patch by Victor Stinner.
-
- - gh-issue-94199: :mod:`hashlib`: Remove the pure Python implementation of
- :func:`hashlib.pbkdf2_hmac()`, deprecated in Python 3.10. Python 3.10 and
- newer requires OpenSSL 1.1.1 (:pep:`644`): this OpenSSL version provides a
- C implementation of :func:`~hashlib.pbkdf2_hmac()` which is faster. Patch
- by Victor Stinner.
-
- - gh-issue-94196: :mod:`gzip`: Remove the ``filename`` attribute of
- :class:`gzip.GzipFile`, deprecated since Python 2.6, use the
- :attr:`~gzip.GzipFile.name` attribute instead. In write mode, the
- ``filename`` attribute added ``'.gz'`` file extension if it was not
- present. Patch by Victor Stinner.
-
- - gh-issue-94182: run the :class:`asyncio.PidfdChildWatcher` on the running
- loop, this allows event loops to run subprocesses when there is no default
- event loop running on the main thread
-
- - gh-issue-94169: Remove ``io.OpenWrapper`` and ``_pyio.OpenWrapper``,
- deprecated in Python 3.10: just use :func:`open` instead. The :func:`open`
- (:func:`io.open`) function is a built-in function. Since Python 3.10,
- :func:`_pyio.open` is also a static method. Patch by Victor Stinner.
-
- - gh-issue-91742: Fix :mod:`pdb` crash after jump caused by a null pointer
- dereference. Patch by Kumar Aditya.
-
- - 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-94028: Fix a regression in the :mod:`sqlite3` where statement
- objects were not properly cleared and reset after use in cursor iters. The
- regression was introduced by PR 27884 in Python 3.11a1. Patch by Erlend E.
- Aasland.
-
- - gh-issue-93973: Add keyword argument ``all_errors`` to
- ``asyncio.create_connection`` so that multiple connection errors can be
- raised as an ``ExceptionGroup``.
-
- - gh-issue-93963: Officially deprecate from ``importlib.abc`` classes moved
- to ``importlib.resources.abc``.
-
- - gh-issue-93858: Prevent error when activating venv in nested fish
- instances.
-
- - gh-issue-93820: Pickle :class:`enum.Flag` by name.
-
- - gh-issue-93847: Fix repr of enum of generic aliases.
-
- - gh-issue-91404: Revert the :mod:`re` memory leak when a match is
- terminated by a signal or memory allocation failure as the implemented fix
- caused a major performance regression.
-
- - gh-issue-83499: Fix double closing of file description in :mod:`tempfile`.
-
- - gh-issue-93820: Fixed a regression when :func:`copy.copy`-ing
- :class:`enum.Flag` with multiple flag members.
-
- - 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-91389: Fix an issue where :mod:`dis` utilities could report
- missing or incorrect position information in the presence of ``CACHE``
- entries.
-
- - gh-issue-93626: Set ``__future__.annotations`` to have a ``None``
- mandatoryRelease to indicate that it is currently 'TBD'.
-
- - gh-issue-90473: Emscripten and WASI have no home directory and cannot
- provide :pep:`370` user site directory.
-
- - 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-93521: Fixed a case where dataclasses would try to add
- ``__weakref__`` into the ``__slots__`` for a dataclass that specified
- ``weakref_slot=True`` when it was already defined in one of its bases.
- This resulted in a ``TypeError`` upon the new class being created.
-
- - 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-93475: Expose ``FICLONE`` and ``FICLONERANGE`` constants in
- :mod:`fcntl`. Patch by Illia Volochii.
-
- - gh-issue-93370: Deprecate :data:`sqlite3.version` and
- :data:`sqlite3.version_info`.
-
- - gh-issue-91810: Suppress writing an XML declaration in open files in
- ``ElementTree.write()`` with ``encoding='unicode'`` and
- ``xml_declaration=None``.
-
- - gh-issue-91162: Support splitting of unpacked arbitrary-length tuple over
- ``TypeVar`` and ``TypeVarTuple`` parameters. For example:
-
- * ``A[T, *Ts][*tuple[int, ...]]`` -> ``A[int, *tuple[int, ...]]``
- * ``A[*Ts, T][*tuple[int, ...]]`` -> ``A[*tuple[int, ...], int]``
-
- - 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-93312: Add :const:`os.PIDFD_NONBLOCK` flag to open a file
- descriptor for a process with :func:`os.pidfd_open` in non-blocking mode.
- Patch by Kumar Aditya.
-
- - gh-issue-88123: Implement Enum __contains__ that returns True or False to
- replace the deprecated behaviour that would sometimes raise a TypeError.
-
- - gh-issue-93297: Make asyncio task groups prevent child tasks from being
- GCed
-
- - gh-issue-85308: Changed :class:`argparse.ArgumentParser` to use
- :term:`filesystem encoding and error handler` instead of default text
- encoding to read arguments from file (e.g. ``fromfile_prefix_chars``
- option). This change affects Windows; argument file should be encoded with
- UTF-8 instead of ANSI Codepage.
-
- - gh-issue-93156: Accessing the :attr:`pathlib.PurePath.parents` sequence of
- an absolute path using negative index values produced incorrect results.
-
- - gh-issue-93162: Add the ability for :func:`logging.config.dictConfig` to
- usefully configure :class:`~logging.handlers.QueueHandler` and
- :class:`~logging.handlers.QueueListener` as a pair, and add
- :func:`logging.getHandlerByName` and :func:`logging.getHandlerNames` APIs
- to allow access to handlers by name.
-
- - gh-issue-93243: The :mod:`!smtpd` module was removed per the schedule in
- :pep:`594`.
-
- - gh-issue-92886: Replace ``assert`` statements with ``raise
- AssertionError()`` in :class:`~wsgiref.BaseHandler` so that the tested
- behaviour is maintained running with optimizations ``(-O)``.
-
- - gh-issue-90155: Fix broken :class:`asyncio.Semaphore` when acquire is
- cancelled.
-
- - gh-issue-90817: The :func:`locale.resetlocale` function is deprecated and
- will be removed in Python 3.13. Use ``locale.setlocale(locale.LC_ALL,
- "")`` instead. Patch by Victor Stinner.
-
- - gh-issue-91513: Added ``taskName`` attribute to :mod:`logging` module for
- use with :mod:`asyncio` tasks.
-
- - 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-92728: The :func:`re.template` function and the corresponding
- :const:`re.TEMPLATE` and :const:`re.T` flags are restored after they were
- removed in 3.11.0b1, but they are now deprecated, so they might be removed
- from Python 3.13.
-
- - gh-issue-93033: Search in some strings (platform dependent i.e [U+0xFFFF,
- U+0x0100] on Windows or [U+0xFFFFFFFF, U+0x00010000] on Linux 64-bit) are
- now up to 10 times faster.
-
- - 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-93044: No longer convert the database argument of
- :func:`sqlite3.connect` to bytes before passing it to the factory.
-
- - 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-92986: Fix :func:`ast.unparse` when ``ImportFrom.level`` is None
-
- - gh-issue-92932: Now :func:`~dis.dis` and :func:`~dis.get_instructions`
- handle operand values for instructions prefixed by ``EXTENDED_ARG_QUICK``.
- Patch by Sam Gross and Donghee Na.
-
- - gh-issue-92675: Fix :func:`venv.ensure_directories` to accept
- :class:`pathlib.Path` arguments in addition to :class:`str` paths. Patch
- by David Foster.
-
- - gh-issue-87901: Removed the ``encoding`` argument from :func:`os.popen`
- that was added in 3.11b1.
-
- - gh-issue-91922: Fix function :func:`sqlite.connect` and the
- :class:`sqlite.Connection` constructor on non-UTF-8 locales. Also, they
- now support bytes paths non-decodable with the current FS encoding.
-
- - gh-issue-92869: Added :class:`~ctypes.c_time_t` to :mod:`ctypes`, which
- has the same size as the :c:type:`time_t` type in C.
-
- - gh-issue-92839: Fixed crash resulting from calling bisect.insort() or
- bisect.insort_left() with the key argument not equal to None.
-
- - gh-issue-90473: :mod:`subprocess` now fails early on Emscripten and WASI
- platforms to work around missing :func:`os.pipe` on WASI.
-
- - gh-issue-89325: Removed many old deprecated :mod:`unittest` features:
- :class:`~unittest.TestCase` method aliases, undocumented and broken
- :class:`~unittest.TestCase` method ``assertDictContainsSubset``,
- undocumented :meth:`TestLoader.loadTestsFromModule
- <unittest.TestLoader.loadTestsFromModule>` parameter *use_load_tests*, and
- an underscored alias of the :class:`~unittest.TextTestResult` class.
-
- - gh-issue-92734: Allow multi-element reprs emitted by :mod:`reprlib` to be
- pretty-printed using configurable indentation.
-
- - gh-issue-92671: Fixed :func:`ast.unparse` for empty tuples in the
- assignment target context.
-
- - 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-86388: Removed randrange() functionality deprecated since Python
- 3.10. Formerly, randrange(10.0) losslessly converted to randrange(10).
- Now, it raises a TypeError. Also, the exception raised for non-integral
- values such as randrange(10.5) or randrange('10') has been changed from
- ValueError to TypeError.
-
- - gh-issue-90385: Add :meth:`pathlib.Path.walk` as an alternative to
- :func:`os.walk`.
-
- - gh-issue-92550: Fix :meth:`pathlib.Path.rglob` for empty pattern.
-
- - gh-issue-92591: Allow :mod:`logging` filters to return a
- :class:`logging.LogRecord` instance so that filters attached to
- :class:`logging.Handler`\ s can enrich records without side effects on
- other handlers.
-
- - gh-issue-92445: Fix a bug in :mod:`argparse` where ``nargs="*"`` would
- raise an error instead of returning an empty list when 0 arguments were
- supplied if choice was also defined in ``parser.add_argument``.
-
- - gh-issue-92547: Remove undocumented :mod:`sqlite3` features deprecated in
- Python 3.10:
-
- * ``sqlite3.enable_shared_cache()``
- * ``sqlite3.OptimizedUnicode``
-
- Patch by Erlend E. Aasland.
-
- - gh-issue-92530: Fix an issue that occurred after interrupting
- :func:`threading.Condition.notify`.
-
- - gh-issue-92531: The statistics.median_grouped() function now always return
- a float. Formerly, it did not convert the input type when for sequences of
- length one.
-
- - gh-issue-84131: The :class:`pathlib.Path` deprecated method ``link_to``
- has been removed. Use 3.10's :meth:`~pathlib.Path.hardlink_to` method
- instead as its semantics are consistent with that of
- :meth:`~pathlib.Path.symlink_to`.
-
- - gh-issue-89336: Removed :mod:`configparser` module APIs: the
- ``SafeConfigParser`` class alias, the ``ParsingError.filename`` property
- and parameter, and the ``ConfigParser.readfp`` method, all of which were
- deprecated since Python 3.2.
-
- - gh-issue-92391: Add :meth:`~object.__class_getitem__` to
- :class:`csv.DictReader` and :class:`csv.DictWriter`, allowing them to be
- parameterized at runtime. Patch by Marc Mueller.
-
- - gh-issue-91968: Add ``SO_RTABLE`` and ``SO_USER_COOKIE`` constants to
- :mod:`socket`.
-
- - 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-81790: :func:`os.path.splitdrive` now understands DOS device
- paths with UNC links (beginning ``\\?\UNC\``). Contributed by Barney Gale.
-
- - gh-issue-91760: Apply more strict rules for numerical group references and
- group names in regular expressions. Only sequence of ASCII digits is now
- accepted as a numerical reference. The group name in bytes patterns and
- replacement strings can now only contain ASCII letters and digits and
- underscore.
-
- - 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-91577: Move imports in :class:`~multiprocessing.SharedMemory`
- methods to module level so that they can be executed late in python
- finalization.
-
- - 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.
-
- - gh-issue-91539: Improve performance of
- ``urllib.request.getproxies_environment`` when there are many environment
- variables
-
- - gh-issue-91524: Speed up the regular expression substitution (functions
- :func:`re.sub` and :func:`re.subn` and corresponding :class:`re.Pattern`
- methods) for replacement strings containing group references by 2--3
- times.
-
- - gh-issue-91447: Fix findtext in the xml module to only give an empty
- string when the text attribute is set to None.
-
- - gh-issue-91456: Deprecate current default auto() behavior: In 3.13 the
- default will be for for auto() to always return the largest member value
- incremented by 1, and to raise if incompatible value types are used.
-
- - bpo-47231: Fixed an issue with inconsistent trailing slashes in tarfile
- longname directories.
-
- - 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-41287: Fix handling of the ``doc`` argument in subclasses of
- :func:`property`.
-
- - gh-issue-90005: :mod:`ctypes` dependency ``libffi`` is now detected with
- ``pkg-config``.
-
- - bpo-32547: The constructors for :class:`~csv.DictWriter` and
- :class:`~csv.DictReader` now coerce the ``fieldnames`` argument to a
- :class:`list` if it is an iterator.
-
- - bpo-35540: Fix :func:`dataclasses.asdict` crash when
- :class:`collections.defaultdict` is present in the attributes.
-
- - bpo-47063: Add an index_pages parameter to support using non-default index
- page names.
-
- - bpo-47025: Drop support for :class:`bytes` on :data:`sys.path`.
-
- - bpo-46951: Order the contents of zipapp archives, to make builds more
- reproducible.
-
- - bpo-42777: Implement :meth:`pathlib.Path.is_mount` for Windows paths.
-
- - bpo-46755: In :class:`QueueHandler`, clear ``stack_info`` from
- :class:`LogRecord` to prevent stack trace from being written twice.
-
- - bpo-45393: Fix the formatting for ``await x`` and ``not x`` in the
- operator precedence table when using the :func:`help` system.
-
- - bpo-46642: Improve error message when trying to subclass an instance of
- :data:`typing.TypeVar`, :data:`typing.ParamSpec`,
- :data:`typing.TypeVarTuple`, etc. Based on patch by Gregory Beauregard.
-
- - bpo-46364: Restrict use of sockets instead of pipes for stdin of
- subprocesses created by :mod:`asyncio` to AIX platform only.
-
- - bpo-28249: Set :attr:`doctest.DocTest.lineno` to ``None`` when object does
- not have :attr:`__doc__`.
-
- - 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-45046: Add support of context managers in :mod:`unittest`: methods
- :meth:`~unittest.TestCase.enterContext` and
- :meth:`~unittest.TestCase.enterClassContext` of class
- :class:`~unittest.TestCase`, method
- :meth:`~unittest.IsolatedAsyncioTestCase.enterAsyncContext` of class
- :class:`~unittest.IsolatedAsyncioTestCase` and function
- :func:`unittest.enterModuleContext`.
-
- - bpo-44173: Enable fast seeking of uncompressed unencrypted
- :class:`zipfile.ZipExtFile`
-
- - bpo-42627: Fix incorrect parsing of Windows registry proxy settings
-
- - bpo-42047: Add :func:`threading.get_native_id` support for DragonFly BSD.
- Patch by David Carlier.
-
- - bpo-14243: The :class:`tempfile.NamedTemporaryFile` function has a new
- optional parameter *delete_on_close*
-
- - bpo-41246: Give the same callback function for when the overlapped
- operation is done to the functions ``recv``, ``recv_into``, ``recvfrom``,
- ``sendto``, ``send`` and ``sendfile`` inside ``IocpProactor``.
-
- - bpo-39264: Fixed :meth:`collections.UserDict.get` to not call
- :meth:`__missing__` when a value is not found. This matches the behavior
- of :class:`dict`. Patch by Bar Harel.
-
- - bpo-38693: :mod:`importlib` now uses f-strings internally instead of
- ``str.format``.
-
- - bpo-38267: Add *timeout* parameter to
- :meth:`asyncio.loop.shutdown_default_executor`. The default value is
- ``None``, which means the executor will be given an unlimited amount of
- time. When called from :class:`asyncio.Runner` or :func:`asyncio.run`, the
- default timeout is 5 minutes.
-
- - bpo-34828: :meth:`sqlite3.Connection.iterdump` now handles databases that
- use ``AUTOINCREMENT`` in one or more tables.
-
- - bpo-32990: Support reading wave files with the ``WAVE_FORMAT_EXTENSIBLE``
- format in the :mod:`wave` module.
-
- - bpo-26253: Allow adjustable compression level for tarfile streams in
- :func:`tarfile.open`.
-
- Documentation
- -------------
-
- - gh-issue-85525: Remove extra row
-
- - gh-issue-86404: Deprecated tools ``make suspicious`` and ``rstlint.py``
- are now removed. They have been replaced by `spinx-lint
- <https://pypi.org/project/sphinx-lint/>`_.
-
- - 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-96432: Fraction literals now support whitespace around the
- forward slash, ``Fraction('2 / 3')``.
-
- - 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-95957: What's New 3.11 now has instructions for how to provide
- compiler and linker flags for Tcl/Tk and OpenSSL on RHEL 7 and CentOS 7.
-
- - 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-91207: Fix stylesheet not working in Windows CHM htmlhelp docs
- and add warning that they are deprecated. Contributed by C.A.M. Gerlach.
-
- - gh-issue-95454: Replaced incorrectly written true/false values in
- documentiation. Patch by Robert O'Shea
-
- - gh-issue-95451: Update library documentation with :ref:`availability
- information <wasm-availability>` on WebAssembly platforms
- ``wasm32-emscripten`` and ``wasm32-wasi``.
-
- - gh-issue-95415: Use consistent syntax for platform availability. The
- directive now supports a content body and emits a warning when it
- encounters an unknown platform.
-
- - 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.
-
- - 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-93031: Update tutorial introduction output to use 3.10+
- SyntaxError invalid range.
-
- - 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
-
- - bpo-47161: Document that :class:`pathlib.PurePath` does not collapse
- initial double slashes because they denote UNC paths.
-
- - bpo-40838: Document that :func:`inspect.getdoc`,
- :func:`inspect.getmodule`, and :func:`inspect.getsourcefile` might return
- ``None``.
-
- - bpo-43689: The ``Differ`` documentation now also mentions other whitespace
- characters, which make it harder to understand the diff output.
-
- - bpo-38056: Overhaul the :ref:`error-handlers` documentation in
- :mod:`codecs`.
-
- - bpo-13553: Document tkinter.Tk args.
-
- Tests
- -----
-
- - gh-issue-95027: On Windows, when the Python test suite is run with the
- ``-jN`` option, the ANSI code page is now used as the encoding for the
- stdout temporary file, rather than using UTF-8 which can lead to decoding
- errors. Patch by Victor Stinner.
-
- - gh-issue-96624: Fixed the failure of repeated runs of
- ``test.test_unittest`` caused by side effects in
- ``test_dotted_but_module_not_loaded``.
-
- - 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.
-
- - gh-issue-95573: :source:`Lib/test/test_asyncio/test_ssl.py` exposed a bug
- in the macOS kernel where intense concurrent load on non-blocking sockets
- occasionally causes :const:`errno.ENOBUFS` ("No buffer space available")
- to be emitted. FB11063974 filed with Apple, in the mean time as a
- workaround buffer size used in tests on macOS is decreased to avoid
- intermittent failures. Patch by Fantix King.
-
- - 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-95218: Move tests for importlib.resources into
- test_importlib.resources.
-
- - gh-issue-93963: Updated tests to use preferred location for
- ``importlib.resources`` ABCs.
-
- - gh-issue-94675: Add a regression test for :mod:`re` exponentional slowdown
- when using rjsmin.
-
- - 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-94315: Tests now check for DAC override capability instead of
- relying on :func:`os.geteuid`.
-
- - gh-issue-54781: Rename test_tk to test_tkinter, and rename
- test_ttk_guionly to test_ttk. Patch by Victor Stinner.
-
- - gh-issue-93839: Move ``Lib/ctypes/test/`` to ``Lib/test/test_ctypes/``.
- Patch by Victor Stinner.
-
- - 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-93884: Add test cases for :c:func:`PyNumber_ToBase` that take a
- large number or a non-int object as parameter.
-
- - gh-issue-93852: test_asyncio, test_logging, test_socket and
- test_socketserver now create AF_UNIX domains in the current directory to
- no longer fail with ``OSError("AF_UNIX path too long")`` if the temporary
- directory (the :envvar:`TMPDIR` environment variable) is too long. Patch
- by Victor Stinner.
-
- - gh-issue-93353: regrtest now checks if a test leaks temporary files or
- directories if run with -jN option. Patch by Victor Stinner.
-
- - gh-issue-84461: ``run_tests.py`` now handles cross compiling env vars
- correctly and pass ``HOSTRUNNER`` to regression tests.
-
- - gh-issue-93616: ``test_modulefinder`` now creates a temporary directory in
- ``ModuleFinderTest.setUp()`` instead of module scope.
-
- - gh-issue-93575: Fix issue with test_unicode test_raiseMemError. The test
- case now use ``test.support.calcobjsize`` to calculate size of PyUnicode
- structs. :func:`sys.getsizeof` may return different size when string has
- UTF-8 memory.
-
- - gh-issue-90473: WASI does not have a ``chmod(2)`` syscall.
- :func:`os.chmod` is now a dummy function on WASI. Skip all tests that
- depend on working :func:`os.chmod`.
-
- - gh-issue-90473: Skip tests on WASI that require symlinks with absolute
- paths.
-
- - gh-issue-57539: Increase calendar test coverage for
- :meth:`calendar.LocaleTextCalendar.formatweekday`.
-
- - gh-issue-90473: Skip symlink tests on WASI. wasmtime uses ``openat2(2)``
- with ``RESOLVE_BENEATH`` flag, which prevents symlinks with absolute
- paths.
-
- - gh-issue-89858: Fix ``test_embed`` for out-of-tree builds. Patch by Kumar
- Aditya.
-
- - gh-issue-92886: Fixing tests that fail when running with optimizations
- (``-O``) in ``test_imaplib.py``.
-
- - gh-issue-92886: Fixing tests that fail when running with optimizations
- (``-O``) in ``test_zipimport.py``
-
- - gh-issue-92886: Fixing tests that fail when running with optimizations
- (``-O``) in ``test_py_compile.py``
-
- - gh-issue-92886: Fixing tests that fail when running with optimizations
- (``-O``) in ``test_sys_settrace.py``.
-
- - gh-issue-92886: Fixing tests that fail when running with optimizations
- (``-O``) in ``_test_multiprocessing.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-92514: Remove unused ``test.support.BasicTestRunner``. Patch by
- Jelle Zijlstra.
-
- - bpo-47016: Create a GitHub Actions workflow for verifying bundled pip and
- setuptools. Patch by Illia Volochii and Adam Turner.
-
- Build
- -----
-
- - gh-issue-96761: Fix the build process of clang compiler for
- :program:`_bootstrap_python` if LTO optimization is applied. Patch by
- Matthias Görgens and Donghee Na.
-
- - gh-issue-96883: ``wasm32-emscripten`` builds for browsers now include
- :mod:`concurrent.futures` for :mod:`asyncio` and :mod:`unittest.mock`.
-
- - gh-issue-85936: CPython now uses the ThinLTO option as the default policy
- if the Clang compiler accepts the flag. Patch by Donghee Na.
-
- - gh-issue-96729: Ensure that Windows releases built with
- ``Tools\msi\buildrelease.bat`` are upgradable to and from official Python
- releases.
-
- - gh-issue-96269: Shared module targets now depend on new ``MODULE_DEPS``
- variable, which includes ``EXPORTSYMS``. This fixes a build order issue on
- unsupported AIX platform.
-
- - gh-issue-84461: ``wasm32-emscripten`` platform no longer builds
- :mod:`resource` module, :func:`~os.getresuid`, :func:`~os.getresgid`, and
- their setters. The APIs are stubs and not functional.
-
- - gh-issue-95973: Add a new ``--with-dsymutil`` configure option to link
- debug information in macOS. Patch by Pablo Galindo.
-
- - gh-issue-90536: Use the BOLT post-link optimizer to improve performance,
- particularly on medium-to-large applications.
-
- - gh-issue-93744: Remove the ``configure --with-cxx-main`` build option: it
- didn't work for many years. Remove the ``MAINCC`` variable from
- ``configure`` and ``Makefile``. Patch by Victor Stinner.
-
- - gh-issue-94801: Fix a regression in ``configure`` script that caused some
- header checks to ignore custom ``CPPFLAGS``. The regression was introduced
- in :gh:`94802`.
-
- - gh-issue-95145: wasm32-wasi builds no longer depend on WASIX's pthread
- stubs. Python now has its own stubbed pthread API.
-
- - gh-issue-95174: Python now detects missing ``dup`` function in WASI and
- works around some missing :mod:`errno`, :mod:`select`, and :mod:`socket`
- constants.
-
- - gh-issue-95174: Python now skips missing :mod:`socket` functions and
- methods on WASI. WASI can only create sockets from existing fd / accept
- and has no netdb.
-
- - gh-issue-95085: Platforms ``wasm32-unknown-emscripten`` and
- ``wasm32-unknown-wasi`` have been promoted to :pep:`11` tier 3 platform
- support.
-
- - gh-issue-94847: Fixed ``_decimal`` module build issue on GCC when
- compiling with LTO and pydebug. Debug builds no longer force inlining of
- functions.
-
- - gh-issue-94841: Fix the possible performance regression of
- :c:func:`PyObject_Free` compiled with MSVC version 1932.
-
- - gh-issue-94801: ``configure`` now uses custom flags like ``ZLIB_CFLAGS``
- and ``ZLIB_LIBS`` when searching for headers and libraries.
-
- - gh-issue-94773: ``deepfreeze.py`` now supports code object with frozensets
- that contain incompatible, unsortable types.
-
- - gh-issue-94682: Build and test with OpenSSL 1.1.1q
-
- - gh-issue-90005: Dependencies of :mod:`readline` and :mod:`curses` module
- are now detected in ``configure`` script with ``pkg-config``. Only
- ``ncurses`` / ``ncursesw`` are detected automatically. The old ``curses``
- library is not configured automatically. Workaround for missing
- ``termcap`` or ``tinfo`` library has been removed.
-
- - gh-issue-90005: Fix building ``_ctypes`` extension without ``pkg-config``.
-
- - gh-issue-90005: ``_dbm`` module dependencies are now detected by
- configure.
-
- - gh-issue-94404: ``makesetup`` now works around an issue with sed on macOS
- and uses correct CFLAGS for object files that end up in a shared
- extension. Module CFLAGS are used before PY_STDMODULE_CFLAGS to avoid
- clashes with system headers.
-
- - gh-issue-93939: C extension modules are now built by ``configure`` and
- ``make`` instead of ``distutils`` and ``setup.py``.
-
- - gh-issue-93939: The ``2to3``, ``idle``, and ``pydoc`` scripts are now
- generated and installed by ``Makefile`` instead of ``setup.py``.
-
- - gh-issue-94280: Updated pegen regeneration script on Windows to find and
- use Python 3.9 or higher. Prior to this, pegen regeneration already
- required 3.9 or higher, but the script may have used lower versions of
- Python.
-
- - gh-issue-93584: Address race condition in ``Makefile`` when installing a
- PGO build. All ``test`` and ``install`` targets now depend on ``all``
- target.
-
- - gh-issue-93491: ``configure`` now detects and reports :pep:`11` support
- tiers.
-
- - gh-issue-69093: Fix ``Modules/Setup.stdlib.in`` rule for ``_sqlite3``
- extension.
-
- - gh-issue-93207: ``va_start()`` with two parameters, like ``va_start(args,
- format),`` is now required to build Python. ``va_start()`` is no longer
- called with a single parameter. Patch by Kumar Aditya.
-
- - gh-issue-93202: Python now always use the ``%zu`` and ``%zd`` printf
- formats to format a :c:type:`size_t` or ``Py_ssize_t`` number. Building
- Python 3.12 requires a C11 compiler, so these printf formats are now
- always supported. Patch by Victor Stinner.
-
- - gh-issue-90473: Disable pymalloc and increase stack size on
- ``wasm32-wasi``.
-
- - bpo-34449: Drop invalid compiler switch ``-fPIC`` for HP aCC on HP-UX.
- Patch by Michael Osipov.
-
- Windows
- -------
-
- - gh-issue-98360: Fixes :mod:`multiprocessing` spawning child processes on
- Windows from a virtual environment to ensure that child processes that
- also use :mod:`multiprocessing` to spawn more children will recognize that
- they are in a virtual environment.
-
- - gh-issue-98414: Fix :file:`py.exe` launcher handling of
- :samp:`-V:{<company>}/` option when default preferences have been set in
- environment variables or configuration files.
-
- - 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: Made :ref:`launcher` install per-user by default (unless
- an all users install already exists), and clarify some text in the
- installer.
-
- - gh-issue-97649: The ``Tools`` directory is no longer installed on Windows
-
- - gh-issue-96965: Update libffi to 3.4.3
-
- - gh-issue-96577: Fixes a potential buffer overrun in :mod:`msilib`.
-
- - gh-issue-96559: Fixes the Windows launcher not using the compatible
- interpretation of default tags found in configuration files when no tag
- was passed to the command.
-
- - gh-issue-94781: Fix :file:`pcbuild.proj` to clean previous instances of
- output files in ``Python\deepfreeze`` and ``Python\frozen_modules``
- directories on Windows. Patch by Charlie Zhao.
-
- - gh-issue-89545: Updates :mod:`platform` code getting the Windows version
- to use native Windows Management Instrumentation (WMI) queries to
- determine OS version, type, and architecture.
-
- - gh-issue-95733: Make certain requirements of the Windows Store package
- optional to allow installing on earlier updates of Windows.
-
- - gh-issue-95656: Enable the
- :meth:`~sqlite3.Connection.enable_load_extension` :mod:`sqlite3` API.
-
- - gh-issue-95587: Fixes some issues where the Windows installer would
- incorrectly detect certain features of an existing install when upgrading.
-
- - gh-issue-94399: Restores the behaviour of :ref:`launcher` for
- ``/usr/bin/env`` shebang lines, which will now search :envvar:`PATH` for
- an executable matching the given command. If none is found, the usual
- search process is used.
-
- - gh-issue-95445: Fixes the unsuccessful removal of the HTML document
- directory when uninstalling with Windows msi.
-
- - gh-issue-95359: Fix :ref:`launcher` handling of :file:`py.ini` commands
- (it was incorrectly expecting a ``py_`` prefix on keys) and crashes when
- reading per-user configuration file.
-
- - gh-issue-95285: Fix :ref:`launcher` handling of command lines where it is
- only passed a short executable name.
-
- - gh-issue-90844: Allow virtual environments to correctly launch when they
- have spaces in the path.
-
- - gh-issue-94772: Fix incorrect handling of shebang lines in py.exe launcher
-
- - gh-issue-94018: :mod:`zipfile` will now remove trailing spaces from path
- components when extracting files on Windows.
-
- - gh-issue-93824: Drag and drop of files onto Python files in Windows
- Explorer has been enabled for Windows ARM64.
-
- - gh-issue-43414: :func:`os.get_terminal_size` now attempts to read the size
- from any provided handle, rather than only supporting file descriptors 0,
- 1 and 2.
-
- - gh-issue-92817: Ensures that :file:`py.exe` will prefer an active virtual
- environment over default tags specified with environment variables or
- through a :file:`py.ini` file.
-
- - gh-issue-92984: Explicitly disable incremental linking for non-Debug
- builds
-
- - 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-46907: Update Windows installer to use SQLite 3.38.4.
-
- - gh-issue-91061: Accept os.PathLike for the argument to winsound.PlaySound
-
- - 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.
-
- - bpo-38704: Prevent installation on unsupported Windows versions.
-
- 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.
-
- 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.
-
- - gh-issue-65802: Document handling of extensions in Save As dialogs.
-
- - gh-issue-95191: Include prompts when saving Shell (interactive input and
- output).
-
- - 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-68686: Remove ptags and eptags scripts.
-
- - gh-issue-97681: Remove the ``Tools/demo/`` directory which contained old
- demo scripts. A copy can be found in the `old-demos project
- <https://github.com/gvanrossum/old-demos>`_. Patch by Victor Stinner.
-
- - gh-issue-97669: Remove outdated example scripts of the ``Tools/scripts/``
- directory. A copy can be found in the `old-demos project
- <https://github.com/gvanrossum/old-demos>`_. Patch by Victor Stinner.
-
- - gh-issue-95853: The ``wasm_build.py`` script now pre-builds Emscripten
- ports, checks for broken EMSDK versions, and warns about pkg-config env
- vars.
-
- - gh-issue-95853: The new tool ``Tools/wasm/wasm_builder.py`` automates
- configure, compile, and test steps for building CPython on WebAssembly
- platforms.
-
- - gh-issue-95731: Fix handling of module docstrings in
- :file:`Tools/i18n/pygettext.py`.
-
- - gh-issue-93939: Add script ``Tools/scripts/check_modules.py`` to check and
- validate builtin and shared extension modules. The script also handles
- ``Modules/Setup`` and will eventually replace ``setup.py``.
-
- - 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
-
- - gh-issue-86087: The ``Tools/scripts/parseentities.py`` script used to
- parse HTML4 entities has been removed.
-
- C API
- -----
-
- - gh-issue-98393: The :c:func:`PyUnicode_FSDecoder` function no longer
- accepts bytes-like paths, like :class:`bytearray` and :class:`memoryview`
- types: only the exact :class:`bytes` type is accepted for bytes strings.
- Patch by Victor Stinner.
-
- - gh-issue-91051: Add :c:func:`PyType_Watch` and related APIs to allow
- callbacks on :c:func:`PyType_Modified`.
-
- - gh-issue-95756: Lazily create and cache ``co_`` attributes for better
- performance for code getters.
-
- - gh-issue-96512: Configuration for the :ref:`integer string conversion
- length limitation <int_max_str_digits>` now lives in the PyConfig C API
- struct.
-
- - gh-issue-95589: Extensions classes that set ``tp_dictoffset`` and
- ``tp_weaklistoffset`` lose the support for multiple inheritance, but are
- now safe. Extension classes should use :c:macro:`Py_TPFLAGS_MANAGED_DICT`
- and :c:macro:`Py_TPFLAGS_MANAGED_WEAKREF` instead.
-
- - gh-issue-95781: An unrecognized format character in
- :c:func:`PyUnicode_FromFormat` and :c:func:`PyUnicode_FromFormatV` now
- sets a :exc:`SystemError`. In previous versions it caused all the rest of
- the format string to be copied as-is to the result string, and any extra
- arguments discarded.
-
- - gh-issue-92678: Restore the 3.10 behavior for multiple inheritance of C
- extension classes that store their dictionary at the end of the struct.
-
- - gh-issue-92678: Support C extensions using managed dictionaries by setting
- the ``Py_TPFLAGS_MANAGED_DICT`` flag.
-
- - gh-issue-93274: API for implementing vectorcall
- (:c:macro:`Py_TPFLAGS_HAVE_VECTORCALL`, :c:func:`PyVectorcall_NARGS` and
- :c:func:`PyVectorcall_Call`) was added to the limited API and stable ABI.
-
- - gh-issue-95504: Fix sign placement when specifying width or precision in
- :c:func:`PyUnicode_FromFormat` and :c:func:`PyUnicode_FromFormatV`. Patch
- by Philip Georgi.
-
- - gh-issue-93012: The :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` flag is now
- removed from a class when the class's :py:meth:`~object.__call__` method
- is reassigned. This makes vectorcall safe to use with mutable types (i.e.
- heap types without the :const:`immutable <Py_TPFLAGS_IMMUTABLETYPE>`
- flag). Mutable types that do not override
- :c:member:`~PyTypeObject.tp_call` now inherit the
- :c:macro:`Py_TPFLAGS_HAVE_VECTORCALL` flag.
-
- - gh-issue-95388: Creating :c:macro:`immutable types
- <Py_TPFLAGS_IMMUTABLETYPE>` with mutable bases is deprecated and is
- planned to be disabled in Python 3.14.
-
- - gh-issue-92678: Adds unstable C-API functions
- ``_PyObject_VisitManagedDict`` and ``_PyObject_ClearManagedDict`` to allow
- C extensions to allow the VM to manage their object's dictionaries.
-
- - gh-issue-94936: Added :c:func:`PyCode_GetVarnames`,
- :c:func:`PyCode_GetCellvars` and :c:func:`PyCode_GetFreevars` for
- accessing ``co_varnames``, ``co_cellvars`` and ``co_freevars``
- respectively via the 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-94731: Python again uses C-style casts for most casting
- operations when compiled with C++. This may trigger compiler warnings, if
- they are enabled with e.g. ``-Wold-style-cast`` or
- ``-Wzero-as-null-pointer-constant`` options for ``g++``.
-
- - gh-issue-93937: The following frame functions and type are now directly
- available with ``#include <Python.h>``, it's no longer needed to add
- ``#include <frameobject.h>``:
-
- * :c:func:`PyFrame_Check`
- * :c:func:`PyFrame_GetBack`
- * :c:func:`PyFrame_GetBuiltins`
- * :c:func:`PyFrame_GetGenerator`
- * :c:func:`PyFrame_GetGlobals`
- * :c:func:`PyFrame_GetLasti`
- * :c:func:`PyFrame_GetLocals`
- * :c:type:`PyFrame_Type`
-
- Patch by Victor Stinner.
-
- - gh-issue-91321: Fix the compatibility of the Python C API with C++ older
- than C++11. Patch by Victor Stinner.
-
- - gh-issue-91731: Avoid defining the ``static_assert`` when compiling with
- C++ 11, where this is a keyword and redefining it can lead to undefined
- behavior. Patch by Pablo Galindo
-
- - gh-issue-89546: :c:func:`PyType_FromMetaclass` (and other ``PyType_From*``
- functions) now check that offsets and the base class's
- :c:member:`~PyTypeObject.tp_basicsize` fit in the new class's
- ``tp_basicsize``.
-
- - gh-issue-93503: Add two new public functions to the public C-API,
- :c:func:`PyEval_SetProfileAllThreads` and
- :c:func:`PyEval_SetTraceAllThreads`, that allow to set tracing and
- profiling functions in all running threads in addition to the calling one.
- Also, two analogous functions to the :mod:`threading` module
- (:func:`threading.setprofile_all_threads` and
- :func:`threading.settrace_all_threads`) that allow to do the same from
- Python. Patch by Pablo Galindo
-
- - gh-issue-93442: Add C++ overloads for _Py_CAST_impl() to handle 0/NULL.
- This will allow C++ extensions that pass 0 or NULL to macros using
- _Py_CAST() to continue to compile.
-
- - gh-issue-93466: Slot IDs in PyType_Spec may not be repeated. The
- documentation was updated to mention this. For some cases of repeated
- slots, PyType_FromSpec and related functions will now raise an exception.
-
- - gh-issue-92898: Fix C++ compiler warnings when casting function arguments
- to ``PyObject*``. Patch by Serge Guelton.
-
- - gh-issue-93103: Deprecate global configuration variables, like
- :c:var:`Py_IgnoreEnvironmentFlag`, in the documentation: the
- :c:func:`Py_InitializeFromConfig` API should be instead. Patch by Victor
- Stinner.
-
- - gh-issue-77782: Deprecate global configuration variable like
- :c:var:`Py_IgnoreEnvironmentFlag`: the :c:func:`Py_InitializeFromConfig`
- API should be instead. Patch by Victor Stinner.
-
- - gh-issue-92913: Ensures changes to
- :c:member:`PyConfig.module_search_paths` are ignored unless
- :c:member:`PyConfig.module_search_paths_set` is set
-
- - gh-issue-92781: Avoid mixing declarations and code in the C API to fix the
- compiler warning: "ISO C90 forbids mixed declarations and code"
- [-Werror=declaration-after-statement]. Patch by Victor Stinner.
-
- - gh-issue-92651: Remove the ``token.h`` header file. There was never any
- public tokenizer C API. The ``token.h`` header file was only designed to
- be used by Python internals. Patch by Victor Stinner.
-
- - gh-issue-92536: Remove legacy Unicode APIs based on ``Py_UNICODE*``.
-
- - gh-issue-85858: Remove the ``PyUnicode_InternImmortal()`` function and the
- ``SSTATE_INTERNED_IMMORTAL`` macro. Patch by Victor Stinner.
-
- - gh-issue-92193: Add new function :c:func:`PyFunction_SetVectorcall` to the
- C API which sets the vectorcall field of a given
- :c:type:`PyFunctionObject`.
-
- Warning: extensions using this API must preserve the behavior of the
- unaltered function!
-
- - gh-issue-59121: Fixed an assert that prevented ``PyRun_InteractiveOne``
- from providing tracebacks when parsing from the provided FD.
-
- - bpo-45383: The :c:func:`PyType_FromSpec` API will now find and use a
- metaclass based on the provided bases. An error will be raised if there is
- a metaclass conflict.
-
-
- What's New in Python 3.11.0 beta 1?
- ===================================
-
- *Release date: 2022-05-06*
-
- Security
- --------
-
- - gh-issue-57684: Add the :option:`-P` command line option and the
- :envvar:`PYTHONSAFEPATH` environment variable to not prepend a potentially
- unsafe path to :data:`sys.path`. Patch by Victor Stinner.
-
- Core and Builtins
- -----------------
-
- - gh-issue-89519: Chaining classmethod descriptors (introduced in bpo-19072)
- is deprecated. It can no longer be used to wrap other descriptors such as
- property(). The core design of this feature was flawed, and it caused a
- number of downstream problems.
-
- - gh-issue-92345: ``pymain_run_python()`` now imports ``readline`` and
- ``rlcompleter`` before sys.path is extended to include the current working
- directory of an interactive interpreter. Non-interactive interpreters are
- not affected.
-
- - bpo-43857: Improve the :exc:`AttributeError` message when deleting a
- missing attribute. Patch by Géry Ogam.
-
- - gh-issue-92245: Make sure that PEP 523 is respected in all cases. In
- 3.11a7, specialization may have prevented Python-to-Python calls
- respecting PEP 523.
-
- - gh-issue-92203: Add a closure keyword-only parameter to exec(). It can
- only be specified when exec-ing a code object that uses free variables.
- When specified, it must be a tuple, with exactly the number of cell
- variables referenced by the code object. closure has a default value of
- None, and it must be None if the code object doesn't refer to any free
- variables.
-
- - gh-issue-91173: Disable frozen modules in debug builds. Patch by Kumar
- Aditya.
-
- - gh-issue-92114: Improve error message when subscript a type with
- ``__class_getitem__`` set to ``None``.
-
- - gh-issue-92112: Fix crash triggered by an evil custom ``mro()`` on a
- metaclass.
-
- - gh-issue-92063: The ``PRECALL_METHOD_DESCRIPTOR_FAST_WITH_KEYWORDS``
- instruction now ensures methods are called only on objects of the correct
- type.
-
- - gh-issue-92031: Deoptimize statically allocated code objects during
- ``Py_FINALIZE()`` so that future ``_PyCode_Quicken`` calls always start
- with unquickened code.
-
- - 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-92032: The interpreter can now autocomplete soft keywords, as of
- now ``match``, ``case``, and ``_`` (wildcard pattern) from :pep:`634`.
-
- - gh-issue-87999: The warning emitted by the Python parser for a numeric
- literal immediately followed by keyword has been changed from deprecation
- warning to syntax warning.
-
- - gh-issue-91869: Fix an issue where specialized opcodes with extended
- arguments could produce incorrect tracing output or lead to assertion
- failures.
-
- - gh-issue-91603: Speed up :class:`types.UnionType` instantiation. Based on
- patch provided by Yurii Karabas.
-
- - gh-issue-89373: If Python is built in debug mode, Python now ensures that
- deallocator functions leave the current exception unchanged. Patch by
- Victor Stinner.
-
- - gh-issue-91632: Fix a minor memory leak at exit: release the memory of the
- :class:`generic_alias_iterator` type. Patch by Donghee Na.
-
- - gh-issue-81548: Octal escapes with value larger than ``0o377`` now produce
- a :exc:`DeprecationWarning`. In a future Python version they will be a
- :exc:`SyntaxWarning` and eventually a :exc:`SyntaxError`.
-
- - bpo-43950: Use a single compact table for line starts, ends and column
- offsets. Reduces memory consumption for location info by half
-
- - gh-issue-91102: Use Argument Clinic for :class:`EncodingMap`. Patch by
- Oleg Iarygin.
-
- - gh-issue-91636: Fixed a crash in a garbage-collection edge-case, in which
- a ``PyFunction_Type.tp_clear`` function could leave a python function
- object in an inconsistent state.
-
- - gh-issue-91603: Speed up :func:`isinstance` and :func:`issubclass` checks
- for :class:`types.UnionType`. Patch by Yurii Karabas.
-
- - gh-issue-91625: Fixed a bug in which adaptive opcodes ignored any
- preceding ``EXTENDED_ARG``\ s on specialization failure.
-
- - gh-issue-78607: The LLTRACE special build now looks for the name
- ``__lltrace__`` defined in module globals, rather than the name
- ``__ltrace__``, which had been introduced as a typo.
-
- - gh-issue-91576: Speed up iteration of ascii strings by 50%. Patch by Kumar
- Aditya.
-
- - gh-issue-89279: Improve interpreter performance on Windows by inlining a
- few specific macros.
-
- - gh-issue-91502: Add a new :c:func:`_PyFrame_IsEntryFrame` API function, to
- check if a :c:type:`PyFrameObject` is an entry frame. Patch by Pablo
- Galindo.
-
- - gh-issue-91266: Refactor the ``bytearray`` strip methods ``strip``,
- ``lstrip`` and ``rstrip`` to use a common implementation.
-
- - gh-issue-91479: Replaced the ``__note__`` field of :exc:`BaseException`
- (added in an earlier version of 3.11) with the final design of :pep:`678`.
- Namely, :exc:`BaseException` gets an :meth:`add_note` method, and its
- ``__notes__`` field is created when necessary.
-
- - gh-issue-46055: Speed up right shift of negative integers, by removing
- unnecessary creation of temporaries. Original patch by Xinhang Xu,
- reworked by Mark Dickinson.
-
- - gh-issue-91462: Make the interpreter's low-level tracing (lltrace) feature
- output more readable by displaying opcode names (rather than just
- numbers), and by displaying stack contents before each opcode.
-
- - gh-issue-89455: Fixed an uninitialized bool value in the traceback
- printing code path that was introduced by the initial bpo-45292 exception
- groups work.
-
- - gh-issue-91421: Fix a potential integer overflow in _Py_DecodeUTF8Ex.
-
- - gh-issue-91428: Add ``static const char *const _PyOpcode_OpName[256] =
- {...};`` to ``opcode.h`` for debug builds to assist in debugging the
- Python interpreter. It is now more convenient to make various forms of
- debugging output more human-readable by including opcode names rather than
- just the corresponding decimal digits.
-
- - bpo-47120: Make :opcode:`POP_JUMP_IF_TRUE`, :opcode:`POP_JUMP_IF_FALSE`,
- :opcode:`POP_JUMP_IF_NONE` and :opcode:`POP_JUMP_IF_NOT_NONE` virtual,
- mapping to new relative jump opcodes.
-
- - bpo-45317: Add internal documentation explaining design of new (for 3.11)
- frame stack.
-
- - bpo-47197: ctypes used to mishandle ``void`` return types, so that for
- instance a function declared like ``ctypes.CFUNCTYPE(None, ctypes.c_int)``
- would be called with signature ``int f(int)`` instead of ``void f(int)``.
- Wasm targets require function pointers to be called with the correct
- signatures so this led to crashes. The problem is now fixed.
-
- - bpo-47120: Make opcodes :opcode:`!JUMP_IF_TRUE_OR_POP` and
- :opcode:`!JUMP_IF_FALSE_OR_POP` relative rather than absolute.
-
- - bpo-47177: Replace the ``f_lasti`` member of the internal
- ``_PyInterpreterFrame`` structure with a ``prev_instr`` pointer, which
- reduces overhead in the main interpreter loop. The ``f_lasti`` attribute
- of Python-layer frame objects is preserved for backward-compatibility.
-
- - bpo-46961: Integer mod/remainder operations, including the three-argument
- form of :func:`pow`, now consistently return ints from the global small
- integer cache when applicable.
-
- - 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-46942: Use Argument Clinic for the :class:`types.MethodType`
- constructor. Patch by Oleg Iarygin.
-
- - bpo-46764: Fix wrapping bound methods with @classmethod
-
- - bpo-43464: Optimize :meth:`set.intersection` for non-set arguments.
-
- - bpo-46721: Optimize :meth:`set.issuperset` for non-set argument.
-
- - bpo-46509: Add type-specialized versions of the ``Py_DECREF()``, and use
- them for ``float``, ``int``, ``str``, ``bool``, and ``None`` to avoid
- pointer-chasing at runtime where types are known at C compile time.
-
- - bpo-46045: Do not use POSIX semaphores on NetBSD
-
- - 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.
-
- - bpo-34093: ``marshal.dumps()`` uses ``FLAG_REF`` for all interned strings.
- This makes output more deterministic and helps reproducible build.
-
- - bpo-26579: Added ``object.__getstate__`` which provides the default
- implementation of the ``__getstate__()`` method.
-
- Copying and pickling instances of subclasses of builtin types bytearray,
- set, frozenset, collections.OrderedDict, collections.deque,
- weakref.WeakSet, and datetime.tzinfo now copies and pickles instance
- attributes implemented as slots.
-
- Library
- -------
-
- - gh-issue-87901: Add the *encoding* parameter to :func:`os.popen`.
-
- - gh-issue-90997: Fix an issue where :mod:`dis` utilities may interpret
- populated inline cache entries as valid instructions.
-
- - gh-issue-92332: Deprecate :class:`typing.Text` (removal of the class is
- currently not planned). Patch by Alex Waygood.
-
- - Deprecate nested classes in enum definitions becoming members -- in 3.13
- they will be normal classes; add ``member`` and ``nonmember`` functions to
- allow control over results now.
-
- - gh-issue-92356: Fixed a performance regression in ctypes function calls.
-
- - gh-issue-90997: Show the actual named values stored in inline caches when
- ``show_caches=True`` is passed to :mod:`dis` utilities.
-
- - gh-issue-92301: Prefer ``close_range()`` to iterating over procfs for file
- descriptor closing in :mod:`subprocess` for better performance.
-
- - gh-issue-67248: Sort the miscellaneous topics in Cmd.do_help()
-
- - gh-issue-92210: Port ``socket.__init__`` to Argument Clinic. Patch by
- Cinder.
-
- - gh-issue-80010: Add support for generalized ISO 8601 parsing to
- :meth:`datetime.datetime.fromisoformat`,
- :meth:`datetime.date.fromisoformat` and
- :meth:`datetime.time.fromisoformat`. Patch by Paul Ganssle.
-
- - gh-issue-92118: Fix a 3.11 regression in
- :func:`~contextlib.contextmanager`, which caused it to propagate
- exceptions with incorrect tracebacks.
-
- - gh-issue-90887: Adding ``COPYFILE_STAT``, ``COPYFILE_ACL`` and
- ``COPYFILE_XATTR`` constants for :func:`os.fcopyfile` available in macOs.
-
- - gh-issue-91215: For @dataclass, add weakref_slot. Default is False. If
- True, and if slots=True, add a slot named "__weakref__", which will allow
- instances to be weakref'd. Contributed by Eric V. Smith
-
- - gh-issue-85984: New function os.login_tty() for Unix.
-
- - gh-issue-92128: Add :meth:`~object.__class_getitem__` to
- :class:`logging.LoggerAdapter` and :class:`logging.StreamHandler`,
- allowing them to be parameterized at runtime. Patch by Alex Waygood.
-
- - gh-issue-92049: Forbid pickling constants ``re._constants.SUCCESS`` etc.
- Previously, pickling did not fail, but the result could not be unpickled.
-
- - gh-issue-92062: :class:`inspect.Parameter` now raises :exc:`ValueError` if
- ``name`` is a keyword, in addition to the existing check that it is an
- identifier.
-
- - gh-issue-87390: Add an ``__unpacked__`` attribute to
- :class:`types.GenericAlias`. Patch by Jelle Zijlstra.
-
- - gh-issue-88089: Add support for generic :class:`typing.NamedTuple`.
-
- - gh-issue-91996: New http.HTTPMethod enum to represent all the available
- HTTP request methods in a convenient way
-
- - gh-issue-91984: Modified test strings in test_argparse.py to not contain
- trailing spaces before end of line.
-
- - gh-issue-91952: Add ``encoding="locale"`` support to
- :meth:`TextIOWrapper.reconfigure`.
-
- - gh-issue-91954: Add *encoding* and *errors* arguments to
- :func:`subprocess.getoutput` and :func:`subprocess.getstatusoutput`.
-
- - 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-91928: Add ``datetime.UTC`` alias for ``datetime.timezone.utc``.
-
- Patch by Kabir Kwatra.
-
- - gh-issue-68966: The :mod:`mailcap` module is now deprecated and will be
- removed in Python 3.13. See :pep:`594` for the rationale and the
- :mod:`mimetypes` module for an alternative. Patch by Victor Stinner.
-
- - gh-issue-91401: Provide a way to disable :mod:`subprocess` use of
- ``vfork()`` just in case it is ever needed and document the existing
- mechanism for ``posix_spawn()``.
-
- - gh-issue-64783: Fix :const:`signal.NSIG` value on FreeBSD to accept signal
- numbers greater than 32, like :const:`signal.SIGRTMIN` and
- :const:`signal.SIGRTMAX`. Patch by Victor Stinner.
-
- - gh-issue-91910: Add missing f prefix to f-strings in error messages from
- the :mod:`multiprocessing` and :mod:`asyncio` modules.
-
- - gh-issue-91860: Add :func:`typing.dataclass_transform`, implementing
- :pep:`681`. Patch by Jelle Zijlstra.
-
- - gh-issue-91832: Add ``required`` attribute to :class:`argparse.Action`
- repr output.
-
- - gh-issue-91827: In the :mod:`tkinter` module add method
- ``info_patchlevel()`` which returns the exact version of the Tcl library
- as a named tuple similar to :data:`sys.version_info`.
-
- - gh-issue-84461: Add :option:`--enable-wasm-pthreads` to enable pthreads
- support for WASM builds. ``Emscripten/node`` no longer has threading
- enabled by default. Include additional file systems.
-
- - gh-issue-91821: Fix unstable ``test_from_tuple`` test in
- ``test_decimal.py``.
-
- - gh-issue-91217: Deprecate the xdrlib module.
-
- - gh-issue-91217: Deprecate the uu module.
-
- - gh-issue-91760: More strict rules will be applied for numerical group
- references and group names in regular expressions. For now, a deprecation
- warning is emitted for group references and group names which will be
- errors in future Python versions.
-
- - gh-issue-84461: Add provisional :data:`sys._emscripten_info` named tuple
- with build-time and run-time information about Emscripten platform.
-
- - gh-issue-90623: :func:`signal.raise_signal` and :func:`os.kill` now check
- immediately for pending signals. Patch by Victor Stinner.
-
- - gh-issue-91734: Fix OSS audio support on Solaris.
-
- - gh-issue-90633: Include the passed value in the exception thrown by
- :func:`typing.assert_never`. Patch by Jelle Zijlstra.
-
- - 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-91231: Add an optional keyword *shutdown_timeout* parameter to
- the :class:`multiprocessing.BaseManager` constructor. Kill the process if
- terminate() takes longer than the timeout. Patch by Victor Stinner.
-
- - gh-issue-91621: Fix :func:`typing.get_type_hints` for
- :class:`collections.abc.Callable`. Patch by Shantanu Jain.
-
- - 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-91670: Remove deprecated ``SO`` config variable in
- :mod:`sysconfig`.
-
- - gh-issue-91217: Deprecate the telnetlib module.
-
- - gh-issue-91217: Deprecate the sunau module.
-
- - gh-issue-91217: Deprecate the spwd module.
-
- - gh-issue-91217: Deprecate the sndhdr module, as well as inline needed
- functionality for ``email.mime.MIMEAudio``.
-
- - gh-issue-91616: :mod:`re` module, fix :meth:`~re.Pattern.fullmatch`
- mismatch when using Atomic Grouping or Possessive Quantifiers.
-
- - gh-issue-91217: Deprecate the 'pipes' module.
-
- - gh-issue-91217: Deprecate the ossaudiodev module.
-
- - bpo-47256: :mod:`re` module, limit the maximum capturing group to
- 1,073,741,823 in 64-bit build, this increases the depth of backtracking.
-
- - gh-issue-91217: Deprecate the nis module.
-
- - gh-issue-91595: Fix the comparison of character and integer inside
- :func:`Tools.gdb.libpython.write_repr`. Patch by Yu Liu.
-
- - gh-issue-74166: Add option to raise all errors from
- :meth:`~socket.create_connection` in an :exc:`ExceptionGroup` when it
- fails to create a connection. The default remains to raise only the last
- error that had occurred when multiple addresses were tried.
-
- - gh-issue-91487: Optimize asyncio UDP speed, over 100 times faster when
- transferring a large file.
-
- - gh-issue-91575: Update case-insensitive matching in the :mod:`re` module
- to the latest Unicode version.
-
- - gh-issue-90622: In ``concurrent.futures.process.ProcessPoolExecutor``
- disallow the "fork" multiprocessing start method when the new
- ``max_tasks_per_child`` feature is used as the mix of threads+fork can
- hang the child processes. Default to using the safe "spawn" start method
- in that circumstance if no ``mp_context`` was supplied.
-
- - gh-issue-89022: In :mod:`sqlite3`, ``SQLITE_MISUSE`` result codes are now
- mapped to :exc:`~sqlite3.InterfaceError` instead of
- :exc:`~sqlite3.ProgrammingError`. Also, more accurate exceptions are
- raised when binding parameters fail. Patch by Erlend E. Aasland.
-
- - gh-issue-91526: Stop calling ``os.device_encoding(file.fileno())`` in
- :class:`TextIOWrapper`. It was complex, never documented, and didn't work
- for most cases. (Patch by Inada Naoki.)
-
- - gh-issue-88116: Change the frame-related functions in the :mod:`inspect`
- module to return a regular object (that is backwards compatible with the
- old tuple-like interface) that include the extended :pep:`657` position
- information (end line number, column and end column). The affected
- functions are: :func:`inspect.getframeinfo`,
- :func:`inspect.getouterframes`, :func:`inspect.getinnerframes`,
- :func:`inspect.stack` and :func:`inspect.trace`. Patch by Pablo Galindo.
-
- - gh-issue-69093: Add indexing and slicing support to :class:`sqlite3.Blob`.
- Patch by Aviv Palivoda and Erlend E. Aasland.
-
- - gh-issue-69093: Add :term:`context manager` support to
- :class:`sqlite3.Blob`. Patch by Aviv Palivoda and Erlend E. Aasland.
-
- - gh-issue-91217: Deprecate nntplib.
-
- - gh-issue-91217: Deprecate msilib.
-
- - gh-issue-91404: Improve the performance of :mod:`re` matching by using
- computed gotos (or "threaded code") on supported platforms and removing
- expensive pointer indirections.
-
- - gh-issue-91217: Deprecate the imghdr module.
-
- - gh-issue-91217: Deprecate the crypt module.
-
- - gh-issue-91276: Make space for longer opcodes in :mod:`dis` output.
-
- - bpo-47000: Make :class:`TextIOWrapper` uses locale encoding when
- ``encoding="locale"`` is specified even in UTF-8 mode.
-
- - gh-issue-91230: :func:`warnings.catch_warnings` now accepts arguments for
- :func:`warnings.simplefilter`, providing a more concise way to locally
- ignore warnings or convert them to errors.
-
- - gh-issue-91217: Deprecate the chunk module.
-
- - Add the ``TCP_CONNECTION_INFO`` option (available on macOS) to
- :mod:`socket`.
-
- - bpo-47260: Fix ``os.closerange()`` potentially being a no-op in a Linux
- seccomp sandbox.
-
- - bpo-47087: Implement ``typing.Required`` and ``typing.NotRequired``
- (:pep:`655`). Patch by David Foster and Jelle Zijlstra.
-
- - bpo-47061: Deprecate cgi and cgitb.
-
- - bpo-47061: Deprecate audioop.
-
- - bpo-47000: Add :func:`locale.getencoding` to get the current locale
- encoding. It is similar to ``locale.getpreferredencoding(False)`` but
- ignores the :ref:`Python UTF-8 Mode <utf8-mode>`.
-
- - bpo-42012: Add :mod:`wsgiref.types`, containing WSGI-specific types for
- static type checking.
-
- - bpo-47227: Suppress expression chaining for more :mod:`re` parsing errors.
-
- - bpo-47211: Remove undocumented and never working function
- ``re.template()`` and flag ``re.TEMPLATE``. This was later reverted in
- 3.11.0b2 and deprecated instead.
-
- - bpo-47135: :meth:`decimal.localcontext` now accepts context attributes via
- keyword arguments
-
- - bpo-43323: Fix errors in the :mod:`email` module if the charset itself
- contains undecodable/unencodable characters.
-
- - bpo-46841: Disassembly of quickened code.
-
- - bpo-46681: Forward gzip.compress() compresslevel to zlib.
-
- - bpo-45100: Add :func:`typing.get_overloads` and
- :func:`typing.clear_overloads`. Patch by Jelle Zijlstra.
-
- - bpo-44807: :class:`typing.Protocol` no longer silently replaces
- :meth:`__init__` methods defined on subclasses. Patch by Adrian Garcia
- Badaracco.
-
- - bpo-46787: Fix :class:`concurrent.futures.ProcessPoolExecutor` exception
- memory leak
-
- - bpo-46720: Add support for path-like objects to
- :func:`multiprocessing.set_executable` for Windows to be on a par with
- Unix-like systems. Patch by Géry Ogam.
-
- - bpo-46696: Add ``SO_INCOMING_CPU`` constant to :mod:`socket`.
-
- - bpo-46053: Fix OSS audio support on NetBSD.
-
- - bpo-45639: ``image/avif`` and ``image/webp`` were added to
- :mod:`mimetypes`.
-
- - bpo-46285: Add command-line option ``-p``/``--protocol`` to module
- :mod:`http.server` which specifies the HTTP version to which the server is
- conformant (HTTP/1.1 conformant servers can now be run from the
- command-line interface of module :mod:`http.server`). Patch by Géry Ogam.
-
- - bpo-44791: Accept ellipsis as the last argument of
- :data:`typing.Concatenate`.
-
- - bpo-46547: Remove variables leaking into ``pydoc.Helper`` class namespace.
-
- - bpo-46415: Fix ipaddress.ip_{address,interface,network} raising TypeError
- instead of ValueError if given invalid tuple as address parameter.
-
- - bpo-46075: ``CookieJar`` with ``DefaultCookiePolicy`` now can process
- cookies from localhost with domain=localhost explicitly specified in
- Set-Cookie header.
-
- - bpo-45995: Add a "z" option to the string formatting specification that
- coerces negative zero floating-point values to positive zero after
- rounding to the format precision. Contributed by John Belmonte.
-
- - bpo-26175: Fully implement the :class:`io.BufferedIOBase` or
- :class:`io.TextIOBase` interface for
- :class:`tempfile.SpooledTemporaryFile` objects. This lets them work
- correctly with higher-level layers (like compression modules). Patch by
- Carey Metcalfe.
-
- - 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-44863: Allow :class:`~typing.TypedDict` subclasses to also include
- :class:`~typing.Generic` as a base class in class based syntax. Thereby
- allowing the user to define a generic ``TypedDict``, just like a
- user-defined generic but with ``TypedDict`` semantics.
-
- - bpo-44587: Fix BooleanOptionalAction to not automatically add a default
- string. If a default string is desired, use a formatter to add it.
-
- - bpo-43827: All positional-or-keyword parameters to ``ABCMeta.__new__`` are
- now positional-only to avoid conflicts with keyword arguments to be passed
- to :meth:`__init_subclass__`.
-
- - bpo-43218: Prevent creation of a venv whose path contains the PATH
- separator. This could affect the usage of the activate script. Patch by
- Dustin Rodrigues.
-
- - bpo-38435: Add a ``process_group`` parameter to :class:`subprocess.Popen`
- to help move more things off of the unsafe ``preexec_fn`` parameter.
-
- - bpo-42066: Fix cookies getting sorted in :func:`CookieJar.__iter__` which
- is an extra behavior and not mentioned in RFC 2965 or Netscape cookie
- protocol. Now the cookies in ``CookieJar`` follows the order of the
- ``Set-Cookie`` header. Patch by Iman Kermani.
-
- - bpo-40617: Add :meth:`~sqlite3.Connection.create_window_function` to
- :class:`sqlite3.Connection` for creating aggregate window functions. Patch
- by Erlend E. Aasland.
-
- - bpo-40676: Convert :mod:`csv` to use Argument Clinic for
- :func:`csv.field_size_limit`, :func:`csv.get_dialect`,
- :func:`csv.unregister_dialect` and :func:`csv.list_dialects`.
-
- - bpo-39716: Raise an ``ArgumentError`` when the same subparser name is
- added twice to an ``argparse.ArgumentParser``. This is consistent with
- the (default) behavior when the same option string is added twice to an
- ``ArgumentParser``.
-
- - bpo-36073: Raise :exc:`~sqlite3.ProgrammingError` instead of segfaulting
- on recursive usage of cursors in :mod:`sqlite3` converters. Patch by
- Sergey Fedoseev.
-
- - bpo-34975: Adds a ``start_tls()`` method to
- :class:`~asyncio.streams.StreamWriter`, which upgrades the connection with
- TLS using the given :class:`~ssl.SSLContext`.
-
- - bpo-22276: :class:`~pathlib.Path` methods :meth:`~pathlib.Path.glob` and
- :meth:`~pathlib.Path.rglob` return only directories if *pattern* ends with
- a pathname components separator (``/`` or :data:`~os.sep`). Patch by
- Eisuke Kawashima.
-
- - bpo-24905: Add :meth:`~sqlite3.Connection.blobopen` to
- :class:`sqlite3.Connection`. :class:`sqlite3.Blob` allows incremental I/O
- operations on blobs. Patch by Aviv Palivoda and Erlend E. Aasland.
-
- Documentation
- -------------
-
- - 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.
-
- - gh-issue-91298: In ``importlib.resources.abc``, refined the documentation
- of the Traversable Protocol, applying changes from importlib_resources
- 5.7.1.
-
- - bpo-44347: Clarify the meaning of *dirs_exist_ok*, a kwarg of
- :func:`shutil.copytree`.
-
- - bpo-36329: Remove 'make -C Doc serve' in favour of 'make -C Doc htmlview'
-
- - bpo-47189: Add a What's New in Python 3.11 entry for the Faster CPython
- project. Documentation by Ken Jin and Kumar Aditya.
-
- - 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-47115: The documentation now lists which members of C structs are part
- of the :ref:`Limited API/Stable ABI <stable>`.
-
- - bpo-46962: All docstrings in code snippets are now wrapped into
- :c:macro:`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.
-
- Tests
- -----
-
- - gh-issue-92169: Use ``warnings_helper.import_deprecated()`` to import
- deprecated modules uniformly in tests. Patch by Hugo van Kemenade.
-
- - gh-issue-84461: When multiprocessing is enabled, libregrtest can now use a
- Python executable other than :code:`sys.executable` via the ``--python``
- flag.
-
- - gh-issue-91904: Fix initialization of
- :envvar:`PYTHONREGRTEST_UNICODE_GUARD` which prevented running regression
- tests on non-UTF-8 locale.
-
- - gh-issue-91752: Added @requires_zlib to
- test.test_tools.test_freeze.TestFreeze.
-
- - 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-40280: Threading tests are now skipped on WASM targets without pthread
- support.
-
- - bpo-47109: Test for :mod:`ctypes.macholib.dyld`,
- :mod:`ctypes.macholib.dylib`, and :mod:`ctypes.macholib.framework` are
- brought from manual pre-:mod:`unittest` times to :mod:`ctypes.test`
- location and structure. Patch by Oleg Iarygin.
-
- - bpo-29890: Add tests for :class:`ipaddress.IPv4Interface` and
- :class:`ipaddress.IPv6Interface` construction with tuple arguments.
- Original patch and tests by louisom.
-
- Build
- -----
-
- - gh-issue-89452: gdbm-compat is now preferred over ndbm if both are
- available on the system. This allows avoiding the problematic ndbm.h on
- macOS.
-
- - gh-issue-91731: Python is now built with ``-std=c11`` compiler option,
- rather than ``-std=c99``. Patch by Victor Stinner.
-
- - bpo-47152: Add script and make target for generating ``sre_constants.h``.
-
- - 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
- -------
-
- - bpo-46907: Update Windows installer to use SQLite 3.38.3.
-
- - bpo-47239: Fixed --list and --list-paths output for :ref:`launcher` when
- used in an active virtual environment.
-
- - bpo-46907: Update Windows installer to use SQLite 3.38.2.
-
- - 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
-
- macOS
- -----
-
- - bpo-46907: Update macOS installer to SQLite 3.38.4.
-
- Tools/Demos
- -----------
-
- - gh-issue-91583: Fix regression in the code generated by Argument Clinic
- for functions with the ``defining_class`` parameter.
-
- - gh-issue-91575: Add script ``Tools/scripts/generate_re_casefix.py`` and
- the make target ``regen-re`` for generating additional data for
- case-insensitive matching according to the current Unicode version.
-
- - gh-issue-91551: Remove the ancient Pynche color editor. It has moved to
- https://gitlab.com/warsaw/pynche
-
- C API
- -----
-
- - gh-issue-88279: Deprecate the C functions: :c:func:`PySys_SetArgv`,
- :c:func:`PySys_SetArgvEx`, :c:func:`PySys_SetPath`. Patch by Victor
- Stinner.
-
- - gh-issue-92154: Added the :c:func:`PyCode_GetCode` function. This function
- does the equivalent of the Python code ``getattr(code_object,
- 'co_code')``.
-
- - gh-issue-92173: Fix the ``closure`` argument to
- :c:func:`PyEval_EvalCodeEx`.
-
- - gh-issue-91320: Fix C++ compiler warnings about "old-style cast" (``g++
- -Wold-style-cast``) in the Python C API. Use C++ ``reinterpret_cast<>``
- and ``static_cast<>`` casts when the Python C API is used in C++. Patch by
- Victor Stinner.
-
- - gh-issue-80527: Mark functions as deprecated by :pep:`623`:
- :c:func:`!PyUnicode_AS_DATA`, :c:func:`!PyUnicode_AS_UNICODE`,
- :c:func:`!PyUnicode_GET_DATA_SIZE`, :c:func:`!PyUnicode_GET_SIZE`. Patch
- by Victor Stinner.
-
- - gh-issue-91768: :c:func:`Py_REFCNT`, :c:func:`Py_TYPE`, :c:func:`Py_SIZE`
- and :c:func:`Py_IS_TYPE` functions argument type is now ``PyObject*``,
- rather than ``const PyObject*``. Patch by Victor Stinner.
-
- - gh-issue-91020: Add ``PyBytes_Type.tp_alloc`` to initialize
- ``PyBytesObject.ob_shash`` for bytes subclasses.
-
- - bpo-40421: Add ``PyFrame_GetLasti`` C-API function to access frame
- object's ``f_lasti`` attribute safely from C code.
-
- - bpo-35134: Remove the ``Include/code.h`` header file. C extensions should
- only include the main ``<Python.h>`` header file. Patch by Victor Stinner.
-
- - bpo-47169: :c:func:`PyOS_CheckStack` is now exported in the Stable ABI on
- Windows.
-
- - bpo-47169: :c:func:`PyThread_get_thread_native_id` is excluded from the
- stable ABI on platforms where it doesn't exist (like Solaris).
-
- - bpo-46343: Added :c:func:`PyErr_GetHandledException` and
- :c:func:`PyErr_SetHandledException` as simpler alternatives to
- :c:func:`PyErr_GetExcInfo` and :c:func:`PyErr_SetExcInfo`.
-
- They are included in the stable ABI.
-
-
- What's New in Python 3.11.0 alpha 7?
- ====================================
-
- *Release date: 2022-04-05*
-
- Core and Builtins
- -----------------
-
- - 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-47186: Replace :opcode:`JUMP_IF_NOT_EG_MATCH` by
- :opcode:`CHECK_EG_MATCH` + jump.
-
- - bpo-47176: Emscripten builds cannot handle signals in the usual way due to
- platform limitations. Python can now handle signals. To use, set
- Module.Py_EmscriptenSignalBuffer to be a single byte SharedArrayBuffer and
- set Py_EMSCRIPTEN_SIGNAL_HANDLING to 1. Writing a number into the
- SharedArrayBuffer will cause the corresponding signal to be raised into
- the Python thread.
-
- - bpo-47186: Replace :opcode:`JUMP_IF_NOT_EXC_MATCH` by
- :opcode:`CHECK_EXC_MATCH` + jump.
-
- - bpo-47120: Replace the absolute jump opcode :opcode:`JUMP_NO_INTERRUPT` by
- the relative :opcode:`JUMP_BACKWARD_NO_INTERRUPT`.
-
- - bpo-46841: Avoid unnecessary allocations when comparing code objects.
-
- - 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-47162: WebAssembly cannot deal with bad function pointer casts
- (different count or types of arguments). Python can now use call
- trampolines to mitigate the problem. Define :c:macro:`PY_CALL_TRAMPOLINE`
- to enable call trampolines.
-
- - 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
- Donghee Na.
-
- - bpo-47129: Improve error messages in f-string syntax errors concerning
- empty expressions.
-
- - 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-47127: Speed up calls to c functions with keyword arguments by 25%
- with specialization. Patch by Kumar Aditya.
-
- - bpo-47120: Replaced :opcode:`JUMP_ABSOLUTE` by the relative jump
- :opcode:`JUMP_BACKWARD`.
-
- - bpo-42197: :c:func:`!PyFrame_FastToLocalsWithError` and
- :c:func:`!PyFrame_LocalsToFast` are no longer called during profiling nor
- tracing. C code can access the ``f_locals`` attribute of
- :c:type:`PyFrameObject` by calling :c:func:`PyFrame_GetLocals`.
-
- - bpo-47070: Improve performance of ``array_inplace_repeat`` by reducing the
- number of invocations of ``memcpy``. Refactor the ``repeat`` and inplace
- ``repeat`` methods of ``array``, ``bytes``, ``bytearray`` and
- ``unicodeobject`` to use the common ``_PyBytes_Repeat``.
-
- - bpo-47053: Reduce de-optimization in the specialized
- ``BINARY_OP_INPLACE_ADD_UNICODE`` opcode.
-
- - bpo-47045: Remove the ``f_state`` field from the _PyInterpreterFrame
- struct. Add the ``owner`` field to the _PyInterpreterFrame struct to make
- ownership explicit to simplify clearing and deallocing frames and
- generators.
-
- - 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
-
- - bpo-46329: Use low bit of ``LOAD_GLOBAL`` to indicate whether to push a
- ``NULL`` before the global. Helps streamline the call sequence a bit.
-
- - bpo-46841: Quicken bytecode in-place by storing it as part of the
- corresponding ``PyCodeObject``.
-
- - bpo-47012: Speed up iteration of :class:`bytes` and :class:`bytearray` by
- 30%. Patch by Kumar Aditya.
-
- - bpo-47009: Improved the performance of :meth:`list.append()` and list
- comprehensions by optimizing for the common case, where no resize is
- needed. Patch by Dennis Sweeney.
-
- - bpo-47005: Improve performance of ``bytearray_repeat`` and
- ``bytearray_irepeat`` by reducing the number of invocations of ``memcpy``.
-
- - bpo-46829: Deprecate passing a message into :meth:`asyncio.Future.cancel`
- and :meth:`asyncio.Task.cancel`
-
- - bpo-46993: Speed up :class:`bytearray` creation from :class:`list` and
- :class:`tuple` by 40%. Patch by Kumar Aditya.
-
- - bpo-39829: Removed the ``__len__()`` call when initializing a list and
- moved initializing to ``list_extend``. Patch by Jeremiah Pascual.
-
- - bpo-46944: Speed up throwing exception in generator with
- :c:macro:`METH_FASTCALL` calling convention. Patch by Kumar Aditya.
-
- - bpo-46841: Modify :opcode:`STORE_SUBSCR` to use an inline cache entry
- (rather than its oparg) as an adaptive counter.
-
- - bpo-46841: Use inline caching for :opcode:`!PRECALL` and :opcode:`CALL`,
- and remove the internal machinery for managing the (now unused) non-inline
- caches.
-
- - bpo-46881: Statically allocate and initialize the latin1 characters.
-
- - bpo-46838: Improve syntax errors for incorrect function definitions. Patch
- by Pablo Galindo
-
- - 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-43224: Make grammar changes required for PEP 646.
-
- Library
- -------
-
- - bpo-47208: Allow vendors to override :const:`CTYPES_MAX_ARGCOUNT`.
-
- - bpo-23689: :mod:`re` module: fix memory leak when a match is terminated by
- a signal or memory allocation failure. Patch by Ma Lin.
-
- - bpo-47167: Allow overriding a future compliance check in
- :class:`asyncio.Task`.
-
- - 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-47152: Convert the :mod:`re` module into a package. Deprecate modules
- ``sre_compile``, ``sre_constants`` and ``sre_parse``.
-
- - bpo-4833: Add :meth:`ZipFile.mkdir`
-
- - 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-14265: Adds the fully qualified test name to unittest output
-
- - bpo-47061: Deprecate the aifc module.
-
- - bpo-39622: Handle Ctrl+C in asyncio programs to interrupt the main task.
-
- - 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-47099: All :exc:`URLError` exception messages raised in
- :class:`urllib.request.URLopener` now contain a colon between ``ftp
- error`` and the rest of the message. Previously,
- :func:`~urllib.request.URLopener.open_ftp` missed the colon. Patch by Oleg
- Iarygin.
-
- - bpo-47099: Exception chaining is changed from
- :func:`Exception.with_traceback`/:func:`sys.exc_info` to :pep:`3134`.
- Patch by Oleg Iarygin.
-
- - bpo-47095: :mod:`hashlib`'s internal ``_blake2`` module now prefers
- ``libb2`` from https://www.blake2.net/ over Python's vendored copy of
- blake2.
-
- - bpo-47098: The Keccak Code Package for :mod:`hashlib`'s internal ``_sha3``
- module has been replaced with tiny_sha3. The module is used as fallback
- when Python is built without OpenSSL.
-
- - bpo-47088: Implement :data:`typing.LiteralString`, part of :pep:`675`.
- Patch by Jelle Zijlstra.
-
- - bpo-42885: Optimize :func:`re.search`, :func:`re.split`,
- :func:`re.findall`, :func:`re.finditer` and :func:`re.sub` for regular
- expressions starting with ``\A`` or ``^``.
-
- - bpo-23691: Protect the :func:`re.finditer` iterator from re-entering.
-
- - bpo-47067: Optimize calling ``GenericAlias`` objects by using :pep:`590`
- ``vectorcall`` and by replacing ``PyObject_SetAttrString`` with
- ``PyObject_SetAttr``.
-
- - bpo-28080: Add the *metadata_encoding* parameter in the
- :class:`zipfile.ZipFile` constructor and the ``--metadata-encoding``
- option in the :mod:`zipfile` CLI to allow reading zipfiles using
- non-standard codecs to encode the filenames within the archive.
-
- - bpo-47000: Make :func:`io.text_encoding` returns "utf-8" when UTF-8 mode
- is enabled.
-
- - 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.
-
- We also have :func:`binascii.crc32` release the GIL when computing on
- larger inputs as :func:`zlib.crc32` and :mod:`hashlib` do.
-
- This also boosts performance on Windows as it now uses the zlib crc32
- implementation for :func:`binascii.crc32` for a 2-3x speedup.
-
- That the stdlib has a crc32 API in two modules is a known historical
- oddity. This moves us closer to a single implementation behind them.
-
- - bpo-47066: Global inline flags (e.g. ``(?i)``) can now only be used at the
- start of the regular expressions. Using them not at the start of
- expression was deprecated since Python 3.6.
-
- - bpo-39394: A warning about inline flags not at the start of the regular
- expression now contains the position of the flag.
-
- - bpo-433030: Add support of atomic grouping (``(?>...)``) and possessive
- quantifiers (``*+``, ``++``, ``?+``, ``{m,n}+``) in :mod:`regular
- expressions <re>`.
-
- - bpo-47062: Implement :class:`asyncio.Runner` context manager.
-
- - bpo-46382: :func:`~dataclasses.dataclass` ``slots=True`` now correctly
- omits slots already defined in base classes. Patch by Arie Bovenberg.
-
- - bpo-47057: Use FASTCALL convention for ``FutureIter.throw()``
-
- - 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-34790: Remove passing coroutine objects to :func:`asyncio.wait`.
-
- - bpo-47039: Normalize ``repr()`` of asyncio future and task objects.
-
- - bpo-2604: Fix bug where doctests using globals would fail when run
- multiple times.
-
- - bpo-45150: Add :func:`hashlib.file_digest` helper for efficient hashing of
- file object.
-
- - bpo-34861: Made cumtime the default sorting key for cProfile
-
- - 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-43253: Fix a crash when closing transports where the underlying socket
- handle is already invalid on the Proactor event loop.
-
- - bpo-40280: :func:`select.select` now passes ``NULL`` to ``select`` for
- each empty fdset.
-
- - 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-46998: Allow subclassing of :class:`typing.Any`. Patch by Shantanu
- Jain.
-
- - bpo-46995: Deprecate missing :meth:`asyncio.Task.set_name` for third-party
- task implementations, schedule making it mandatory in Python 3.13.
-
- - bpo-46994: Accept explicit contextvars.Context in
- :func:`asyncio.create_task` and :meth:`asyncio.loop.create_task`.
-
- - bpo-46981: ``typing.get_args(typing.Tuple[()])`` now returns ``()``
- instead of ``((),)``.
-
- - bpo-46968: Add ``os.sysconf_names['SC_MINSIGSTKSZ']``.
-
- - 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-46917: The :data:`math.nan` value is now always available. Patch by
- Victor Stinner.
-
- - 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-46933: The :mod:`pwd` module is now optional.
- :func:`os.path.expanduser` returns the path when the :mod:`pwd` module is
- not available.
-
- - bpo-40059: :pep:`680`, the :mod:`tomllib` module. Adds support for parsing
- TOML.
-
- - bpo-464471: :func:`asyncio.timeout` and :func:`asyncio.timeout_at` context
- managers added. Patch by Tin Tvrtković and Andrew Svetlov.
-
- - bpo-46805: Added raw datagram socket functions for asyncio:
- :meth:`~asyncio.AbstractEventLoop.sock_sendto`,
- :meth:`~asyncio.AbstractEventLoop.sock_recvfrom` and
- :meth:`~asyncio.AbstractEventLoop.sock_recvfrom_into`.
-
- - bpo-46644: No longer require valid typeforms to be callable. This allows
- :data:`typing.Annotated` to wrap :data:`typing.ParamSpecArgs` and
- :data:`dataclasses.InitVar`. Patch by Gregory Beauregard.
-
- - bpo-46581: Brings :class:`ParamSpec` propagation for :class:`GenericAlias`
- in line with :class:`Concatenate` (and others).
-
- - bpo-45413: Define *posix_venv* and *nt_venv* :ref:`sysconfig installation
- schemes <installation_paths>` to be used for bootstrapping new virtual
- environments. Add *venv* sysconfig installation scheme to get the
- appropriate one of the above. The schemes are identical to the
- pre-existing *posix_prefix* and *nt* install schemes. The :mod:`venv`
- module now uses the *venv* scheme to create new virtual environments
- instead of hardcoding the paths depending only on the platform. Downstream
- Python distributors customizing the *posix_prefix* or *nt* install scheme
- in a way that is not compatible with the install scheme used in virtual
- environments are encouraged not to customize the *venv* schemes. When
- Python itself runs in a virtual environment,
- :func:`sysconfig.get_default_scheme` and
- :func:`sysconfig.get_preferred_scheme` with ``key="prefix"`` returns
- *venv*.
-
- - bpo-43224: Implement support for PEP 646 in typing.py.
-
- - bpo-43224: Allow unpacking types.GenericAlias objects, e.g. ``*tuple[int,
- str]``.
-
- - bpo-46557: Warnings captured by the logging module are now logged without
- a format string to prevent systems that group logs by the msg argument
- from grouping captured warnings together.
-
- - bpo-41370: :func:`typing.get_type_hints` now supports evaluating strings
- as forward references in :ref:`PEP 585 generic aliases
- <types-genericalias>`.
-
- - bpo-46607: Add :exc:`DeprecationWarning` to :class:`LegacyInterpolation`,
- deprecated in the docstring since Python 3.2. Will be removed in Python
- 3.13. Use :class:`BasicInterpolation` or :class:`ExtendedInterpolation`
- instead.
-
- - bpo-26120: :mod:`pydoc` now excludes __future__ imports from the module's
- data items.
-
- - bpo-46480: Add :func:`typing.assert_type`. Patch by Jelle Zijlstra.
-
- - 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-46245: Add optional parameter *dir_fd* in :func:`shutil.rmtree`.
-
- - bpo-22859: :meth:`~unittest.TestProgram.usageExit` is marked deprecated,
- to be removed in 3.13.
-
- - bpo-46170: Improve the error message when you try to subclass an instance
- of :class:`typing.NewType`.
-
- - bpo-40296: Fix supporting generic aliases in :mod:`pydoc`.
-
- - bpo-20392: Fix inconsistency with uppercase file extensions in
- :meth:`MimeTypes.guess_type`. Patch by Kumar Aditya.
-
- - bpo-46030: Add ``LOCAL_CREDS``, ``LOCAL_CREDS_PERSISTENT`` and
- ``SCM_CREDS2`` FreeBSD constants to the socket module.
-
- - 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-45171: Fix handling of the ``stacklevel`` argument to logging
- functions in the :mod:`logging` module so that it is consistent across all
- logging functions and, as advertised, similar to the ``stacklevel``
- argument used in :meth:`~warnings.warn`.
-
- - bpo-24959: Fix bug where :mod:`unittest` sometimes drops frames from
- tracebacks of exceptions raised in tests.
-
- - bpo-44859: Raise more accurate and :pep:`249` compatible exceptions in
- :mod:`sqlite3`.
-
- * Raise :exc:`~sqlite3.InterfaceError` instead of
- :exc:`~sqlite3.ProgrammingError` for ``SQLITE_MISUSE`` errors.
- * Don't overwrite :exc:`BufferError` with :exc:`ValueError` when conversion to
- BLOB fails.
- * Raise :exc:`~sqlite3.ProgrammingError` instead of :exc:`~sqlite3.Warning` if
- user tries to :meth:`~sqlite3.Cursor.execute()` more than one SQL statement.
- * Raise :exc:`~sqlite3.ProgrammingError` instead of :exc:`ValueError` if an SQL
- query contains null characters.
-
- - 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-41930: Add :meth:`~sqlite3.Connection.serialize` and
- :meth:`~sqlite3.Connection.deserialize` support to :mod:`sqlite3`. Patch
- by Erlend E. Aasland.
-
- - bpo-33178: Added :class:`ctypes.BigEndianUnion` and
- :class:`ctypes.LittleEndianUnion` classes, as originally documented in the
- library docs but not yet implemented.
-
- - bpo-43352: Add an Barrier object in synchronization primitives of
- *asyncio* Lib in order to be consistant with Barrier from *threading* and
- *multiprocessing* libs*
-
- - bpo-35859: :mod:`re` module, fix a few bugs about capturing group. In rare
- cases, capturing group gets an incorrect string. Patch by Ma Lin.
-
- Documentation
- -------------
-
- - bpo-45099: Document internal :mod:`asyncio` API.
-
- - bpo-47126: Update PEP URLs to :pep:`676`'s new canonical form.
-
- - bpo-47040: Clarified the old Python versions compatiblity note of
- :func:`binascii.crc32` / :func:`zlib.adler32` / :func:`zlib.crc32`
- functions.
-
- - bpo-46033: Clarify ``for`` statement execution in its doc.
-
- - 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.
-
- Tests
- -----
-
- - bpo-47205: Skip test for :func:`~os.sched_getaffinity` and
- :func:`~os.sched_setaffinity` error case on FreeBSD.
-
- - bpo-46126: Restore 'descriptions' when running tests internally.
-
- - bpo-47104: Rewrite :func:`asyncio.to_thread` tests to use
- :class:`unittest.IsolatedAsyncioTestCase`.
-
- - bpo-40280: The test suite is now passing on the Emscripten platform. All
- fork, socket, and subprocess-based tests are skipped.
-
- - bpo-47037: Skip ``strftime("%4Y")`` feature test on Windows. It can cause
- an assertion error in debug builds.
-
- - bpo-46587: Skip tests if platform's ``strftime`` does not support
- non-portable glibc extensions.
-
- - bpo-47015: A test case for :func:`os.sendfile` is converted from
- deprecated :mod:`!asyncore` (see :pep:`594`) to :mod:`asyncio`. Patch by
- Oleg Iarygin.
-
- Build
- -----
-
- - bpo-40280: Add configure option :option:`--enable-wasm-dynamic-linking` to
- enable ``dlopen`` and MAIN_MODULE / SIDE_MODULE on ``wasm32-emscripten``.
-
- - bpo-46023: ``makesetup`` now detects and skips all duplicated module
- definitions. The first entry wins.
-
- - bpo-40280: Add SOABI ``wasm32-emscripten`` for Emscripten and
- ``wasm32-wasi`` for WASI on 32bit WASM as well as ``wasm64`` counter
- parts.
-
- - 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-46996: The :mod:`tkinter` package now requires Tcl/Tk version 8.5.12
- or newer.
-
- - bpo-46973: Add ``regen-configure`` make target to regenerate configure
- script with Christian's container image
- ``quay.io/tiran/cpython_autoconf:269``.
-
- - bpo-46917: Building Python now requires support of IEEE 754 floating point
- numbers. Patch by Victor Stinner.
-
- - bpo-45774: ``configure`` now verifies that all SQLite C APIs needed for
- the :mod:`sqlite3` extension module are found.
-
- Windows
- -------
-
- - bpo-47194: Update ``zlib`` to v1.2.12 to resolve CVE-2018-25032.
-
- - bpo-47171: Enables installing the :file:`py.exe` launcher on Windows
- ARM64.
-
- - bpo-46566: Upgraded :ref:`launcher` to support a new ``-V:company/tag``
- argument for full :pep:`514` support and to detect ARM64 installs. The
- ``-64`` suffix on arguments is deprecated, but still selects any
- non-32-bit install. Setting :envvar:`PYLAUNCHER_ALLOW_INSTALL` and
- specifying a version that is not installed will attempt to install the
- requested version from the Microsoft Store.
-
- - bpo-47086: The installer for Windows now includes documentation as loose
- HTML files rather than a single compiled :file:`.chm` file.
-
- - bpo-46907: Update Windows installer to use SQLite 3.38.1.
-
- - 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.
-
- macOS
- -----
-
- - bpo-46890: Fix a regression in the setting of ``sys._base_executable`` in
- framework builds, and thereby fix a regression in :mod:`venv` virtual
- environments with such builds.
-
- - bpo-46907: Update macOS installer to SQLite 3.38.1.
-
- Tools/Demos
- -----------
-
- - bpo-40280: Replace Emscripten's limited shell with Katie Bell's browser-ui
- REPL from python-wasm project.
-
- C API
- -----
-
- - bpo-40421: Add ``PyFrame_GetBuiltins``, ``PyFrame_GetGenerator`` and
- ``PyFrame_GetGlobals`` C-API functions to access frame object attributes
- safely from C code.
-
- - bpo-46850: Move the private ``_PyFrameEvalFunction`` type, and private
- ``_PyInterpreterState_GetEvalFrameFunc()`` and
- ``_PyInterpreterState_SetEvalFrameFunc()`` functions to the internal C
- API. The ``_PyFrameEvalFunction`` callback function type now uses the
- ``_PyInterpreterFrame`` type which is part of the internal C API. Patch by
- Victor Stinner.
-
- - bpo-46850: Move the private undocumented ``_PyEval_EvalFrameDefault()``
- function to the internal C API. The function now uses the
- ``_PyInterpreterFrame`` type which is part of the internal C API. Patch by
- Victor Stinner.
-
- - bpo-46850: Remove the private undocumented function
- ``_PyEval_CallTracing()`` from the C API. Call the public
- :func:`sys.call_tracing` function instead. Patch by Victor Stinner.
-
- - bpo-46850: Remove the private undocumented function
- ``_PyEval_GetCoroutineOriginTrackingDepth()`` from the C API. Call the
- public :func:`sys.get_coroutine_origin_tracking_depth` function instead.
- Patch by Victor Stinner.
-
- - bpo-46850: Remove the following private undocumented functions from the C
- API:
-
- * ``_PyEval_GetAsyncGenFirstiter()``
- * ``_PyEval_GetAsyncGenFinalizer()``
- * ``_PyEval_SetAsyncGenFirstiter()``
- * ``_PyEval_SetAsyncGenFinalizer()``
-
- Call the public :func:`sys.get_asyncgen_hooks` and
- :func:`sys.set_asyncgen_hooks` functions instead. Patch by Victor Stinner.
-
- - bpo-46987: Remove private functions ``_PySys_GetObjectId()`` and
- ``_PySys_SetObjectId()``. Patch by Donghee Na.
-
- - bpo-46906: Add new functions to pack and unpack C double (serialize and
- deserialize): :c:func:`PyFloat_Pack2`, :c:func:`PyFloat_Pack4`,
- :c:func:`PyFloat_Pack8`, :c:func:`PyFloat_Unpack2`,
- :c:func:`PyFloat_Unpack4` and :c:func:`PyFloat_Unpack8`. Patch by Victor
- Stinner.
-
-
- What's New in Python 3.11.0 alpha 6?
- ====================================
-
- *Release date: 2022-03-07*
-
- Core and Builtins
- -----------------
-
- - bpo-46940: Avoid overriding :exc:`AttributeError` metadata information for
- nested attribute access calls. Patch by Pablo Galindo.
-
- - bpo-46927: Include the type's name in the error message for subscripting
- non-generic types.
-
- - bpo-46921: Support vectorcall for ``super()``. Patch by Ken Jin.
-
- - bpo-46841: Fix incorrect handling of inline cache entries when
- specializing :opcode:`BINARY_OP`.
-
- - bpo-46841: Use an oparg to simplify the construction of helpful error
- messages in :opcode:`GET_AWAITABLE`.
-
- - bpo-46903: Make sure that str subclasses can be used as attribute names
- for instances with virtual dictionaries. Fixes regression in 3.11alpha
-
- - bpo-46841: Add more detailed specialization failure stats for
- :opcode:`COMPARE_OP` followed by :opcode:`EXTENDED_ARG`.
-
- - bpo-46891: Fix bug introduced during 3.11alpha where subclasses of
- ``types.ModuleType`` with ``__slots__`` were not initialized correctly,
- resulting in an interpreter crash.
-
- - bpo-46841: Use inline caching for :opcode:`LOAD_ATTR`,
- :opcode:`LOAD_METHOD`, and :opcode:`STORE_ATTR`.
-
- - bpo-46841: Use inline cache for :opcode:`BINARY_SUBSCR`.
-
- - bpo-46841: Use inline caching for :opcode:`COMPARE_OP`.
-
- - bpo-46864: Deprecate ``PyBytesObject.ob_shash``. It will be removed in
- Python 3.13.
-
- - bpo-46841: Use inline caching for :opcode:`UNPACK_SEQUENCE`.
-
- - bpo-46845: Reduces dict size by removing hash value from hash table when
- all inserted keys are Unicode. For example,
- ``sys.getsizeof(dict.fromkeys("abcdefg"))`` becomes 272 bytes from 352
- bytes on 64bit platform.
-
- - bpo-46841: Use inline cache for :opcode:`LOAD_GLOBAL`.
-
- - 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-46852: Remove the undocumented private ``float.__set_format__()``
- method, previously known as ``float.__setformat__()`` in Python 3.7. Its
- docstring said: "You probably don't want to use this function. It exists
- mainly to be used in Python's test suite." Patch by Victor Stinner.
-
- - bpo-40116: Fix regression that dict.update(other) may don't respect
- iterate order of other when other is key sharing dict.
-
- - bpo-46712: Share global string identifiers in deep-frozen modules.
-
- - bpo-46430: Fix memory leak in interned strings of deep-frozen modules.
-
- - bpo-46841: Store :opcode:`BINARY_OP` caches inline using a new
- :opcode:`CACHE` instruction.
-
- - bpo-45107: Specialize ``LOAD_METHOD`` for instances with a dict.
-
- - bpo-44337: Reduce the memory usage of specialized :opcode:`LOAD_ATTR` and
- :opcode:`STORE_ATTR` instructions.
-
- - bpo-46729: Add number of sub-exceptions to :meth:`BaseException.__str__`.
-
- - bpo-45885: Don't un-adapt :opcode:`COMPARE_OP` when collecting
- specialization stats.
-
- - bpo-46329: Fix specialization stats gathering for :opcode:`!PRECALL`
- instructions.
-
- - bpo-46794: Bump up the libexpat version into 2.4.6
-
- - bpo-46823: Implement a specialized combined opcode
- ``LOAD_FAST__LOAD_ATTR_INSTANCE_VALUE``. Patch by Dennis Sweeney.
-
- - 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-46329: Move ``KW_NAMES`` before ``PRECALL`` instruction in call
- sequence. Change ``operand`` of ``CALL`` to match ``PRECALL`` for easier
- specialization.
-
- - bpo-46808: Remove the ``NEXT_BLOCK`` macro from compile.c, and make the
- compiler automatically generate implicit blocks when they are needed.
-
- - bpo-46329: Add ``PUSH_NULL`` instruction. This is used as a prefix when
- evaluating a callable, so that the stack has the same shape for methods
- and other calls. ``PRECALL_FUNCTION`` and ``PRECALL_METHOD`` are merged
- into a single ``PRECALL`` instruction.
-
- There is no change in semantics.
-
- - 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-46730: Message of AttributeError caused by getting, setting or
- deleting a property without the corresponding function now mentions that
- the attribute is in fact a property and also specifies type of the class
- that it belongs to.
-
- - 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:`~object.__bool__` method.
- Patch by Jelle Zijlstra.
-
- - bpo-46072: Add more detailed specialization failure statistics for
- :opcode:`BINARY_OP`.
-
- - bpo-46707: Avoid potential exponential backtracking when producing some
- syntax errors involving lots of brackets. Patch by Pablo Galindo.
-
- - bpo-46323: :mod:`ctypes` now allocates memory on the stack instead of on
- the heap to pass arguments while calling a Python callback function. Patch
- by Donghee Na.
-
- - bpo-45923: Add a quickened form of :opcode:`RESUME` that skips quickening
- checks.
-
- - bpo-46702: Specialize :opcode:`UNPACK_SEQUENCE` for :class:`tuple` and
- :class:`list` unpackings.
-
- - bpo-46072: Opcode pair stats are now gathered with ``--enable-pystats``.
- Defining ``DYNAMIC_EXECUTION_PROFILE`` or ``DXPAIRS`` no longer has any
- effect.
-
- - bpo-46675: Allow more than 16 items in a split dict before it is combined.
- The limit is now 254.
-
- - bpo-40479: Add a missing call to ``va_end()`` in
- ``Modules/_hashopenssl.c``.
-
- - bpo-46323: Use :c:func:`PyObject_Vectorcall` while calling ctypes callback
- function. Patch by Donghee Na.
-
- - 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-45828: The bytecode compiler now attempts to apply runtime stack
- manipulations at compile-time (whenever it is feasible to do so).
-
- - bpo-30496: Fixed a minor portability issue in the implementation of
- :c:func:`PyLong_FromLong`, and added a fast path for single-digit integers
- to :c:func:`PyLong_FromLongLong`.
-
- Library
- -------
-
- - bpo-25707: Fixed a file leak in :func:`xml.etree.ElementTree.iterparse`
- when the iterator is not exhausted. Patch by Jacob Walls.
-
- - bpo-46877: Export :func:`unittest.doModuleCleanups` in :mod:`unittest`.
- Patch by Kumar Aditya.
-
- - bpo-46848: For performance, use the optimized string-searching
- implementations from :meth:`~bytes.find` and :meth:`~bytes.rfind` for
- :meth:`~mmap.find` and :meth:`~mmap.rfind`.
-
- - bpo-46736: :class:`~http.server.SimpleHTTPRequestHandler` now uses HTML5
- grammar. Patch by Donghee Na.
-
- - 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-46786: The HTML serialisation in xml.etree.ElementTree now writes
- ``embed``, ``source``, ``track`` and ``wbr`` as empty tags, as defined in
- HTML 5.
-
- - bpo-39327: :func:`shutil.rmtree` can now work with VirtualBox shared
- folders when running from the guest operating-system.
-
- - bpo-45390: Propagate :exc:`asyncio.CancelledError` message from inner task
- to outer awaiter.
-
- - 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-46737: :func:`random.gauss` and :func:`random.normalvariate` now have
- default arguments.
-
- - bpo-46752: Add task groups to asyncio (structured concurrency, inspired by
- Trio's nurseries). This also introduces a change to task cancellation,
- where a cancelled task can't be cancelled again until it calls
- .uncancel().
-
- - bpo-46724: Fix :mod:`dis` behavior on negative jump offsets.
-
- - bpo-46333: The :meth:`__repr__` method of :class:`typing.ForwardRef` now
- includes the ``module`` parameter of :class:`typing.ForwardRef` when it is
- set.
-
- - 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-46066: Deprecate kwargs-based syntax for :class:`typing.TypedDict`
- definitions. It had confusing semantics when specifying totality, and was
- largely unused. Patch by Jingchen Ye.
-
- - bpo-46676: Make :data:`typing.ParamSpec` args and kwargs equal to
- themselves. Patch by Gregory Beauregard.
-
- - bpo-46323: ``ctypes.CFUNCTYPE()`` and ``ctypes.WINFUNCTYPE()`` now fail to
- create the type if its ``_argtypes_`` member contains too many arguments.
- Previously, the error was only raised when calling a function. Patch by
- Victor Stinner.
-
- - bpo-46672: Fix ``NameError`` in :func:`asyncio.gather` when initial type
- check fails.
-
- - bpo-46659: The :class:`calendar.LocaleTextCalendar` and
- :class:`calendar.LocaleHTMLCalendar` classes now use
- :func:`locale.getlocale`, instead of using
- :func:`locale.getdefaultlocale`, if no locale is specified. Patch by
- Victor Stinner.
-
- - bpo-46659: The :func:`locale.getdefaultlocale` function is deprecated and
- will be removed in Python 3.13. Use :func:`locale.setlocale`,
- :func:`locale.getpreferredencoding(False) <locale.getpreferredencoding>`
- and :func:`locale.getlocale` functions instead. Patch by Victor Stinner.
-
- - 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-46626: Expose Linux's ``IP_BIND_ADDRESS_NO_PORT`` option in
- :mod:`socket`.
-
- - bpo-46521: Fix a bug in the :mod:`codeop` module that was incorrectly
- identifying invalid code involving string quotes as valid code.
-
- - bpo-46571: Improve :func:`typing.no_type_check`.
-
- Now it does not modify external classes and functions. We also now
- correctly mark classmethods as not to be type checked.
-
- - bpo-46400: expat: Update libexpat from 2.4.1 to 2.4.4
-
- - bpo-46556: Deprecate undocumented support for using a
- :class:`pathlib.Path` object as a context manager.
-
- - bpo-46534: Implement :pep:`673` :class:`typing.Self`. Patch by James
- Hilton-Balfe.
-
- - bpo-46522: Make various module ``__getattr__`` AttributeErrors more
- closely match a typical AttributeError
-
- - bpo-46475: Add :data:`typing.Never` and :func:`typing.assert_never`. Patch
- by Jelle Zijlstra.
-
- - 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-46232: The :mod:`ssl` module now handles certificates with bit strings
- in DN correctly.
-
- - bpo-46195: :func:`typing.get_type_hints` no longer adds ``Optional`` to
- parameters with ``None`` as a default. This aligns to changes to PEP 484
- in https://github.com/python/peps/pull/689
-
- - bpo-31369: Add :class:`~re.RegexFlag` to ``re.__all__`` and documented it.
- Add :data:`~re.RegexFlag.NOFLAG` to indicate no flags being set.
-
- - bpo-45898: :mod:`ctypes` no longer defines ``ffi_type_*`` symbols in
- ``cfield.c``. The symbols have been provided by libffi for over a decade.
-
- - bpo-44953: Calling ``operator.itemgetter`` objects and
- ``operator.attrgetter`` objects is now faster due to use of the vectorcall
- calling convention.
-
- - bpo-44289: Fix an issue with :meth:`~tarfile.is_tarfile` method when using
- *fileobj* argument: position in the *fileobj* was advanced forward which
- made it unreadable with :meth:`tarfile.TarFile.open`.
-
- - bpo-44011: Reimplement SSL/TLS support in asyncio, borrow the
- implementation from uvloop library.
-
- - bpo-41086: Make the :class:`configparser.ConfigParser` constructor raise
- :exc:`TypeError` if the ``interpolation`` parameter is not of type
- :class:`!configparser.Interpolation`
-
- - bpo-29418: Implement :func:`inspect.ismethodwrapper` and fix
- :func:`inspect.isroutine` for cases where methodwrapper is given. Patch by
- Hakan Çelik.
-
- - 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-42238: ``Doc/tools/rstlint.py`` has moved to its own repository and is
- now packaged on PyPI as ``sphinx-lint``.
-
- 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-46760: Remove bytecode offsets from expected values in test.test_dis
- module. Reduces the obstacles to modifying the VM or compiler.
-
- - 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-46623: Skip test_pair() and test_speech128() of test_zlib on s390x
- since they fail if zlib uses the s390x hardware accelerator. Patch by
- Victor Stinner.
-
- Build
- -----
-
- - bpo-46860: Respect ``--with-suffix`` when building on case-insensitive
- file systems.
-
- - bpo-46656: Building Python now requires a C11 compiler. Optional C11
- features are not required. Patch by Victor Stinner.
-
- - bpo-46656: Building Python now requires support for floating point
- Not-a-Number (NaN): remove the ``Py_NO_NAN`` macro. Patch by Victor
- Stinner.
-
- - bpo-46640: Building Python now requires a C99 ``<math.h>`` header file
- providing a ``NAN`` constant, or the ``__builtin_nan()`` built-in
- function. Patch by Victor Stinner.
-
- - bpo-46608: Exclude marshalled-frozen data if deep-freezing to save 300 KB
- disk space. This includes adding a new ``is_package`` field to
- :c:struct:`_frozen`. Patch by Kumar Aditya.
-
- - bpo-40280: Fix wasm32-emscripten test failures and platform issues. -
- Disable syscalls that are not supported or don't work, e.g. wait,
- getrusage, prlimit, mkfifo, mknod, setres[gu]id, setgroups. - Use fd_count
- to cound open fds. - Add more checks for subprocess and fork. - Add
- workarounds for missing _multiprocessing and failing socket.accept(). -
- Enable bzip2. - Disable large file support. - Disable signal.alarm.
-
- - bpo-46430: Intern strings in deep-frozen modules. Patch by Kumar Aditya.
-
- Windows
- -------
-
- - bpo-46744: The default all users install directory for ARM64 is now under
- the native ``Program Files`` folder, rather than ``Program Files (Arm)``
- which is intended for ARM (32-bit) files.
-
- - bpo-46567: Adds Tcl and Tk support for Windows ARM64. This also adds IDLE
- to the installation.
-
- - 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).
-
- IDLE
- ----
-
- - bpo-46630: Make query dialogs on Windows start with a cursor in the entry
- box.
-
- - bpo-45447: Apply IDLE syntax highlighting to ``.pyi`` files. Patch by Alex
- Waygood and Terry Jan Reedy.
-
- C API
- -----
-
- - bpo-46748: Python's public headers no longer import ``<stdbool.h>``,
- leaving code that embedd/extends Python free to define ``bool``, ``true``
- and ``false``.
-
- - bpo-46836: Move the :c:type:`PyFrameObject` type definition (``struct
- _frame``) to the internal C API ``pycore_frame.h`` header file. Patch by
- Victor Stinner.
-
- - bpo-45459: Rename ``Include/buffer.h`` header file to
- ``Include/pybuffer.h`` to avoid conflits with projects having an existing
- ``buffer.h`` header file. Patch by Victor Stinner.
-
- - bpo-45412: Remove the ``HAVE_PY_SET_53BIT_PRECISION`` macro (moved to the
- internal C API). Patch by Victor Stinner.
-
- - bpo-46613: Added function :c:func:`PyType_GetModuleByDef`, which allows
- accesss to module state when a method's defining class is not available.
-
-
- What's New in Python 3.11.0 alpha 5?
- ====================================
-
- *Release date: 2022-02-03*
-
- Core and Builtins
- -----------------
-
- - bpo-45773: Remove two invalid "peephole" optimizations from the bytecode
- compiler.
-
- - bpo-46564: Do not create frame objects when creating :class:`super`
- object. Patch by Kumar Aditya.
-
- - bpo-45885: Added more fined-grained specialization failure stats regarding
- the ``COMPARE_OP`` bytecode.
-
- - bpo-44977: The delegation of :func:`int` to :meth:`__trunc__` is now
- deprecated. Calling ``int(a)`` when ``type(a)`` implements
- :meth:`__trunc__` but not :meth:`__int__` or :meth:`__index__` now raises
- a :exc:`DeprecationWarning`.
-
- - bpo-46458: Reorder code emitted by the compiler for a
- :keyword:`try`-:keyword:`except` block so that the :keyword:`else` block's
- code immediately follows the :keyword:`try` body (without a jump). This is
- more optimal for the happy path.
-
- - bpo-46527: Allow passing ``iterable`` as a keyword argument to
- :func:`enumerate` again. Patch by Jelle Zijlstra.
-
- - bpo-46528: Replace several stack manipulation instructions (``DUP_TOP``,
- ``DUP_TOP_TWO``, ``ROT_TWO``, ``ROT_THREE``, ``ROT_FOUR``, and ``ROT_N``)
- with new :opcode:`COPY` and :opcode:`SWAP` instructions.
-
- - bpo-46329: Use two or three bytecodes to implement most calls.
-
- Calls without named arguments are implemented as a sequence of two
- instructions: ``PRECALL; CALL``. Calls with named arguments are
- implemented as a sequence of three instructions: ``PRECALL; KW_NAMES;
- CALL``. There are two different ``PRECALL`` instructions:
- ``PRECALL_FUNTION`` and ``PRECALL_METHOD``. The latter pairs with
- ``LOAD_METHOD``.
-
- This partition into pre-call and call allows better specialization, and
- thus better performance ultimately.
-
- There is no change in semantics.
-
- - bpo-46503: Fix an assert when parsing some invalid \N escape sequences in
- f-strings.
-
- - bpo-46431: Improve error message on invalid calls to
- :meth:`BaseExceptionGroup.__new__`.
-
- - bpo-46476: Fix memory leak in code objects generated by deepfreeze. Patch
- by Kumar Aditya.
-
- - bpo-46481: Speed up calls to :meth:`weakref.ref.__call__` by using the
- :pep:`590` ``vectorcall`` calling convention. Patch by Donghee Na.
-
- - 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-46417: ``python -X showrefcount`` now shows the total reference count
- after clearing and destroyed the main Python interpreter. Previously, it
- was shown before. Patch by Victor Stinner.
-
- - bpo-43683: Add ASYNC_GEN_WRAP opcode to wrap the value to be yielded in
- async generators. Removes the need to special case async generators in the
- ``YIELD_VALUE`` instruction.
-
- - bpo-46407: Optimize some modulo operations in ``Objects/longobject.c``.
- Patch by Jeremiah Vivian.
-
- - bpo-46409: Add new ``RETURN_GENERATOR`` bytecode to make generators.
- Simplifies calling Python functions in the VM, as they no longer any need
- to special case generator functions.
-
- Also add ``JUMP_NO_INTERRUPT`` bytecode that acts like ``JUMP_ABSOLUTE``,
- but does not check for interrupts.
-
- - bpo-46406: The integer division ``//`` implementation has been optimized
- to better let the compiler understand its constraints. It can be 20%
- faster on the amd64 platform when dividing an int by a value smaller than
- ``2**30``.
-
- - bpo-46383: Fix invalid signature of ``_zoneinfo``'s ``module_free``
- function to resolve a crash on wasm32-emscripten platform.
-
- - bpo-46361: Ensure that "small" integers created by :meth:`int.from_bytes`
- and :class:`decimal.Decimal` are properly cached.
-
- - bpo-46161: Fix the class building error when the arguments are constants
- and CALL_FUNCTION_EX is used.
-
- - bpo-46028: Fixes calculation of :data:`sys._base_executable` when inside a
- virtual environment that uses symlinks with different binary names than
- the base environment provides.
-
- - bpo-46091: Correctly calculate indentation levels for lines with
- whitespace character that are ended by line continuation characters. Patch
- by Pablo Galindo
-
- - bpo-30512: Add CAN Socket support for NetBSD.
-
- - bpo-46045: Do not use POSIX semaphores on NetBSD
-
- - bpo-44024: Improve the :exc:`TypeError` message for non-string second
- arguments passed to the built-in functions :func:`getattr` and
- :func:`hasattr`. Patch by Géry Ogam.
-
- Library
- -------
-
- - bpo-46624: Restore support for non-integer arguments of
- :func:`random.randrange` and :func:`random.randint`.
-
- - bpo-46591: Make the IDLE doc URL on the About IDLE dialog clickable.
-
- - bpo-46565: Remove loop variables that are leaking into modules'
- namespaces.
-
- - bpo-46553: In :func:`typing.get_type_hints`, support evaluating bare
- stringified ``ClassVar`` annotations. Patch by Gregory Beauregard.
-
- - bpo-46544: Don't leak ``x`` & ``uspace`` intermediate vars in
- :class:`textwrap.TextWrapper`.
-
- - 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-45162: The deprecated :mod:`unittest` APIs removed in 3.11a1 have been
- temporarily restored to be removed in 3.12 while cleanups in external
- projects go in.
-
- - bpo-46539: In :func:`typing.get_type_hints`, support evaluating
- stringified ``ClassVar`` and ``Final`` annotations inside ``Annotated``.
- Patch by Gregory Beauregard.
-
- - bpo-46510: Add missing test for :class:`types.TracebackType` and
- :class:`types.FrameType`. Calculate them directly from the caught
- exception without calling :func:`sys.exc_info`.
-
- - bpo-46491: Allow :data:`typing.Annotated` to wrap :data:`typing.Final` and
- :data:`typing.ClassVar`. Patch by Gregory Beauregard.
-
- - bpo-46483: Remove :meth:`~object.__class_getitem__` from
- :class:`pathlib.PurePath` as this class was not supposed to be generic.
-
- - 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-46474: Removed private method from ``importlib.metadata.Path``. Sync
- with importlib_metadata 4.10.0.
-
- - bpo-46470: Remove unused branch from ``typing._remove_dups_flatten``
-
- - bpo-46469: :mod:`asyncio` generic classes now return
- :class:`types.GenericAlias` in ``__class_getitem__`` instead of the same
- class.
-
- - bpo-41906: Support passing filter instances in the ``filters`` values of
- ``handlers`` and ``loggers`` in the dictionary passed to
- :func:`logging.config.dictConfig`.
-
- - bpo-46422: Use ``dis.Positions`` in ``dis.Instruction`` instead of a
- regular ``tuple``.
-
- - bpo-46434: :mod:`pdb` now gracefully handles ``help`` when :attr:`__doc__`
- is missing, for example when run with pregenerated optimized ``.pyc``
- files.
-
- - bpo-43869: Python uses the same time Epoch on all platforms. Add an
- explicit unit test to ensure that it's the case. Patch by Victor Stinner.
-
- - bpo-46414: Add :func:`typing.reveal_type`. Patch by Jelle Zijlstra.
-
- - bpo-40280: :mod:`subprocess` now imports Windows-specific imports when
- ``msvcrt`` module is available, and POSIX-specific imports on all other
- platforms. This gives a clean exception when ``_posixsubprocess`` is not
- available (e.g. Emscripten browser target).
-
- - bpo-40066: ``IntEnum``, ``IntFlag``, and ``StrEnum`` use the mixed-in type
- for their ``str()`` and ``format()`` output.
-
- - bpo-46316: Optimize :meth:`pathlib.Path.iterdir` by removing an
- unnecessary check for special entries.
-
- - bpo-29688: Document :meth:`pathlib.Path.absolute` (which has always
- existed).
-
- - bpo-43012: The pathlib module's obsolete and internal ``_Accessor`` class
- has been removed to prepare the terrain for upcoming enhancements to the
- module.
-
- - bpo-46258: Speed up :func:`math.isqrt` for small positive integers by
- replacing two division steps with a lookup table.
-
- - bpo-46242: Improve error message when creating a new :class:`enum.Enum`
- type subclassing an existing ``Enum`` with ``_member_names_`` using
- :meth:`enum.Enum.__call__`.
-
- - 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-46124: Update :mod:`zoneinfo` to rely on importlib.resources
- traversable API.
-
- - bpo-46103: Now :func:`inspect.getmembers` only gets :attr:`__bases__`
- attribute from class type. Patch by Weipeng Hong.
-
- - 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-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.
-
- Documentation
- -------------
-
- - bpo-46463: Fixes :file:`escape4chm.py` script used when building the CHM
- documentation file
-
- Tests
- -----
-
- - bpo-43478: Mocks can no longer be provided as the specs for other Mocks.
- As a result, an already-mocked object cannot be passed to ``mock.Mock()``.
- This can uncover bugs in tests since these Mock-derived Mocks will always
- pass certain tests (e.g. isinstance) and builtin assert functions (e.g.
- assert_called_once_with) will unconditionally pass.
-
- - 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-46600: Fix test_gdb.test_pycfunction() for Python built with ``clang
- -Og``. Tolerate inlined functions in the gdb traceback. 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.
-
- - bpo-40280: Add :func:`test.support.requires_fork` decorators to mark tests
- that require a working :func:`os.fork`.
-
- - bpo-40280: Add :func:`test.support.requires_subprocess` decorator to mark
- tests which require working :mod:`subprocess` module or ``os.spawn*``. The
- wasm32-emscripten platform has no support for processes.
-
- - bpo-46126: Disable 'descriptions' when running tests internally.
-
- Build
- -----
-
- - bpo-46602: Tidied up configure.ac so that conftest.c is truncated rather
- than appended. This assists in the case where the 'rm' of conftest.c fails
- to happen between tests. Downstream issues such as a clobbered SOABI can
- result.
-
- - bpo-46600: Fix the test checking if the C compiler supports ``-Og`` option
- in the ``./configure`` script to also use ``-Og`` on clang which supports
- it. Patch by Victor Stinner.
-
- - 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-46471: Use global singletons for single byte bytes objects in
- deepfreeze.
-
- - bpo-46443: Deepfreeze now uses cached small integers as it saves some
- space for common small integers.
-
- - bpo-46429: Merge all deep-frozen files into one for space savings. Patch
- by Kumar Aditya.
-
- - bpo-45569: The build now defaults to using 30-bit digits for Python
- integers. Previously either 15-bit or 30-bit digits would be selected,
- depending on the platform. 15-bit digits may still be selected using the
- ``--enable-big-digits=15`` option to the ``configure`` script, or by
- defining ``PYLONG_BITS_IN_DIGIT`` in ``pyconfig.h``.
-
- - bpo-45925: Update Windows installer to use SQLite 3.37.2.
-
- - bpo-43112: Detect musl libc as a separate SOABI (tagged as
- ``linux-musl``).
-
- Windows
- -------
-
- - bpo-33125: The traditional EXE/MSI based installer for Windows is now
- available for ARM64
-
- - bpo-46362: os.path.abspath("C:\CON") is now fixed to return "\\.\CON", not
- the same path. The regression was true of all legacy DOS devices such as
- COM1, LPT1, or NUL.
-
- - bpo-44934: The installer now offers a command-line only option to add the
- installation directory to the end of :envvar:`PATH` instead of at the
- start.
-
- macOS
- -----
-
- - bpo-45925: Update macOS installer to SQLite 3.37.2.
-
- IDLE
- ----
-
- - 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.
-
- C API
- -----
-
- - bpo-40170: Remove the ``PyHeapType_GET_MEMBERS()`` macro. It was exposed
- in the public C API by mistake, it must only be used by Python internally.
- Use the ``PyTypeObject.tp_members`` member instead. Patch by Victor
- Stinner.
-
- - bpo-40170: Move _Py_GetAllocatedBlocks() and _PyObject_DebugMallocStats()
- private functions to the internal C API. Patch by Victor Stinner.
-
- - bpo-46433: The internal function _PyType_GetModuleByDef now correctly
- handles inheritance patterns involving static types.
-
- - bpo-45459: :c:type:`Py_buffer` and various ``Py_buffer`` related functions
- are now part of the limited API and stable ABI.
-
- - bpo-14916: Fixed bug in the tokenizer that prevented
- ``PyRun_InteractiveOne`` from parsing from the provided FD.
-
-
- What's New in Python 3.11.0 alpha 4?
- ====================================
-
- *Release date: 2022-01-13*
-
- Core and Builtins
- -----------------
-
- - 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-46347: Fix memory leak in PyEval_EvalCodeEx.
-
- - 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-46331: Do not set line number of instruction storing doc-string. Fixes
- regression introduced in 3.11 alpha.
-
- - bpo-46314: Remove spurious "call" event when creating a lambda function
- that was accidentally introduced in 3.11a4.
-
- - bpo-46289: ASDL declaration of ``FormattedValue`` has changed to reflect
- ``conversion`` field is not optional.
-
- - bpo-46297: Fixed an interpreter crash on bootup with multiple PythonPaths
- set in the Windows registry. Patch by Derzsi Dániel.
-
- - bpo-46237: Fix the line number of tokenizer errors inside f-strings. Patch
- by Pablo Galindo.
-
- - bpo-46263: We always expect the "use_frozen_modules" config to be set, now
- that getpath.c was rewritten in pure Python and the logic improved.
-
- - 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-45923: Add RESUME opcode. This is a logical no-op. It is emitted by
- the compiler anywhere a Python function can be entered. It is used by the
- interpreter to perform tracing and optimizer checks.
-
- - bpo-46208: Fix the regression of os.path.normpath("A/../../B") not
- returning expected "../B" but "B".
-
- - 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-46009: Remove the ``GEN_START`` opcode.
-
- - bpo-46235: Certain sequence multiplication operations like ``[0] * 1_000``
- are now faster due to reference-counting optimizations. Patch by Dennis
- Sweeney.
-
- - bpo-46221: :opcode:`!PREP_RERAISE_STAR` no longer pushes ``lasti`` to the
- stack.
-
- - bpo-46202: Remove :opcode:`!POP_EXCEPT_AND_RERAISE` and replace it by an
- equivalent sequence of other opcodes.
-
- - bpo-46085: Fix iterator cache mechanism of :class:`OrderedDict`.
-
- - bpo-46055: Speed up shifting operation involving integers less than
- :c:macro:`PyLong_BASE`. Patch by Xinhang Xu.
-
- - bpo-46110: Add a maximum recursion check to the PEG parser to avoid stack
- overflow. Patch by Pablo Galindo
-
- - bpo-46107: Fix bug where :meth:`ExceptionGroup.split` and
- :meth:`ExceptionGroup.subgroup` did not copy the exception group's
- ``__note__`` field to the parts.
-
- - bpo-45711: The interpreter state's representation of handled exceptions
- (a.k.a exc_info, or _PyErr_StackItem) now has only the ``exc_value``
- field, ``exc_type`` and ``exc_traceback`` have been removed as their
- values can be derived from ``exc_value``.
-
- - bpo-44525: Replace the four call bytecode instructions which one pre-call
- instruction and two call instructions.
-
- Removes ``CALL_FUNCTION``, ``CALL_FUNCTION_KW``, ``CALL_METHOD`` and
- ``CALL_METHOD_KW``.
-
- Adds ``CALL_NO_KW`` and ``CALL_KW`` call instructions, and
- ``PRECALL_METHOD`` prefix for pairing with ``LOAD_METHOD``.
-
- - bpo-46039: Remove the ``YIELD_FROM`` instruction and replace it with the
- ``SEND`` instruction which performs the same operation, but without the
- loop.
-
- - bpo-45635: The code called from :c:func:`_PyErr_Display` was refactored to
- improve error handling. It now exits immediately upon an unrecoverable
- error.
-
- - 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-46049: Ensure :file:`._pth` files work as intended on platforms other
- than Windows.
-
- - bpo-46048: Fixes parsing of :file:`._pth` files on startup so that
- single-character paths are correctly read.
-
- - bpo-37971: Fix a bug where the line numbers given in a traceback when a
- decorator application raised an exception were wrong.
-
- - bpo-46031: Add :opcode:`POP_JUMP_IF_NOT_NONE` and
- :opcode:`POP_JUMP_IF_NONE` opcodes to speed up conditional jumps.
-
- - bpo-45654: Deepfreeze :mod:`runpy`, patch by Kumar Aditya.
-
- - bpo-46025: Fix a crash in the :mod:`atexit` module involving functions
- that unregister themselves before raising exceptions. Patch by Pablo
- Galindo.
-
- - bpo-46000: Improve compatibility of the :mod:`curses` module with NetBSD
- curses.
-
- - bpo-44525: Specialize the CALL_FUNCTION instruction for calls to builtin
- types with a single argument. Speeds up ``range(x)``, ``list(x)``, and
- specifically ``type(obj)``.
-
- - 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.
-
- - bpo-45953: The main interpreter in _PyRuntimeState.interpreters is now
- statically allocated (as part of _PyRuntime). Likewise for the initial
- thread state of each interpreter. This means less allocation during
- runtime init, as well as better memory locality for these key state
- objects.
-
- - bpo-45292: Complete the :pep:`654` implementation: add ``except*``.
-
- - bpo-43413: Revert changes in ``set.__init__``. Subclass of :class:`set`
- needs to define a ``__init__()`` method if it defines a ``__new__()``
- method with additional keyword parameters.
-
- - bpo-43931: Added the :c:data:`Py_Version` constant which bears the same
- value as :c:macro:`PY_VERSION_HEX`. Patch by Gabriele N. Tornetta.
-
- Library
- -------
-
- - bpo-46342: The ``@typing.final`` decorator now sets the ``__final__``
- attribute on the decorated object to allow runtime introspection. Patch by
- Jelle Zijlstra.
-
- - bpo-46328: Added the :meth:`sys.exception` method which returns the active
- exception instance.
-
- - bpo-46307: Add :meth:`string.Template.is_valid` and
- :meth:`string.Template.get_identifiers` methods.
-
- - bpo-46306: Assume that :class:`types.CodeType` always has
- :attr:`types.CodeType.co_firstlineno` in :mod:`doctest`.
-
- - 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-46244: Removed ``__slots__`` from :class:`typing.ParamSpec` and
- :class:`typing.TypeVar`. They served no purpose. Patch by Arie Bovenberg.
-
- - bpo-46278: Reflect ``context`` argument in ``AbstractEventLoop.call_*()``
- methods. Loop implementations already support it.
-
- - bpo-46269: Remove special-casing of ``__new__`` in
- :meth:`enum.Enum.__dir__`.
-
- - bpo-46266: Improve day constants in :mod:`calendar`.
-
- Now all constants (``MONDAY`` ... ``SUNDAY``) are documented, tested, and
- added to ``__all__``.
-
- - bpo-46257: Optimized the mean, variance, and stdev functions in the
- statistics module. If the input is an iterator, it is consumed in a single
- pass rather than eating memory by conversion to a list. The single pass
- algorithm is about twice as fast as the previous two pass code.
-
- - bpo-41011: Added two new variables to *pyvenv.cfg* which is generated by
- :mod:`venv` module: *executable* for the executable and *command* for the
- command line used to create the environment.
-
- - bpo-46239: Improve error message when importing
- :mod:`asyncio.windows_events` on non-Windows.
-
- - bpo-46238: Reuse ``_winapi`` constants in ``asyncio.windows_events``.
-
- - bpo-46222: Adding ``SF_NOCACHE`` sendfile constant for FreeBSD for the
- posixmodule.
-
- - bpo-37295: Add fast path for ``0 <= k <= n <= 67`` for :func:`math.comb`.
-
- - bpo-46176: Adding the ``MAP_STACK`` constant for the mmap module.
-
- - bpo-43424: Deprecate :attr:`webbrowser.MacOSXOSAScript._name` and use
- ``name`` instead.
-
- - bpo-45321: Added missing error codes to module
- ``xml.parsers.expat.errors``.
-
- - bpo-46125: Refactor tests to test traversable API directly. Includes
- changes from importlib 5.4.0.
-
- - bpo-46118: Moved importlib.resources and its related functionality to a
- package.
-
- - bpo-37578: Add *include_hidden* parameter to :func:`~glob.glob` and
- :func:`~glob.iglob` to match hidden files and directories when using
- special characters like ``*``, ``**``, ``?`` and ``[]``.
-
- - 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-44893: EntryPoint objects are no longer tuples. Recommended means to
- access is by attribute ('.name', '.group') or accessor ('.load()'). Access
- by index is deprecated and will raise deprecation warning.
-
- - bpo-22815: Print unexpected successes together with failures and errors in
- summary in :class:`unittest.TextTestResult`.
-
- - bpo-22047: Calling :meth:`add_argument_group` on an argument group is
- deprecated. Calling :meth:`add_argument_group` or
- :meth:`add_mutually_exclusive_group` on a mutually exclusive group is
- deprecated.
-
- These features were never supported and do not always work correctly. The
- functions exist on the API by accident through inheritance and will be
- removed in the future.
-
- - 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-45615: Functions in the :mod:`traceback` module raise :exc:`TypeError`
- rather than :exc:`AttributeError` when an exception argument is not of
- type :exc:`BaseException`.
-
- - bpo-16594: Add allow allow_reuse_port flag in socketserver.
-
- - 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-46014: Add ability to use ``typing.Union`` and ``types.UnionType`` as
- dispatch argument to ``functools.singledispatch``. Patch provided by Yurii
- Karabas.
-
- - bpo-27062: Add :attr:`__all__` to :mod:`inspect`, patch by Kumar Aditya.
-
- - bpo-46018: Ensure that :func:`math.expm1` does not raise on underflow.
-
- - bpo-46016: Adding :attr:`F_DUP2FD` and :attr:`F_DUP2FD_CLOEXEC` constants
- from FreeBSD into the fcntl module.
-
- - 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-45874: The empty query string, consisting of no query arguments, is
- now handled correctly in ``urllib.parse.parse_qsl``. This caused problems
- before when strict parsing was enabled.
-
- - bpo-44674: Change how dataclasses disallows mutable default values. It
- used to use a list of known types (list, dict, set). Now it disallows
- unhashable objects to be defaults. It's using unhashability as a proxy
- for mutability. Patch by Eric V. Smith, idea by Raymond Hettinger.
-
- - bpo-23882: Remove namespace package (PEP 420) support from unittest
- discovery. It was introduced in Python 3.4 but has been broken since
- Python 3.7.
-
- - bpo-25066: Added a :meth:`__repr__` method to
- :class:`multiprocessing.Event` objects, patch by Kumar Aditya.
-
- - bpo-45643: Added :const:`signal.SIGSTKFLT` on platforms where this signal
- is defined.
-
- - bpo-44092: Fetch across rollback no longer raises
- :exc:`~sqlite3.InterfaceError`. Instead we leave it to the SQLite library
- to handle these cases. Patch by Erlend E. Aasland.
-
- - bpo-42413: Replace ``concurrent.futures.TimeoutError`` and
- ``asyncio.TimeoutError`` with builtin :exc:`TimeoutError`, keep these
- names as deprecated aliases.
-
- Documentation
- -------------
-
- - bpo-46196: Document method :meth:`cmd.Cmd.columnize`.
-
- - bpo-46120: State that ``|`` is preferred for readability over ``Union`` in
- the :mod:`typing` docs.
-
- - bpo-46109: Extracted ``importlib.resources`` and
- ``importlib.resources.abc`` documentation into separate files.
-
- - bpo-19737: Update the documentation for the :func:`globals` function.
-
- Tests
- -----
-
- - bpo-46296: Add a test case for :mod:`enum` with ``_use_args_ == True`` and
- ``_member_type_ == object``.
-
- - 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-46262: Cover ``ValueError`` path in tests for
- :meth:`enum.Flag._missing_`.
-
- - 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-23819: Fixed :mod:`asyncio` tests in python optimized mode. Patch by
- Kumar Aditya.
-
- - bpo-46114: Fix test case for OpenSSL 3.0.1 version. OpenSSL 3.0 uses
- ``0xMNN00PP0L``.
-
- Build
- -----
-
- - bpo-44133: When Python is configured with
- :option:`--without-static-libpython`, the Python static library
- (libpython.a) is no longer built. Patch by Victor Stinner.
-
- - bpo-44133: When Python is built without :option:`--enable-shared`, the
- ``python`` program is now linked to object files, rather than being linked
- to the Python static library (libpython.a), to make sure that all symbols
- are exported. Previously, the linker omitted some symbols like the
- :c:func:`Py_FrozenMain` function. Patch by Victor Stinner.
-
- - bpo-40280: The ``configure`` script has a new option
- ``--with-emscripten-target`` to select browser or node as Emscripten build
- target.
-
- - bpo-46315: Added and fixed ``#ifdef HAVE_FEATURE`` checks for
- functionality that is not available on WASI platform.
-
- - bpo-45723: Fixed a regression in ``configure`` check for
- :func:`select.epoll`.
-
- - 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.
-
- - bpo-46088: Automatically detect or install bootstrap Python runtime when
- building from Visual Studio.
-
- - bpo-46072: Add a --with-pystats configure option to turn on internal
- statistics gathering.
-
- - bpo-40280: A new directory ``Tools/wasm`` contains WebAssembly-related
- helpers like ``config.site`` override for wasm32-emscripten, wasm assets
- generator to bundle the stdlib, and a README.
-
- - bpo-46023: :program:`makesetup` no longer builds extensions that have been
- marked as *disabled*. This allows users to disable modules in
- ``Modules/Setup.local``.
-
- - bpo-45949: Use pure Python ``freeze_module`` for all but importlib
- bootstrap files. ``--with-freeze-module`` :program:`configure` option is
- no longer needed for cross builds.
-
- Windows
- -------
-
- - bpo-46217: Removed parameter that is unsupported on Windows 8.1 and early
- Windows 10 and may have caused build or runtime failures.
-
- 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``.
-
- - bpo-46140: :c:func:`PyBuffer_GetPointer`,
- :c:func:`PyBuffer_FromContiguous`, :c:func:`PyBuffer_ToContiguous` and
- :c:func:`PyMemoryView_FromBuffer` now take buffer info by ``const
- Py_buffer *`` instead of ``Py_buffer *``, as they do not need mutability.
- :c:func:`PyBuffer_FromContiguous` also now takes the source buffer as
- ``const void *``, and similarly :c:func:`PyBuffer_GetPointer` takes the
- strides as ``const Py_ssize_t *``.
-
- - bpo-45855: Document that the *no_block* argument to
- :c:func:`PyCapsule_Import` is a no-op now.
-
- - bpo-45855: Replaced deprecated usage of
- :c:func:`PyImport_ImportModuleNoBlock` with
- :c:func:`PyImport_ImportModule` in stdlib modules. Patch by Kumar Aditya.
-
- - bpo-46007: The :c:func:`!PyUnicode_CHECK_INTERNED` macro has been excluded
- from the limited C API. It was never usable there, because it used
- internal structures which are not available in the limited C API. Patch by
- Victor Stinner.
-
-
- What's New in Python 3.11.0 alpha 3?
- ====================================
-
- *Release date: 2021-12-08*
-
- Core and Builtins
- -----------------
-
- - 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-46004: Fix the :exc:`SyntaxError` location for errors involving for
- loops with invalid targets. Patch by Pablo Galindo
-
- - bpo-45711: :c:func:`_PyErr_ChainStackItem` no longer normalizes
- ``exc_info`` (including setting the traceback on the exception instance)
- because ``exc_info`` is always normalized.
-
- - bpo-45607: The ``__note__`` field was added to :exc:`BaseException`. It is
- ``None`` by default but can be set to a string which is added to the
- exception's traceback.
-
- - bpo-45947: Place pointers to dict and values immediately before GC header.
- This reduces number of dependent memory loads to access either dict or
- values from 3 to 1.
-
- - bpo-45915: ``is_valid_fd`` now uses faster ``fcntl(fd, F_GETFD)`` on
- Linux, macOS, and Windows.
-
- - bpo-44530: Reverts a change to the ``code.__new__`` :ref:`audit event
- <audit-events>` from an earlier prerelease.
-
- - bpo-42268: Fail the configure step if the selected compiler doesn't
- support memory sanitizer. Patch by Pablo Galindo
-
- - bpo-45711: The three values of ``exc_info`` are now always consistent with
- each other. In particular, the ``type`` and ``traceback`` fields are now
- derived from the exception instance. This impacts the return values of
- :func:`sys.exc_info` and :c:func:`PyErr_GetExcInfo()` if the exception
- instance is modified while the exception is handled, as well as
- :c:func:`PyErr_SetExcInfo()`, which now ignores the ``type`` and
- ``traceback`` arguments provided to it.
-
- - 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-45885: Specialized the ``COMPARE_OP`` opcode using the PEP 659
- machinery.
-
- - bpo-45786: Allocate space for the interpreter frame in the frame object,
- to avoid an additional allocation when the frame object outlives the frame
- activation.
-
- - bpo-45614: Fix :mod:`traceback` display for exceptions with invalid module
- name.
-
- - bpo-45813: Fix crash when calling coro.cr_frame.clear() after coroutine
- has been freed.
-
- - bpo-45811: Improve the tokenizer errors when encountering invisible
- control characters in the parser. Patch by Pablo Galindo
-
- - bpo-45848: Allow the parser to obtain error lines directly from encoded
- files. Patch by Pablo Galindo
-
- - bpo-45709: Restore behavior from 3.10 when tracing an exception raised
- within a with statement.
-
- - bpo-44525: Adds new :opcode:`COPY_FREE_VARS` opcode, to make copying of
- free variables from function to frame explicit. Helps optimization of
- calls to Python function.
-
- - bpo-45829: Specialize :opcode:`BINARY_SUBSCR` for classes with a
- ``__getitem__`` method implemented in Python
-
- - 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-45636: Simplify the implementation of :opcode:`BINARY_OP` by indexing
- into an array of function pointers (rather than switching on the oparg).
-
- - 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-45636: Remove an existing "fast path" for old-style string formatting,
- since it no longer appears to have any measurable impact.
-
- - bpo-45753: Make recursion checks a bit more efficient by tracking amount
- of calls left before overflow.
-
- - bpo-45773: Fix a compiler hang when attempting to optimize certain jump
- patterns.
-
- - bpo-45764: The parser now gives a better error message when leaving out
- the opening parenthesis ``(`` after a ``def``-statement::
-
- >>> def f:
- File "<stdin>", line 1
- def f:
- ^
- SyntaxError: expected '('
-
- - bpo-45609: Specialized the ``STORE_SUBSCR`` opcode using the PEP 659
- machinery.
-
- - bpo-45636: Replace all numeric ``BINARY_*`` and ``INPLACE_*`` instructions
- with a single :opcode:`BINARY_OP` implementation.
-
- - bpo-45582: Path calculation (known as ``getpath``) has been reimplemented
- as a frozen Python module. This should have no visible impact, but may
- affect calculation of all paths referenced in :mod:`sys` and
- :mod:`sysconfig`.
-
- - bpo-45450: Improve the syntax error message for parenthesized arguments.
- Patch by Pablo Galindo.
-
- Library
- -------
-
- - bpo-27946: Fix possible crash when getting an attribute of
- :class:`xml.etree.ElementTree.Element` simultaneously with replacing the
- ``attrib`` dict.
-
- - bpo-45711: Make :mod:`asyncio` normalize exceptions as soon as they are
- captured with :c:func:`PyErr_Fetch`, and before they are stored as an
- exc_info triplet. This brings :mod:`asyncio` in line with the rest of the
- codebase, where an exc_info triplet is always normalized.
-
- - bpo-23819: Replaced asserts with exceptions in asyncio, patch by Kumar
- Aditya.
-
- - bpo-13236: :class:`unittest.TextTestResult` and
- :class:`unittest.TextTestRunner` flush now the output stream more often.
-
- - bpo-45917: Added :func:`math.exp2`:, which returns 2 raised to the power
- of x.
-
- - 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-45876: Improve the accuracy of stdev() and pstdev() in the statistics
- module. When the inputs are floats or fractions, the output is a
- correctly rounded float
-
- - 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-45837: The :meth:`turtle.RawTurtle.settiltangle` is deprecated since
- Python 3.1, it now emits a deprecation warning and will be removed in
- Python 3.13.
-
- Use :meth:`turtle.RawTurtle.tiltangle` instead.
-
- :meth:`turtle.RawTurtle.tiltangle` was earlier incorrectly marked as
- deprecated, its docstring has been corrected.
-
- Patch by Hugo van Kemenade.
-
- - 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-45828: :mod:`sqlite` C callbacks now use unraisable exceptions if
- callback tracebacks are enabled. Patch by Erlend E. Aasland.
-
- - 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-45754: Fix a regression in Python 3.11a1 and 3.11a2 where
- :mod:`sqlite3` incorrectly would use ``SQLITE_LIMIT_LENGTH`` when checking
- SQL statement lengths. Now, ``SQLITE_LIMIT_SQL_LENGTH`` is used. Patch by
- Erlend E. Aasland.
-
- - bpo-45766: Added *proportional* option to
- :meth:`statistics.linear_regression`.
-
- - 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-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-45535: Improve output of ``dir()`` with Enums.
-
- - 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-43137: Launch GNOME web browsers via gio tool instead of obsolete
- gvfs-open
-
- - bpo-45429: On Windows, :func:`time.sleep` now uses a waitable timer which
- supports high-resolution timers. Patch by Donghee Na and Eryk Sun.
-
- - bpo-37295: Optimize :func:`math.comb` and :func:`math.perm`.
-
- - bpo-45514: Deprecated legacy functions in :mod:`importlib.resources`.
-
- - bpo-45507: Add tests for truncated/missing trailers in gzip.decompress
- implementation.
-
- - bpo-45359: Implement :pep:`585` for :class:`graphlib.TopologicalSorter`.
-
- - bpo-44733: Add ``max_tasks_per_child`` to
- :class:`concurrent.futures.ProcessPoolExecutor`. This allows users to
- specify the maximum number of tasks a single process should execute before
- the process needs to be restarted.
-
- - bpo-28806: Improve netrc library. netrc file no longer needs to contain
- all tokens. And if the login name is anonymous, security check is no
- longer need.
-
- - bpo-43498: Avoid a possible *"RuntimeError: dictionary changed size during
- iteration"* when adjusting the process count of
- :class:`ProcessPoolExecutor`.
-
- - bpo-42158: Add MIME types for N-quads, N-triples, Notation3 and TriG to
- ``mimetypes``.
-
- - bpo-30533: Add :func:`inspect.getmembers_static` , it return all members
- without triggering dynamic lookup via the descriptor protocol. Patch by
- Weipeng Hong.
-
- Documentation
- -------------
-
- - bpo-42238: ``make -C Doc suspicious`` will be removed soon in favor of
- ``make -C Doc check``, mark it as deprecated.
-
- - bpo-45840: Improve cross-references in the documentation for the data
- model.
-
- - 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-45250: Update the documentation to note that CPython does not
- consistently require iterators to define ``__iter__``.
-
- - 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-45695: Out-of-tree builds with a read-only source directory are now
- tested by CI.
-
- - bpo-19460: Add new Test for
- ``Lib/email/mime/nonmultipart.py::MIMENonMultipart``.
-
- - bpo-45835: Fix race condition in test_queue tests with multiple "feeder"
- threads.
-
- - bpo-45783: The test for the freeze tool now handles file moves and
- deletions.
-
- - bpo-45745: Remove the ``--findleaks`` command line option of regrtest: use
- the ``--fail-env-changed`` option instead. Since Python 3.7, it was a
- deprecated alias to the ``--fail-env-changed`` option.
-
- - bpo-45701: Add tests with ``tuple`` type with :func:`functools.lru_cache`
- to ``test_functools``.
-
- Build
- -----
-
- - bpo-44035: CI now verifies that autoconf files have been regenerated with
- a current and unpatched autoconf package.
-
- - bpo-45950: The build system now uses a :program:`_bootstrap_python`
- interpreter for freezing and deepfreezing again. To speed up build process
- the build tools :program:`_bootstrap_python` and :program:`_freeze_module`
- are no longer build with LTO.
-
- - bpo-45881: The :program:`configure` script now accepts
- ``--with-build-python`` and ``--with-freeze-module`` options to make cross
- compiling easier.
-
- - bpo-40280: Emscripten platform now uses ``.wasm`` suffix by default.
-
- - bpo-40280: Disable unusable core extension modules on WASM/Emscripten
- targets.
-
- - bpo-40280: ``configure`` now checks for socket ``shutdown`` function. The
- check makes it possible to disable ``SYS_shutdown`` with
- ``ac_cv_func_shutdown=no`` in CONFIG_SITE.
-
- - bpo-40280: ``configure`` now checks for functions ``fork1, getegid,
- geteuid, getgid, getppid, getuid, opendir, pipe, system, wait, ttyname``.
-
- - 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-40280: ``configure`` now accepts machine ``wasm32`` or ``wasm64`` and
- OS ``wasi`` or ``emscripten`` for cross building, e.g.
- ``wasm32-unknown-emscripten``, ``wasm32-wasi``, or
- ``wasm32-unknown-wasi``.
-
- - 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-45886: The ``_freeze_module`` program path can now be overridden on
- the command line, e.g. ``make
- FREEZE_MODULE=../x86_64/Program/_freeze_module``.
-
- - bpo-45873: Get rid of the ``_bootstrap_python`` build step. The
- deepfreeze.py script is now run using ``$(PYTHON_FOR_REGEN)`` which can be
- Python 3.7 or newer (on Windows, 3.8 or newer).
-
- - bpo-45847: Port builtin hashlib extensions to ``PY_STDLIB_MOD`` macro and
- ``addext()``.
-
- - bpo-45723: Add ``autoconf`` helpers for saving and restoring environment
- variables:
-
- * ``SAVE_ENV``: Save ``$CFLAGS``, ``$LDFLAGS``, ``$LIBS``, and
- ``$CPPFLAGS``.
- * ``RESTORE_ENV``: Restore ``$CFLAGS``, ``$LDFLAGS``, ``$LIBS``, and
- ``$CPPFLAGS``.
- * ``WITH_SAVE_ENV([SCRIPT])``: Run ``SCRIPT`` wrapped with ``SAVE_ENV`` and
- ``RESTORE_ENV``.
-
- Patch by Erlend E. Aasland.
-
- - bpo-45573: Mandatory core modules, that are required to bootstrap Python,
- are now in ``Modules/Setup.bootstrap``.
-
- - bpo-45573: ``configure`` now creates ``Modules/Setup.stdlib`` with
- conditionally enabled/disabled extension module lines. The file is not
- used, yet.
-
- - bpo-45573: ``configure`` now uses a unified format to set state, compiler
- flags, and linker flags in Makefile. The new macro ``PY_STDLIB_MOD`` sets
- three variables that are consumed by ``Modules/Setup`` and ``setup.py``.
-
- - bpo-45816: Python now supports building with Visual Studio 2022 (MSVC
- v143, VS Version 17.0). Patch by Jeremiah Vivian.
-
- - bpo-45800: Settings for :mod:`pyexpat` C extension are now detected by
- ``configure``. The bundled ``expat`` library is built in ``Makefile``.
-
- - bpo-45798: Settings for :mod:`decimal` internal C extension are now
- detected by ``configure``. The bundled ``libmpdec`` library is built in
- ``Makefile``.
-
- - bpo-45723: :program:`configure` has a new option ``--with-pkg-config`` to
- disable or require pkg-config.
-
- - bpo-45774: The build dependencies for :mod:`sqlite3` are now detected by
- ``configure`` and ``pkg-config``. Patch by Erlend E. Aasland.
-
- - bpo-45763: The build dependencies for :mod:`zlib`, :mod:`bz2`, and
- :mod:`lzma` are now detected by ``configure``.
-
- - bpo-45747: gdbm and dbm build dependencies are now detected by
- ``configure``.
-
- - bpo-45743: On macOS, the build system no longer passes
- ``search_paths_first`` to the linker. The flag has been the default since
- Xcode 4 / macOS 10.6.
-
- - bpo-45723: ``configure.ac`` is now compatible with autoconf 2.71.
- Deprecated checks ``STDC_HEADERS`` and ``AC_HEADER_TIME`` have been
- removed.
-
- - bpo-45723: ``configure`` now prints a warning when pkg-config is missing.
-
- - bpo-45731: ``configure --enable-loadable-sqlite-extensions`` is now
- handled by new ``PY_SQLITE_ENABLE_LOAD_EXTENSION`` macro instead of logic
- in setup.py.
-
- - bpo-45723: configure.ac now uses custom helper macros and
- ``AC_CACHE_CHECK`` to simplify and speed up configure runs.
-
- - bpo-45696: Skip the marshal step for frozen modules by generating C code
- that produces a set of ready-to-use code objects. This speeds up startup
- time by another 10% or more.
-
- - bpo-45561: Run smelly.py tool from $(srcdir).
-
- Windows
- -------
-
- - bpo-46105: Fixed calculation of :data:`sys.path` in a venv on 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-45850: Implement changes to build with deep-frozen modules on Windows.
- Note that we now require Python 3.10 as the "bootstrap" or "host" Python.
-
- - 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.
-
- macOS
- -----
-
- - bpo-45732: Update python.org macOS installer to use Tcl/Tk 8.6.12.
-
- C API
- -----
-
- - bpo-39026: Fix Python.h to build C extensions with Xcode: remove a
- relative include from ``Include/cpython/pystate.h``.
-
-
- What's New in Python 3.11.0 alpha 2?
- ====================================
-
- *Release date: 2021-11-05*
-
- Core and Builtins
- -----------------
-
- - 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-45379: Clarify :exc:`ImportError` message when we try to explicitly
- import a frozen module but frozen modules are disabled.
-
- - bpo-44525: Specialize simple calls to Python functions (no starargs,
- keyowrd dict, or closure)
-
- - bpo-45530: Cases of sorting using tuples as keys may now be significantly
- faster in some cases. Patch by Tim Peters.
-
- The order of the result may differ from earlier releases if the tuple
- elements don't define a total ordering (see
- :ref:`expressions-value-comparisons` for information on total ordering).
- It's generally true that the result of sorting simply isn't well-defined
- in the absence of a total ordering on list elements.
-
- - bpo-45526: In obmalloc, set ADDRESS_BITS to not ignore any bits (ignored
- 16 before). That is safer in the case that the kernel gives user-space
- virtual addresses that span a range greater than 48 bits.
-
- - 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-45445: Python now fails to initialize if it finds an invalid
- :option:`-X` option in the command line. Patch by Pablo Galindo.
-
- - bpo-45340: Object attributes are held in an array instead of a dictionary.
- An object's dictionary are created lazily, only when needed. Reduces the
- memory consumption of a typical Python object by about 30%. Patch by Mark
- Shannon.
-
- - 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-29410: Add SipHash13 for string hash algorithm and use it by default.
-
- - bpo-45385: Fix reference leak from descr_check. Patch by Donghee Na.
-
- - bpo-45367: Specialized the ``BINARY_MULTIPLY`` opcode to
- ``BINARY_MULTIPLY_INT`` and ``BINARY_MULTIPLY_FLOAT`` using the PEP 659
- machinery.
-
- - bpo-21736: Frozen stdlib modules now have ``__file__`` to the .py file
- they would otherwise be loaded from, if possible. For packages,
- ``__path__`` now has the correct entry instead of being an empty list,
- which allows unfrozen submodules to be imported. These are set only if
- the stdlib directory is known when the runtime is initialized. Note that
- the file at ``__file__`` is not guaranteed to exist. None of this affects
- non-stdlib frozen modules nor, for now, frozen modules imported using
- ``PyImport_ImportFrozenModule()``. Also, at the moment ``co_filename`` is
- not updated for the module.
-
- - bpo-45020: For frozen stdlib modules, record the original module name as
- ``module.__spec__.loader_state.origname``. If the value is different than
- ``module.__spec__.name`` then the module was defined as an alias in
- Tools/scripts/freeze_modules.py. If it is ``None`` then the module comes
- from a source file outside the stdlib.
-
- - bpo-45324: In FrozenImporter.find_spec(), we now preserve the information
- needed in exec_module() to load the module. This change mostly impacts
- internal details, rather than changing the importer's behavior.
-
- - bpo-45292: Implement :pep:`654`. Add :class:`ExceptionGroup` and
- :class:`BaseExceptionGroup`. Update traceback display code.
-
- - bpo-40116: Change to the implementation of split dictionaries. Classes
- where the instances differ either in the exact set of attributes, or in
- the order in which those attributes are set, can still share keys. This
- should have no observable effect on users of Python or the C-API. Patch by
- Mark Shannon.
-
- - 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-44525: Setup initial specialization infrastructure for the
- ``CALL_FUNCTION`` opcode. Implemented initial specializations for C
- function calls:
-
- * ``CALL_FUNCTION_BUILTIN_O`` for ``METH_O`` flag.
-
- * ``CALL_FUNCTION_BUILTIN_FAST`` for ``METH_FASTCALL`` flag without keywords.
-
- * ``CALL_FUNCTION_LEN`` for ``len(o)``.
-
- * ``CALL_FUNCTION_ISINSTANCE`` for ``isinstance(o, t)``.
-
- - bpo-44511: Improve the generated bytecode for class and mapping patterns.
-
- - bpo-43706: Speed up calls to ``enumerate()`` by using the :pep:`590`
- ``vectorcall`` calling convention. Patch by Donghee Na.
-
- Library
- -------
-
- - bpo-45679: Fix caching of multi-value :data:`typing.Literal`.
- ``Literal[True, 2]`` is no longer equal to ``Literal[1, 2]``.
-
- - bpo-42064: Convert :mod:`sqlite3` to multi-phase initialisation (PEP 489).
- Patches by Erlend E. Aasland.
-
- - bpo-45438: Fix typing.Signature string representation for generic builtin
- types.
-
- - bpo-45613: :mod:`sqlite3` now sets :attr:`sqlite3.threadsafety` based on
- the default threading mode the underlying SQLite library has been compiled
- with. Patch by Erlend E. Aasland.
-
- - 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-44019: Add :func:`operator.call` to ``operator.__all__``. Patch by
- Kreusada.
-
- - bpo-42174: :meth:`shutil.get_terminal_size` now falls back to sane values
- if the column or line count are 0.
-
- - bpo-35673: Improve the introspectability of the ``__loader__`` attribute
- for namespace packages. :class:`importlib.machinery.NamespaceLoader` is
- now public, and implements the :class:`importlib.abc.InspectLoader`
- interface. ``_NamespaceLoader`` is kept for backward compatibility.
-
- - 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-45489: Update :class:`~typing.ForwardRef` to support ``|`` operator.
- Patch by Donghee Na.
-
- - bpo-42222: Removed deprecated support for float arguments in
- *randrange()*.
-
- - 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-45417: Fix quadratic behaviour in the enum module: Creation of enum
- classes with a lot of entries was quadratic.
-
- - 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-20028: Empty escapechar/quotechar is not allowed when initializing
- :class:`csv.Dialect`. Patch by Vajrasky Kok and Donghee Na.
-
- - 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-45411: Add extensions for files containing subtitles - .srt & .vtt -
- to the mimetypes.py module.
-
- - bpo-10716: Migrated pydoc to HTML5 (without changing the look of it). Side
- effect is to update xmlrpc's ``ServerHTMLDoc`` which now uses the CSS too.
- cgitb now relies less on pydoc (as it can't use the CSS file).
-
- - bpo-27580: Add support of null characters in :mod:`csv`.
-
- - 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-20028: Improve error message of :class:`csv.Dialect` when
- initializing. Patch by Vajrasky Kok and Donghee Na.
-
- - bpo-45343: Update bundled pip to 21.2.4 and setuptools to 58.1.0
-
- - bpo-45328: Fixed :class:`http.client.HTTPConnection` to work properly in
- OSs that don't support the ``TCP_NODELAY`` socket option.
-
- - bpo-45243: Add :meth:`~sqlite3.Connection.setlimit` and
- :meth:`~sqlite3.Connection.getlimit` to :class:`sqlite3.Connection` for
- setting and getting SQLite limits by connection basis. Patch by Erlend E.
- Aasland.
-
- - bpo-45320: Removed from the :mod:`inspect` module:
-
- * the ``getargspec`` function, deprecated since Python 3.0;
- use :func:`inspect.signature` or :func:`inspect.getfullargspec` instead.
-
- * the ``formatargspec`` function, deprecated since Python 3.5;
- use the :func:`inspect.signature` function and :class:`Signature` object
- directly.
-
- * the undocumented ``Signature.from_builtin`` and ``Signature.from_function``
- functions, deprecated since Python 3.5; use the
- :meth:`Signature.from_callable() <inspect.Signature.from_callable>` method
- instead.
-
- Patch by Hugo van Kemenade.
-
- - 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-45160: When tracing a tkinter variable used by a ttk OptionMenu,
- callbacks are no longer made twice.
-
- - bpo-25625: Added non parallel-safe :func:`~contextlib.chdir` context
- manager to change the current working directory and then restore it on
- exit. Simple wrapper around :func:`~os.chdir`.
-
- - bpo-24139: Add support for SQLite extended result codes in
- :exc:`sqlite3.Error`. Patch by Erlend E. Aasland.
-
- - 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-44547: Implement ``Fraction.__int__``, so that a
- :class:`fractions.Fraction` instance ``f`` passes an ``isinstance(f,
- typing.SupportsInt)`` check.
-
- - bpo-40321: Adds support for HTTP 308 redirects to :mod:`urllib`. See
- :rfc:`7538` for details. Patch by Jochem Schulenklopper.
-
- - bpo-41374: Ensure that ``socket.TCP_*`` constants are exposed on Cygwin
- 3.1.6 and greater.
-
- - bpo-35970: Add help flag to the base64 module's command line interface.
- Patch contributed by Robert Kuska.
-
- Documentation
- -------------
-
- - 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-45618: Update Sphinx version used to build the documentation to 4.2.0.
- Patch by Maciej Olko.
-
- - 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-45516: Add protocol description to the
- :class:`importlib.abc.TraversableResources` documentation.
-
- - 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.
-
- Tests
- -----
-
- - 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-45668: PGO tests now pass when Python is built without test extension
- modules.
-
- - 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-45410: When libregrtest spawns a worker process, stderr is now written
- into stdout to keep messages order. Use a single pipe for stdout and
- stderr, rather than two pipes. Previously, messages were out of order
- which made analysis of buildbot logs harder Patch by Victor Stinner.
-
- - bpo-45402: Fix test_tools.test_sundry() when Python is built out of tree:
- fix how the freeze_modules.py tool locates the _freeze_module program.
- Patch by Victor Stinner.
-
- - bpo-45403: Fix test_sys.test_stdlib_dir() when Python is built outside the
- source tree: compare normalized paths. Patch by Victor Stinner.
-
- - 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-10572: Rename :mod:`sqlite3` tests from ``test_sqlite`` to
- ``test_sqlite3``, and relocate them to ``Lib/test/test_sqlite3``. Patch by
- Erlend E. Aasland.
-
- Build
- -----
-
- - 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-45666: Fix warning of ``swprintf`` and ``%s`` usage in
- ``_testembed.c``
-
- - bpo-45548: ``Modules/Setup`` and ``Modules/makesetup`` have been improved.
- The ``Setup`` file now contains working rules for all extensions. Outdated
- comments have been removed. Rules defined by ``makesetup`` track
- dependencies correctly.
-
- - bpo-45548: The :mod:`math` and :mod:`cmath` implementation now require a
- C99 compatible ``libm`` and no longer ship with workarounds for missing
- acosh, asinh, atanh, expm1, and log1p functions.
-
- - bpo-45595: ``setup.py`` and ``makesetup`` now track build dependencies on
- all Python header files and module specific header files.
-
- - bpo-45571: ``Modules/Setup`` now use ``PY_CFLAGS_NODIST`` instead of
- ``PY_CFLAGS`` to compile shared modules.
-
- - bpo-45570: :mod:`pyexpat` and :mod:`_elementtree` no longer define
- obsolete macros ``HAVE_EXPAT_CONFIG_H`` and ``USE_PYEXPAT_CAPI``.
- ``XML_POOR_ENTROPY`` is now defined in ``expat_config.h``.
-
- - bpo-43974: ``setup.py`` no longer defines ``Py_BUILD_CORE_MODULE``.
- Instead every module, that uses the internal API, defines the macro.
-
- - bpo-45548: Fill in missing entries in Modules/Setup.
-
- - 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-45440: Building Python now requires a C99 ``<math.h>`` header file
- providing the following functions: ``copysign()``, ``hypot()``,
- ``isfinite()``, ``isinf()``, ``isnan()``, ``round()``. Patch by Victor
- Stinner.
-
- - bpo-45405: Prevent ``internal configure error`` when running ``configure``
- with recent versions of non-Apple clang. Patch by David Bohman.
-
- - bpo-45433: Avoid linking libpython with libcrypt.
-
- Windows
- -------
-
- - 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.
-
- - bpo-43851: Build SQLite ``SQLITE_OMIT_AUTOINIT`` on Windows. Patch by
- Erlend E. Aasland.
-
- macOS
- -----
-
- - 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.
-
- IDLE
- ----
-
- - bpo-45495: Add context keywords 'case' and 'match' to completions list.
-
- C API
- -----
-
- - bpo-29103: :c:func:`PyType_FromSpec* <PyType_FromModuleAndSpec>` now
- copies the class name from the spec to a buffer owned by the class, so the
- original can be safely deallocated. Patch by Petr Viktorin.
-
- - bpo-45522: The internal freelists for frame, float, list, dict, async
- generators, and context objects can now be disabled.
-
- - bpo-35134: Exclude :c:func:`PyWeakref_GET_OBJECT` from the limited C API.
- It never worked since the :c:type:`!PyWeakReference` structure is opaque
- in the limited C API.
-
- - bpo-35081: Move the ``interpreteridobject.h`` header file from
- ``Include/`` to ``Include/internal/``. It only provides private functions.
- Patch by Victor Stinner.
-
- - bpo-35134: The non-limited API files ``cellobject.h``, ``classobject.h``,
- ``context.h``, ``funcobject.h``, ``genobject.h`` and ``longintrepr.h``
- have been moved to the ``Include/cpython`` directory. Moreover, the
- ``eval.h`` header file was removed. These files must not be included
- directly, as they are already included in ``Python.h``: :ref:`Include
- Files <api-includes>`. If they have been included directly, consider
- including ``Python.h`` instead. Patch by Victor Stinner.
-
- - bpo-45474: The following items are no longer available when
- ``Py_LIMITED_API`` is defined:
-
- * :c:func:`PyMarshal_WriteLongToFile`
- * :c:func:`PyMarshal_WriteObjectToFile`
- * :c:func:`PyMarshal_ReadObjectFromString`
- * :c:func:`PyMarshal_WriteObjectToString`
- * the ``Py_MARSHAL_VERSION`` macro
-
- These are not part of the :ref:`limited API <limited-api-list>`.
-
- Patch by Victor Stinner.
-
- - bpo-45434: Remove the ``pystrhex.h`` header file. It only contains private
- functions. C extensions should only include the main ``<Python.h>`` header
- file. Patch by Victor Stinner.
-
- - bpo-45440: Remove the ``Py_FORCE_DOUBLE()`` macro. It was used by the
- ``Py_IS_INFINITY()`` macro. Patch by Victor Stinner.
-
- - bpo-45434: ``<Python.h>`` no longer includes the header files
- ``<stdlib.h>``, ``<stdio.h>``, ``<errno.h>`` and ``<string.h>`` when the
- ``Py_LIMITED_API`` macro is set to ``0x030b0000`` (Python 3.11) or higher.
- C extensions should explicitly include the header files after ``#include
- <Python.h>``. Patch by Victor Stinner.
-
- - bpo-41123: Remove ``Py_UNICODE_COPY()`` and ``Py_UNICODE_FILL()`` macros,
- deprecated since Python 3.3. Use ``PyUnicode_CopyCharacters()`` or
- ``memcpy()`` (``wchar_t*`` string), and ``PyUnicode_Fill()`` functions
- instead. Patch by Victor Stinner.
-
- - bpo-45412: Remove the following math macros using the ``errno`` variable:
-
- * ``Py_ADJUST_ERANGE1()``
- * ``Py_ADJUST_ERANGE2()``
- * ``Py_OVERFLOWED()``
- * ``Py_SET_ERANGE_IF_OVERFLOW()``
- * ``Py_SET_ERRNO_ON_MATH_ERROR()``
-
- Patch by Victor Stinner.
-
- - bpo-45395: Custom frozen modules (the array set to
- ``PyImport_FrozenModules``) are now treated as additions, rather than
- replacing all the default frozen modules. Frozen stdlib modules can still
- be disabled by setting the "code" field of the custom array entry to NULL.
-
- - bpo-43760: Add new :c:func:`PyThreadState_EnterTracing`, and
- :c:func:`PyThreadState_LeaveTracing` functions to the limited C API to
- suspend and resume tracing and profiling. Patch by Victor Stinner.
-
- - bpo-44220: :c:var:`PyStructSequence_UnnamedField` is added to the Stable
- ABI.
-
-
- What's New in Python 3.11.0 alpha 1?
- ====================================
-
- *Release date: 2021-10-05*
-
- Security
- --------
-
- - bpo-42278: Replaced usage of :func:`tempfile.mktemp` with
- :class:`~tempfile.TemporaryDirectory` to avoid a potential race condition.
-
- - bpo-44600: Fix incorrect line numbers while tracing some failed patterns
- in :ref:`match <match>` statements. Patch by Charles Burkland.
-
- - 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.
-
- - 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.
-
- - 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-43760: The number of hardware branches per instruction dispatch is
- reduced from two to one by adding a special instruction for tracing. Patch
- by Mark Shannon.
-
- - bpo-45061: Add a deallocator to the bool type to detect refcount bugs in C
- extensions which call Py_DECREF(Py_True) or Py_DECREF(Py_False) by
- mistake. Detect also refcount bugs when the empty tuple singleton or the
- Unicode empty string singleton is destroyed by mistake. Patch by Victor
- Stinner.
-
- - bpo-24076: sum() was further optimised for summing up single digit
- integers.
-
- - bpo-45190: Update Unicode databases to Unicode 14.0.0.
-
- - bpo-45167: Fix deepcopying of :class:`types.GenericAlias` objects.
-
- - bpo-45155: :meth:`int.to_bytes` and :meth:`int.from_bytes` now take a
- default value of ``"big"`` for the ``byteorder`` argument.
- :meth:`int.to_bytes` also takes a default value of ``1`` for the
- ``length`` argument.
-
- - 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-45121: Fix issue where ``Protocol.__init__`` raises ``RecursionError``
- when it's called directly or via ``super()``. Patch provided by Yurii
- Karabas.
-
- - bpo-44348: The deallocator function of the :exc:`BaseException` type now
- uses the trashcan mechanism to prevent stack overflow. For example, when a
- :exc:`RecursionError` instance is raised, it can be linked to another
- RecursionError through the ``__context__`` attribute or the
- ``__traceback__`` attribute, and then a chain of exceptions is created.
- When the chain is destroyed, nested deallocator function calls can crash
- with a stack overflow if the chain is too long compared to the available
- stack memory. Patch by Victor Stinner.
-
- - 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-1514420: Interpreter no longer attempts to open files with names in
- angle brackets (like "<string>" or "<stdin>") when formatting an
- exception.
-
- - bpo-41031: Match C and Python code formatting of unprintable exceptions
- and exceptions in the :mod:`__main__` module.
-
- - 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.
- Patch by Victor Stinner.
-
- - 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-34561: List sorting now uses the merge-ordering strategy from Munro
- and Wild's ``powersort()``. Unlike the former strategy, this is provably
- near-optimal in the entropy of the distribution of run lengths. Most uses
- of ``list.sort()`` probably won't see a significant time difference, but
- may see significant improvements in cases where the former strategy was
- exceptionally poor. However, as these are all fast linear-time
- approximations to a problem that's inherently at best quadratic-time to
- solve truly optimally, it's also possible to contrive cases where the
- former strategy did better.
-
- - bpo-45056: Compiler now removes trailing unused constants from co_consts.
-
- - bpo-45020: Add a new command line option, "-X frozen_modules=[on|off]" to
- opt out of (or into) using optional frozen modules. This defaults to "on"
- (or "off" if it's running out of the source tree).
-
- - bpo-45012: In :mod:`posix`, release GIL during ``stat()``, ``lstat()``,
- and ``fstatat()`` syscalls made by :func:`os.DirEntry.stat`. Patch by
- Stanisław Skonieczny.
-
- - 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 Donghee 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-24234: Implement the :meth:`__bytes__` special method on the
- :class:`bytes` type, so a bytes object ``b`` passes an ``isinstance(b,
- typing.SupportsBytes)`` check.
-
- - bpo-24234: Implement the :meth:`__complex__` special method on the
- :class:`complex` type, so a complex number ``z`` passes an ``isinstance(z,
- typing.SupportsComplex)`` check.
-
- - 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-44945: Specialize the BINARY_ADD instruction using the PEP 659
- machinery. Adds five new instructions:
-
- * BINARY_ADD_ADAPTIVE
- * BINARY_ADD_FLOAT
- * BINARY_ADD_INT
- * BINARY_ADD_UNICODE
- * BINARY_ADD_UNICODE_INPLACE_FAST
-
- - bpo-44929: Fix some edge cases of ``enum.Flag`` string representation in
- the REPL. Patch by Pablo Galindo.
-
- - bpo-44914: Class version tags are no longer recycled.
-
- This means that a version tag serves as a unique identifier for the state
- of a class. We rely on this for effective specialization of the LOAD_ATTR
- and other instructions.
-
- - bpo-44698: Restore behaviour of complex exponentiation with integer-valued
- exponent of type :class:`float` or :class:`complex`.
-
- - bpo-44895: A debug variable :envvar:`PYTHONDUMPREFSFILE` is added for
- creating a dump file which is generated by :option:`--with-trace-refs`.
- Patch by Donghee Na.
-
- - bpo-44900: Add five superinstructions for PEP 659 quickening:
-
- * LOAD_FAST LOAD_FAST
- * STORE_FAST LOAD_FAST
- * LOAD_FAST LOAD_CONST
- * LOAD_CONST LOAD_FAST
- * STORE_FAST STORE_FAST
-
- - bpo-44889: Initial implementation of adaptive specialization of
- ``LOAD_METHOD``. The following specialized forms were added:
-
- * ``LOAD_METHOD_CACHED``
-
- * ``LOAD_METHOD_MODULE``
-
- * ``LOAD_METHOD_CLASS``
-
- - bpo-44890: Specialization stats are always collected in debug builds.
-
- - bpo-44885: Correct the ast locations of f-strings with format specs and
- repeated expressions. Patch by Pablo Galindo
-
- - bpo-44878: Remove the loop from the bytecode interpreter. All instructions
- end with a DISPATCH macro, so the loop is now redundant.
-
- - bpo-44878: Remove switch statement for interpreter loop when using
- computed gotos. This makes sure that we only have one dispatch table in
- the interpreter.
-
- - bpo-44874: Deprecate the old trashcan macros
- (``Py_TRASHCAN_SAFE_BEGIN``/``Py_TRASHCAN_SAFE_END``). They should be
- replaced by the new macros ``Py_TRASHCAN_BEGIN`` and ``Py_TRASHCAN_END``.
-
- - 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-44826: Initial implementation of adaptive specialization of STORE_ATTR
-
- Three specialized forms of STORE_ATTR are added:
-
- * STORE_ATTR_SLOT
-
- * STORE_ATTR_SPLIT_KEYS
-
- * STORE_ATTR_WITH_HINT
-
- - 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-44821: Create instance dictionaries (__dict__) eagerly, to improve
- regularity of object layout and assist specialization.
-
- - 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-44725: Expose specialization stats in python via
- :func:`_opcode.get_specialization_stats`.
-
- - bpo-44717: Improve AttributeError on circular imports of submodules.
-
- - 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 :data:`NotImplemented`.
-
- - bpo-44661: Update ``property_descr_set`` to use vectorcall if possible.
- Patch by Donghee Na.
-
- - 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-44611: On Windows, :func:`os.urandom`: uses BCryptGenRandom API
- instead of CryptGenRandom API which is deprecated from Microsoft Windows
- API. Patch by Donghee Na.
-
- - bpo-44635: Convert ``None`` to ``type(None)`` in the union type
- constructor.
-
- - bpo-26280: Implement adaptive specialization for BINARY_SUBSCR
-
- Three specialized forms of BINARY_SUBSCR are added:
-
- * BINARY_SUBSCR_LIST_INT
-
- * BINARY_SUBSCR_TUPLE_INT
-
- * BINARY_SUBSCR_DICT
-
- - 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-41972: Tuned the string-searching algorithm of fastsearch.h to have a
- shorter inner loop for most cases.
-
- - bpo-44590: All necessary data for executing a Python function (local
- variables, stack, etc) is now kept in a per-thread stack. Frame objects
- are lazily allocated on demand. This increases performance by about 7% on
- the standard benchmark suite. Introspection and debugging are unaffected
- as frame objects are always available when needed. Patch by Mark Shannon.
-
- - 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-43895: An obsolete internal cache of shared object file handles added
- in 1995 that attempted, but did not guarantee, that a .so would not be
- dlopen'ed twice to work around flaws in mid-1990s posix-ish operating
- systems has been removed from dynload_shlib.c.
-
- - 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-43950: Code objects can now provide the column information for
- instructions when available. This is levaraged during traceback printing
- to show the expressions responsible for errors.
-
- Contributed by Pablo Galindo, Batuhan Taskaya and Ammar Askar as part of
- :pep:`657`.
-
- - 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-43908: Heap types with the :c:macro:`Py_TPFLAGS_IMMUTABLETYPE` flag
- can now inherit the :pep:`590` vectorcall protocol. Previously, this was
- only possible for :ref:`static types <static-types>`. Patch by Erlend E.
- Aasland.
-
- - bpo-44553: Implement GC methods for ``types.Union`` to break reference
- cycles and prevent memory leaks.
-
- - bpo-44490: Add ``__parameters__`` attribute and ``__getitem__`` operator
- to ``types.Union``. Patch provided by Yurii Karabas.
-
- - 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-44486: Modules will always have a dictionary, even when created by
- ``types.ModuleType.__new__()``
-
- - bpo-44472: Fix ltrace functionality when exceptions are raised. Patch by
- Pablo Galindo
-
- - bpo-12022: A :exc:`TypeError` is now raised instead of an
- :exc:`AttributeError` in :keyword:`with` and :keyword:`async with`
- statements for objects which do not support the :term:`context manager` or
- :term:`asynchronous context manager` protocols correspondingly.
-
- - 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-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-44376: Exact integer exponentiation (like ``i**2`` or ``pow(i, 2)``)
- with a small exponent is much faster, due to reducing overhead in such
- cases.
-
- - bpo-44313: Directly imported objects and modules (through import and from
- import statements) don't generate ``LOAD_METHOD``/``CALL_METHOD`` for
- directly accessed objects on their namespace. They now use the regular
- ``LOAD_ATTR``/``CALL_FUNCTION``.
-
- - bpo-44338: Implement adaptive specialization for LOAD_GLOBAL
-
- Two specialized forms of LOAD_GLOBAL are added:
-
- * LOAD_GLOBAL_MODULE
-
- * LOAD_GLOBAL_BUILTIN
-
- - bpo-44368: Improve syntax errors for invalid "as" targets. 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-44337: Initial implementation of adaptive specialization of LOAD_ATTR
-
- Four specialized forms of LOAD_ATTR are added:
-
- * LOAD_ATTR_SLOT
-
- * LOAD_ATTR_SPLIT_KEYS
-
- * LOAD_ATTR_WITH_HINT
-
- * LOAD_ATTR_MODULE
-
- - bpo-44335: Fix a regression when identifying incorrect characters in
- syntax errors. Patch by Pablo Galindo
-
- - bpo-43693: Computation of the offsets of cell variables is done in the
- compiler instead of at runtime. This reduces the overhead of handling cell
- and free variables, especially in the case where a variable is both an
- argument and cell variable.
-
- - bpo-44317: Improve tokenizer error with improved locations. 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-43413: Constructors of subclasses of some builtin classes (e.g.
- :class:`tuple`, :class:`list`, :class:`frozenset`) no longer accept
- arbitrary keyword arguments. [reverted in 3.11a4] Subclass of :class:`set`
- can now define a ``__new__()`` method with additional keyword parameters
- without overriding also ``__init__()``.
-
- - bpo-43667: Improve Unicode support in non-UTF locales on Oracle Solaris.
- This issue does not affect other Solaris systems.
-
- - bpo-43693: A new opcode MAKE_CELL has been added that effectively moves
- some of the work done on function entry into the compiler and into the
- eval loop. In addition to creating the required cell objects, the new
- opcode converts relevant arguments (and other locals) to cell variables on
- function entry.
-
- - 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-43693: ``PyCodeObject`` gained ``co_fastlocalnames`` and
- ``co_fastlocalkinds`` as the authoritative source of fast locals info.
- Marshaled code objects have changed accordingly.
-
- - 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-44187: Implement quickening in the interpreter. This offers no
- advantages as yet, but is an enabler of future optimizations. See PEP 659
- for full explanation.
-
- - 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-44156: String caches in ``compile.c`` are now subinterpreter
- compatible.
-
- - 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-44032: Move 'fast' locals and other variables from the frame object to
- a per-thread datastack.
-
- - bpo-44114: Fix incorrect dictkeys_reversed and dictitems_reversed function
- signatures in C code, which broke webassembly builds.
-
- - bpo-44110: Improve :func:`str.__getitem__` error message
-
- - bpo-26110: Add ``CALL_METHOD_KW`` opcode to speed up method calls with
- keyword arguments. Idea originated from PyPy. A side effect is executing
- ``CALL_METHOD`` is now branchless in the evaluation loop.
-
- - bpo-28307: Compiler now optimizes simple C-style formatting with literal
- format containing only format codes %s, %r and %a by converting them to
- f-string expressions.
-
- - bpo-43149: Correct the syntax error message regarding multiple exception
- types to not refer to "exception groups". Patch by Pablo Galindo
-
- - bpo-43822: The parser will prioritize tokenizer errors over custom syntax
- errors when raising exceptions. Patch by Pablo Galindo.
-
- - bpo-40222: "Zero cost" exception handling.
-
- * Uses a lookup table to determine how to handle exceptions.
- * Removes SETUP_FINALLY and POP_TOP block instructions, eliminating the runtime overhead of try statements.
- * Reduces the size of the frame object by about 60%.
-
- Patch by Mark Shannon
-
- - bpo-43918: Document the signature and ``default`` argument in the
- docstring of the new ``anext`` builtin.
-
- - 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-43879: Add native_thread_id to PyThreadState. Patch by Gabriele N.
- Tornetta.
-
- - bpo-43693: Compute cell offsets relative to locals in compiler. Allows the
- interpreter to treats locals and cells a single array, which is slightly
- more efficient. Also make the LOAD_CLOSURE opcode an alias for LOAD_FAST.
- Preserving LOAD_CLOSURE helps keep bytecode a bit more readable.
-
- - bpo-17792: More accurate error messages for access of unbound locals or
- free vars.
-
- - bpo-28146: Fix a confusing error message in :func:`str.format`.
-
- - 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`.
-
- - bpo-39091: Fix crash when using passing a non-exception to a generator's
- ``throw()`` method. Patch by Noah Oxer
-
- - bpo-33346: Asynchronous comprehensions are now allowed inside
- comprehensions in asynchronous functions. Outer comprehensions implicitly
- become asynchronous.
-
- Library
- -------
-
- - bpo-45371: Fix clang rpath issue in ``distutils``. The UnixCCompiler now
- uses correct clang option to add a runtime library directory (rpath) to a
- shared library.
-
- - 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 (:const:`time.CLOCK_MONOTONIC`) for
- the timeout, rather than using the system clock
- (:const:`time.CLOCK_REALTIME`), to not be affected by system clock
- changes. Patch by Victor Stinner.
-
- - 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-21302: In Unix operating systems, :func:`time.sleep` now uses the
- ``nanosleep()`` function, if ``clock_nanosleep()`` is not available but
- ``nanosleep()`` is available. ``nanosleep()`` allows to sleep with
- nanosecond precision.
-
- - bpo-21302: On Windows, :func:`time.sleep` now uses a waitable timer which
- has a resolution of 100 nanoseconds (10\ :sup:`-7` seconds). Previously,
- it had a resolution of 1 millisecond (10\ :sup:`-3` seconds). Patch by
- Benjamin Szőke and 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-45225: use map function instead of genexpr in capwords.
-
- - 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-20524: Improves error messages on ``.format()`` operation for ``str``,
- ``float``, ``int``, and ``complex``. New format now shows the problematic
- pattern and the object type.
-
- - bpo-45168: Change :func:`dis.dis` output to omit op arg values that cannot
- be resolved due to ``co_consts``, ``co_names`` etc not being provided.
- Previously the oparg itself was repeated in the value field, which is not
- useful and can be confusing.
-
- - bpo-21302: In Unix operating systems, :func:`time.sleep` now uses the
- ``clock_nanosleep()`` function, if available, which allows to sleep for an
- interval specified with nanosecond precision.
-
- - bpo-45173: Remove from the :mod:`configparser` module: the
- :class:`!SafeConfigParser` class, the :attr:`!filename` property of the
- :class:`~configparser.ParsingError` class, the :meth:`!readfp` method of
- the :class:`~configparser.ConfigParser` class, deprecated since Python
- 3.2.
-
- Patch by Hugo van Kemenade.
-
- - bpo-44987: Pure ASCII strings are now normalized in constant time by
- :func:`unicodedata.normalize`. Patch by Donghee Na.
-
- - 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-45162: Remove many old deprecated :mod:`unittest` features:
-
- * "``fail*``" and "``assert*``" aliases of :class:`~unittest.TestCase` methods.
- * Broken from start :class:`~unittest.TestCase` method ``assertDictContainsSubset()``.
- * Ignored :meth:`<unittest.TestLoader.loadTestsFromModule> TestLoader.loadTestsFromModule` parameter *use_load_tests*.
- * Old alias ``_TextTestResult`` of :class:`~unittest.TextTestResult`.
-
- - bpo-38371: Remove the deprecated ``split()`` method of
- :class:`_tkinter.TkappType`. Patch by Erlend E. Aasland.
-
- - bpo-20499: Improve the speed and accuracy of statistics.pvariance().
-
- - bpo-45132: Remove :meth:`~object.__getitem__` methods of
- :class:`xml.dom.pulldom.DOMEventStream`, :class:`wsgiref.util.FileWrapper`
- and :class:`fileinput.FileInput`, deprecated since Python 3.9.
-
- Patch by Hugo van Kemenade.
-
- - bpo-45129: Due to significant security concerns, the *reuse_address*
- parameter of :meth:`asyncio.loop.create_datagram_endpoint`, disabled in
- Python 3.9, is now entirely removed. This is because of the behavior of
- the socket option ``SO_REUSEADDR`` in UDP.
-
- Patch by Hugo van Kemenade.
-
- - bpo-45124: The ``bdist_msi`` command, deprecated in Python 3.9, is now
- removed.
-
- Use ``bdist_wheel`` (wheel packages) instead.
-
- Patch by Hugo van Kemenade.
-
- - bpo-30856: :class:`unittest.TestResult` methods
- :meth:`~unittest.TestResult.addFailure`,
- :meth:`~unittest.TestResult.addError`,
- :meth:`~unittest.TestResult.addSkip` and
- :meth:`~unittest.TestResult.addSubTest` are now called immediately after
- raising an exception in test or finishing a subtest. Previously they were
- called only after finishing the test clean up.
-
- - bpo-45034: Changes how error is formatted for ``struct.pack`` with ``'H'``
- and ``'h'`` modes and too large / small numbers. Now it shows the actual
- numeric limits, while previously it was showing arithmetic expressions.
-
- - bpo-25894: :mod:`unittest` now always reports skipped and failed subtests
- separately: separate characters in default mode and separate lines in
- verbose mode. Also the test description is now output for errors in test
- method, class and module cleanups.
-
- - bpo-45081: Fix issue when dataclasses that inherit from
- ``typing.Protocol`` subclasses have wrong ``__init__``. Patch provided by
- Yurii Karabas.
-
- - bpo-45085: The ``binhex`` module, deprecated in Python 3.9, is now
- removed. The following :mod:`binascii` functions, deprecated in Python
- 3.9, are now also removed:
-
- * ``a2b_hqx()``, ``b2a_hqx()``;
- * ``rlecode_hqx()``, ``rledecode_hqx()``.
-
- The :func:`binascii.crc_hqx` function remains available.
-
- Patch by Victor Stinner.
-
- - bpo-40360: The :mod:`lib2to3` package is now deprecated and may not be
- able to parse Python 3.10 or newer. See the :pep:`617` (New PEG parser for
- CPython). Patch by Victor Stinner.
-
- - bpo-45075: Rename :meth:`traceback.StackSummary.format_frame` to
- :meth:`traceback.StackSummary.format_frame_summary`. This method was added
- for 3.11 so it was not released yet.
-
- Updated code and docs to better distinguish frame and FrameSummary.
-
- - bpo-31299: Add option to completely drop frames from a traceback by
- returning ``None`` from a :meth:`~traceback.StackSummary.format_frame`
- override.
-
- - 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-45021: Fix a potential deadlock at shutdown of forked children when
- using :mod:`concurrent.futures` module
-
- - 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-45010: Remove support of special method ``__div__`` in
- :mod:`unittest.mock`. It is not used in Python 3.
-
- - bpo-39218: Improve accuracy of variance calculations by using ``x*x``
- instead of ``x**2``.
-
- - bpo-43613: Improve the speed of :func:`gzip.compress` and
- :func:`gzip.decompress` by compressing and decompressing at once in memory
- instead of in a streamed fashion.
-
- - bpo-37596: Ensure that :class:`set` and :class:`frozenset` objects are
- always :mod:`marshalled <marshal>` reproducibly.
-
- - bpo-44019: A new function ``operator.call`` has been added, such that
- ``operator.call(obj, *args, **kwargs) == obj(*args, **kwargs)``.
-
- - bpo-42255: :class:`webbrowser.MacOSX` is deprecated and will be removed in
- Python 3.13. It is untested and undocumented and also not used by
- webbrowser itself. Patch by Donghee Na.
-
- - 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-39039: tarfile.open raises :exc:`~tarfile.ReadError` when a zlib error
- occurs during file extraction.
-
- - 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-41322: Added ``DeprecationWarning`` for tests and async tests that
- return a value!=None (as this may indicate an improperly written test, for
- example a test written as a generator function).
-
- - 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-44859: Improve error handling in :mod:`sqlite3` and raise more
- accurate exceptions.
-
- * :exc:`MemoryError` is now raised instead of :exc:`sqlite3.Warning` when memory is not enough for encoding a statement to UTF-8 in ``Connection.__call__()`` and ``Cursor.execute()``.
- * :exc:`UnicodEncodeError` is now raised instead of :exc:`sqlite3.Warning` when the statement contains surrogate characters in ``Connection.__call__()`` and ``Cursor.execute()``.
- * :exc:`TypeError` is now raised instead of :exc:`ValueError` for non-string script argument in ``Cursor.executescript()``.
- * :exc:`ValueError` is now raised for script containing the null character instead of truncating it in ``Cursor.executescript()``.
- * Correctly handle exceptions raised when getting boolean value of the result of the progress handler.
- * Add many tests covering different corner cases.
-
- - 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 :const:`~os.O_PATH` flag: ignore the
- :const:`~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-44839: :class:`MemoryError` raised in user-defined functions will now
- produce a ``MemoryError`` in :mod:`sqlite3`. :class:`OverflowError` will
- now be converted to :class:`~sqlite3.DataError`. Previously
- :class:`~sqlite3.OperationalError` was produced in these cases.
-
- - 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-44806: Non-protocol subclasses of :class:`typing.Protocol` ignore now
- the ``__init__`` method inherited from protocol base classes.
-
- - bpo-27275: :meth:`collections.OrderedDict.popitem` and
- :meth:`collections.OrderedDict.pop` no longer call ``__getitem__`` and
- ``__delitem__`` methods of the OrderedDict subclasses.
-
- - 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-44771: Added ``importlib.simple`` module implementing adapters from a
- low-level resources reader interface to a ``TraversableResources``
- interface. Legacy API (``path``, ``contents``, ...) is now supported
- entirely by the ``.files()`` API with a compatibility shim supplied for
- resource loaders without that functionality. Feature parity with
- ``importlib_resources`` 5.2.
-
- - bpo-44752: :mod:`rcompleter` does not call :func:`getattr` on
- :class:`property` objects to avoid the side-effect of evaluating the
- corresponding method.
-
- - bpo-44747: Refactor usage of ``sys._getframe`` in ``typing`` module. Patch
- provided by Yurii Karabas.
-
- - 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.
-
- - 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-44688: :meth:`sqlite3.Connection.create_collation` now accepts
- non-ASCII collation names. Patch by Erlend E. Aasland.
-
- - bpo-44690: Adopt *binacii.a2b_base64*'s strict mode in *base64.b64decode*.
-
- - 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-44686: Replace ``unittest.mock._importer`` with
- ``pkgutil.resolve_name``.
-
- - bpo-44353: Make ``NewType.__call__`` faster by implementing it in C. Patch
- provided by Yurii Karabas.
-
- - bpo-44682: Change the :mod:`pdb` *commands* directive to disallow setting
- commands for an invalid breakpoint and to display an appropriate error.
-
- - bpo-44353: Refactor ``typing.NewType`` from function into callable class.
- Patch provided by Yurii Karabas.
-
- - bpo-44678: Added a separate error message for discontinuous padding in
- *binascii.a2b_base64* strict mode.
-
- - 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-44638: Add a reference to the zipp project and hint as to how to use
- it.
-
- - 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-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-42799: In :mod:`fnmatch`, the cache size for compiled regex patterns
- (:func:`functools.lru_cache`) was bumped up from 256 to 32768, affecting
- functions: :func:`fnmatch.fnmatch`, :func:`fnmatch.fnmatchcase`,
- :func:`fnmatch.filter`.
-
- - 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-44569: Added the :func:`StackSummary.format_frame` function in
- :mod:`traceback`. This allows users to customize the way individual lines
- are formatted in tracebacks without re-implementing logic to handle
- recursive tracebacks.
-
- - bpo-44566: handle StopIteration subclass raised from
- @contextlib.contextmanager generator
-
- - bpo-44558: Make the implementation consistency of
- :func:`~operator.indexOf` between C and Python versions. Patch by Donghee
- Na.
-
- - bpo-41249: Fixes ``TypedDict`` to work with ``typing.get_type_hints()``
- and postponed evaluation of annotations across modules.
-
- - bpo-44554: Refactor argument processing in :func:`pdb.main` to simplify
- detection of errors in input loading and clarify behavior around module or
- script invocation.
-
- - bpo-34798: Break up paragraph about :class:`pprint.PrettyPrinter`
- construction parameters to make it easier to read.
-
- - bpo-44539: Added support for recognizing JPEG files without JFIF or Exif
- markers.
-
- - 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-44516: Update vendored pip to 21.1.3
-
- - bpo-42892: Fixed an exception thrown while parsing a malformed multipart
- email by :class:`email.message.EmailMessage`.
-
- - 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-44491: Allow clearing the :mod:`sqlite3` authorizer callback by
- passing :const:`None` to :meth:`~sqlite3.Connection.set_authorizer`. Patch
- by Erlend E. Aasland.
-
- - bpo-43977: Set the proper :c:macro:`Py_TPFLAGS_MAPPING` and
- :c:macro:`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-44471: A :exc:`TypeError` is now raised instead of an
- :exc:`AttributeError` in :meth:`contextlib.ExitStack.enter_context` and
- :meth:`contextlib.AsyncExitStack.enter_async_context` for objects which do
- not support the :term:`context manager` or :term:`asynchronous context
- manager` protocols correspondingly.
-
- - bpo-44404: :mod:`tkinter`'s ``after()`` method now supports callables
- without the ``__name__`` attribute.
-
- - bpo-41546: Make :mod:`pprint` (like the builtin ``print``) not attempt to
- write to ``stdout`` when it is ``None``.
-
- - 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-42972: The _thread.RLock type now fully implement the GC protocol: add
- a traverse function and the :c:macro:`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-38291: Importing typing.io or typing.re now prints a
- ``DeprecationWarning``.
-
- - bpo-37880: argparse actions store_const and append_const each receive a
- default value of None when the ``const`` kwarg is not provided.
- Previously, this raised a :exc:`TypeError`.
-
- - bpo-44389: Fix deprecation of :data:`ssl.OP_NO_TLSv1_3`
-
- - bpo-27827: :meth:`pathlib.PureWindowsPath.is_reserved` now identifies a
- greater range of reserved filenames, including those with trailing spaces
- or colons.
-
- - bpo-44395: Fix :meth:`~email.message.MIMEPart.as_string` to pass unixfrom
- properly. Patch by Donghee Na.
-
- - bpo-34266: Handle exceptions from parsing the arg of :mod:`pdb`'s
- run/restart command.
-
- - 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 ``distutils.sysconfig``
- because it behaves differently than the similar implementation in
- :mod:`sysconfig`.
-
- - bpo-35800: :class:`!smtpd.MailmanProxy` is now removed as it is unusable
- without an external module, ``mailman``. Patch by Donghee Na.
-
- - bpo-44357: Added a function that returns cube root of the given number
- :func:`math.cbrt`
-
- - bpo-44339: Change ``math.pow(±0.0, -math.inf)`` to return ``inf`` instead
- of raising ``ValueError``. This brings the special-case handling of
- ``math.pow`` into compliance with the IEEE 754 standard.
-
- - 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-43858: Added a function that returns a copy of a dict of logging
- levels: :func:`logging.getLevelNamesMapping`
-
- - bpo-44260: The :class:`random.Random` constructor no longer reads system
- entropy without need.
-
- - bpo-44254: On Mac, give turtledemo button text a color that works on both
- light or dark background. Programmers cannot control the latter.
-
- - bpo-44258: Support PEP 515 for Fraction's initialization from string.
-
- - bpo-44235: Remove deprecated functions in the :mod:`gettext`. Patch by
- Donghee Na.
-
- - 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-43216: Remove the :func:`@asyncio.coroutine <asyncio.coroutine>`
- :term:`decorator` enabling legacy generator-based coroutines to be
- compatible with async/await code; remove
- :class:`asyncio.coroutines.CoroWrapper` used for wrapping legacy coroutine
- objects in the debug mode. The decorator has been deprecated since Python
- 3.8 and the removal was initially scheduled for Python 3.10. Patch by
- Illia Volochii.
-
- - bpo-44210: Make importlib.metadata._meta.PackageMetadata public.
-
- - bpo-43643: Declare readers.MultiplexedPath.name as a property per the
- spec.
-
- - 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-4928: Documented existing behavior on POSIX: NamedTemporaryFiles are
- not deleted when creating process is killed with SIGKILL
-
- - bpo-44154: Optimize :class:`fractions.Fraction` pickling for large
- components.
-
- - 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-44150: Add optional *weights* argument to statistics.fmean().
-
- - bpo-44142: :func:`ast.unparse` will now drop the redundant parentheses
- when tuples used as assignment targets (e.g in for loops).
-
- - 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-44095: :class:`zipfile.Path` now supports :attr:`zipfile.Path.stem`,
- :attr:`zipfile.Path.suffixes`, and :attr:`zipfile.Path.suffix` attributes.
-
- - bpo-44077: It's now possible to receive the type of service (ToS), a.k.a.
- differentiated services (DS), a.k.a. differentiated services code point
- (DSCP) and explicit congestion notification (ECN) IP header fields with
- ``socket.IP_RECVTOS``.
-
- - 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-44081: :func:`ast.unparse` now doesn't use redundant spaces to
- separate ``lambda`` and the ``:`` if there are no parameters.
-
- - bpo-44061: Fix regression in previous release when calling
- :func:`pkgutil.iter_modules` with a list of :class:`pathlib.Path` objects
-
- - 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-40465: Remove random module features deprecated in Python 3.9.
-
- - 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-44002: :mod:`urllib.parse` now uses :func:`functool.lru_cache` for its
- internal URL splitting and quoting caches instead of rolling its own like
- its the '90s.
-
- The undocumented internal :mod:`urllib.parse` ``Quoted`` class API is now
- deprecated, for removal in 3.14.
-
- - 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-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-43666: AIX: ``Lib/_aix_support.get_platform()`` may fail in an AIX
- WPAR. The fileset bos.rte appears to have a builddate in both LPAR and
- WPAR so this fileset is queried rather than bos.mp64. To prevent a similar
- situation (no builddate in ODM) a value (9988) sufficient for completing a
- build is provided. Patch by M Felt.
-
- - 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-43612: :func:`zlib.compress` now accepts a wbits parameter which
- allows users to compress data as a raw deflate block without zlib headers
- and trailers in one go. Previously this required instantiating a
- ``zlib.compressobj``. It also provides a faster alternative to
- ``gzip.compress`` when wbits=31 is used.
-
- - bpo-43392: :func:`importlib._bootstrap._find_and_load` now implements a
- two-step check to avoid locking when modules have been already imported
- and are ready. This improves performance of repeated calls to
- :func:`importlib.import_module` and :func:`importlib.__import__`.
-
- - bpo-43318: Fix a bug where :mod:`pdb` does not always echo cleared
- breakpoints.
-
- - bpo-43234: Prohibit passing
- non-:class:`concurrent.futures.ThreadPoolExecutor` executors to
- :meth:`loop.set_default_executor` following a deprecation in Python 3.8.
- Patch by Illia Volochii.
-
- - bpo-43232: Prohibit previously deprecated potentially disruptive
- operations on :class:`asyncio.trsock.TransportSocket`. Patch by Illia
- Volochii.
-
- - bpo-30077: Added support for Apple's aifc/sowt pseudo-compression
-
- - bpo-42971: Add definition of ``errno.EQFULL`` for platforms that define
- this constant (such as macOS).
-
- - bpo-43086: Added a new optional :code:`strict_mode` parameter to
- *binascii.a2b_base64*. When :code:`scrict_mode` is set to :code:`True`,
- the *a2b_base64* function will accept only valid base64 content. More
- details about what "valid base64 content" is, can be found in the
- function's documentation.
-
- - bpo-43024: Improve the help signature of
- :func:`traceback.print_exception`, :func:`traceback.format_exception` and
- :func:`traceback.format_exception_only`.
-
- - bpo-33809: Add the :meth:`traceback.TracebackException.print` method which
- prints the formatted exception information.
-
- - bpo-42862: :mod:`sqlite3` now utilizes :meth:`functools.lru_cache` to
- implement the connection statement cache. As a small optimisation, the
- default statement cache size has been increased from 100 to 128. Patch by
- Erlend E. Aasland.
-
- - bpo-41818: Soumendra Ganguly: add termios.tcgetwinsize(),
- termios.tcsetwinsize().
-
- - bpo-40497: :meth:`subprocess.check_output` now raises :exc:`ValueError`
- when the invalid keyword argument *check* is passed by user code.
- Previously such use would fail later with a :exc:`TypeError`. Patch by
- Rémi Lapeyre.
-
- - bpo-37449: ``ensurepip`` now uses ``importlib.resources.files()``
- traversable APIs
-
- - bpo-40956: Use Argument Clinic in :mod:`sqlite3`. Patches by Erlend E.
- Aasland.
-
- - bpo-41730: ``DeprecationWarning`` is now raised when importing
- :mod:`tkinter.tix`, which has been deprecated in documentation since
- Python 3.6.
-
- - bpo-20684: Remove unused ``_signature_get_bound_param`` function from
- :mod:`inspect` - by Anthony Sottile.
-
- - 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-41137: Use utf-8 encoding while reading .pdbrc files. Patch by
- Srinivas Reddy Thatiparthy
-
- - bpo-24391: Improved reprs of :mod:`threading` synchronization objects:
- :class:`~threading.Semaphore`, :class:`~threading.BoundedSemaphore`,
- :class:`~threading.Event` and :class:`~threading.Barrier`.
-
- - bpo-5846: Deprecated the following :mod:`unittest` functions, scheduled
- for removal in Python 3.13:
-
- * :func:`~unittest.findTestCases`
- * :func:`~unittest.makeSuite`
- * :func:`~unittest.getTestCaseNames`
-
- Use :class:`~unittest.TestLoader` methods instead:
-
- * :meth:`unittest.TestLoader.loadTestsFromModule`
- * :meth:`unittest.TestLoader.loadTestsFromTestCase`
- * :meth:`unittest.TestLoader.getTestCaseNames`
-
- Patch by Erlend E. Aasland.
-
- - bpo-40563: Support pathlike objects on dbm/shelve. Patch by Hakan Çelik
- and Henry-Joseph Audéoud.
-
- - 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-39549: Whereas the code for reprlib.Repr had previously used a
- hardcoded string value of '...', this PR updates it to use of a
- “fillvalue” attribute, whose value defaults to '...' and can be reset in
- either individual reprlib.Repr instances or in subclasses thereof.
-
- - bpo-37022: :mod:`pdb` now displays exceptions from ``repr()`` with its
- ``p`` and ``pp`` commands.
-
- - bpo-38840: Fix ``test___all__`` on platforms lacking a shared memory
- implementation.
-
- - bpo-39359: Add one missing check that the password is a bytes object for
- an encrypted zipfile.
-
- - bpo-38741: :mod:`configparser`: using ']' inside a section header will no
- longer cut the section name short at the ']'
-
- - bpo-38415: Added missing behavior to
- :func:`contextlib.asynccontextmanager` to match
- :func:`contextlib.contextmanager` so decorated functions can themselves be
- decorators.
-
- - bpo-30256: Pass multiprocessing BaseProxy argument ``manager_owned``
- through AutoProxy.
-
- - bpo-27513: :func:`email.utils.getaddresses` now accepts
- :class:`email.header.Header` objects along with string values. Patch by
- Zackery Spytz.
-
- - bpo-16379: Add SQLite error code and name to :mod:`sqlite3` exceptions.
- Patch by Aviv Palivoda, Daniel Shahaf, and Erlend E. Aasland.
-
- - bpo-26228: pty.spawn no longer hangs on FreeBSD, macOS, and Solaris.
-
- - bpo-33349: lib2to3 now recognizes async generators everywhere.
-
- - bpo-29298: Fix ``TypeError`` when required subparsers without ``dest`` do
- not receive arguments. Patch by Anthony Sottile.
-
- 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.
-
- - 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-16580: Added code equivalents for the :meth:`int.to_bytes` and
- :meth:`int.from_bytes` methods, as well as tests ensuring that these code
- equivalents are valid.
-
- - 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-44740: Replaced occurrences 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-44651: Delete entry "coercion" in Doc/glossary.rst for its outdated
- definition.
-
- - 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-44631: Refactored the ``repr()`` code of the ``_Environ`` (os module).
-
- - bpo-44613: importlib.metadata is no longer provisional.
-
- - bpo-44558: Match the docstring and python implementation of
- :func:`~operator.countOf` to the behavior of its c implementation.
-
- - 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-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-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-13814: In the Design FAQ, answer "Why don't generators support the
- with statement?"
-
- - bpo-27752: Documentation of csv.Dialect is more descriptive.
-
- - bpo-44453: Fix documentation for the return type of
- :func:`sysconfig.get_path`.
-
- - 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.
-
- - 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.
-
- - bpo-41706: Fix docs about how methods like ``__add__`` are invoked when
- evaluating operator expressions.
-
- - bpo-41621: Document that :class:`collections.defaultdict` parameter
- ``default_factory`` defaults to None and is positional-only.
-
- - bpo-41576: document BaseException in favor of bare except
-
- - bpo-21760: The description for __file__ fixed. Patch by Furkan Onder
-
- - 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-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-45185: Enables ``TestEnumerations`` test cases in ``test_ssl`` suite.
-
- - 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-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-44895: libregrtest now clears the type cache later to reduce the risk
- of false alarm when checking for reference leaks. Previously, the type
- cache was cleared too early and libregrtest raised a false alarm about
- reference leaks under very specific conditions. Patch by Irit Katriel and
- Victor Stinner.
-
- - bpo-45042: Fixes that test classes decorated with
- ``@hashlib_helper.requires_hashdigest`` were skipped all the time.
-
- - bpo-25130: Add calls of :func:`gc.collect` in tests to support PyPy.
-
- - 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.
-
- - 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-42095: Added interop tests for Apple plists: generate plist files with
- Python plistlib and parse with Apple plutil; and the other way round.
-
- - 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
-
- - 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-44363: Account for address sanitizer in test_capi. test_capi now
- passes when run GCC address sanitizer.
-
- - bpo-44364: Add non integral tests for :func:`math.sqrt` function.
-
- - 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.
-
- - bpo-44131: Add test_frozenmain to test_embed to test the
- :c:func:`Py_FrozenMain` C function. Patch by Victor Stinner.
-
- - bpo-31904: Ignore error string case in 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.
-
- - bpo-30256: Add test for nested queues when using ``multiprocessing``
- shared objects ``AutoProxy[Queue]`` inside ``ListProxy`` and ``DictProxy``
-
- Build
- -----
-
- - bpo-45220: Avoid building with the Windows 11 SDK previews automatically.
- This may be overridden by setting the ``DefaultWindowsSDKVersion``
- environment variable before building.
-
- - bpo-45020: Freeze stdlib modules that are imported during startup. This
- provides significant performance improvements to startup. If necessary,
- use the previously added "-X frozen_modules=off" commandline option to
- force importing the source modules.
-
- - bpo-45188: Windows builds now regenerate frozen modules as the first part
- of the build. Previously the regeneration was later in the build, which
- would require it to be restarted if any modules had changed.
-
- - bpo-45163: Fixes Haiku platform 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.
-
- - bpo-45019: Generate lines in relevant files for frozen modules. Up until
- now each of the files had to be edited manually. This change makes it
- easier to add to and modify the frozen modules.
-
- - bpo-44340: Add support for building with clang thin lto via
- --with-lto=thin/full. Patch by Donghee Na and Brett Holman.
-
- - bpo-44535: Enable building using a Visual Studio 2022 install on Windows.
-
- - bpo-43298: Improved error message when building without a Windows SDK
- installed.
-
- - bpo-44381: The Windows build now accepts :envvar:`EnableControlFlowGuard`
- set to ``guard`` to enable CFG.
-
- - 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-45375: Fixes an assertion failure due to searching for the standard
- library in unnormalised paths.
-
- - bpo-45022: Update Windows release to include libffi 3.4.2
-
- - bpo-45007: Update to OpenSSL 1.1.1l in Windows build
-
- - bpo-44848: Upgrade Windows installer to use SQLite 3.36.0.
-
- - bpo-44572: Avoid consuming standard input in the :mod:`platform` module
-
- - bpo-44582: Accelerate speed of :mod:`mimetypes` initialization using a
- native implementation of the registry scan.
-
- - bpo-41299: Fix 16 milliseconds jitter when using timeouts in
- :mod:`threading`, such as with :meth:`threading.Lock.acquire` or
- :meth:`threading.Condition.wait`.
-
- - bpo-42686: Build :mod:`sqlite3` with math functions enabled. Patch by
- Erlend E. Aasland.
-
- - 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-45007: Update macOS installer builds to use OpenSSL 1.1.1l.
-
- - 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.
-
- - bpo-44848: Update macOS installer to use SQLite 3.36.0.
-
- - 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.
-
- - 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-43109: Allow --with-lto configure option to work with Apple-supplied
- Xcode or Command Line Tools.
-
- - bpo-34932: Add socket.TCP_KEEPALIVE support for macOS. Patch by Shane
- Harvey.
-
- IDLE
- ----
-
- - 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.
-
- - 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.
-
- - 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-44786: Fix a warning in regular expression in the c-analyzer script.
-
- - bpo-44967: pydoc now returns a non-zero status code when a module cannot
- be found.
-
- - bpo-44978: Allow the Argument Clinic tool to handle ``__complex__``
- special methods.
-
- - bpo-43425: Removed the 'test2to3' demo project that demonstrated using
- lib2to3 to support Python 2.x and Python 3.x from a single source in a
- distutils package. Patch by Donghee Na
-
- - bpo-44074: Make patchcheck automatically detect the correct base branch
- name (previously it was hardcoded to 'master')
-
- - bpo-20291: Added support for variadic positional parameters in Argument
- Clinic.
-
- C API
- -----
-
- - bpo-41710: The PyThread_acquire_lock_timed() function now clamps the
- timeout if it is too large, rather than aborting the process. Patch by
- Victor Stinner.
-
- - bpo-44687: :meth:`BufferedReader.peek` no longer raises :exc:`ValueError`
- when the entire file has already been buffered.
-
- - bpo-45116: Add the :c:macro:`Py_ALWAYS_INLINE` macro to ask the compiler
- to always inline a static inline function. The compiler can ignore it and
- decides to not inline the function. Patch by Victor Stinner.
-
- - bpo-45094: Add the :c:macro:`Py_NO_INLINE` macro to disable inlining on a
- function. Patch by Victor Stinner.
-
- - bpo-45061: Add a deallocator to the :class:`bool` type to detect refcount
- bugs in C extensions which call ``Py_DECREF(Py_True);`` or
- ``Py_DECREF(Py_False);`` by mistake. Patch by Victor Stinner.
-
- - bpo-42035: Add a new :c:func:`PyType_GetQualName` function to get type's
- qualified name.
-
- - bpo-41103: Reverts removal of the old buffer protocol because they are
- part of stable ABI.
-
- - bpo-44751: Remove ``crypt.h`` include from the public ``Python.h`` header.
-
- - 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.
-
- - bpo-44530: Added the ``co_qualname`` to the ``PyCodeObject`` structure to
- propagate the qualified name from the compiler to code objects.
-
- Patch by Gabriele N. Tornetta
-
- - 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-39947: Remove 4 private trashcan C API functions which were only kept
- for the backward compatibility of the stable ABI with Python 3.8 and
- older, since the trashcan API was not usable with the limited C API on
- Python 3.8 and older. The trashcan API was excluded from the limited C API
- in Python 3.9.
-
- Removed functions:
-
- * _PyTrash_deposit_object()
- * _PyTrash_destroy_chain()
- * _PyTrash_thread_deposit_object()
- * _PyTrash_thread_destroy_chain()
-
- The trashcan C API was never usable with the limited C API, since old
- trashcan macros accessed directly :c:type:`PyThreadState` members like
- ``_tstate->trash_delete_nesting``, whereas the :c:type:`PyThreadState`
- structure is opaque in the limited C API.
-
- Exclude also the ``PyTrash_UNWIND_LEVEL`` constant from the C API.
-
- Patch by Victor Stinner.
-
- - bpo-40939: Removed documentation for the removed ``PyParser_*`` C API.
-
- - bpo-43795: The list in :ref:`limited-api-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.
-
- - bpo-39573: Convert the :c:func:`Py_TYPE` and :c:func:`Py_SIZE` macros to
- static inline functions. The :c:func:`Py_SET_TYPE` and
- :c:func:`Py_SET_SIZE` functions must now be used to set an object type and
- size. Patch by Victor Stinner.
-
- - bpo-44263: The :c:func:`PyType_Ready` function now raises an error if a
- type is defined with the :c:macro:`Py_TPFLAGS_HAVE_GC` flag set but has no
- traverse function (:c:member:`PyTypeObject.tp_traverse`). Patch by Victor
- Stinner.
-
- - bpo-43795: The undocumented function :c:func:`Py_FrozenMain` is removed
- from the Limited API.
-
- - bpo-44113: Deprecate the following functions to configure the Python
- initialization:
-
- * :c:func:`!PySys_AddWarnOptionUnicode`
- * :c:func:`!PySys_AddWarnOption`
- * :c:func:`!PySys_AddXOption`
- * :c:func:`!PySys_HasWarnOptions`
- * :c:func:`!Py_SetPath`
- * :c:func:`!Py_SetProgramName`
- * :c:func:`!Py_SetPythonHome`
- * :c:func:`!Py_SetStandardStreamEncoding`
- * :c:func:`!_Py_SetProgramFullPath`
-
- Use the new :c:type:`PyConfig` API of the :ref:`Python Initialization
- Configuration <init-config>` instead (:pep:`587`).
-
- - bpo-44094: Remove ``PyErr_SetFromErrnoWithUnicodeFilename()``,
- ``PyErr_SetFromWindowsErrWithUnicodeFilename()``, and
- ``PyErr_SetExcFromWindowsErrWithUnicodeFilename()``. They are not
- documented and have been deprecated since Python 3.3.
-
- - bpo-43795: :c:func:`PyCodec_Unregister` is now properly exported as a
- function in the Windows Stable ABI DLL.
-
- - bpo-44029: Remove deprecated ``Py_UNICODE`` APIs: ``PyUnicode_Encode``,
- ``PyUnicode_EncodeUTF7``, ``PyUnicode_EncodeUTF8``,
- ``PyUnicode_EncodeUTF16``, ``PyUnicode_EncodeUTF32``,
- ``PyUnicode_EncodeLatin1``, ``PyUnicode_EncodeMBCS``,
- ``PyUnicode_EncodeDecimal``, ``PyUnicode_EncodeRawUnicodeEscape``,
- ``PyUnicode_EncodeCharmap``, ``PyUnicode_EncodeUnicodeEscape``,
- ``PyUnicode_TransformDecimalToASCII``, ``PyUnicode_TranslateCharmap``,
- ``PyUnicodeEncodeError_Create``, ``PyUnicodeTranslateError_Create``. See
- :pep:`393` and :pep:`624` for reference.
-
- - bpo-42035: Add a new :c:func:`PyType_GetName` function to get type's short
- name.
-
-
- 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 notation. 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 Donghee
- 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 :const:`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 ``distutils.command.install`` are now loaded
- from :mod:`sysconfig`.
-
- - bpo-41282: ``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 :c:macro:`Py_TPFLAGS_MAPPING` and
- :c:macro:`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:macro:`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 :c:macro:`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 Donghee 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 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 :ref:`struct sequence objects
- <struct-sequence-objects>`. 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 Donghee 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:`~object.__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
- :const:`~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 :data:`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 :const:`~os.O_EVTONLY`, :const:`~os.O_FSYNC`,
- :const:`~os.O_SYMLINK` and :const:`~os.O_NOFOLLOW_ANY` for macOS. Patch by
- Donghee Na.
-
- - bpo-42960: Adds :const:`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.util.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 :c:type:`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 Donghee 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 Donghee Na.
-
- - bpo-31904: Skip some asyncio tests on VxWorks.
-
- - bpo-42641: Enhance ``test_select.test_select()``: it now takes 500
- milliseconds 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 Donghee 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:macro:`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
- Donghee 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
- Donghee 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
- :const:`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 :c:type:`PyMethodDef`'s lifetime is managed through
- the ``self`` argument of a :c:type:`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 Donghee 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 Donghee 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 Donghee 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 Donghee 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 :const:`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: ``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: :const:`~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 Donghee 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 Donghee 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 Donghee Na.
-
- - bpo-32494: Update :mod:`dbm.gnu` to use gdbm_count if possible when
- calling :func:`len`. Patch by Donghee 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 Donghee 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
- milliseconds. 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 :const:`~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 :const:`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 Donghee 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 Donghee 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 Donghee 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
- Donghee Na.
-
- - bpo-13487: Avoid a possible *"RuntimeError: dictionary changed size during
- iteration"* from :func:`inspect.getmodule` when it tried to loop through
- :data:`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 ``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 Donghee 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
- :data:`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: ``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 Donghee 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 Donghee 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
- Donghee 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 Donghee 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 Donghee 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/history.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 Donghee 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 Donghee 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 Donghee 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 Donghee 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 Donghee 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 Donghee 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 Donghee 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
- Donghee 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/cmds/source.html.
-
- - 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 Donghee 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 Donghee 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 Donghee 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 :const:`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 :const:`~fcntl.F_OFD_GETLK`,
- :const:`~fcntl.F_OFD_SETLK` and :const:`~fcntl.F_OFD_SETLKW` to the
- :mod:`fcntl` module. Patch by Donghee 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 :const:`~os.CLD_KILLED` and :const:`~os.CLD_STOPPED` for
- :attr:`si_code`. Patch by Donghee 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 :const:`stat.S_IFDOOR`, :const:`stat.S_IFPORT`,
- :const:`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 Donghee 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 methods ``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 Donghee 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
- Donghee Na
-
- - bpo-37804: Remove the deprecated method ``threading.Thread.isAlive()``.
- Patch by Donghee 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: ``socket.IPPROTO_UDPLITE``, ``UDPLITE_SEND_CSCOV``, and
- ``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 Donghee
- 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 :samp:`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 :samp:`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 :const:`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 :c: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 :c:macro:`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-overridden 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, :data:`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 ``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 ``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 :const:`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
- :samp:`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 ``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 :func:`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 :const:`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 Donghee 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 ``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 ``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:`~object.__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 ``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 Donghee 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 :func:`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://web.archive.org/web/20180309043602/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 :samp:`sys.std{xxx}`
- 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 Donghee 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://web.archive.org/web/20180309043602/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 10 seconds.
-
- - 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 Donghee Na.
-
- - bpo-32018: inspect.signature should follow :pep:`8`, if the parameter has
- an annotation and a default value. Patch by Donghee 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: :const:`time.CLOCK_BOOTTIME`,
- :const:`time.CLOCK_PROF` and :const:`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 instead of hardcoded names 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 Donghee 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 Donghee 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
- Donghee 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 Donghee
- 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 :const:`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 :const:`socket.TCP_CONGESTION` (Linux 2.6.13) and
- :const:`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 false 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/pyperformance 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 Donghee 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 Donghee 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 Donghee 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
- Donghee 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 Donghee
- 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 :const:`socket.TCP_CONGESTION` (Linux 2.6.13) and
- :const:`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 false 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:macro:`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 Donghee 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 Donghee
- 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 false 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 :samp:`_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 false
- 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 ':samp:`font{xxx}`' 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.)**
|