Ant JavaScript Runtime: High-Performance, Lightweight JS Engine

Ant JavaScript Runtime: High-Performance, Lightweight JS Engine

Ant 是一款從零開始構建的輕量級、高性能 JavaScript 執行環境

Ant 提供接近 V8 的速度體驗,且僅需單一 9.1 MB 的二進位檔,消除了對大型下載或複雜工具鏈設置的需求。與許多其他執行環境不同,Ant 並非 V8、JSC 或 SpiderMonkey 的封裝,而是使用其自行開發的引擎,稱為 Ant Silver。

極致的二進位檔大小與冷啟動性能

Ant 旨在實現最小佔用空間與快速初始化。該執行環境的二進位檔大小為 9.1 MB,明顯小於傳統的 JavaScript 執行環境。這種效率轉化為更快的冷啟動速度。在一項衡量導入 Hono、註冊兩個路由並退出的基準測試中,Ant 記錄到的冷啟動時間為 5.4 ms,表現優於 Bun (12.8 ms)、Deno (24.8 ms) 和 Node.js (31.1 ms)。

原生生態系統與 TypeScript 支持

Ant 與現有的 JavaScript 生態系統兼容,並支持真實的 npm 套件。它符合 WinterTC 標準,並保持 100% 的兼容性評分。它可以與 Hono、Elysia、TypeScript、React 和 Rolldown 等熱門框架與工具配合使用。

開發者體驗的關鍵功能包括:

  • Zero-config TypeScript: Ant 直接運行 TypeScript 檔案,無需 tsconfig 檔案、打包工具或獨立的構建步驟。
  • Direct Server Execution: Ant 提供預設的 fetch export,允許 Hono 等框架在無需適配器的情況下運行。開發者只需運行 ant server.js 即可啟動伺服器。
  • Fast Package Installation: Ant 包含其自有的套件安裝機制,據報導其速度比 npm 快達 40 倍。

硬體隔離的沙盒機制

Ant 為執行不信任的 JavaScript 代碼提供了一個 VM 隔離的沙盒。與簡單的權限提示不同,這是一個透過 KVM 或 Hypervisor.framework VM 實現的硬性邊界,確保每個沙盒都是獨立的硬體隔離實例。

沙盒功能包括:

  • Read-only Mounts: 檔案系統可以被掛載為不可變,除非明確授予寫入權限。
  • Network Control: 預設拒絕網路存取,僅允許轉發特定命名的連接埠。

ants.land 註冊表

Ant 引入了 ants.land,一個支持 npm 協議的開放註冊表。這允許套件可以透過 scope 或名稱直接發布與安裝。套件也可以透過 esm.ants.land 直接在瀏覽器中使用。

社群回饋與考量因素

雖然 Ant 專案產生的興趣,因其微小的二進位檔大小與嵌入式潛力,社群也指出了一些需要進一步開發的點:

"I hope you get some collaborators, to increase the bus factor. You might want to write a roadmap to focus efforts."

此外,專案作者 theMackabu 指出,最近的一個版本因為安裝過程中的 libcares 錯誤,需要進行靜態發布熱修復 (hotfix)。

Sources