OC

Roc 花 18 个月把 30 万行 Rust 重写成 Zig,它证明了什么,又没证明什么
科技 · 2026-07-17 · 开发者 / 编程语言 · 阅读 10

Roc 花 18 个月把 30 万行 Rust 重写成 Zig,它证明了什么,又没证明什么

林岚|OC 开发者生态编辑

林岚|OC 开发者生态编辑

Roc 语言负责人 Richard Feldman 在文章 Rust to Zig 回顾,团队用大约 18 个月把约 30 万行 Rust 编译器代码重写为 Zig,并达到旧实现的功能对等。这不是一次简单的语法翻译,而是团队对构建速度、调试体验和长期维护方式的重新选择。

一句话结论: Roc 的重写说明 Zig 更适合这个团队此刻的编译器工程目标,不等于 Zig 在所有项目里都优于 Rust,更不等于 30 万行重写是一条普遍值得复制的路线。

大规模重写在软件行业名声不好,原因很实际:旧系统里藏着多年的边界条件,新代码最初往往只复现了显眼功能,却丢掉那些没人记得的行为。18 个月达到功能对等,对一个语言团队既是成果,也意味着这段时间本来可以用于新特性和生态建设。

Roc 仍然做了这个决定,是因为编译器与普通 Web 服务的权衡不同。它需要精确控制内存布局、构建过程和底层调试,同时希望贡献者能快速理解代码。Rust 的所有权和生命周期系统能在编译期阻止大量内存错误,但这种保证也会把复杂度前置;Zig 给程序员更多直接控制,编译模型更透明,代价则是更多安全责任回到团队手里。

这里有一个常被忽略的问题:如果最后只是功能对等,重写成功了吗?答案取决于目标。若目标是立刻给用户更多功能,它可能不划算;若目标是让未来十年的编译器更容易修改、编译和调试,短期功能停滞可能是一笔基础设施投资。真正的验证要看接下来几年,而不是宣布完成的那一天。

Rust 与 Zig 在 Roc 项目中的工程取舍

关键事实

  • Roc 团队用了约 18 个月重写约 30 万行编译器代码。
  • 新实现使用 Zig,并已达到旧 Rust 实现的功能对等。
  • 这是特定团队、特定代码库的工程决策,不是受控的语言性能实验。

OC 判断

“某项目从 A 重写到 B”天然适合语言战争,却通常缺少可比条件。新实现会吸收旧系统的经验,也会借机删除历史包袱,所以最终改善不能全部归功于新语言。同样,原团队对 Zig 的熟悉程度、项目的底层需求和贡献者结构,也会影响结果。

Roc 最值得借鉴的不是“大家都去重写”,而是把重写成本完整说出来,并把目标定为可验证的功能对等。其他团队若考虑类似决定,至少要先回答:现有架构能否渐进修复、哪些指标会变好、迁移期间谁维护旧系统,以及失败时如何退出。

为什么重要

  • 对开发者: 语言选择是安全、控制、工具链和团队经验的组合,不是单项排行榜。
  • 对技术负责人: 重写需要明确指标和退出路径,不能只靠对新技术的偏爱。
  • 对语言社区: 一个成功迁移案例有参考价值,但不能自动推广到不同类型的项目。

参考来源

相关阅读

基于标题、摘要和正文内容自动匹配。

更多科技

评论

围绕这篇文章补充信息、提出问题或分享观察。

0
暂无评论。

发表评论

继续看看 OC 用户围绕这个话题说了什么、做了什么。

相关帖子

更多

重返OurCoders

<p>从2014年以来好久没逛过这个谈论了,不知道这个谈论的运营现在怎么样,开发人员是不是原来的人,前端UI做得不太好</p>

梁建溢 4 18

你为什么不移民?

<p>我是一定要移了,在这里连正常呼吸都不行了。以前正常呼吸指的是言论自由,现在是生物学意义的正常呼吸问题了。</p> <p>你为什么不移民?</p>

tinyfool 740 15

测试OurCoders能否发布照片

<p>今天小区的彩虹🌈<img src="https://share.icloud.com/photos/0ebtFydNy8r_gJETON61u4Ybg" alt="图片说明" /></p> <p>看来不能直接发照片,可以把iCloud Link的功能派上用场!</p>

梁建溢 15 45

你们的Codex额度提前耗完了没?戒断反应如何?

<p>我在第三天就消耗了只剩1%,忍了一天,然后今天干脆用这最后的1%,开着5.6 Sol 极高 强推我一个提示词笔记本应用的功能落地。最终用时3小时,居然还是跑完了。但是现在还是出现一些戒断反应,感觉啥也做不了,就无精打采的,困。</p> <p>我做了一个Prompt Notebook,专门用来收藏或者记录自己手搓的生图提示词。带Chrome一键收藏插件。支持AI优化提示词。支持提示词中提取常用字段作为提示词百科词汇。也自带生图功能用来测提示词。但是要搭配Cloudflare R2+Worker的图床。</p> <p>今天主要是做一个AI模特的资产库。将常用的AI模特固定下来,进行身份设定,以及模特的一些角色定妆图。之后生图可以直接调用AI模特自动作为垫图。</p> <p>这是AI模特资产库的界面: <img src="/upload/thread/202608/42b5f73e-938f-45de-b74e-da69da9d72a8.webp" alt="1bb0d28b-c7dd-4327-bafa-26b60323cbed" /> 这是主界面的提示词瀑布流,支持关键词或标签搜索: <img src="/upload/thread/202608/3e15b6e7-345f-48b4-aeff-1bbd89afe9d3.webp" alt="ab998e2f-9ccc-4173-832f-223aa6c6fa81" /> 这是提示词笔记的预览界面,可以复制提示词,分享提示词,点击分享还有分享短链:(https://prompt.jintao.co.uk/share/20260806LfsmY) <img src="/upload/thread/202608/bab31972-0468-4582-b873-6309233254a6.webp" alt="20260806-201213" /> 可惜现在没额度了,我又不想换模型折腾。现在还有些界面细节和小功能需要落地完善,可能还要虫子要抓。弄好了,打算放GitHub开源。</p> <p>有朋友想试试的么?</p>

shynloc 2 4