WebAssembly(Wasm)3.0已正式上線,成為新的標準版本。這次是自2.0完成以來最大幅度的更新,目標是讓高階語言更容易映射到Wasm,並在效能、可移植性與可擴充性之間取得平衡。新版引入64位元位址空間、多重記憶體與垃圾回收等核心機制,並補強尾呼叫(Tail Call)、原生例外處理、向量指令、決定性執行等能力,同時增添自訂註解與JavaScript介接支援,為更大規模、更複雜的應用奠定基礎。

在記憶體模型方面,memory64與table64讓模組可使用64位元索引,突破以往4 GB記憶體的限制。雖然瀏覽器出於安全與資源管理仍維持16 GB上限,但在非網頁環境,應用可視硬體條件擴展至更大資料集。

另一項更新是多重記憶體。過去雖然Wasm應用可以同時使用多個記憶體物件,但必須分別宣告在不同模組中,而現在單一模組可同時宣告與存取多個線性記憶體,並能直接在不同記憶體之間複製資料,這有助於在應用中隔離敏感資料、建立高效率緩衝區,或在工具鏈靜態合併模組時減少限制。

記憶體管理也獲得強化,Wasm 3.0新增垃圾收集(GC)支援,讓編譯器可用結構(Struct)與陣列(Array)定義資料結構,配置與釋放則交由執行時處理,減輕語言前端需要攜帶自家垃圾回收系統的負擔。搭配更精細的型別化參照,函式可透過call_ref在靜態型別保證下進行間接呼叫,無需執行期型別或邊界檢查。對Java、Kotlin、Dart、Scala或OCaml等具GC語言而言,這代表模組體積縮小與啟動速度提升。

效能方面,Wasm 2.0引入的SIMD在3.0中獲得擴充,Relaxed SIMD允許少數狀況交由硬體自行決定結果,標準只規定結果必須落在可接受的範圍內,藉此提升整體速度。對需要完全可重現的應用,如區塊鏈或重播系統(Replayable System),標準提供決定性設定檔,確保跨平臺執行結果一致。

在工具與開發便利性上,Wasm文本格式新增自訂註解語法,可攜帶額外後設資料而不影響語意,方便編譯器與除錯工具使用。對於嵌入到JavaScript的應用,則增加了JavaScript API的字串內建函式庫,讓Wasm可直接操作傳入的JavaScript字串值,降低跨執行環境的資料轉換成本。此次3.0也是首度以SpecTec工具鏈產製的標準文件,提升規格一致性與可靠性。

這些改進帶來的實際效益是模組更小、載入與初始化更快,應用也會更穩定,並能承載更大資料集。影音處理、遊戲、科學計算或前端編輯器等場景,都能透過GC、例外處理與SIMD的改善獲得更佳體驗。官方表示,Wasm 3.0已在多數主流瀏覽器支援,獨立引擎如Wasmtime也即將完成相容。

熱門新聞

Advertisement