Theo 谈 Bun 借助 AI 重写 Rust 的进展与风险

原标题Theo on Bun’s AI-Assisted Rust Rewrite and Its Risks

快速移植引出了内存安全、兼容性,以及开源运行时易主后如何确定优先级的问题。

TBTheo Browne讲者 · Ping Labs
频道
Theo - t3․gg
发布
2026年5月12日
视频
27:29
阅读
9 分钟
幻灯片
4
原文
英语
在 YouTube 打开
往下滚动阅读时,视频会缩到右下角继续播放。字幕跟随阅读语言。
阅读语言共 2 种语言可读
由 AI 从英语原文翻译。打开“对照原文”可以逐段核对。
摘要

30 秒看懂

Theo Browne 讨论了 Bun 在 AI 辅助下从 Zig 移植到 Rust 的计划、公布的测试结果,以及其中的技术和组织风险。他支持这个项目,同时质疑测试和新语言是否能满足所有用户的需求。

  1. 1OpenCode 为什么考虑 Node团队提到了 Windows 稳定性、Electron 嵌入、运行时选择空间和未来优先级的不确定性。
  2. 2快速展开的实验性移植Jarred Sumner 表示,使用 glibc 的 Linux x64 环境中,原有测试有 99.8% 通过。Theo 预计它会合并,但承认这只是预测。
  3. 3谁的问题会得到关注?Theo 担心重写引入的问题若不在 Anthropic 依赖的路径中,修复优先级可能较低。
  4. 4如何理解 unsafe 的使用Rust 的安全子集提供有用的保障;unsafe 操作则需要额外满足安全约束。关键词数量不能衡量缺陷。
  5. 5有条件的合并标准Sumner 表示,只有性能、内存使用和稳定性都有可测量的改善,他才会合并。

要点建议

  1. 单一平台上的高测试通过率令人鼓舞,但无法证明完全兼容。
  2. 紧贴原实现的移植可以保留已有行为,同时把更符合目标语言惯例的设计和安全改进留待后续完成。
  3. unsafe 的文本匹配值得调查,但并不等于漏洞数量。
  4. 开源用户不仅依赖许可证,也依赖维护者的工作优先级。
  5. 应针对自己的实际工作负载测量运行时性能。
全文

按章节阅读整理后的全文

只看原始文稿
01

受人喜爱的运行时走到转折点

Theo 说明他与 Bun 创始人的友谊,介绍 OpenCode 的担忧和 Rust 移植实验。

Bun 对我意义非凡。我从开始做内容时就认识了它的创始人 Jarred Sumner,一直支持这个项目,也见证了它被 Anthropic 收购。但最近我发现,使用 Bun 变得更困难了。OpenCode 的 Dax 正在转向 Node.js,原因包括 Windows 稳定性、Electron 集成,以及 Bun 未来方向的不确定性。

现在,Bun 正在借助 AI 智能体从 Zig 移植到 Rust。Jarred 表示,在使用 glibc 的 Linux x64 环境中,原有测试套件有 99.8% 通过了。起初只是一个实验,现在看来足够可行;录制这期视频时,我预计它会合并并发布,但这是我的预测,不是说它已经发生。

这次尝试提供了不少关于用 AI 迁移软件的经验。但人们对 Bun 的一些担忧,换一种语言未必能解决。为了理清这次移植,我想分别讨论 Zig 的问题、Bun 作为产品的问题,以及重写大型系统的风险。

02

Zig、Windows 与运行时选择

底层能力、平台稳定性和 Bun 专属 API 的迁移成本都会影响运行时选择。

Zig 很强大,它的编译期功能能让开发者以实用的方式控制生成代码,尤其适合跨平台系统集成。但强大的底层工具也会带来犯错的空间。手动管理内存可能造成泄漏、崩溃或安全问题,支持多个操作系统又增加了一层难度。

我自己也在 Bun 遇到过内存相关问题,早期版本尤其如此;Windows 更是反复让我受挫。Bun 可以把 JavaScript 和运行时打包为独立可执行文件,方便工具分发,但采用这种方式的应用也可能继承其平台问题。

OpenCode 的迁移之所以繁琐,部分原因是它使用了 Bun.file 等 Bun 专属 API。Bun 也支持 Node API,但依赖专属接口的代码要改写才能在其他运行时运行。Jarred 问过 Bun 1.3.10 之后 Windows 稳定性是否改善;以我的经验,问题仍然存在。

OpenCode 支持 Node.js 的理由
幻灯片 1 / 4OpenCode 支持 Node.js 的理由Dax 列出了 Windows 稳定性、Electron 集成、可移植性及基准测试结果。

Dax 列出的理由不止 Windows。Node 可以嵌入 Electron 桌面应用,无须另起进程;支持 Node 也让其他应用更容易嵌入 OpenCode,并为探索 Deno 留出空间。他们自己的基准测试显示,Bun 的速度优势没有实质性改善他们的工作负载。

Bun 的包管理和打包能力可能非常出色。它的网站还展示了一项 Express 基准测试:Bun 每秒约处理 6 万个请求,Node 约 2 万个。对这项特定服务器测试来说,差距很明显,但这并不能说明本地编程智能体是否会受益。应该衡量自己的应用实际执行的工作。

03

Anthropic 与更广泛的生态

收购既带来了重要的内部用户,也让其他用户对未来的工作优先级产生疑虑。

Bun 的 Express 基准测试
幻灯片 2 / 4Bun 的 Express 基准测试图中的每秒请求数只适用于特定基准测试,不能预测所有工作负载。

William Johnson 的文章提出了另一层担忧。Anthropic 于 2025 年 12 月收购 Bun,并表示项目会继续以 MIT 许可证开源,由原团队继续开发。Claude Code 使用 Bun,因此 Anthropic 有动力维护它;但 Johnson 担心,整个生态的需求未必都与 Claude Code 的优先事项一致。

我也有类似的焦虑。我的判断是 Claude Code 的产品体验变差了,而 Anthropic 自己的事后分析也讨论过默认推理力度降低、会话状态过期以及提示词改动等问题。这些经历不能证明 Bun 也会变差,却让我开始质疑未来会如何做产品决策。

问题并非 Bun 不好,也不是团队不再关心它。我担心的是,随着团队进一步融入 Anthropic,影响 Claude Code 的问题可能比其他用户的问题得到更高优先级。我在包管理上也遇到了足够多的边缘问题,以至于考虑让 T3 Code 换掉 Bun。

假设目前有 10 个问题,一部分在 Claude Code 使用的运行时路径中,另一部分涉及 monorepo 包管理。如果重写后出现更多问题,不在公司主要使用场景中的问题能得到同样的关注吗?这些数字只是用来说明问题的假设,并非实际缺陷数量。社区分支听起来很有吸引力,但长期维护如此复杂的运行时非常困难。

04

移植进展和测试结果

Sumner 描述了快速迁移及其动机。Theo 分析通过测试能说明什么,以及不能说明什么。

Jarred 介绍说,移植后的大量代码基本相同,但 Rust 可以帮助约束生命周期,并在需要时提供析构机制。他说自己厌倦了花时间处理内存泄漏、崩溃和稳定性问题,希望获得更强的预防工具。我猜,管理更多人员和智能体后,持续关注每个底层细节变得更难;这是我对他动机的解读。

他说这次移植涉及约 96 万行代码,而他在六天前才开始工作。他还计划详细介绍过程、性能、内存使用和可维护性。这些都是视频录制时他的说法和计划;测试结果令人鼓舞,但范围限于所述平台和测试套件。

Bun 的 Zig 分支还加入了并行语义分析和多个代码生成单元,团队表示这让调试构建更快。Jarred 说,如果 Rust 移植最终合并,Bun 1.3.14 可能是最后一个 Zig 版本。这个条件很重要:通过测试的移植并不自动意味着可以发布。

Charlie Marsh 提出了关键问题:团队会不会用已知问题换来数量未知的新问题?再好的测试套件也只能覆盖部分程序行为。Jarred 表示,重写版通过了与 200 多个问题相关的测试,他还没看到它比 Zig 版更慢的基准测试;这些观察仍需要更广泛的验证。

Charlie Marsh 对未知错误的疑问
幻灯片 3 / 4Charlie Marsh 对未知错误的疑问这个问题点出了重写可能用已知问题换来尚未发现的问题。
05

Rust 安全性与贴近原版的翻译

关键词搜索引出对 unsafe 代码的疑问;TypeScript 到 Go 的移植说明了团队为何可能先保留原有行为。

这次移植旨在保留现有实现,只使用少量第三方库,也没有全面采用 async Rust。Rust 的所有权和借用规则可以帮助安全代码避免某些内存错误,但它们不能消除所有错误或内存泄漏;使用 unsafe 时,程序员还必须满足额外的安全条件。

我把 unsafe 的使用情况当作一个粗略信号。在用 Rust 构建的 uv 项目里,第一次搜索找到 165 处,其中包括注释;换成某一种 unsafe 代码块的特定写法后,结果约为 73 处。这只是粗略的文本搜索,不同搜索模式无法可靠比较所有 unsafe 操作。

我在 Bun 移植版中搜索到 13,044 处 unsafe 字样。这是文本匹配数,并非经过核实的 unsafe 块或缺陷数量。我关注它,是因为紧贴低层 Zig 实现的翻译可能把原有假设带入 Rust,而不会立刻变成符合 Rust 惯例的安全代码。仅凭这个数字无法判断代码风险。

一种可能的路径是找到有问题的 unsafe 函数,理解它依赖的安全约束,再逐步用安全抽象替换其中的部分代码。智能体可以利用编译器诊断作为反馈。但通过编译只是有用证据,不能单独证明迁移后的行为完全正确,也不能证明周围所有 unsafe 假设都可靠。

TypeScript 团队将编译器移植到 Go 的过程提供了一个可供比较的例子。最初的做法尽量贴近原有实现,即使结果不符合 Go 的惯例,也能借助原生可执行文件获得速度提升。此后再进一步优化,发挥 Go 的长处。先保留行为,可以是一种务实的迁移策略。

这改变了我对语言的看法:语言可以是生成可执行程序的工具,而不是团队必须完全认同的身份。Bun 团队热爱 Zig;Rust 提供的工具则可能有助于解决他们想处理的错误。AI 能让重复性的移植工作更可行,但测试、测量和人的判断仍然必不可少。

06

crate 边界与未来挑战

分层、编译时间和分派依然困难。Sumner 为可能的合并设定了条件。

Jarred Sumner 讨论 Rust crate 分层
幻灯片 4 / 4Jarred Sumner 讨论 Rust crate 分层帖子介绍了 crate 边界、带标签指针,以及构建速度与运行时开销之间的权衡。

Jarred 还描述了一个棘手的分层问题。把移植版拆成许多 Rust crate 有助于编译,也可能让组件更容易复用,但 crate 边界不允许循环依赖。Bun 的 Zig 代码在事件循环任务、进程退出回调和非阻塞文件 I/O 等接口中使用了带标签指针。

他担心特定 trait 或函数指针方案的开销,以及编译器在这种设计下能否对其进行优化。当前方案使用生成的声明和链接时优化,在可能的情况下把带标签的分派变成直接调用。他向有经验的 Rust 开发者征求更简洁、运行时和内存开销都很低的方案;这是具体的工程权衡,不是对所有 Rust trait 的普遍结论。

即便智能体能快速生成代码,编译时间、模块边界和底层性能仍然是难题。Jarred 一边学习,一边公开讨论设计。我尊重这个实验的雄心,但移植规模和大量 unsafe 用法也让仔细审查变得重要。

Jarred 表示,只有 Rust 版在性能、内存使用和稳定性方面都比 Zig 版有可测量的改善,他才会合并它,其中稳定性是首要任务。我信任他,也希望团队成功。录制时我预计它既会带来好处,也会引入新问题;结果还有待观察,而这次尝试会让我们学到很多。

同频道的其他文章

5 张幻灯片38:47EN → 简体中文
Theo - t3․gg· 2026年10月28日Theo 的长时间 Agent 实验:验证、算力与成本Theo Browne · Ping Labs滑板游戏和两个编译器项目展示了反复检查与弹性算力如何支撑 agent 工作,也揭示了循环可能带来的高昂成本。编程智能体智能体工程AI cost & performance+2
5 张幻灯片36:07EN → 简体中文
Theo - t3․gg· 2026年10月27日Theo 谈 Token 成本、编程智能体与 AI 能力的价格Theo Browne · Ping Labs一则关于 Lauren 的 AI 支出估算广泛传播,引出了对缓存计价、基准测试和编程智能体工作方式的讨论。AI cost & performance编程智能体Inference+1
5 张幻灯片30:37EN → 简体中文
Theo - t3․gg· 2026年10月26日Theo 的三个技能:用编程智能体审查和交付代码Theo Browne · Ping Labssol-loop、full-send 和 full-stop 如何定义审查、验证以及不同程度的合并权限。Agent skills编程智能体Code review & verification+2
2 张幻灯片0:43EN → 简体中文
Theo - t3․gg· 2026年10月23日Theo 区分安全漏洞与实际攻击Theo Browne · Ping Labs一段简短讲解:软件漏洞披露和攻击事件为何属于不同类型的安全新闻。CybersecuritySoftware engineering
6 张幻灯片29:22EN → 简体中文
Theo - t3․gg· 2026年10月22日Theo 谈安全漏洞、被盗 API 密钥与 AITheo Browne · Ping Labs从漏洞披露到补丁部署之间的风险窗口,以及被盗推理密钥为何可能有价值的推测。CybersecurityAI securitySoftware engineering+1
4 张幻灯片31:13EN → 简体中文
Theo - t3․gg· 2026年10月20日Theo:更聪明的模型为何能帮助更多人Theo Browne · Ping Labs从游戏修改到编译器实验,Theo 重新思考谁能从更强大的 AI 中受益。编程智能体Developer productivityHuman-AI Collaboration+1