The Python Foundation released Python 3.13 in early October 2024. The major technical evolution of this version is the introduction of the "Free-threaded" mode defined in the implementation of PEP 703, which disables the GIL (Global Interpreter Lock).
In plain terms
Until now, a Python interpreter worked like a room with a single microphone being passed around: several threads could coexist, but only one spoke at a time, because the GIL prevented them from executing bytecode simultaneously. On a machine with several cores, that amounted to leaving part of the available power unused as soon as a program tried to compute in parallel. Python 3.13 makes this lock optional: the interpreter can now be compiled so as to spread the compute load across all available physical cores, without creating a block. The caveat is substantial — the feature is offered on an experimental basis, the GIL remains active by default, and libraries developed in C have to be adapted. This is therefore the beginning of a transition, not an immediate switchover.
Release fact sheet
| Parameter | Value |
|---|---|
| Version | Python 3.13 |
| Publisher | Python Foundation |
| Release | early October 2024 |
| Major technical evolution | introduction of the "Free-threaded" mode |
| Specification | PEP 703 — Making the Global Interpreter Lock Optional in CPython |
| Technical effect | disabling of the GIL (Global Interpreter Lock) |
| Implementation | compilation of the interpreter by the developer |
| Status | experimental — the GIL remains active by default |
| Ecosystem prerequisite | adaptation of libraries developed in C |
| Intended scope | threads running in true parallel on multicore architectures |
Technical explanation
1. What the GIL locked down — Historically, the GIL prevented several threads of the same Python interpreter from executing bytecode simultaneously.
2. The cost on multicore processors — This constraint severely limited the performance of parallel applications on multicore processors.
3. What Free-threaded mode allows — With this version, developers have the option of compiling the interpreter so as to spread the compute load across all available physical cores, without creating a block.
Before and after
| Aspect | Interpreter with the GIL | Free-threaded mode (Python 3.13) |
|---|---|---|
| Bytecode execution | a single thread of a given interpreter at a time | threads in true parallel |
| Cores used | performance of parallel applications severely limited on multicore processors | compute load spread across all available physical cores |
| Blocking | global lock on bytecode execution | no block introduced |
| Activation | default behaviour | dedicated compilation of the interpreter, on an experimental basis |
| Libraries developed in C | historical behaviour | adaptation required |
Causal chain
GIL historically present in the interpreter → a single thread executes bytecode at a time → performance of parallel applications severely limited on multicore processors → PEP 703: making the lock optional → Python 3.13 introduces Free-threaded mode → the interpreter can be compiled to spread computation across all available physical cores → adaptation of libraries developed in C → transition of the Python ecosystem towards full multicore optimisation
Limits and scope
Although this feature is offered on an experimental basis (the GIL remains active by default) and requires the adaptation of libraries developed in C, this release begins the transition of the Python ecosystem towards full multicore optimisation.
Sources
References verified during the factual audit of August 2026: these are the pages
against which the claims in this briefing have been checked.
