cpython/Misc/NEWS.d/3.12.0a3.rst

.. date: 2022-12-05-01-39-10
.. gh-issue: 100001
.. nonce: uD05Fc
.. release date: 2022-12-06
.. section: Security

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

..

.. date: 2022-11-11-12-50-28
.. gh-issue: 87604
.. nonce: OtwH5L
.. section: Security

Avoid publishing list of active per-interpreter audit hooks via the
:mod:`gc` module

..

.. date: 2022-11-30-11-09-40
.. gh-issue: 99891
.. nonce: 9VomwB
.. section: Core and Builtins

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

..

.. date: 2022-11-27-13-50-13
.. gh-issue: 91054
.. nonce: oox_kW
.. section: Core and Builtins

Add :c:func:`PyCode_AddWatcher` and :c:func:`PyCode_ClearWatcher` APIs to
register callbacks to receive notification on creation and destruction of
code objects.

..

.. date: 2022-11-26-04-00-41
.. gh-issue: 99729
.. nonce: A3ovwQ
.. section: Core and Builtins

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.

..

.. date: 2022-11-23-18-16-18
.. gh-issue: 99708
.. nonce: 7MuaiR
.. section: Core and Builtins

Fix bug where compiler crashes on an if expression with an empty body block.

..

.. date: 2022-11-21-11-27-14
.. gh-issue: 99578
.. nonce: DcKoBJ
.. section: Core and Builtins

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.

..

.. date: 2022-11-19-22-27-52
.. gh-issue: 99581
.. nonce: yKYPbf
.. section: Core and Builtins

Fixed a bug that was causing a buffer overflow if the tokenizer copies a
line missing the newline character from a file that is as long as the
available tokenizer buffer. Patch by Pablo galindo

..

.. date: 2022-11-18-11-24-25
.. gh-issue: 99553
.. nonce: F64h-n
.. section: Core and Builtins

Fix bug where an :exc:`ExceptionGroup` subclass can wrap a
:exc:`BaseException`.

..

.. date: 2022-11-16-21-35-30
.. gh-issue: 99547
.. nonce: p_c_bp
.. section: Core and Builtins

Add a function to os.path to check if a path is a junction: isjunction. Add
similar functionality to pathlib.Path as is_junction.

..

.. date: 2022-11-12-01-39-57
.. gh-issue: 99370
.. nonce: _cu32j
.. section: Core and Builtins

Fix zip path for venv created from a non-installed python on POSIX
platforms.

..

.. date: 2022-11-11-14-04-01
.. gh-issue: 99377
.. nonce: -CJvWn
.. section: Core and Builtins

Add audit events for thread creation and clear operations.

..

.. date: 2022-11-10-17-09-16
.. gh-issue: 98686
.. nonce: bmAKwr
.. section: Core and Builtins

Remove the ``BINARY_OP_GENERIC`` and ``COMPARE_OP_GENERIC``
"specializations".

..

.. date: 2022-11-10-16-53-40
.. gh-issue: 99298
.. nonce: HqRJES
.. section: Core and Builtins

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.

..

.. date: 2022-11-05-22-26-35
.. gh-issue: 99127
.. nonce: Btk7ih
.. section: Core and Builtins

Allow some features of :mod:`syslog` to the main interpreter only. Patch by
Donghee Na.

..

.. date: 2022-10-05-11-44-52
.. gh-issue: 91053
.. nonce: f5Bo3p
.. section: Core and Builtins

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.

..

.. date: 2022-09-17-17-08-01
.. gh-issue: 90994
.. nonce: f0H2Yd
.. section: Core and Builtins

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
.. date: 2021-08-29-15-55-19
.. nonce: z7nTA3
.. section: Core and Builtins

Optimize the :class:`range` object iterator. It is now smaller, faster
iteration of ranges containing large numbers. Smaller pickles, faster
unpickling.

..

.. bpo: 31718
.. date: 2020-02-23-23-48-15
.. nonce: sXko5e
.. section: Core and Builtins

Raise :exc:`ValueError` instead of :exc:`SystemError` when methods of
uninitialized :class:`io.IncrementalNewlineDecoder` objects are called.
Patch by Oren Milman.

..

.. bpo: 38031
.. date: 2019-09-04-19-09-49
.. nonce: Yq4L72
.. section: Core and Builtins

Fix a possible assertion failure in :class:`io.FileIO` when the opener
returns an invalid file descriptor.

..

.. date: 2022-12-05-13-40-15
.. gh-issue: 100001
.. nonce: 78ReYp
.. section: Library

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 ambiguous as to if it is a hex
replacement we put in or the characters r"\x" came through in the original
request line.

..

.. date: 2022-12-03-05-58-48
.. gh-issue: 99957
.. nonce: jLYYgN
.. section: Library

Add ``frozen_default`` parameter to :func:`typing.dataclass_transform`.

..

.. date: 2022-11-22-19-31-26
.. gh-issue: 79033
.. nonce: MW6kHq
.. section: Library

Fix :func:`asyncio.Server.wait_closed` to actually do what the docs promise
-- wait for all existing connections to complete, after closing the server.

..

.. date: 2022-11-21-17-56-18
.. gh-issue: 51524
.. nonce: nTykx8
.. section: Library

Fix bug when calling trace.CoverageResults with valid infile.

..

.. date: 2022-11-21-13-49-03
.. gh-issue: 99645
.. nonce: 9w1QKq
.. section: Library

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.

..

.. date: 2022-11-21-10-45-54
.. gh-issue: 99508
.. nonce: QqVbby
.. section: Library

Fix ``TypeError`` in ``Lib/importlib/_bootstrap_external.py`` while calling
``_imp.source_hash()``.

..

.. date: 2022-11-17-10-56-47
.. gh-issue: 66285
.. nonce: KvjlaB
.. section: Library

Fix :mod:`asyncio` to not share event loop and signal wakeupfd in forked
processes. Patch by Kumar Aditya.

..

.. date: 2022-11-15-10-55-24
.. gh-issue: 97001
.. nonce: KeQuVF
.. section: Library

Release the GIL when calling termios APIs to avoid blocking threads.

..

.. date: 2022-11-15-04-08-25
.. gh-issue: 92647
.. nonce: cZcjnJ
.. section: Library

Use final status of an enum to determine lookup or creation branch of
functional API.

..

.. date: 2022-11-14-08-21-56
.. gh-issue: 99388
.. nonce: UWSlwp
.. section: Library

Add *loop_factory* parameter to :func:`asyncio.run` to allow specifying a
custom event loop factory. Patch by Kumar Aditya.

..

.. date: 2022-11-13-02-06-56
.. gh-issue: 99341
.. nonce: 8-OlwB
.. section: Library

Fix :func:`ast.increment_lineno` to also cover :class:`ast.TypeIgnore` when
changing line numbers.

..

.. date: 2022-11-12-12-15-30
.. gh-issue: 99382
.. nonce: dKg_rW
.. section: Library

Check the number of arguments in substitution in user generics containing a
:class:`~typing.TypeVarTuple` and one or more :class:`~typing.TypeVar`.

..

.. date: 2022-11-12-12-10-23
.. gh-issue: 99379
.. nonce: bcGhxF
.. section: Library

Fix substitution of :class:`~typing.ParamSpec` followed by
:class:`~typing.TypeVarTuple` in generic aliases.

..

.. date: 2022-11-12-12-08-34
.. gh-issue: 99344
.. nonce: 7M_u8G
.. section: Library

Fix substitution of :class:`~typing.TypeVarTuple` and
:class:`~typing.ParamSpec` together in user generics.

..

.. date: 2022-11-09-12-36-12
.. gh-issue: 99284
.. nonce: 9p4J2l
.. section: Library

Remove ``_use_broken_old_ctypes_structure_semantics_`` old untested and
undocumented hack from :mod:`ctypes`.

..

.. date: 2022-11-09-03-34-29
.. gh-issue: 99201
.. nonce: lDJ7xI
.. section: Library

Fix :exc:`IndexError` when initializing the config variables on Windows if
``HAVE_DYNAMIC_LOADING`` is not set.

..

.. date: 2022-11-08-15-54-43
.. gh-issue: 99240
.. nonce: MhYwcz
.. section: Library

Fix double-free bug in Argument Clinic ``str_converter`` by extracting
memory clean up to a new ``post_parsing`` section.

..

.. date: 2022-11-08-11-18-51
.. gh-issue: 64490
.. nonce: VcBgrN
.. section: Library

Fix refcount error when arguments are packed to tuple in Argument Clinic.

..

.. date: 2022-11-02-23-47-07
.. gh-issue: 99029
.. nonce: 7uCiIB
.. section: Library

:meth:`pathlib.PurePath.relative_to` now treats naked Windows drive paths
as relative. This brings its behaviour in line with other parts of pathlib.

..

.. date: 2022-10-24-11-01-05
.. gh-issue: 98253
.. nonce: HVd5v4
.. section: Library

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.

..

.. date: 2022-10-19-18-31-53
.. gh-issue: 98458
.. nonce: vwyq7O
.. section: Library

Fix infinite loop in unittest when a self-referencing chained exception is
raised

..

.. date: 2022-10-19-13-37-23
.. gh-issue: 93453
.. nonce: wTB_sH
.. section: Library

: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.

..

.. date: 2022-10-16-18-52-00
.. gh-issue: 97966
.. nonce: humlhz
.. section: Library

On ``uname_result``, restored expectation that ``_fields`` and ``_asdict``
would include all six properties including ``processor``.

..

.. date: 2022-10-13-22-13-54
.. gh-issue: 98248
.. nonce: lwyygy
.. section: Library

Provide informative error messages in :func:`struct.pack` when its integral
arguments are not in range.

..

.. date: 2022-10-08-19-20-33
.. gh-issue: 98108
.. nonce: WUObqM
.. section: Library

``zipfile.Path`` is now pickleable if its initialization parameters were
pickleable (e.g. for file system paths).

..

.. date: 2022-10-08-15-41-00
.. gh-issue: 98098
.. nonce: DugpWi
.. section: Library

Created packages from zipfile and test_zipfile modules, separating
``zipfile.Path`` functionality.

..

.. date: 2022-10-02-12-38-22
.. gh-issue: 82836
.. nonce: OvYLmC
.. section: Library

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

..

.. date: 2022-09-14-21-56-15
.. gh-issue: 96828
.. nonce: ZoOY5G
.. section: Library

Add an :const:`~ssl.OP_ENABLE_KTLS` option for enabling the use of the kernel
TLS (kTLS). Patch by Illia Volochii.

..

.. date: 2022-08-06-12-18-07
.. gh-issue: 88863
.. nonce: NnqsuJ
.. section: Library

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.

..

.. date: 2022-04-23-03-46-37
.. gh-issue: 91078
.. nonce: 87-hkp
.. section: Library

:meth:`TarFile.next` now returns ``None`` when called on an empty tarfile.

..

.. bpo: 47220
.. date: 2022-04-04-22-54-11
.. nonce: L9jYu4
.. section: Library

Document the optional *callback* parameter of :class:`WeakMethod`. Patch by
Géry Ogam.

..

.. bpo: 44817
.. date: 2021-08-03-05-31-00
.. nonce: wOW_Qn
.. section: Library

Ignore WinError 53 (ERROR_BAD_NETPATH), 65 (ERROR_NETWORK_ACCESS_DENIED) and
161 (ERROR_BAD_PATHNAME) when using ntpath.realpath().

..

.. bpo: 41260
.. date: 2020-08-02-23-46-22
.. nonce: Q2BNzY
.. section: Library

Rename the *fmt* parameter of the pure Python implementation of
:meth:`datetime.date.strftime` to *format*.

..

.. bpo: 15999
.. date: 2019-08-30-10-48-53
.. nonce: QqsRRi
.. section: Library

All built-in functions now accept arguments of any type instead of just
``bool`` and ``int`` for boolean parameters.

..

.. date: 2022-12-02-17-08-08
.. gh-issue: 99931
.. nonce: wC46hE
.. section: Documentation

Use `sphinxext-opengraph <https://sphinxext-opengraph.readthedocs.io/>`__ to
generate `OpenGraph metadata <https://ogp.me/>`__.

..

.. date: 2022-11-26-21-43-05
.. gh-issue: 89682
.. nonce: DhKoTM
.. section: Documentation

Reworded docstring of the default ``__contains__`` to clarify that it
returns a :class:`bool`.

..

.. date: 2022-11-26-15-51-23
.. gh-issue: 88330
.. nonce: B_wFq8
.. section: Documentation

Improved the description of what a resource is in importlib.resources docs.

..

.. date: 2022-11-16-12-52-23
.. gh-issue: 92892
.. nonce: TS-P0j
.. section: Documentation

Document that calling variadic functions with ctypes requires special care
on macOS/arm64 (and possibly other platforms).

..

.. bpo: 41825
.. date: 2020-09-22-12-32-16
.. nonce: npcaCb
.. section: Documentation

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.

..

.. date: 2022-12-05-16-12-56
.. gh-issue: 99892
.. nonce: sz_eW8
.. section: Tests

Skip test_normalization() of test_unicodedata if it fails to download
NormalizationTest.txt file from pythontest.net. Patch by Victor Stinner.

..

.. date: 2022-12-01-18-55-18
.. gh-issue: 99934
.. nonce: Ox3Fqf
.. section: Tests

Correct test_marsh on (32 bit) x86: test_deterministic sets was failing.

..

.. date: 2022-11-23-18-32-16
.. gh-issue: 99741
.. nonce: q4R7NH
.. section: Tests

We've implemented multi-phase init (PEP 489/630/687) for the internal (for
testing) _xxsubinterpreters module.

..

.. date: 2022-11-21-19-21-30
.. gh-issue: 99659
.. nonce: 4gP0nm
.. section: Tests

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.

..

.. date: 2022-11-19-13-34-28
.. gh-issue: 99593
.. nonce: 8ZfCkj
.. section: Tests

Cover the Unicode C API with tests.

..

.. date: 2022-08-22-15-49-14
.. gh-issue: 96002
.. nonce: 4UE9UE
.. section: Tests

Add functional test for Argument Clinic.

..

.. date: 2022-11-24-02-58-10
.. gh-issue: 99086
.. nonce: DV_4Br
.. section: Build

Fix ``-Wimplicit-int``, ``-Wstrict-prototypes``, and
``-Wimplicit-function-declaration`` compiler warnings in
:program:`configure` checks.

..

.. date: 2022-11-15-08-40-22
.. gh-issue: 99337
.. nonce: 5LoQDE
.. section: Build

Fix a compilation issue with GCC 12 on macOS.

..

.. date: 2022-11-09-14-42-48
.. gh-issue: 99289
.. nonce: X7wFE1
.. section: Build

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.

..

.. date: 2022-11-03-08-10-49
.. gh-issue: 98872
.. nonce: gdsR8X
.. section: Build

Fix a possible fd leak in ``Programs/_freeze_module.c`` introduced in Python
3.11.

..

.. date: 2022-10-16-12-49-24
.. gh-issue: 88226
.. nonce: BsnQ4k
.. section: Build

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

..

.. date: 2022-11-23-17-17-16
.. gh-issue: 99345
.. nonce: jOa3-f
.. section: Windows

Use faster initialization functions to detect install location for Windows
Store package

..

.. date: 2022-11-21-19-50-18
.. gh-issue: 98629
.. nonce: tMmB_B
.. section: Windows

Fix initialization of :data:`sys.version` and ``sys._git`` on Windows

..

.. date: 2022-11-16-19-03-21
.. gh-issue: 99442
.. nonce: 6Dgk3Q
.. section: Windows

Fix handling in :ref:`launcher` when ``argv[0]`` does not include a file
extension.

..

.. bpo: 40882
.. date: 2020-06-06-15-10-37
.. nonce: UvNbdj
.. section: Windows

Fix a memory leak in :class:`multiprocessing.shared_memory.SharedMemory` on
Windows.

..

.. date: 2022-11-25-09-23-20
.. gh-issue: 87235
.. nonce: SifjCD
.. section: macOS

On macOS ``python3 /dev/fd/9 9</path/to/script.py`` failed for any script
longer than a couple of bytes.

..

.. date: 2022-11-01-10-32-23
.. gh-issue: 98940
.. nonce: W3YzC_
.. section: macOS

Fix ``Mac/Extras.install.py`` file filter bug.

..

.. date: 2022-08-11-09-58-15
.. gh-issue: 64490
.. nonce: PjwhM4
.. section: Tools/Demos

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.

..

.. date: 2022-12-05-17-30-13
.. gh-issue: 98680
.. nonce: FiMCxZ
.. section: C API

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

..

.. date: 2022-11-20-09-52-50
.. gh-issue: 99612
.. nonce: eBHksg
.. section: C API

Fix :c:func:`PyUnicode_DecodeUTF8Stateful` for ASCII-only data:
``*consumed`` was not set.

..

.. date: 2022-11-02-16-51-24
.. gh-issue: 47146
.. nonce: dsYDtI
.. section: C API

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.