CPython的实验性即时编译器(JIT)将被移除,原因是其维护者未能在Python指导委员会设定的截止日期前完成该功能的正式化工作。
据LWN.net的报道,此举发生在委员会于2026年6月正式暂停JIT相关工作之后,当时委员会要求必须先批准一份Python增强提案(PEP),阐明JIT如何能成为CPython中受到正式支持的组成部分,工作才能继续推进。
JIT的主要推动者Brandt Bucher和Savannah Ostrowski最初起草了PEP 744,用以说明JIT的功能,但该文档并未解释JIT将如何在CPython中得到维护和集成。为了回应这一问题,他们又提交了PEP 836,但依然遭到委员会的反对,后者认为PEP 836在JIT的支持方式、性能评估方法,以及如何与调试和性能分析工具集成等方面缺乏足够的细节。
委员会还批评该提案对预期性能提升过于乐观。CPython JIT带来的速度提升是可以测量的,但幅度较小,且仅对部分类型的程序(例如含有长时间运行紧密循环的程序)有效。
10月19日,PEP 836被正式撤回。“指导委员会为这一规模的提案设置了很高的门槛,这是合理的,但我们觉得自己目前没有足够的精力继续推进现有版本的提案,”Ostrowski表示。“我们依然相信提案中描述的技术方向,包括自由线程支持和基于方法的前端设计,并对JIT在CPython中的潜力保持乐观。”
这并不妨碍其他开发者在此基础上继续推进JIT项目。撤回PEP 836只是意味着在CPython主线版本中,JIT相关工作将不再继续推进。其他开发者仍然可以按照自己的方式继续这项工作,比如在CPython的替代构建版本中进行,不过如果他们希望将成果回馈给CPython主线,仍将面临同样高的门槛。
面向Python的JIT项目并非新鲜事物。Python解释器的一个替代版本PyPy就使用了高度优化的JIT,能够将Python程序的运行速度提升一个数量级甚至更多。但PyPy的开发进度落后于CPython主线版本,并且在与外部C模块的兼容性和性能方面也存在一些问题。像Facebook的CinderX这样的第三方项目则以附加组件的形式提供JIT,但同样被视为实验性质。
原生JIT远非唯一一个旨在提升CPython性能的项目。过去几年中,CPython核心团队投入了更多精力,全面提升原生Python的性能表现。其中成效显著的一项举措是自适应解释器,该功能在Python 3.11中引入,它利用类型专用字节码,在无需重写Python程序的前提下(与JIT类似)实现了更好的性能表现。
移除JIT,或者将其降级为带外实验项目,并不意味着追求更快Python性能的探索就此停止。但这确实意味着,未来任何类似项目若想进入CPython,都必须满足在维护性和可衡量性方面的高标准要求。
