Python 正式向 Rust 招手:CPython 准备告别纯 C 时代,连 pip install 都可能因此变快?

Python 正式向 Rust 招手:CPython 准备告别纯 C 时代,连 pip install 都可能因此变快?

💡 原文中文,约6900字,阅读约需17分钟。
📝

内容提要

2026年Python语言峰会上,核心团队推进“Rust for CPython”项目,计划用Rust提升内存安全,缓解C语言维护压力。首个试验模块为zlib,采用zlib-rs实现,Python 3.16或引入可选Rust后端并保留C回退。项目采取渐进集成,未来Rust可能成为构建CPython的必需工具链。

🔎

延伸解读

C 语言维护压力与 Rust 的引入动机

文章指出,CPython 的 type-crash 问题在 2025 年达到 222 个,2026 年趋势预测更高,反映出随着 JIT、Free-threading 等复杂特性推进,C 语言底层维护难度增加。Rust 的所有权和借用机制能在编译阶段约束内存访问,减少一类内存安全问题。但文章也强调,Rust 并非消除所有 Bug,逻辑错误和并发设计问题仍需依赖测试和审查。

渐进式集成:从 zlib 试验到双语言并存

项目明确不重写整个 CPython,而是选择 zlib 作为首个试验模块,计划在 Python 3.16 引入可选 Rust 后端,并保留 C 实现作为回退。这种策略旨在控制兼容性和维护风险,同时验证 Cargo 依赖如何融入 CPython 构建体系。未来 CPython 可能长期处于 C 与 Rust 并存状态,Rust 成为必需工具链是远期目标,而非确定承诺。

pip install 加速的潜在影响与局限

文章提到,若 zlib 模块采用性能更优的 zlib-rs 实现,Python 3.16 中几乎每一次 pip install 都可能因此加速。这是因为包管理和分发大量依赖压缩解压操作。但文章也提醒,具体收益取决于包的分发格式、解压缩工作量及其他性能瓶颈,并非所有安装都会获得相同提升。这体现了优化基础高频模块可能带来的广泛生态影响。

Rust API 设计的关键挑战

文章强调,Rust 与 C 在内存管理和错误处理上哲学不同,简单包装 C API 无法发挥 Rust 优势。项目希望采用符合 Rust 惯用方式的接口,包括所有权管理、RAII 和 Result 错误处理。David 展示了假想的 Rust API 代码,模拟 Python 的 zlib.decompress 函数。设计良好的 Rust API 是项目长期发展的关键基础设施,否则可能让代码更复杂。

❓

Q&A

CPython 为什么要引入 Rust?

CPython 底层主要由 C 语言实现,随着 JIT、Free-threading 等复杂特性推进,内存安全和工程维护压力增大。2025 年 type-crash 问题达 222 个,2026 年预测更高。Rust 通过所有权、借用和生命周期机制在编译阶段约束内存访问,可减少内存安全问题,并降低代码修订轮次。

Rust for CPython 项目计划用 Rust 重写整个 CPython 吗?

不是。项目采取渐进式集成策略,从小模块开始,CPython 将在相当长时间内是 C 与 Rust 并存的双语言项目。David Hewitt 明确表示“CPython 不应该为了使用 Rust 而使用 Rust”,一次性重写会带来兼容性、性能和维护风险。

第一个用 Rust 实现的 CPython 模块是什么?为什么选它?

第一个试验模块是 zlib。因为它功能明确、边界清晰,适合验证 Rust 与 CPython 的集成方案,同时能帮助团队验证外部 Rust Cargo 依赖如何进入 CPython 构建体系。计划使用经过实战检验的 zlib-rs 实现。

Python 3.16 会引入 Rust 实现吗?是强制依赖吗?

按照路线图,Python 3.16(预计 2027 年 10 月发布)可能首次引入可选的 Rust 后端,用于 zlib 模块。Rust 实现是可选的,原有 C 实现继续保留作为回退方案,Rust 不是强制依赖。

Rust 进入 CPython 后,pip install 会变快吗?

有可能。Python 包管理和分发大量使用压缩技术,如果 CPython 采用性能更好的 zlib Rust 实现,这些操作有机会获得性能收益。David Hewitt 提到,如果方案成功,Python 3.16 中几乎每一次 pip install 都可能因此加速。但具体收益取决于包的分发格式、解压缩工作量和其他性能瓶颈。

Rust for CPython 的长期路线图是怎样的?

路线图分阶段:2026 年打好基础,完成 Rust 构建系统、CI 集成和 API 概念验证,年底通过 PEP 明确成功标准;Python 3.16(预计 2027 年 10 月)首次交付可选 Rust 后端;Python 3.17(预计 2028 年 10 月)扩大应用范围,探索 io、json、xml、memoryview、parser 等模块;2029 年以后,Rust 可能成为构建 CPython 的必需工具链之一,但这不是确定承诺,取决于前期阶段能否达到成功标准。

🏷️

标签

➡️

继续阅读