Bun 从 Zig 迁到 Rust,本来可以只是一条语言选型新闻。
它的特殊之处在于,这次迁移发生在 Anthropic 收购之后,Bun 官方也明确写到:重写过程大量使用了预发布版 Claude Fable 5,并通过 Claude Code workflow、测试、对抗审查和人工监控来建立合并信心。
几天后,Zig 创始人 Andrew Kelley 公开回应。Ray Myers 又把争议推向另一个问题:AI 公司把这种迁移讲成“AI 足够强”的证明时,软件工程本身被省略了多少。

代码生成后的硬边界
Bun 官方给出的迁移理由很具体:use-after-free、double-free、错误路径忘记释放、异步 close 后生命周期错位。这些问题不靠语法高亮暴露,常常也不会在编译阶段出现。
Rust 的价值在这里很朴素。它把一部分原本依赖约定、审查和注意力维持的边界,搬进类型系统和所有权规则里。代码写错时,编译器先拒绝。
AI 让这个差异变得更重要。
人类写代码慢,reviewer 还有机会顺着上下文读生命周期。Agent 可以成片生成代码,reviewer 面对的是一批看起来合理的提交。此时“仔细看”很快从流程退化成愿望。能被编译器、测试、lint、权限系统默认拦住的错误,才是更可靠的工程资产。
选型要看失败方式
Bun 也讨论过继续留在 Zig 的路线:用更刚性的 style guide 写清所有权期待,再靠 code review、linters 和静态分析执行。这个方向并非无效,TigerBeetle 这类 Zig 项目就靠严格纪律维持质量。
差别在执行成本。style guide 需要组织持续投入注意力;类型系统更像一道默认开启的闸门。
AI 代码规模越大,团队越需要追问技术栈的失败方式。Agent 写错时,是编译失败,测试失败,权限被拒,还是安静地进入仓库。迁移流程出错时,是反馈到 workflow,还是在局部补丁里被抹平。审查 Agent 是否隔离上下文,还是继承了实现 Agent 的自我辩护。

Bun 迁到 Rust,不等于 Rust 永远优于 Zig。它更像一个信号:代码生产能力突然膨胀后,团队会重新寻找压住复杂度的硬边界。
代码会越来越容易生成。真正稀缺的,是能让生成物被相信的结构。
