AI 迁移浏览器引擎到 Rust,两周、2.5万行、零回归
你听说过用 AI 两周内把整个 JavaScript 引擎从 C++ 转成 Rust,还保持完全一致的输出吗?这听起来仿佛是科幻小说中的情节,但一个开源浏览器项目最近确实做到了。它用 AI 工具在两周内完成了 2.5 万行代码的转换,所有测试均通过,性能无损。这个项目叫 Ladybird,是一个独立的浏览器开发项目,旨在提供一个替代 Chrome、Firefox 等主流浏览器的选择。它最初是基于一个操作系统项目衍生出来的,现在正在独立发展。
为什么需要内存安全?
浏览器处理来自互联网的不信任代码,内存安全问题可能导致严重漏洞。例如,当加载网页时,如果存在内存错误,黑客可能利用它执行恶意代码。C++ 虽然性能高,但内存管理容易出错,而 Rust 的内存安全特性可以从根本上减少这类漏洞。Chrome 和 Firefox 早已开始在部分模块中使用 Rust,Ladybird 的决策正是基于这一趋势。在官方公告中,项目负责人提到:「浏览器是安全敏感项目,下载并执行不信任代码是其核心功能。如果内存安全是必需的,浏览器就是最需要的地方。」
为何放弃 Swift 转向 Rust?
2024 年,项目曾尝试用 Swift 替代 C++,但很快发现 Swift 的跨平台支持存在严重缺陷。虽然 Apple 宣传「跨平台」,但实际生态几乎只存在于 Apple 系。有开发者在Hacker News 讨论中指出:「Swift 的 C++ 互操作问题反复出现,编译器 bug 导致无法推进,而 Rust 编译器虽学习曲线陡峭但稳定可靠。」另一位开发者补充道:「Swift 是 Apple 的树,Rust 是开源的森林。」更关键的是,Rust 的生态系统对系统级编程更成熟,且许多贡献者已熟悉 Rust。这与 Swift 的「平台支持有限」形成鲜明对比。
AI 如何辅助代码迁移?
迁移过程并非全自动,而是「人类主导,AI 辅助」。项目负责人用Claude Code和Codex进行翻译,但全程人工把控:决定转换顺序、检查逻辑、多次审查。他描述道:「这是数百个小型提示的组合,引导 AI 完成任务。」例如,他们先转换 JavaScript 引擎的词法分析器、解析器等自包含模块,因为这些部分有大量测试覆盖。测试结果令人惊讶:25,000 行 Rust 代码,两周完成,而手动移植需数月。所有测试均通过,包括test262的 52,898 个测试和 12,461 个自家回归测试,性能无损。
我们验证了 Rust 解析器生成的 AST 与 C++ 完全一致,字节码输出也完全相同。零回归。
这种「字节对字节」的验证方式是关键。通过同时运行 C++ 和 Rust 管道并比对输出,任何差异都会立即暴露。这避免了传统重写中常见的「新代码引入隐藏 bug」问题。一位开发者在讨论中总结:「重写失败常因人们试图在迁移时『改进』代码,而 AI 辅助的纯翻译能确保行为一致。」
为什么不是完全重写?
项目明确表示不会完全放弃 C++,而是「逐步替换」。新 Rust 代码会与现有 C++ 共存,通过明确接口交互。负责人解释:「Rust 不会成为主要焦点,移植工作是长期的支线任务。」这种策略规避了「完全重写」风险——历史上许多项目因重写中断开发而失败。Firefox 和 Chromium 都采用混合模式,Rust 仅用于关键模块(如 CSS 引擎或字体渲染),而非整个项目。一位工程师在Hacker News中指出:「这就像给旧房子换地板,而不是拆掉重建。」事实上,Ladybird 的 C++ 代码已使用现代内存安全实践,但 Rust 的编译器强制检查能提供额外保障。
Rust 社区的争议与真相
Rust 的争议始终围绕社区和生态。有人抱怨「Rust 社区狂热」,称其「毒性」;但更多人认为这是误解。一位资深开发者坦言:「真正用 Rust 的人反而很务实,狂热者只是少数。」技术层面,Rust 的编译速度慢、依赖树膨胀(如邮件服务器 Stalwart 有 893 个依赖)是真实问题,但内存安全优势明显。Chrome 用 Rust 重写字体渲染库Skrifa就是例证——它显著提升了安全性和性能。
Rust 不是完美的,但它是当前最平衡的选择。编译器强制检查能避免 C++ 的常见错误,而 AI 让迁移更高效。
关于 AI 生成的「非 idiomatic Rust」,项目负责人表示:「当前代码像 C++ 翻译版,但这是故意的。先确保兼容性,未来再优化成地道 Rust。」这种渐进式策略避免了「一次性重构」的风险。一位开发者在讨论中调侃:「AI 写 Rust 就像用锤子修表——先确保零件能装上,再慢慢调整精度。」
浏览器生态的未来猜想
多个 Rust 浏览器引擎可能打破 Chrome 垄断,但 Ladybird 离可用还有距离。Servo 项目被频繁提及,但多数人认为 Ladybird 在实际渲染能力上更领先——毕竟「能发 Gmail 的浏览器才算真浏览器」。一位 Hacker News 用户指出:「Servo 更像实验品,Ladybird 已能正常浏览网页。」但挑战依然存在:浏览器兼容性复杂,角落案例极多。一位开发者坦言:「现在讨论替代品太早,但 Rust 的内存安全对浏览器至关重要。」
AI 辅助开发的未来
这次迁移揭示了 AI 在软件开发中的新角色:不是取代程序员,而是让程序员专注创造性工作。代码迁移、文档生成、测试用例生成等机械任务可由 AI 辅助完成。一位开发者分享经验:「用 AI 把老旧 Perl 脚本转成 Rust,80 分钟就生成完整工具。」但关键仍是「人类主导」:AI 可能生成unsafe代码或逻辑错误,需人工审核。正如一位工程师所说:「AI 是工具,不是决策者。」未来,AI 可能成为「智能协作者」,处理重复性工作,而人类专注于架构设计和复杂问题解决。
AI 不会写代码,但能帮程序员更快地写出好代码。
对普通用户而言,这或许意味着更安全、更稳定的浏览器——毕竟内存安全漏洞曾导致无数安全事件。对开发者而言,AI 降低了语言迁移门槛,让技术升级更可行。无论 Ladybird 未来如何,这次尝试已证明:AI + 人类协作,能解决传统开发中棘手的问题。

更多推荐

所有评论(0)