Edge.js:在 WebAssembly 沙箱中執行 Node 應用程式
我們非常興奮地開源了 Edge.js,這是一個專為 AI 與邊緣運算設計的 JavaScript 執行環境,能讓現有的 Node.js 應用程式在不使用 Docker 的情況下,透過 WebAssembly 沙箱安全地執行。
背景
Wasmer 團隊近期開源了 Edge.js,這是一個專為 AI 與邊緣運算設計的 JavaScript 執行環境。其核心目標是在不依賴 Docker 容器的情況下,透過 WebAssembly 技術提供一個具備完整 Node.js 相容性的沙盒環境,旨在解決傳統容器啟動緩慢與伺服器密度不足的問題,同時避免如 Deno 或 Cloudflare Workers 在相容性上的侷限。
社群觀點
在 Hacker News 的討論中,開發者對於 Edge.js 的技術架構展現了高度興趣,但也對其產品定位與實際應用場景提出了不少疑問。Wasmer 創辦人 Syrus Akbary 親自參與討論,透露該專案在開發過程中大量運用了 AI 工具,才得以在極短的時間內完成原本需要一年以上的開發工作。社群成員對於「沙盒化」的具體實現方式感到好奇,特別是關於檔案系統的存取權限。Syrus 解釋在安全模式下,執行環境僅會掛載當前工作目錄,藉此平衡開發體驗與安全性。
然而,部分評論者對於 Edge.js 的宣傳方式持保留態度。有意見指出,官方提供的相容性圖表可能具有誤導性,因為名義上的 API 支援並不等同於能在生產環境中穩定執行複雜的 Node.js 應用程式。相較於 Deno 和 Bun 是根據使用者需求逐步建立生態系,Edge.js 選擇全面實作所有 API 的做法,被部分開發者視為一種開發策略的選擇,而非技術上的絕對成就。此外,關於「安全模式」為何需要手動開啟(opt-in)而非預設開啟,也引發了關於預設安全性設計的討論。
另一部分的討論聚焦於 Edge.js 的靈活性。由於它採用可插拔的 JS 引擎架構,支援 V8、SpiderMonkey 甚至 QuickJS,這讓開發者聯想到在瀏覽器中執行完整 Node.js 環境的可能性。有留言詢問是否能將其整合進 Electron 應用程式中,利用 Electron 現有的 V8 引擎來執行受限的沙盒代碼。Syrus 對此給予肯定,並暗示未來將有更強大的瀏覽器端相容方案。同時,也有競爭產品的開發者現身說法,認為 Edge.js 的架構與 BrowserPod 等專案有異曲同工之妙,這證明了將系統調用與原生邏輯隔離至 WebAssembly,而讓 JS 引擎原生運行的混合模式,正逐漸成為業界在效能與安全之間取得平衡的主流趨勢。
延伸閱讀
在討論串中,開發者提到了幾個與 Edge.js 概念相似或相關的專案與資源:
- BrowserPod:一個致力於在瀏覽器中執行 Node.js、Python、Ruby 等環境的專案,其架構與 Edge.js 相似。
- WebContainers:目前常見於瀏覽器端執行 Node.js 環境的技術方案。
- Node-WASIX:先前嘗試將整個 V8 引擎編譯為 WebAssembly 的專案,雖然達成目標但效能損耗較大。