2025 年 Python 语言峰会:Python 核心开发者希望 Rust 做点啥?

111 阅读5分钟

本文首发公众号 猩猩程序员 欢迎关注

本文来自 pyfound.blogspot.com/2025/06/pyt…

大家想从 Rust 支持里得到什么?

“这个话题选得真好,Rust 明天就满 10 岁了!”
说这话的是 David Hewitt,他是 PyO3 的维护者,这是一个让你能在 Python 项目里用 Rust 的库。David 说,语言的发展是需要时间的,关键是看十年后还有没有人在用它。

他说 Rust 最近挺“火”,不止在这次语言峰会上被多次提到,甚至在 Python 软件基金会给美国政府关于内存安全的回信里,也出现了 Rust 的身影,尤其是在涉及“二进制扩展”的场景。

“我一直觉得我们做开源的,都是为了让其他人用得更舒服。每个人用什么工具都无可厚非。”

接着,David 给大家看了一个图,显示 PyPI(Python 包索引)上,哪些原生语言(比如 C、C++、Rust)被项目用得最多。
他说:“我们的估计是,大概有四分之一到三分之一的新项目,用 Rust 写原生代码上传到 PyPI。大家真的在选择用 Rust 启动新项目。”

然后他还演示了 PyO3 怎么用,用 Rust 写一个简单的 Python 模块、函数,还有怎么让 Rust 的报错自动变成 Python 的异常。PyO3 除了有自己的构建系统(Maturin),还能自动生成类型提示,总之开发体验挺不错。


Rust 和 Python 搭起来还缺点啥?

David 说,其实 Rust 在支持 Python 多线程这块儿已经很不错了,但遇到“子解释器”(一个进程里多个 Python 环境)和“模块隔离”这些场景就有点麻烦了。

还有个小问题就是:Rust 有个 GCC 后端(就是可以用 gcc 编译器而不是 rustc 编译),这对支持冷门平台挺关键。但他也说实话:“现在还不够成熟,未来再说吧。”


Python 官方团队应该“投资”Rust 吗?

David 抛出了他本场演讲的核心问题:

“Python 核心开发者,想要 Rust 支持帮你们做到啥?”

他进一步拆解说:

  • 是希望搞一套“官方推荐”的 Rust 开发体验?
  • 还是说,大家只是想让 Rust 成为自己的另一个小工具?

他还引用 StackOverflow 的调查:Rust 是“最受开发者喜欢”的语言之一,而且很多 Rust 程序员都愿意长期继续使用它。

David 还说,现在很多年轻人是直接从 Rust 开始学编程的,这就意味着:如果 Python 社区更重视 Rust,将来开发者可能会更多。

他还建议可以设计一个“高级 API”,比现在 C API 更友好,当然是用 Rust 写的,这样未来迭代起来也更安全、简单。


Rust 也不是没问题…

当然,Rust 并不是没有代价的。

David 说,从一个语言(C)变成两个语言(C + Rust),在技术和团队协作上,复杂度都是成倍上涨的。

他说,有人会问:“万一将来出现更好的语言,那我现在干嘛要用 Rust?”

但也有人会说:“Rust 已经够用了,我现在就上。”

另外一个担心是:Rust 对某些冷门平台支持不够好,如果核心库用了 Rust,那这些平台就凉凉了。

最后他还调侃了一下:“咱们现在叫 CPython,是 C + Python,那以后 Rust 加进来了,‘C’还代表什么?”


学习对象:Linux 内核是个好榜样

David 最后举了个大案例 —— Linux 内核怎么引入 Rust 的

他说:“Rust for Linux 这个项目,超级复杂。不只是代码难,团队沟通也难。”

有些老开发者不想碰 Rust,也不希望自己的开发流程被改。

但即便如此,Rust 还是被 Linux 内核社区认可了,因为它带来了新一批开发者。

总结一句话:Rust 为 Linux 带来了新的血液。

David 问大家:

“Python 社区要不要也来个 ‘Rust for Python’ 呢?”


现场提问环节

  • Fred Drake 问:Rust 写的代码在线程安全方面靠谱不?
    David 回:靠谱!Rust 本身就倾向安全,想出 bug 得你故意写 unsafe 才行。而且比 C 写的模块好管理多了。感谢 Quansight Labs 的帮助!
  • Martin DeMello 问:你试过用 Rust 重写解释器某个部分吗?
    David 回:没试过直接链接进去,但像 Firefox 这种项目已经在干这个了(C、C++、Rust 混编)。能搞,但复杂度高。
  • Brandt Bucher(JIT 的维护者)说:我们 JIT 模块现在是实验性质的,没用 CPython API,或许可以试试用 Rust 重写?不过他自己不打算做。
  • Gregory Smith 说:从扩展模块开始比较保险,而且这些模块是独立的,改了也不会伤大局。
    Thomas Wouters 补充:标准库的核心部分要兼容所有平台,这块不好动。
    David 同意:先做扩展模块比较现实,就像 Linux 先把某些子系统迁到 Rust 一样。
  • Barry Warsaw 问:用 Rust 写模块,调试会不会麻烦?
    David 回:体验差不多,Rust 生成的调用栈、符号调试器里都能看到,没啥大障碍。
  • Hood Chatham 担心 Rust panic(恐慌机制)和符号体积会让程序臃肿。
    David 回:可以关掉 panic、禁用标准库,有办法瘦身。另外 Rust 的稳定 ABI 也在开发中。

最后粽结一下

总的来说,Python 核心团队目前对 “可选性的 Rust 扩展模块” 并不反感。

大家认为这个方向可以做,但前提是:

  • 构建系统得先跟上;
  • 跨平台支持要稳;
  • 不影响老用户。

本文首发公众号 猩猩程序员 欢迎关注