Python's Experimental JIT To Be Removed
AIThis post was created with the assistance of artificial intelligence (AI).

TL;DR

Buying for a business?Offer from Amazon

Get business pricing on monitors, keyboards and dev gear

  • Business-only prices and quantity discounts
  • Tax-exempt purchasing
  • Multiple users, one account, clear invoices
As an affiliate, we earn on qualifying purchases.

The maintainers of CPython’s experimental just-in-time compiler have withdrawn PEP 836, the proposal intended to address the Python steering council’s concerns about continuing JIT development in the main branch. The council had set a six-month deadline for an accepted proposal and said the JIT code would have to be removed if that deadline was not met; the source report says development now appears to have ended, but does not confirm that removal has happened.

CPython’s experimental just-in-time compiler is facing removal from the project’s main development branch after its maintainers withdrew PEP 836, the proposal meant to answer the Python steering council’s concerns about the JIT’s maintenance, compatibility and performance goals. The council had set a six-month deadline for an accepted proposal, with removal of the code from the main branch required if that deadline was missed; it is not confirmed in the available report that the code has already been removed.

The JIT maintainers — Brandt Bucher, Savannah Ostrowski and Ken Jin — published a draft of PEP 836, titled “JIT Go Brrr: The Path to a Supported JIT Compiler for CPython,” on the Python forum on July 3. It followed a June request from the steering council for a standards-track proposal setting out the case for keeping the compiler in CPython as a supported, non-experimental feature. After months of discussion, the maintainers withdrew the proposal.

The council said the proposal answered the questions in its request, though some answers were less convincing than others. Its concern, the report says, was not simply whether the JIT met criteria to become a supported feature. It was whether continued experimentation belonged in CPython’s main branch, where changing behavior and APIs can create uncertainty for core developers, package maintainers and users.

The council identified areas where it wanted greater detail, including support plans and performance criteria, and said some parts of the proposal were too vague or optimistic. The supplied report does not give the full list of ten requested items or the maintainers’ detailed reasons for withdrawing the PEP. It describes development as apparently at an end, rather than confirming a completed code removal.

At a glance
updateWhen: PEP 836 was withdrawn after months of d…
The developmentThe maintainers withdrew the proposal for supporting CPython’s experimental JIT, leaving its future in the main branch unresolved and making removal appear likely.

What JIT Removal Would Mean

The immediate issue is the compiler’s status inside CPython, the reference implementation of Python. Removing the JIT would end its presence in the main development branch for now, but would not by itself mean that Python as a language or all JIT-based Python projects were ending. The source report specifically notes other JIT or JIT-adjacent work, including CinderX, Numba and PyTorch compilation.

The dispute also concerns the costs of keeping a major experiment in a project’s primary codebase. A compiler can affect runtime behavior, debugging, profiling and compatibility, while requiring ongoing maintenance and clear measures of success. For Python users and distributors, the council’s concerns matter because uncertainty around those areas can complicate decisions about testing, packaging and support. The report does not establish any specific user-facing breakage or performance regression.

The outcome leaves a distinction between the JIT’s technical potential and the project’s readiness to maintain it as part of CPython. The council’s demand was for a convincing plan and commitments, not just an account of the implementation. Without an accepted proposal, the council’s stated deadline makes continued development in the main branch difficult to sustain.

DeLonghi Rivelia Automatic Espresso Machine Bundle with Grinder and Frother, Beige

DeLonghi Rivelia Automatic Espresso Machine Bundle with Grinder and Frother, Beige

As an affiliate, we earn on qualifying purchases.

From Experimental Feature to Review

The JIT was added to CPython by Brandt Bucher in early 2024 for Python 3.13. The work proceeded under PEP 744, an informational document drafted by Bucher and Ostrowski. An informational PEP describes a project but does not record formal community consensus to proceed with a feature.

In June, the steering council paused JIT work in the main branch pending a standards-track PEP addressing maintenance, compatibility, success measures and a completion timeline. Council member Thomas Wouters said there was no single event that triggered the request. The council had been discussing the matter and wanted to avoid the JIT interfering with other work, including instrumentation, debugging and profiling. It waited until after the Python 3.15 beta release to clarify that it accepted the status quo for that release.

The draft PEP drew mixed feedback. Some commenters argued that it combined two separate tasks: setting the conditions for accepting the JIT and describing implementation plans. Ostrowski defended including the plan alongside the goals, saying that goals without the plans behind them would make her uncomfortable. In September, the council said the draft addressed its questions but still lacked enough specificity in important areas.

“There was no “single triggering event for this request”.”

— Thomas Wouters, Python steering council member, as quoted in the LWN report

Removal and Future Work Remain Unclear

The available report says the maintainers withdrew PEP 836 and that JIT development appears to have ended, but it does not confirm when or whether the code will be removed from CPython’s main branch. It also does not say whether a revised proposal, a different development plan or work outside the main branch is being considered.

The exact status of the council’s six-month deadline after withdrawal is not specified in the supplied material. Nor does the report provide the complete ten-point list of requested changes, a final council decision following the withdrawal, or a detailed explanation from the maintainers. Claims about the JIT’s performance or its effect on Python applications should not be inferred from the procedural dispute alone.

Council Decision and Code Status

The next clear development would be a statement from the Python steering council or the JIT maintainers clarifying the status of the code and whether any replacement proposal is planned. Under the council’s earlier request, failure to submit and gain acceptance for a proposal within six months would require removal of the JIT from CPython’s main branch. The supplied account does not specify a completed removal or a new timetable, so the project’s formal next step remains unconfirmed.

Key Questions

Has the experimental JIT already been removed from CPython?

The available report does not confirm that removal has happened. It says the maintainers withdrew PEP 836 and that development appears to have ended; the council had said the code would need to be removed if its six-month proposal deadline was missed.

What was PEP 836 meant to do?

PEP 836 was a standards-track proposal intended to explain how CPython could support the JIT, including its maintenance commitments, compatibility considerations and performance goals.

Why did the steering council question the JIT’s place in CPython?

The council sought clearer plans for support and performance, among other details. It also raised concerns that experimentation in the main branch could leave developers, package maintainers and users uncertain as behavior and APIs changed.

Does this mean all Python JIT projects are ending?

No such conclusion is supported by the report. It mentions other JIT or JIT-adjacent projects, including CinderX, Numba and PyTorch compilation. The dispute described concerns the experimental JIT in CPython’s main branch.

Source: lwn.net

You May Also Like

Spatial Focus Room: Make Distraction Impossible

A new app for Apple Vision Pro aims to eliminate distractions by creating immersive, distraction-free environments for deep work, shifting focus from tools to environment.

Postgres LISTEN/NOTIFY Actually Scales

Recent tests show that PostgreSQL’s LISTEN/NOTIFY can handle high concurrency, challenging previous assumptions about its scalability limits.

IBM Advances To Stage C Of DARPA Quantum Benchmarking Initiative

DARPA will move IBM’s quantum-computing proposal into independent testing as the agency evaluates plans for a fault-tolerant system by 2033.

The Genius AI Technique Behind Station 36’S Shortwave Numbers Listening Website

Station 36’s web experience uses AI to create an authentic vintage radio listening interface, blending historical aesthetics with modern web tech.