人工智能 频道

Python 放弃原生 JIT,至少目前如此

  出于对维护、兼容性和性能的担忧,实验性即时编译器(JIT)正在从 CPython 中移除。

  CPython 的实验性即时编译器(JIT)将被删除,原因是其维护者错过了 Python 指导委员会设定的正式化期限。

  据 LWN.net 报道,此举是在指导委员会于 2026 年 6 月正式暂停 JIT 工作后进行的,暂停将持续到一项描述 JIT 如何成为 CPython 正式支持部分的 Python 增强提案(PEP)获批为止。

  JIT 的支持者 Brandt Bucher 和 Savannah Ostrowski 最初起草了 PEP 744 来解释 JIT 的功能,但该文件没有说明 JIT 将如何维护并集成到 CPython 中。为了回答这个问题,他们提交了 PEP 836,但仍遭到指导委员会拒绝。指导委员会认为,PEP 836 在如何支持 JIT、评估其性能以及如何与调试和分析工具集成方面缺乏充分细节。

  指导委员会还批评该 PEP 对预期性能提升过于乐观。CPython JIT 带来的速度改进可以测量,但幅度很小,而且只提升了某些类别程序的性能,例如那些运行时间较长、包含紧密循环的程序。

  10 月 19 日,PEP 836 被撤回。Ostrowski 表示:“指导委员会为这一范围的提案设定了很高的标准,这是正确的;我们觉得自己没有足够的个人精力来推进当前版本。我们仍然相信 PEP 中概述的技术方向,包括自由线程支持和基于方法的前端,并对 JIT 在 CPython 中的潜力保持乐观。”

  这并不禁止其他开发者从 JIT 项目停止的地方继续推进。撤回 PEP 836 只意味着 CPython 主线版本中的 JIT 工作不会继续。其他开发者可以自由地以自己的方式继续这项工作,也许是在 CPython 的替代版本中;不过,如果他们想将这项工作贡献给 CPython,仍将面临同样的高标准。

  Python 的 JIT 项目并不新鲜。Python 解释器的替代版本 PyPy 使用高度优化的 JIT,使 Python 程序的速度提升一个数量级甚至更多。但 PyPy 的开发落后于 CPython 主线版本,并且 PyPy 在外部 C 模块方面遇到了性能和兼容性问题。像 Facebook 的 CinderX 这样的第三方项目以附加组件的形式提供 JIT,但它们同样被视为实验性项目。

  原生 JIT 远不是唯一旨在提高 CPython 性能的项目。过去几年,CPython 核心团队更加关注全面提升原生 Python 性能。一项显示出显著效果的举措是 Python 3.11 中引入的自适应解释器,它使用类型特化的字节码,并且与 JIT 一样,不需要重写 Python 程序就能获得更好的性能。

  删除 JIT 或将其降级为带外实验,并不意味着追求更快的 Python 就此结束。但这意味着,未来任何此类项目都需要在 CPython 中达到维护性和可测量性方面的高标准。

0
相关文章