本篇文章更新時間:2026/02/24
如有資訊過時或語誤之處,歡迎使用 Contact 功能通知或向一介資男的 LINE 社群反應。
如果本站內容對你有幫助,歡迎贊助支持 。
內容目錄
Ladybird 採用 Rust:AI 協助下的跨語言重構與務實選擇
編輯前言:這篇文章來自 Ladybird 團隊創辦人 Andreas Kling 的分享,原文為《Ladybird adopts Rust, with help from AI》。內容講述他們為何決定在瀏覽器專案中逐步從 C++ 過渡到 Rust,以及 AI 在這場重寫工程中的角色。身為長期關注系統語言演進與瀏覽器技術的人,我覺得這是一篇值得深讀的技術決策解析。
核心觀點 (Key Takeaways)
- Ladybird 原本評估過 Swift,但跨平台與 C++ 互操作性不佳;Rust 的生態系更成熟,也更安全。
- 雖然 Rust 不擅長模擬 1990 年代那種深繼承的 OOP 模型,但基於記憶體安全與生態完整度,他們選擇務實轉向。
- LibJS(JavaScript 引擎)首度被移植到 Rust,以 AI 協作的方式完成 25,000 行程式碼,並達成與 C++ 逐位元一致 的輸出。
深入解析
Ladybird 專案一直希望找到 C++ 的替代語言,尤其是能提供「記憶體安全」的系統語言。原文中 Andreas 提到,他們曾經嘗試 Swift,但跨平台支援有限,且 C++ interop 始終不到位。這讓 Rust 自然躍升為下一個候選人。
原文提到:「Rust has the ecosystem and the safety guarantees we need. Both Firefox and Chromium have already begun introducing Rust into their codebases…」
換句話說,Rust 在系統程式領域的成熟度,已不再是實驗性的嘗試,而是一條被主流瀏覽器驗證過的道路。
- Rust 的語言特性不完全符合 Web 平台的 OOP:像 DOM 這類 90 年代味十足的階層物件模型,本質更適合 GC 語言或 C++。
- 然而,安全性與生態系成熟度比語言風格更重要:在多年進度停滯後,團隊選擇務實而不是完美的方案。
Porting LibJS:AI 介入的新型態重構流程
這次最具突破性的成果,就是 Ladybird 的 JavaScript 引擎 LibJS 已完成大規模 Rust 重寫。令人驚訝的是:
- 重寫耗時僅兩週
- 25,000 行 Rust 程式碼
- 使用 Claude Code 與 Codex 進行「人類主導、AI 協作」的翻譯
- 透過多輪「對抗式審查」讓不同模型找錯誤
這裡最吸引我的是「AI as a compiler engineer assistant」這種新工作流。Andreas 並沒有讓 AI 自動產生程式碼,而是自己負責決策、方向、結構,由 AI 協助翻譯與檢查。
結果相當驚人:
- 所有 AST 與 bytecode 均與 C++ 版本完全一致
- 測試套件(test262 與 regression tests)皆無回歸
- 性能沒有退步
這種「逐位元一致」的要求在編譯器與執行引擎領域幾乎是最高標準,而 Rust 版本能達成這點,代表架構與程式碼都被忠實重現。
筆者心得與啟發
這篇文章最讓我震撼的不是 Ladybird 採用 Rust,而是 AI 參與大型系統語言重寫工程時的新協作模式正在形成。如果一個人能在兩週內,靠 AI 協助完成 25,000 行具複雜度的跨語言移植,而且還能做到逐位元一致,這意味著未來編譯器、瀏覽器引擎、甚至作業系統中的大型模組移植,都可能加速數倍以上。
另一方面,我也欣賞 Ladybird 的務實態度。他們沒有追求一次到位,而是:
- Rust 與 C++ 將長期並存
- 移植由核心團隊管控
- 初期 Rust 程式碼不追求 idiomatic,而是優先確保與 C++ 行為一致
這種策略讓我想到業界常見的「strangler pattern」,逐步重寫、逐步替換,避免一次重構造成技術風險。
總結來說,Ladybird 的決策點出了一個關鍵趨勢:系統語言的變革不再只是語言本身的能力,而是工具、AI、測試、生態系一起支撐的整體效率。Rust + AI 的組合,可能會成為未來系統軟體發展的新標準流程。
