Bun 的快速轉型:正在進行中的 Rust 重寫
高性能 JavaScript 運行時的格局再次發生變化。在透過 X 分享的一項令人驚訝的更新中,Jarred Sumner 宣布了 Bun 演進過程中的一個重要里程碑:使用 Rust 重寫運行時。這一舉動預示著作為 Node.js 和 Deno 最快增長的替代方案之一,其底層架構可能發生轉向。
里程碑:99.8% 的測試覆蓋率
根據 Sumner 的說法,Rust 重寫版本已經在與原始實現之間達到了令人驚訝的對等水平。具體而言,99.8% 的 Bun 現有測試套件現在可以在 Linux x64 glibc 上通過。
對於 Bun 這樣複雜的項目——它將包管理器、測試運行器和打包工具整合到單個二進制文件中——在重寫過程中達到近乎 100% 的測試對等性是一項巨大的技術成就。這表明 Bun 的核心邏輯和 API 表面已成功映射到 Rust,確保轉型過程能維持用戶對當前版本所期望的穩定性和功能性。
為什麼選擇 Rust?
雖然原始的 Bun 是使用 Zig 构建的,但轉向 Rust 可能是由於對更廣泛的生態系統支持、改進的內存安全保障以及更龐大的可用貢獻者群體的渴望所驅動。Rust 已成為性能和安全性至關重要的系統編程行業標準,正如在其他現代工具如 SWC 和 Turbopack 的開發中所見。
重寫的技術影響
從 Zig 轉向 Rust 不僅僅是語法上的變化;它需要對內存管理方式以及運行時如何與 JavaScript 引擎交互進行根本性的重新思考。測試套件在 Linux x64 glibc 上如此全面地通過,事實表明團隊已成功應對了以下挑戰:
- 系統調用對等性: 確保 Rust 實現處理 I/O 和系統操作的方式與 Zig 版本完全相同。
- API 相容性: 維持現有的 Bun API,以便現有項目可以在不發生破壞性更改的情況下進行遷移。
- 性能基準測試: 雖然測試套件確認了正確性,但此類重寫的最終目標通常是維持或超越現有的性能基準。
展望未來
儘管公告內容簡短,但對 JavaScript 生態系統的影響是深遠的。基於 Rust 的 Bun 可能潛在利用更廣泛的 crates (Rust 庫) 來加速開發,並提高在不同操作系統和架構上的穩定性。
隨著社區等待關於此次轉型時間表以及 Zig 是否會被完全淘汰或以混合模式使用的更詳細文檔,有一件事是明確的:在 JS 運行時領域對極致性能的追求,正不斷推動系統編程的邊界。