NEW YORK — What happened
The Python Steering Council has released the first pre-release binaries for Python 3.15, marking a major milestone in the phased removal of the Global Interpreter Lock (GIL). For the first time, official installer builds include an easily selectable free-threaded executable (`python3.15t`) that allows multiple CPU-bound threads to run in true parallel within a single interpreter instance without requiring manual source compilation.
Why it matters
The GIL has historically prevented Python from utilizing multi-core processors effectively within a single process. Removing it unlocks substantial performance gains for data processing, machine learning pipeline assembly, and web servers. However, removing the GIL breaks low-level memory assumptions made by decades of C and C++ extension modules, making ecosystem readiness the primary barrier to widespread adoption.
Deep dive
Free-threaded Python relies on a specialized garbage collector that uses thread-safe reference counting and specialized memory allocators. In Python 3.15, pure Python code runs seamlessly across cores, but problems arise when C extensions (such as legacy data science libraries) directly manipulate Python object internals without lock primitives. To address this, Python 3.15 introduces updated public C-APIs and runtime assertions that explicitly flag un-thread-safe extensions at import time. When an incompatible legacy module is imported into `python3.15t`, the runtime automatically re-enables a local GIL for that module to prevent memory corruption.
Report check
Core developers report that pure Python workloads achieve near-linear multi-core scaling (up to 7.2x performance scaling on an 8-core CPU). Independent tests confirm this claim for synthetic benchmarks and CPU-heavy pure-Python scripts. However, promotional claims suggesting that 'over 90 percent of top PyPI packages are fully thread-safe' are premature. Audit data from public package monitors shows that while top-tier libraries like NumPy and PyTorch have migrated, only roughly 42 percent of the top 500 C-extension packages have published official free-threaded wheels.
Open questions
Will package maintainers bear the ongoing maintenance burden of supporting both GIL and free-threaded builds, or will the ecosystem force a rapid deprecation of the traditional GIL build before Python 3.17?
