WebAssembly 2.0 標準預覽版可用

W3C 發布了新規範草案,對 WebAssembly 2.0 中間件及其相關 API 進行標準化,從而能夠創建可跨瀏覽器和硬體平台移植的高效能應用程式。 WebAssembly 提供獨立於瀏覽器的通用低階中間程式碼,用於運行從各種程式語言編譯的應用程式。將 JIT 用於 WebAssembly,您可以獲得接近本機程式碼的效能等級。

WebAssembly 技術允許使用 C/C++ 等編譯語言編寫程式碼,可用於在瀏覽器中執行高效能任務,例如視訊編碼、音訊處理、圖形和 3D 操作、遊戲開發、加密運算和數學運算。

WebAssembly 的主要目標之一是確保可移植性、可預測的行為以及在不同平台上相同的程式碼執行。最近,WebAssembly 也被推廣為跨任何基礎設施、作業系統和裝置安全執行程式碼的通用平台,而不僅限於瀏覽器。

W3C 發布了 WebAssembly 2.0 的三份規範草案:

  • WebAssembly Core - 描述用於執行 WebAssembly 中間程式碼的低階虛擬機器。與 WebAssembly 相關的資源以「.wasm」格式提供,類似於 Java 中的「.class」文件,包含靜態資料和用於處理該資料的程式碼段。
  • WebAssembly JavaScript 介面 - 提供與 JavaScript 整合的 API。允許您取得值並將參數傳遞給 WebAssembly 函數。 WebAssembly 的執行遵循 JavaScript 安全模型,所有與主系統的交互都以與執行 JavaScript 程式碼相同的方式進行。
  • WebAssembly Web API - 定義基於 Promise 機制的程式設計接口,用於請求和執行“.wasm”資源。 WebAssembly 資源格式經過最佳化,無需等待檔案完全載入即可開始執行,從而提高了 Web 應用程式的回應能力。

與第一版標準相比,WebAssembly 2.0 的主要變化:

  • 支援 v128 向量類型和相關向量指令,讓您並行對多個數值執行操作(SIMD,單指令多資料)。
  • 能夠匯入和匯出可變全域變量,允許對值進行全域綁定,例如C++中的堆疊指標。
  • 新的 float 到 int 轉換指令,在結果溢出時不會拋出異常,而是傳回最小或最大可能值(SIMD 必需的)。
  • 整數符號擴展的說明(增加數字的位元深度,同時保持符號和值)。
  • 支援傳回多個值的區塊和函數(除了向函數傳遞多個參數之外)。
  • 實作 BigInt64Array 和 BigUint64Array JavaScript 函數,以在 BigInt JavaScript 類型和 64 位元整數的 WebAssembly 表示形式之間進行轉換。
  • 支援引用類型(funcref 和 externref)及其關聯指令(select、ref.null、ref.func 和 ref.is_null)。
  • Memory.copy、memory.fill、memory.init 和 data.drop 指令用於在記憶體區域之間複製資料和清除記憶體區域。
  • 直接存取和修改表格的說明(table.set、table.get、table.size、table.grow)。能夠在一個模組中建立、匯入和匯出多個表。用於以批次模式複製/填充表的函數(table.copy、table.init 和 elem.drop)。

來源: opennet.ru

添加評論