![]()
“我使用 Claude Code 搭建了約 50 套動態工作流,讓它們連續運行 11 天,最終用 Rust 重寫了 Bun。”
![]()
JavaScript 運行時 Bun 的創始人 Jarred Sumner 發布長文,詳細介紹了這次大規模代碼重寫。
他利用由 Anthropic 一款預發布模型驅動的大量 AI 代理,在 11 天內將 Bun 原有的 53.5 萬行 Zig 代碼遷移至 Rust。
按照 API 公開價格估算,這次重寫消耗的模型調用成本約為 16.5 萬美元(111.8 萬元人民幣)。不過,這只是根據 Token 使用量計算的理論價格,并不一定代表實際支付金額。
Sumner 同時宣布,Bun v1.4.0 將成為首個使用 Rust 編寫的正式版本,目前已經推出 Canary 測試版。
根據 Bun 團隊公布的數據,改用 Rust 后,新版本的運行速度提升約 2% 至 5%,二進制文件體積明顯縮小,內存占用也有所下降。
不過,這些測試結果均來自 Bun 團隊,目前尚未經過第三方獨立驗證。
為什么要重寫 Bun?
Sumner 決定實施這項可能是目前公開規模最大的 AI 驅動生產軟件重寫項目之一,主要原因是他已經厭倦了長期擔憂內存泄漏、程序崩潰和穩定性問題。
Bun 原有的 Zig 代碼中,存在大量釋放后繼續使用內存、重復釋放內存,以及在錯誤處理路徑中忘記釋放內存等問題。
Sumner 表示,這些問題甚至讓他晚上睡覺時都會擔心 Bun 是否會再次崩潰。
不過,他特別強調,自己并不認為這些問題是 Zig 語言造成的。
“我并不責怪 Zig,其他使用 Zig 的項目并沒有出現我們遇到的這些問題。”
Sumner 曾考慮使用 C++ 重寫,因為當時 Bun 約有 20% 的代碼已經使用 C++ 編寫。
但他最終選擇 Rust,原因可以概括為一句話:“編譯器報錯,比一份代碼規范更適合作為反饋機制。”
最初,Sumner 并不認為徹底重寫 Bun 是一個現實選項。
按照傳統開發方式,整個過程可能需要一年時間。在此期間,Bun 的工程師必須暫停漏洞修復、安全更新和新功能開發,將全部精力投入代碼遷移。
“整整一年無法給用戶帶來任何可見改進,并不是一個現實的選擇。因此,我們原本的計劃是通過代碼規范改善穩定性,這也是我們后來在 Bun 代碼庫中加入類似 Rust 智能指針的原因。”
“但說實話,我并不想這么做。自行開發的智能指針使用體驗不如 Rust,而且也無法提供 Rust 那樣的安全保證。”
Bun 的測試套件使用 TypeScript 編寫,這也成為重寫能夠順利推進的重要因素。由于測試代碼并不依賴 Zig 或 Rust,它可以充當一套與編程語言無關的兼容性測試體系,使 AI 代理能夠自動完成早期代碼遷移工作。
Anthropic 員工的特殊條件
Bun 于去年 12 月被 Anthropic 收購,Sumner 此后成為 Anthropic 員工。
“在這次 Rust 重寫的大部分過程中,我使用的是 Claude Fable 5 的預發布版本。”
Sumner 強調,這次重寫絕不是通過一句提示詞完成的。他開玩笑說,假如只向模型輸入“用 Rust 重寫 Bun,不要犯任何錯誤”,這會是一條非常糟糕的提示詞。
實際操作中,他使用 Claude Code 搭建了約 50 套動態工作流,并讓這些工作流連續運行 11 天。
在并發規模最高的時候,他同時啟動了 4 套工作流,每套工作流運行 16 個 Claude 實例,相當于共有 64 個 Claude 同時參與代碼重寫。
如此大規模地調用模型,成本自然不低。
Sumner 估算,按照 API 公開價格計算,整個項目的模型調用費用約為 16.5 萬美元。
如何確保 AI 生成的代碼可信?
Sumner 表示,從 5 月 3 日啟動項目,到 5 月 11 日合并代碼,他始終在監控 AI 代理的運行情況,并親自閱讀模型輸出,檢查其中是否存在錯誤。
為了能夠審查由 AI 生成的大型代碼提交,并有信心合并主要由大模型編寫的代碼,他建立了一套與編程語言無關的測試系統,其中包含約 100 萬項斷言,同時引入了對抗性代碼審查機制。
在博客中,Sumner 還詳細介紹了代碼生成循環、自動測試流程和基礎設施的搭建方式。
持續監控 AI 生成的代碼還有另一個好處:一旦 Claude 的工作循環開始反復產生同類錯誤,他可以直接修改整個工作流,而不是逐個手動修復錯誤代碼。
Sumner 表示,這種方式提高了他對最終代碼質量的信心。
在重寫過程中,團隊共發現 19 個已知的功能回退問題。這些問題主要來自一些在 Zig 和 Rust 中寫法完全相同、實際語義卻存在差異的代碼。目前,相關問題已經全部修復。
重寫后的結果
根據 Bun 團隊的內部測試,Rust 版 Bun 運行速度更快,程序體積更小,內存占用也更低。
Rust 還為開發團隊提供了更多改善穩定性的工具,包括 Rust 的借用檢查器、用于發現未定義行為的 Miri、內存泄漏檢測工具 LeakSanitizer,以及全天候運行的覆蓋率引導模糊測試系統。
對于外界關心的代碼可維護性問題,Sumner 表示,雖然目前仍有部分代碼需要繼續重構,但 Zig 版本和 Rust 版本在整體結構上非常相似。
“任何理解原有 Zig 代碼的人,也能看懂遷移后的 Rust 代碼。”
自 6 月 17 日以來,最新版 Claude Code 已經開始運行 Rust 版 Bun。
Sumner 表示:“在 Linux 上,啟動速度提升了 10%,除此之外,幾乎沒有人注意到變化。沒有意外,就是最好的結果。”
云頭條聲明:如以上內容有誤或侵犯到你公司、機構、單位或個人權益,請聯系我們說明理由,我們會配合,無條件刪除處理。
![]()
![]()
特別聲明:以上內容(如有圖片或視頻亦包括在內)為自媒體平臺“網易號”用戶上傳并發布,本平臺僅提供信息存儲服務。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.