打开网易新闻 查看精彩图片

独立的Ladybird网页浏览器项目正在改变其编程语言选择方向,基于大语言模型的编程助手正在帮助评估这一转变。

该项目最新博客文章的标题直接说明了正在发生的事情:"Ladybird采用Rust,在AI帮助下"。该文章还将其开发延迟约一年归咎于尝试使用苹果的Swift编程语言,其GitHub问题页面显示这已成为过去。目前,工作仍在C++中继续进行,同时并行运行着将子系统移植到Rust的副项目。

Ladybird项目正在从零开始编写一个现代网页浏览器,包括其渲染引擎。这是一个巨大的工程;此类项目屈指可数。除了一些细分工具外,所有主流浏览器归结为三个基本系列。Mozilla的Firefox基于Mozilla自己的Gecko渲染引擎。另外两个彼此相关。在苹果操作系统上,Safari基于苹果的WebKit引擎,该引擎源于2003年对KDE的KHTML的分叉。在其他平台上,有谷歌Chrome,它使用谷歌十年后从WebKit分叉出来的Blink引擎。

Ladybird最初是Serenity OS项目的内置原生网页浏览器,我们在2022年初试用并撰写了相关文章。大约18个月后,Serenity OS项目迎来五周年,首席开发者Andreas Kling决定将浏览器作为一个独立的、独立的跨平台程序分离出来。

Serenity OS是一个新的类Unix操作系统。与Linux或BSD不同,它是用C++实现的,这意味着Ladybird也是如此。早在2024年,Kling在X上宣布浏览器项目正在改变方向,转而使用相对较新的Swift编程语言。苹果在2014年宣布了Swift,第二年承诺Swift 2将开源——因此是跨平台的。

不过,Ladybird与Swift的短暂恋情似乎已经结束。上周,Kling关闭了问题#933 Swift 6.0阻塞因素,并评论道:"关闭此问题,因为我们不再追求Swift采用。"

现在他正在谈论其中的原因。在Rust公告中,他说:"C++互操作性始终没有达到预期,而苹果生态系统之外的平台支持有限。"

相反,"展望未来,我们正在用Rust重写Ladybird的部分代码。"文章继续说道:"当我们最初在2024年评估Rust时,我们拒绝了它,因为它不太适合C++风格的面向对象编程。但经过又一年的原地踏步,是时候做出务实的选择了。"

不过,选择的方式可能会引起一些人的关注。他选择使用基于大语言模型的编程助手将C++代码翻译成Rust,然后仔细检查生成代码的结构是否与原始代码匹配,以及是否产生相同的输出。他选择从Ladybird的JavaScript解释器开始,因为它相对自包含,其阶段和输出定义明确,并且由于ECMAScript测试套件而具有良好的测试覆盖率。

正如他仔细解释的那样,这不是"氛围编程"的练习:"我使用Claude Code和Codex进行翻译。这是人类指导的,而非自主代码生成。我决定移植什么、按什么顺序以及Rust代码应该是什么样子。这是数百个小提示,引导智能体到需要去的地方。在初始翻译后,我进行了多轮对抗性审查,要求不同模型分析代码中的错误和不良模式。"

结果听起来确实令人印象深刻:"从一开始的要求就是两个管道输出的字节级别完全相同。结果是大约25,000行Rust代码,整个移植用了大约两周时间。同样的工作如果手动完成将花费我数月时间。我们已经验证了Rust解析器生成的每个AST都与C++的相同,Rust编译器生成的所有字节码都与C++编译器的输出相同。全面零回归。"

使用大语言模型将软件从一种语言翻译到另一种语言以追求更好的安全性——以及性能、代码大小和其他理想属性——的方法是我们在2024年自己闲聊时推测过的。这几乎与氛围编程群体的放手让机器人完成的方法相反。

Kling指出,结果并不是地道的Rust代码,需要完善。这不是项目的唯一新方向:"这不会成为项目的主要焦点。我们将继续用C++开发引擎,将子系统移植到Rust将是一个长期运行的副线。"

这是一个有趣的尝试,我们怀疑它会像讨好一些人一样激怒另一些人。Kling对争议并不陌生。例如,他被指控恐跨性别,因为他拒绝更改以使Serenity OS文档的语言更加性别中立等。它还获得了Cloudflare的赞助——而Cloudflare有时对小众浏览器并不友好。对一些人来说,这些足以谴责这个项目,以及基于Omarchy Arch的Linux变体,我们之前已经讨论过围绕它的争议。

作为一个有趣的脚注,在我们关于大语言模型代码翻译的文章中,我们链接了编程博客作者Steve Yegge的帖子。他最近全力投入到他称之为"Gas Town"的机器人群监督机器人的模式中,并且新发现了用加密货币支付Token的热情。与Yegge的博客文章一如既往地长且相当深入,但这次我们想强调我们不建议您阅读它们。我们不太确定它们值得您花时间。不过,Rusty Foster的批评性评估"All Gas Town, No Brakes Town"可能值得一读。

Q&A

Q1:Ladybird浏览器项目是什么?它有什么特点?

A:Ladybird是一个独立的网页浏览器项目,正在从零开始编写现代网页浏览器和渲染引擎。它最初是Serenity OS项目的内置浏览器,后来被分离为独立的跨平台程序。目前主要用C++开发,正在尝试部分移植到Rust语言。

Q2:Ladybird为什么要从Swift转向Rust语言?

A:Ladybird曾尝试采用Swift语言,但遇到了C++互操作性不佳和苹果生态系统外平台支持有限的问题,这导致开发延迟约一年。最终项目决定放弃Swift,转而选择Rust语言进行部分重写。

Q3:Andreas Kling是如何使用AI帮助代码翻译的?

A:Kling使用Claude Code和Codex等大语言模型助手将C++代码翻译成Rust,但这是人类指导的过程,不是自主代码生成。他通过数百个小提示引导AI,并进行多轮对抗性审查。整个移植过程用了约两周时间,生成了25,000行Rust代码,实现了字节级别的完全相同输出。