Bun 的遷移:從 Zig 到 Rust 以及 AI 驅動重寫的興起

軟體工程領域目前正見證著 Bun(高性能 JavaScript runtime)開發過程中的一場引人注目的轉變。Bun 正將其代碼庫從 Zig 轉向 Rust,這一舉動在 Hacker News 和 GitHub 上引發了巨大的爭議。這次遷移不僅僅是語言偏好的改變,更為新興的 AI 輔助大規模重構趨勢提供了一個案例研究。

轉變:超越 Zig

在開發初期,Bun 曾是 Zig 編程語言的旗艦項目,展示了該語言構建高性能、生產就緒系統的能力。然而,最近的 pull requests——特別是移除 .zig 文件的舉動——標誌著向 Rust 的戰略性轉向。

雖然對於此次遷移的技術理由經常存在爭議,但社群已指出關於 Zig 穩定性的幾個反覆出現的主題。一些開發者長期以來一直擔心 Zig 對於企業級可靠性而言仍過於不穩定,並將語言演進的波動性視為遷移到 Rust 的主要原因,因為 Rust 提供更成熟的生態系統和更強的安全保障。

AI 在重寫中的角色

這次轉變中最具爭議性的方面,或許是懷疑 AI 在執行重寫中所扮演的角色。圍繞 pull requests 的討論強調了使用 LLMs(大型語言模型)來促進遷移,一些貢獻者注意到「AI slop」或使用 Claude 等工具來處理死代碼移除和翻譯。

這導致了開發者社群的分歧:

  • 樂觀主義者: 有些人將其視為生產力的驚人飛躍,好奇哪些特定的模型正在實現如此快速的轉變,並思考在整個模組可以在一週內重寫的時代,軟體工程師的角色必須如何演進。
  • 懷疑論者: 其他人則警告不要進行「vibe coding」,認為 AI 生成的重寫可能會引入微妙的錯誤或維護性問題。一位批評者指出,轉變的速度以傳統標準來看幾乎是「不可思議的」,並對 AI 生成代碼的長期負擔表示擔憂,指出在生成的 diffs 中普遍存在 TODO 標記。

更廣泛的行業影響

Bun 的舉動對其他基於 Zig 構建的項目產生了漣漪效應。由於 Bun 是該語言少數知名的「客戶保證」項目之一,它的離開可能會給其他旗艦項目(例如 TigerBeetle)帶來壓力,使其在面對市場營銷和企業壓力時,必須證明其繼續使用 Zig 的合理性。

"I wonder if Tigerbeetle will also have problems arguing for their solution now that the other project they can point to for customer assurance is gone."

結論

Bun 從 Zig 到 Rust 的轉變不僅僅是一次技術遷移,更是軟體維護未來的試金石。如果像 Bun 這樣複雜度的項目可以成功使用 AI 驅動的工作流進行遷移,這可能預示著處理遺留代碼的方式將發生範式轉移。然而,如果結果是一個充滿 AI 生成痕跡的脆弱代碼庫,這將成為一個關於自動化重構限制的警示故事。

Sources