]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
[3.14] gh-119132: Remove "experimental" tag from the CPython free-threading. (gh...
authorMiss Islington (bot) <31488909+miss-islington@users.noreply.github.com>
Mon, 16 Jun 2025 14:58:14 +0000 (16:58 +0200)
committerGitHub <noreply@github.com>
Mon, 16 Jun 2025 14:58:14 +0000 (14:58 +0000)
---------
(cherry picked from commit f0799795994bfd9ab0740c4d70ac54270991ba47)

Co-authored-by: Donghee Na <donghee.na@python.org>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
Co-authored-by: Peter Bierma <zintensitydev@gmail.com>
Co-authored-by: T. Wouters <thomas@python.org>
Doc/howto/free-threading-extensions.rst
Doc/howto/free-threading-python.rst
Doc/library/ctypes.rst
Doc/library/threading.rst
Doc/using/configure.rst
Lib/platform.py
Misc/NEWS.d/next/Build/2025-06-16-07-20-28.gh-issue-119132.fcI8s7.rst [new file with mode: 0644]
PCbuild/build.bat
Python/getversion.c
configure
configure.ac

index 175bb5dc831848d98f9da6c23177c61c1fa0552e..02b45879ccfacabcb7d719499e5611bd06a53b36 100644 (file)
@@ -6,8 +6,8 @@
 C API Extension Support for Free Threading
 ******************************************
 
-Starting with the 3.13 release, CPython has experimental support for running
-with the :term:`global interpreter lock` (GIL) disabled in a configuration
+Starting with the 3.13 release, CPython has support for running with
+the :term:`global interpreter lock` (GIL) disabled in a configuration
 called :term:`free threading`.  This document describes how to adapt C API
 extensions to support free threading.
 
index c33cef2c8e935b38c6c9310a0fe126fd3e714ef1..24069617c47ae18e1bc0bcb029ce202c39a95773 100644 (file)
@@ -1,18 +1,21 @@
 .. _freethreading-python-howto:
 
-**********************************************
-Python experimental support for free threading
-**********************************************
+*********************************
+Python support for free threading
+*********************************
 
-Starting with the 3.13 release, CPython has experimental support for a build of
+Starting with the 3.13 release, CPython has support for a build of
 Python called :term:`free threading` where the :term:`global interpreter lock`
 (GIL) is disabled.  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 multi-core hardware.
 
-**The free-threaded mode is experimental** and work is ongoing to improve it:
-expect some bugs and a substantial single-threaded performance hit.
+The free-threaded mode is working and continues to be improved, but
+there is some additional overhead in single-threaded workloads compared
+to the regular build. Additionally, third-party packages, in particular ones
+with an :term:`extension module`, may not be ready for use in a
+free-threaded build, and will re-enable the :term:`GIL`.
 
 This document describes the implications of free threading
 for Python code.  See :ref:`freethreading-extensions-howto` for information on
@@ -43,7 +46,7 @@ Identifying free-threaded Python
 ================================
 
 To check if the current interpreter supports free-threading, :option:`python -VV <-V>`
-and :data:`sys.version` contain "experimental free-threading build".
+and :data:`sys.version` contain "free-threading build".
 The new :func:`sys._is_gil_enabled` function can be used to check whether
 the GIL is actually disabled in the running process.
 
index 2ee4450698a1071a437ed01748bd1c7ba5df84ab..e00fe9c8145f1284e7fc8857755858d455720c32 100644 (file)
@@ -882,7 +882,7 @@ invalid non-\ ``NULL`` pointers would crash Python)::
 Thread safety without the GIL
 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 
-In Python 3.13, the :term:`GIL` may be disabled on :term:`experimental free threaded <free threading>` builds.
+From Python 3.13 onward, the :term:`GIL` can be disabled on :term:`free threaded <free threading>` builds.
 In ctypes, reads and writes to a single object concurrently is safe, but not across multiple objects:
 
    .. code-block:: pycon
index 7edcdcabdce1df61c56b270c66ec9f750c933902..52fefd590daf182d9858686a063911ea5caa3046 100644 (file)
@@ -102,7 +102,7 @@ CPU-bound tasks, as only one thread can execute Python bytecode at a time.
 Despite this, threads remain a useful tool for achieving concurrency in many
 scenarios.
 
-As of Python 3.13, experimental :term:`free-threaded <free threading>` builds
+As of Python 3.13, :term:`free-threaded <free threading>` builds
 can disable the GIL, enabling true parallel execution of threads, but this
 feature is not available by default (see :pep:`703`).
 
index 0b7eaf35a1e689f43173a34267d9212757254223..df81a33054914706bb6235157caa82fd759b0be5 100644 (file)
@@ -290,8 +290,8 @@ General Options
 
 .. option:: --disable-gil
 
-   Enables **experimental** support for running Python without the
-   :term:`global interpreter lock` (GIL): free threading build.
+   Enables support for running Python without the :term:`global interpreter
+   lock` (GIL): free threading build.
 
    Defines the ``Py_GIL_DISABLED`` macro and adds ``"t"`` to
    :data:`sys.abiflags`.
index 55e211212d42097e863337bdf204bc8b6f98ad31..7dd64de6025d2dc776f402858a20a60cc54582a1 100644 (file)
@@ -1198,7 +1198,7 @@ def _sys_version(sys_version=None):
         # CPython
         cpython_sys_version_parser = re.compile(
             r'([\w.+]+)\s*'  # "version<space>"
-            r'(?:experimental free-threading build\s+)?' # "free-threading-build<space>"
+            r'(?:free-threading build\s+)?' # "free-threading-build<space>"
             r'\(#?([^,]+)'  # "(#buildno"
             r'(?:,\s*([\w ]*)'  # ", builddate"
             r'(?:,\s*([\w :]*))?)?\)\s*'  # ", buildtime)<space>"
diff --git a/Misc/NEWS.d/next/Build/2025-06-16-07-20-28.gh-issue-119132.fcI8s7.rst b/Misc/NEWS.d/next/Build/2025-06-16-07-20-28.gh-issue-119132.fcI8s7.rst
new file mode 100644 (file)
index 0000000..3eb0805
--- /dev/null
@@ -0,0 +1 @@
+Remove "experimental" tag from the CPython free-threading build.
index 2f358991e484ce4a284e1a8d1dfc96ea08aea230..602357048867d682d07e06ce68817e6966cd173b 100644 (file)
@@ -33,7 +33,7 @@ echo.  -k  Attempt to kill any running Pythons before building (usually done
 echo.      automatically by the pythoncore project)
 echo.  --pgo          Build with Profile-Guided Optimization.  This flag
 echo.                 overrides -c and -d
-echo.  --disable-gil  Enable experimental support for running without the GIL.
+echo.  --disable-gil  Enable support for running without the GIL.
 echo.  --test-marker  Enable the test marker within the build.
 echo.  --regen        Regenerate all opcodes, grammar and tokens.
 echo.  --experimental-jit          Enable the experimental just-in-time compiler.
index 226b2f999a6bfd15607c8a7c4b2de89f70254904..8d8bc6ea70048c9986433f53610eeebb6d48e1b9 100644 (file)
@@ -15,7 +15,7 @@ void _Py_InitVersion(void)
     }
     initialized = 1;
 #ifdef Py_GIL_DISABLED
-    const char *buildinfo_format = "%.80s experimental free-threading build (%.80s) %.80s";
+    const char *buildinfo_format = "%.80s free-threading build (%.80s) %.80s";
 #else
     const char *buildinfo_format = "%.80s (%.80s) %.80s";
 #endif
index 015f2e7cac10bce4ccdd3e36df3898ae2ba64773..882e0409d60401ac4097c95c6ff8189b90f4f4d9 100755 (executable)
--- a/configure
+++ b/configure
@@ -1826,8 +1826,8 @@ Optional Features:
                           no)
   --enable-profiling      enable C-level code profiling with gprof (default is
                           no)
-  --disable-gil           enable experimental support for running without the
-                          GIL (default is no)
+  --disable-gil           enable support for running without the GIL (default
+                          is no)
   --enable-pystats        enable internal statistics gathering (default is no)
   --enable-optimizations  enable expensive, stable optimizations (PGO, etc.)
                           (default is no)
index fb48f39d336013ae41ad7faa0409c798fa2d42be..c26e5c7fd1ddc01c229e0c1e19283eee7a1ded5a 100644 (file)
@@ -1716,7 +1716,7 @@ ABI_THREAD=""
 # --disable-gil
 AC_MSG_CHECKING([for --disable-gil])
 AC_ARG_ENABLE([gil],
-  [AS_HELP_STRING([--disable-gil], [enable experimental support for running without the GIL (default is no)])],
+  [AS_HELP_STRING([--disable-gil], [enable support for running without the GIL (default is no)])],
   [AS_VAR_IF([enable_gil], [yes], [disable_gil=no], [disable_gil=yes])], [disable_gil=no]
 )
 AC_MSG_RESULT([$disable_gil])