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.