Docs: add whatsnew for free-threading (#118679)

Co-authored-by: Łukasz Langa <lukasz@langa.pl>
This commit is contained in:
Sam Gross 2024-05-06 21:48:28 -04:00 committed by GitHub
parent e7dafdc224
commit 60bd111844
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 46 additions and 0 deletions

View File

@ -99,6 +99,12 @@ New typing features:
* :pep:`742`: :data:`typing.TypeIs` was added, providing more intuitive
type narrowing behavior.
Free-threading:
* :pep:`703`: CPython 3.13 has experimental support for running with the
:term:`global interpreter lock` disabled when built with ``--disable-gil``.
See :ref:`Free-threaded CPython <free-threaded-cpython>` for more details.
New Features
============
@ -1052,6 +1058,46 @@ See :pep:`744` for more details.
Tier 2 IR by Mark Shannon and Guido van Rossum.
Tier 2 optimizer by Ken Jin.)
.. _free-threaded-cpython:
Free-threaded CPython
=====================
CPython will run with the :term:`global interpreter lock` (GIL) disabled when
configured using the ``--disable-gil`` option at build time. This is an
experimental feature and therefore isn't used by default. Users need to
either compile their own interpreter, or install one of the experimental
builds that are marked as *free-threaded*.
Free-threaded execution allows for full utilization of the available
processing power by running threads in parallel on available CPU cores.
While not all software will benefit from this automatically, programs
designed with threading in mind will run faster on multicore hardware.
Work is still ongoing: expect some bugs and a substantial single-threaded
performance hit.
The free-threaded build still supports optionally running with GIL enabled at
runtime using the environment variable :envvar:`PYTHON_GIL` or the command line
option :option:`-X gil`.
* Use :func:`!sys._is_gil_enabled` to determine if the :term:`GIL` is enabled.
* Use ``sysconfig.get_config_var("Py_GIL_DISABLED")`` to identify CPython
builds configured with ``--disable-gil``.
C-API extensions need to be built specifically for the free-threaded build.
* Extensions that support running with the :term:`GIL` disabled should use
the :c:data:`Py_mod_gil` slot. Extensions using single-phase init should use
:c:func:`PyUnstable_Module_SetGIL` to indicate whether they support running
with the GIL disabled. Importing C extensions that don't use these mechanisms
will cause the GIL to be enabled unless the GIL was explicitly disabled with
the :envvar:`PYTHON_GIL` environment variable or the :option:`-X gil=0`
option.
* pip 24.1b1 or newer is required to install packages with C extensions in the
free-threaded build.
Deprecated