21CTO导读:Python3.16将首次包含Rust代码,且是可选项。
两位 Python 核心开发者 Emma Smith 和 Kirill Podoprigora 所领导的团队希望将 Rust 引入到标准解释器 CPython,最开始将针对标准库中的个别模块。
根据其开发路线图,2027 年 10 月发布的 Python 3.16 将首先引入 Rust 版本的压缩模块zlib,但初期仍为可选项。那些希望在不使用 Rust 的情况下构建 Python 的用户将像以前一样获得 C 语言版本的实现。
但是可以确定的是,从 2029 年起,Python 3.18 将强制使用 Rust。
此路线图已由 Rust 绑定 PyO3 的维护者 David Hewitt 于 7 月在 Python 峰会 2026(核心开发者的年度会议)上公布。Rust 早已通过 PyO3 在 Python 扩展领域广泛应用,但对于 CPython 本身而言,还是一个全新的领域。
Rust for CPython 项目主要希望 Rust 能够提供内存安全保障。安全的 Rust 代码可以防止访问预留内存之外的内存以及已释放的内存(释放后使用)。早在2025 年 11 月的预草案中,其项目负责人之一 Emma Smith 就指出,许多此类问题都源于此类错误。
https://discuss.python.org/t/pre-pep-rust-for-cpython/104906
Hewitt认为,zlib适合作为一个切入点,因为尽管其范围不大,但可以实现显著的性能提升。它引入了外部Rust依赖项zlib-rs,因此也可以直接测试构建过程如何处理来自Rust包管理器Cargo的包。Hewitt还表示,zlib-rs已经在Firefox和Cargo中使用,并且在许多平台上比传统的zlib构建方式更快。
根据项目规范,在原型机的基准测试中,该模块在配备 ARM 处理器的 Mac 上解压缩速度提高了六倍,但计算 CRC32 校验和的速度却慢了近三倍。
https://github.com/Rust-for-CPython/zlib-py
Python 3.16 计划加入一个内部 Rust 接口,然后在 3.17 版本中可能会再增加诸如 json、xml之类的模块。一些 Linux发行版将试用 3.16 中的 Rust 版本,并积极报告各个平台上的问题。
Python团队预定义的成功标准能够帮助人们决定 Rust 是否会结束其实验性状态,比如类似于 JIT 编译器和自由线程。如果大多数活跃的内核开发者愿意在 Rust 中实现新功能,如果 CPython 基准测试结果没有明显降低,并且 Rust 能够覆盖所有官方支持的平台而不会给开发者带来过重的负担,那么 Rust 就会结束实验性状态。
Hewitt 这样称,将 Rust 描述为永久可选项是不诚实的。
除此之外,人们还对依赖项存在担忧。Python 的五人领导机构,即指导委员会的一位成员认为,Cargo 提供的众多软件包有一个致命缺陷,其中任何一个存在安全漏洞都会导致 Python 重发布新版本。Hewitt 反对说,团队希望尽可能减少依赖项,并单独发布源代码,以便 CPython 也能在不使用 Cargo 的情况下构建。
起初,Rust 已被计划作为 Python 3.16 的标准库,但由于收到包括可移植性在内的反对意见,团队推迟了这一计划。
目前,一份包含成功标准的正式提案将于 2026 年底作为 Python 增强提案 (PEP) 的一部分提交,届时指导委员会将做出最终决定。
https://peps.python.org/pep-0826/
根据发布计划,Python 3.16 将在 2027 年 5 月 4 日之前加入预定的全新功能。
作者:场长
本篇文章为 @ 万能的大雄 创作并授权 21CTO 发布,未经许可,请勿转载。
内容授权事宜请您联系 webmaster@21cto.com或关注 21CTO 微信公众号。
该文观点仅代表作者本人,21CTO 平台仅提供信息存储空间服务。
请扫描二维码,使用微信支付哦。