Ladybird 浏览器的创始人 Andreas Kling 宣布,Ladybird 项目将采用 Rust 语言进行开发,并开始用该语言重写部分代码。作为 C++ 的一项实验,LibJS JavaScript 引擎已经用 Rust 重写完成。选择 LibJS 的原因是其良好的测试覆盖率,这简化了对移植质量的评估。
为了加快移植进程,我们使用了人工智能助手 Claude Code 和 OpenAI Codex,使得代码重写工作在两周内完成。移植工作在开发者的指导下逐步进行,开发者在此过程中向人工智能助手发送了数百条提示,决定移植顺序和移植内容,并明确最终 Rust 代码的要求。在收到来自不同人工智能模型的代码后,我们对结果进行了审查和分析,以查找错误和值得商榷的决策。
最终,基于 Rust 的引擎成功通过了 test262 测试套件中的全部 52898 项 ECMAScript 兼容性测试以及 Ladybird 项目中的 12461 项回归测试。Rust 版本生成的抽象语法树 (AST) 和字节码与 C++ 版本完全一致,目前尚未发现任何回归问题。JavaScript 测试也未显示性能下降。此外,使用 C++ 和 Rust 版本的 LibJS 进行的网站处理结果对比测试也证实了这一点。
用 Rust 重写浏览器组件被视为一项次要项目,可能需要花费大量时间。目前,主要开发工作正在使用 C++ 进行。哪些子系统将用 Rust 重写将由核心开发团队决定。新的 Rust 代码将通过明确定义的互操作层与现有的 C++ 代码共存。
值得注意的是,2024 年 Ladybird 的开发者曾考虑使用 Swift 编程语言,但发现其与 C++ 代码的互操作性不足,且对非苹果平台的支持有限。Rust 则以其更成熟的系统编程生态系统和安全保障而著称。此外,许多 Ladybird 开发者都熟悉这门语言。然而,由于 Rust 基于所有权的开发模式与 C++ 的面向对象风格相冲突,因此在 2024 年,Ladybird 并未批准使用 Rust。
Andreas Kling 曾就职于诺基亚,参与 KHTML 的开发,之后加入苹果公司,成为 Safari 浏览器的开发者之一。Ladybird 最初是为 SerenityOS 操作系统开发的一款应用,但在 2024 年夏季,它被拆分为一个独立项目,并获得了 1 万美元的捐赠。该浏览器使用 C++ 编写,并以 BSD 许可证发布。该项目正在开发自己的 LibWeb 引擎、LibJS JavaScript 解释器以及相关库。
来源: opennet.ru
