CPython's JIT compiler to be removed after PEP 836 is withdrawn
Translated by a model; the original is in Russian.
The experimental JIT compiler that landed in CPython in 2024 for the 3.13 release is on its way out. Its maintainers have withdrawn PEP 836, which was meant to make the JIT an officially supported part of the interpreter. For now, that effectively ends a project once seen as highly promising.
Background
Brandt Bucher added the JIT to CPython in early 2024. A feature of that size would normally land only after the steering council approved a PEP, but Bucher had only given a talk at a core developer sprint. Thomas Wouters, a council member and the 3.13 release manager, prodded him into writing one. Bucher and Savannah Ostrowski then produced PEP 744. It was merely informational and did not represent formal consensus.
In June the council paused JIT work in the main branch. It asked for a standards-track PEP with a timeline, success metrics, and answers on maintenance, compatibility, and the impact on redistributors. The PEP had to be accepted within six months, or the code would be removed. Wouters said there was no single triggering event. The council had long been weighing how the JIT interacts with instrumentation, debugging, and profiling, as well as with external projects such as CinderX, Numba, and PyTorch's compiler.
PEP 836
Bucher, Ostrowski, and Ken Jin published PEP 836, titled "JIT Go Brrr", on July 3. Many commenters, including Wouters and Mark Shannon, felt it should have been split into two documents. The authors pushed back.
On September 21 the council issued a statement without Ostrowski, a sitting member who recused herself as a co-author. It agreed the PEP answered every question, "although perhaps some less convincingly than others". The council stressed it was deciding something narrower: whether the experiment should continue in the main branch. It listed ten points to address, from memory impact to security. The council judged the authors "overly optimistic" about user-visible behavior changes and found security underserved. The authors had scheduled a compatibility review against popular PyPI packages for the first Python 3.17 release candidate, around August 2028. The council called that "way, way too late".
Withdrawal
On October 19 Ostrowski announced that the PEP was being withdrawn. She wrote that the council rightly sets a high bar but that the authors lack the bandwidth to carry the current version forward. They still believe in the technical direction, including free-threaded support, and will publish the reference implementation for anyone who wants to build on it.
Brett Cannon explained that work is stopping in the main repository, and whether it continues elsewhere is up to the community. He considers an alternative PEP before the deadline unlikely, since everyone actively driving the JIT was an author of or contributor to PEP 836. The code will likely be removed early in the Python 3.16 development cycle.
In the comments, one reader asked what advantage the JIT had over PyPy. Another replied that PyPy is an alternative implementation with notable differences, whereas this JIT would have shipped in the reference CPython itself and reached every new Python version.
Source: Lobsters
Comments
Sign in, to comment.