Hasty Briefsbeta

Bilingual

Python removes "experimental" tag from the "nogil" free-threaded Python

a year ago
  • #Python
  • #Concurrency
  • #Free-threading
  • Not supporting the threading module or supporting it with caveats is a valid choice for libraries.
  • Running single-threaded tests under the free-threading build is unlikely to reveal issues, but using pytest-run-parallel can expose both false positives and real threading issues.
  • The Steering Council (SC) approves PEP 779, removing the 'experimental' tag from the free-threaded build in Python 3.14.
  • Key requirements for Phase II include C API/ABI compatibility, performance and memory guard rails, comprehensive documentation, and preparation for high-level concurrency primitives.
  • Performance degradation should stay within 10%, with up to 15% allowed after SC discussion. Memory usage increases must stay below 15%, with a hard limit of 20%.
  • Documentation must clearly outline guarantees, thread-safety, and concurrency-related details for users, developers, and CPython contributors.
  • The SC encourages the development of higher-level concurrency primitives, possibly within the `concurrent` package in the stdlib.
  • Benchmarking must be comprehensive and repeatable, using pyperformance and additional real-world workload benchmarks.
  • The SC recommends removing the 'experimental' tag from the CPython free-threading build in the 3.14 beta 3 release.
  • Future decisions about making free-threading the default or sole build will depend on community and CPython factors.