Understanding the Future of JIT in CPython: A Call for Structured Progress
The Python Steering Council has recently issued an important announcement addressing the status and future of the Just-In-Time (JIT) compiler within the CPython project. This announcement aims to provide clarity and direction for the JIT, which has been under experimental development for several years. The Council’s message is a significant development for the Python community, highlighting both the achievements and the challenges associated with integrating JIT into CPython.
The Journey of JIT in CPython
The JIT compiler has been a remarkable endeavor by core developers and contributors, leading to notable performance improvements in CPython. This complex and technical work has been ongoing for years, involving multiple re-architectures and extensive discussions within the community. The Council has acknowledged the dedication and expertise of the individuals involved, emphasizing that the current discussion is not a critique but rather a necessary step towards formalizing JIT’s status within the project.
The Need for a Standards Pathway PEP
Initially, JIT was merged into the main branch of CPython as an experimental feature, guided by the informative PEP 744. This proposal outlined the initial design and posed critical questions about JIT’s long-term integration, maintenance, and impact on the broader Python ecosystem. However, many of these questions remain unresolved. The Steering Council now calls for a Standards Pathway PEP to address these open issues, ensuring that the community can weigh in and agree on JIT’s future through a formal process.
Suspending New JIT Developments
Pending the acceptance of a new PEP, the Council has requested a halt on new JIT developments, including new features and optimizations. However, bug fixes and security patches will continue as usual. This pause aims to provide an opportunity for comprehensive discussion and consideration of alternative proposals, ensuring that any changes to CPython are well-supported and aligned with the community’s needs.
Key Considerations for the New PEP
The Council has identified several critical areas that the new PEP should address:
Long-Term Maintenance: The PEP should outline a clear plan for supporting and maintaining JIT, considering its complexity and potential impact on maintainers who are not directly involved with JIT development.
Compatibility with Existing Features: Addressing how JIT will interact with current CPython features and tools is essential. This includes considerations for threading, profilers, and debuggers, among other aspects.
Success Indicators and Deadlines: The PEP should define clear performance goals, platform coverage, and memory overhead targets, along with a timeline for achieving these objectives.
Integration with Other JIT Compilers: The design should consider whether it can serve as a general infrastructure for other JIT efforts, potentially aligning with third-party implementations like CinderX, Numba, and PyTorch.
Stability of the Current Architecture: It’s crucial to determine whether the current JIT architecture is stable or if further changes are anticipated.
The Path Forward: A Six-Month Deadline
The Council has set a six-month deadline for the submission and resolution of a new PEP. If no PEP is accepted within this timeframe, the current JIT code may be removed from the main branch, with development continuing outside the main Python repository. This decision underscores the importance of providing clarity and commitment for such a significant change in CPython’s runtime.
For further details, please visit the original announcement from the Python Steering Council Here.
“`

