David Hewitt又一次站上了Python Language Summit的讲台。去年在PyCon US 2025,他只是来"试水温";今年他带着完整的时间表、阶段划分和成功标准回来了。用他自己的话说:"去年没有人说'别做这件事'。"这句话的分量不轻——它意味着Python核心圈对Rust的态度,从观望变成了默认放行。
David现在的身份是"Rust for CPython"项目团队的大使。这个团队由核心开发者Kirill Podoprigora和Emma Smith牵头,两人也是Rust for CPython PEP草案的作者。Emma还在PyCon US 2026上专门讲了这件事。团队规模大约60名开发者,聚在一个Discord频道里,其中有几位Python核心开发者,还有一支来自Rust项目的"代表团"。
这不是一群没打过仗的人。团队里有成员参与过把Rust塞进Android和Linux内核的项目。他们的态度很明确:对这件事感到兴奋,如果项目推进,愿意提供支持。
为什么是Rust
David给出的理由很具体。他展示了GitHub上标记为"type-crash"的issue数量——这条曲线在持续上升。他把原因归结为Python最近下的几个"大赌注":新解析器、JIT、free-threading。这些大型复杂特性可能正是崩溃报告变多的推手,而Rust是一个潜在的解法。
他引用了Jeff Vander Stoep对Android采用Rust后的描述:"move fast and fix things"。Android的经验是,同样大小的补丁,需要的修订次数更少。David还强调,很多科技公司是"把Rust当作一个赌注"来下的,而不只是把它当成一个新奇玩具。
Rust和Python其实早就在生态里合作了,靠的是PyO3和Maturin。但把Rust引入CPython本身,不会一帆风顺。
一年前最大的担忧是平台支持。CPython官方支持20种不同的架构和平台,分属Tier 1、2、3。David说Rust的平台支持"从去年以来已经拓宽",正变得"越来越不是问题"。提案的思路是:请Python发行版在Python 3.16(2027年10月)尝试可选的Rust支持,把平台相关问题反馈到上游,争取在Python 3.17(2028年10月)的时间线内解决。
David承认,把Rust引入一个项目,社交挑战和技术挑战一样大。Rust知识"在核心开发者中并不普遍",缓解办法是"瞄准CPython的一小部分"、采用增量方式——"100万行C代码不可能一次移植完"。
他也说得很清楚:用Rust本身不意味着移植后的代码就没有bug或安全问题。Rust能缓解某些常见缺陷类别,但代码仍然可能有正确性问题。团队提议用基于属性的测试、模糊测试,以及"审慎的工程实践"来应对。
第一个吃螃蟹的模块:zlib
团队选中的第一个模块是zlib。理由是想用"小范围"实现"显著改进"。拟议的Rust实现将使用zlib-rs,这个库"经过大量测试,被Firefox、uv和Cargo使用",并且"在很多平台上比zlib和zlib-ng更快"。
选zlib还有一层考虑:它会引入一个外部Cargo包,这意味着构建流程的这一环必须被设计和跑通。
这个改动虽小,影响却不小。zlib压缩算法"被Python打包广泛使用",也就是说,如果提案被接受,Python 3.16里"几乎每一次pip install都会被加速"。
时间表大致如下:
2026年夏季:构建系统和CI、Rust API概念验证
2026年底:PEP定义成功标准
2027年10月(Python 3.16):zlib模块的可选Rust后端、私有Rust API
2028年10月(Python 3.17):解决平台问题,Rust进入更多地方(io、json、xml、memoryview、parser)
2029年10月及以后:Rust构建成为必需,公开Rust API发布
按这个时间线,第一批随Python发布的Rust代码出现在3.16,且完全可选,现有C代码保留作为回退。Rust最早成为构建CPython的必需项,要等到2029年的Python 3.18——至少三年之后。
Rust API长什么样
David给了一段示例代码,展示Rust如何调用一个假想的Python Rust API。这个API使用Rust属性#[pyfunction],风格类似Argument Clinic——那个从Python函数语法自动生成C函数参数处理代码的开发工具。
按照设计,Rust函数总是会接收到线程和解释器状态(Python<'_>),对象周围使用智能指针(Py<...>),并倾向于Rust的错误处理方式,用Result枚举返回结果或抛出的错误。
从"试水温"到拿出PEP草案、时间表和成功标准,Rust for CPython走完了从想法到工程方案的关键一步。剩下的问题是:Python社区愿不愿意为这个赌注买单。
热门跟贴