Bun 11 日由 Zig 搬到 Rust:64 個 Claude agent 點樣避撞 code
Tech News

Bun 11 日由 Zig 搬到 Rust:64 個 Claude agent 點樣避撞 code

圖片:via iThome — https://www.ithome.com.tw/news/177619
TechLab 編輯部(譯)·

四個 worktree 分流,測試同 code review 撐住高速改寫

53 萬行其實點計

iThome 報道,Bun 創辦人 Jarred Sumner 用 Claude Code,喺 11 日內將原本以 Zig 為主嘅 codebase 搬到 Rust。53.5 萬行係舊 Zig code 嘅規模,落入主分支嘅 PR 就新增約 100.9 萬行,兩個數唔可以撈埋講。commit 都有唔同口徑:Bun 官方列出 6,502 個不計 merge 嘅 commit,同頁另列 6,778 個總 commit。行數同 commit 數可以反映工程規模,但唔代表團隊生產力真係高咗幾多。

Bun 官方 Rust 重寫技術文章封面圖

圖片:Bun

先寫清規則,再叫 agent 搬 code

Sumner 起步時花咗約三個鐘,同 Claude 整理 Zig 類型、記憶體生命週期同 Rust 寫法嘅對應規則,產出 PORTING.mdLIFETIMES.tsv,再揀三個檔案試跑。確認方法行得通,先擴至全數 1,448 個 Zig 檔案。之後約 50 套 dynamic workflow 各自處理機械式轉換、compiler error、測試失敗、重構同 review。做大型遷移之前,要先寫清楚規格,亦要有一套可以重複驗證嘅方法;單靠 prompt 寫得搶眼並冇乜幫助。

四個 worktree 點樣減少互撞

最高峰有四套 dynamic workflow 同時跑,每套放喺獨立 git worktree,再開 16 個 Claude,合共約 64 個 agent。worktree 將檔案、index 同 branch 狀態分開,agent 同時改 code 時少咗直接踩爛對方未完成嘅內容。Bun 又按 Rust crate 分派約 16,000 個 compiler error,每批改動去到尾段先交 commit。worktree 只解決檔案層面嘅碰撞;跨 crate 依賴同邏輯衝突,仍要靠分批合併、重新編譯同測試執手尾。

Code review 已經變成吞吐量問題

每個實作 agent 後面跟兩個獨立 reviewer,reviewer 只睇 diff,亦預設入面有錯,再由另一個 agent 套用意見。官方展示過呢套對抗式 review 捉到 use-after-free、負數時間轉換同 Rust eager evaluation 等問題。不過 Sumner 只話自己逐段對照過「好多」Zig 同 Rust code,冇聲稱逐行讀完逾百萬行新增內容;公開 PR 亦冇真人 approving review。agent 可以加快 review,但邊啲風險要由真人把關、出事時邊個負責,團隊仍然要事先講清楚。

測試夠厚,先有條件跑到咁快

Bun 本身有一套用 TypeScript 寫、唔綁底層語言嘅測試,啱啱好可以拎 Zig 版行為驗收 Rust 版。Bun 團隊話合併前 Debian x64、macOS arm64 同 Windows x64 嘅 CI 全數過關,亦冇刪除或跳過測試;單計 Debian 就有逾 138 萬個 expect() 檢查。不過測試過關只代表已覆蓋行為冇走樣。官方其後仍記錄到 19 項遷移 regression,全部再修正,證明測試套件再大都會有盲位。

Rust 個名唔等於自動安全

Bun 官方披露,寫技術總結時約 4% Rust code 放喺 unsafe block,涉及約 2.7 萬行;因為要接 JavaScriptCore同其他 C、C++ library,unsafe 唔可能完全消失。PR 合併同日,GitHub issue #30719 就有人用 Miri 揭出 safe interface 可以產生 dangling reference,團隊其後將相關 function 改成 unsafe,再補安全條件。Zig 創辦人 Andrew Kelley 亦質疑大量未經完整真人 review 嘅 code,可唔可以單靠測試建立信心。佢篇文夾雜雙方舊怨,不過呢個技術疑問確實有公開 issue 支持。

速度同慳位數字要識拆

Bun 官方喺 Linux x64 自家 benchmark 錄得約 2% 至 5%效能升幅,例如 Bun.serve HTTP throughput 快 4.8%,next build 快 4.5%。官方亦話 Linux 同 Windows binary 細約 20%,但呢個結果同時包含 link-time optimization、ICU 資料整理同 identical code folding,唔可以全部算落 Rust 遷移。至於 128 個 bug,準確講法係 Bun v1.4 修好咗 128 個可喺 v1.3.14 重現嘅問題,當中亦有遷移後另做嘅清理。

11 日工程背後有高門檻

官方按 API 定價估算,合併前模型用量值約 16.5 萬美元,而且用上未公開嘅 Claude Fable 5。Bun 已喺 2025 年 12 月俾 Anthropic 收購,Claude Code 又係 Rust 版 Bun 嘅生產用戶,所以呢個案例本身帶住供應商宣傳利益。一般 startup 或 IT 團隊最值得跟嘅做法,包括先建立行為基準、隔離同步修改、將 compiler error 變成可分派清單,同預留獨立 review;agent 數量就要跟測試覆蓋、合併能力同真人審核資源一齊加。


參考來源

本文根據原文及公開資料整理;資料有出入時,以原文及官方資料為準。

分享:WhatsAppThreadsTelegramFacebook