加速 Rust 编译:社区的接受
有了Cargo-Slicer这个原型的基础,Rust社区已经同意把它列为2026年的社区目标了。事情有了好的开头,接下来Rust编译器本身会有怎样的改变,让我们拭目以待......
以下文章来自微信公众号“嘻话 Tech”,作者俞一峻,已获授权。
Cargo-Slicer这个项目起源于去年圣诞日我提交的一个Rust社区项目目标https://rust-lang.github.io/rust-project-goals/2026/crate-slicing.html。考虑到Rust在提速C/C++全新编译工具性能方面发挥的积极作用,联想到能否把相应的技术用于提速Rust预编译。其核心思想借鉴了我2017年写的一个IBM, Microsoft, Huawei都关心的软件工程问题直觉应该能成。
26年元旦一过,Rust编译器团队围绕着这个提议在zulip社群组上展开了积极的发言和讨论,产生50多条有价值的建议和意见。当然,大多数专家对于还没有出现过的新事物还是抱着将信将疑的态度。
为了POC验证,于是,我撩开膀子写代码,用差不多6万行Rust代码把原型快速搭建了出来。当时的思路是跟C/C++的头文件整理一样,先用轻量级的代码解析工具ctags把Rust代码做一番瘦身,然后再让Rust编译器把精简的代码全新编译。
可是,实验中发现,再轻量级的解析工具,哪怕用C实现,其运行开销都会大于为Rust编译器节省的时间,而且过程中缺乏语义和类型信息,大概率还有错误需要花时间修复......我恼火地卡在了这个性能关一段时间。
这里我要特别感谢Rust中国旋武社区的周积萍老师和复旦大学的徐辉老师,在茶思屋咖啡讨论中给了我有益的启发。不再需要依靠外部工具,而是用Rust编译器构件化设计后的驱动插件功能,我很快完成了原型验证,发现确实能有效改善不少Rust项目的全新构建时间了。
有了这些进展,我联系了Zed的作者之一,Max Brunsfeld。在前年的Euro Rust 2024大会上的Zed展台边,我跟他认真探讨了一番,感谢了他的开源项目tree-sitter(很多做代码软件工程的同仁对他这个高性能代码解析的开源工具一定心存感激)在我们自己的C2Rust研究中发挥的作用。Max目前专注于Zed项目的功能开发,可能还没有注意到我在Zulip发给他的消息,相信他迟早会注意到我们这个原型工具的。
另外一家潜在受益的Rust项目是哈佛和MIT小伙们搞的ZeroClaw:在48核服务器上Cargo-Slicer能够取得13%的性能优化。区别于OpenClaw,轻量化的ZeroClaw智能体的主要使用场景是在更小的设备跑Agentic AI,比如只有两个ARM核的Raspberry Pi 4。在这样小的设备上,我也验证发现Cargo-Slicer可以提升ZeroClaw构建性能高达50%之多。于是我也联系了ZeroClaw团队,甚至直接给它的CI子系统发了一个Pull Request,让他们看看能否用得上Cargo-Slicer。
作为等待的艺术家,本来我以为这个PR会需要等个十天半月才能得到回应,而且我们自己的GitHub项目当时才只有6颗星,正常估计不会被他们这个已经1万颗明星的项目接受。让我意外的是,ZeroClaw的PR是AI评审的,在验证有效之后不到1天就把贡献合入了。如果现在到ZeroClaw的GitHub主页上看,我赫然已是它的第35名贡献者了!那么,现在如果大家对它的CI构建有意见,我也要担些许责任了。以后提起来,我不再需要说他们ZeroClaw项目,而是说我们ZeroClaw项目了。个人以为,这就是生态包容的开源开放社区该秉持的正确态度。
有了Cargo-Slicer这个原型的基础,Rust社区已经同意把它列为2026年的社区目标了。事情有了好的开头,接下来Rust编译器本身会有怎样的改变,让我们拭目以待......好吧,关于加速Rust编译器构建的故事就先聊到这里。跟螃蟹说声下回见,接下去聊一聊我们的小龙虾ZeroClaw的故事吧。
了解Rust的开源发展前沿动态和未来发展愿景,请持续关注。
开放原子旋武开源社区(简称“旋武社区”)是由开放原子开源基金会孵化及运营的技术社区,致力于在中国推广和发展Rust编程语言生态,推动Rust在操作系统、终端设备、安全技术、基础软件等关键领域的产业落地,构建安全、可靠、高效的软件基础设施。
更多推荐


所有评论(0)