Anthropic 收購 Bun,Claude Fable 5 用 11 天把百萬行 Zig 程式碼重寫成了 Rust
程式設計基礎設施的AI重塑
AI 公司開始直接買基礎工具鏈了。7 月 11 日,Anthropic 確認了一樁半年前的低調收購——它在 2025 年 12 月拿下了 JavaScript 執行時 Bun,創始人 Jarred Sumner 帶著整個團隊加入了 Claude 的陣營。這不是 Anthropic 第一次買公司,但卻是第一次把目標瞄準應用層之下的基礎設施。
Bun 是什麼?你可以把它理解成把 Node.js、npm、esbuild、Jest、npx 全部打包成一個超高速二進位制檔案的「瑞士軍刀」。一個命令裝完就能跑 TypeScript、打包、測試、管理依賴,所有事都比 Node.js 快上好幾倍。它從 2021 年開始走紅,目前月均 CLI 下載量 2200 萬,GitHub 上拿了 9 萬多顆星。Vercel、Railway、DigitalOcean 這些主流雲平臺都原生支援 Bun。
更關鍵的是,Bun 從一開始就是用 Zig 寫的。創始人 Sumner 2021 年在 Hacker News 上偶然看到 Zig 的文件,被它的底層控制力吸引,就一個人窩在奧克蘭的公寓裡,靠著這份熱情在一年內搞出了包含轉譯器、打包器、包管理器、測試執行器和部分 Node.js API 的龐大工程。Zig 給了他極致的效能,但某種程度也埋下了隱患。
Bun 的架構有一個相當罕見的挑戰:它要把 JavaScriptCore(一個自帶垃圾回收的 JS 引擎)和由 Zig 手動管理的記憶體混在一起跑。JavaScriptCore 對異常處理和 GC 時機有一整套嚴格規則,而 Zig 像 C 一樣沒有建構函式和解構函式,清理工作全靠開發者手動在每個呼叫點寫 defer。這種混合模式在 Bun 的 Bug 列表裡留下一串觸目驚心的記錄——v1.3.14 版本的更新日誌裡,堆釋放後使用(heap-use-after-free)在 zlib 裡出現、在 http2 裡出現、在 Buffer 操作裡也出現,每條修復都像是在修補一根遲早會崩的纜繩。
「我們的 Bug 修復列表讓人沮喪,我已經厭倦了每天睡前擔心 Bun 會不會崩潰。」Sumner 後來在部落格裡坦白。團隊不是沒努力——他們給 Zig 編譯器加上了 Address Sanitizer 支援,每個 commit 都跑 ASAN,Windows 版本用 Zig 的安全檢查模式釋出,還用 Fuzzilli 對執行時做 24 小時不間斷模糊測試。但這些手段依然擋不住那些在特定呼叫路徑下才能復現的記憶體錯誤。
事情在 Anthropic 入局後有了轉機。收購讓 Sumner 接觸到一個尚未公開發布的模型——Claude Fable 5。他用它做了一個激進的決定:把 Bun 的核心程式碼整個從 Zig 搬到 Rust。2026 年 5 月 14 日,一個名為「Rewrite Bun in Rust」的 PR 被合併進主分支,6755 個 commit、2188 個檔案被變更、約 100 萬行程式碼被重寫,前後只用了 11 天。
這個數字本身就足夠炸裂。一個 9 萬多星的基礎設施專案,用 AI 在不到兩週的時間裡完成了一場程式語言級別的全線遷移,而且測試透過率高達 99.8%。但真正值得追問的,不是「能不能跑通測試」,而是「跑通之後還能不能信任」。
Rust 的所有權模型和借用檢查器恰好能堵死 Bun 過去一直在跟的那類記憶體 Bug——編譯期就能阻止你在釋放後繼續訪問那塊記憶體。從技術邏輯上看,這個遷移方向完全正確。但 Rust port 的審計頁面隨後揭示了一個令人不安的數字:當時遷移後的程式碼裡有多達 13,365 個 unsafe 塊。官方解釋說大部分來自 FFI 邊界和遺留的所有權慣用法,約有 9300 個可以後期轉成 safe 程式碼,剩下的 4000 個會保留在必要邊界上——但一個以「記憶體安全」為核心理由的遷移,產出了上萬處 unsafe 標記,這個矛盾讓不少觀望者心生疑慮。
社群的反應比 Bug 本身更復雜。yt-dlp 最先給出了明確態度:把 Bun 支援限定在 1.2.11 到 1.3.14 版本之間——也就是純 Zig 程式碼的最後一個穩定區間,理由是該專案的開發方向顯示出了「完全 vibe-coded」的趨勢。Electrobun 宣佈 2.0 版本將與 Bun 解耦。GitHub 上還有一批專案在陸續移除 `bun.lock` 和 Bun API 的依賴,雖然有些遷移動作早於 Rust rewrite,但節奏顯然被加速了。
這背後是一場 AI 時代才有的信任危機。傳統上,一個大型基礎設施專案的核心遷移,需要經過漫長的人肉 Review、公開討論、漸進式釋出。參與貢獻的人讀過每一段關鍵邏輯,社群對程式碼庫的「心智模型」是共享的。而當 100 萬行程式碼由 AI 在 11 天內改寫完成時,即使測試全部透過,社群也沒有任何人「讀過」這些程式碼——因為你不可能在合理時間內人肉審查 100 萬行由 AI 生成的 Rust。
「測試透過只說明程式碼透過了已經寫出來的測試,它不能證明沒有未覆蓋路徑,不能證明抽象邊界清晰,也不能證明未來維護者能讀懂。」CSDN 上一位開發者的評論點出了問題的核心。基礎設施專案需要的不僅是「行為相似」,還需要可解釋的設計、可追蹤的歷史、可審查的變更——而這些恰恰是 AI 大規模生成程式碼最難以提供的。
不過,這件事也不能只往悲觀的方向看。Anthropic 為 Bun 帶來的資源是前所未有的。Bun 團隊過去最大的痛點是「不知道怎麼商業化」——拿了 2600 萬美元融資卻一分錢營收都沒有。現在他們不必再想這件事了。Anthropic 明確表示會投入更多資源,把 Bun 打造成構建 AI 時代軟體的首選底座,保持開源、MIT 協議、不鎖生態。
對於普通開發者和正在用 Bun 的專案來說,最理性的做法不是恐慌式刪除,而是把 Bunny 的用途拆開看:如果只是用來 `bun install` 或 `bun test`,風險很低;如果用作生產環境的執行時,就要小心那些接近系統邊界的能力——FFI、HTTP 伺服器、資料庫操作。同時儘量為外部使用者提供 Node/Deno 的備選路徑。
回頭再看整件事,Anthropic 收購 Bun 的意義其實遠不止於一條技術新聞。它標誌著 AI 公司正在從「用別人的工具開發 AI」轉向「控制自己依賴的每一層基礎設施」。Claude Code 上線僅半年就做到 10 億美元年化收入,支撐這個增速的執行迴圈太重了,把底層的執行時拿到自己手裡是唯一的選擇。而 Rust 遷移則成了 Claude Fable 5 能力的最佳廣告——一筆收購同時買下了控制權和一塊活的廣告牌。
往後看,更刺激的還在後面。當一個 AI 模型能一週內把百萬行基礎設施程式碼跨語言遷移一遍,那下一步就是讓 AI 完全接管一個開源專案的核心維護。到那時,信任的邊界到底劃在哪條線上,可能是整個行業都需要重新回答的問題。
值得警惕的是,Bun 這場風波給所有開源基礎設施專案提了一個醒:AI 可以加快遷移,但替代不了信任建設。對底層工具來說,最貴的東西永遠是讓使用者相信這段程式碼值得跑在自己的伺服器上——而這件事,單靠跑通測試集是做不到的。