WebAssembly(縮寫WASM)是一種安全,便攜,低級代碼設計用於高效執行和緊湊表示的格式。
它的主要目標是使Web上的高性能應用,不需要針對網絡的特定假設或提供特定的定制化的網絡功能,因此它可以在其他環境中直接使用,也就是良好的跨平台特性。
WebAssembly是由W3C社區組開發的開放標准。
WebAssembly 設計目標
WebAssembly 的設計目標有以下幾方面:
快速,安全,便攜的語義:
- 快速:用接近原生代碼的性能執行,趁着能力共同的所有當代的硬件。
- 安全:密碼進行驗證,在存儲安全[2]執行,沙盒環境防止數據損壞或安全漏洞。
- 明確定義:全面,准確地定義了有效的計划和他們的方式,很容易推理,正式與非正式的行為。
- 獨立於硬件的:都可以現代建築,桌面或移動設備上進行編譯和一致好評嵌入式系統。
- 語言無關的:沒有任何特權特定語言,編程模型或對象模型。
- 平台無關:可以嵌入在瀏覽器中運行作為一個獨立的虛擬機,或者集成在其他環境中。
- 打開:程序可以與他們在一個簡單的和通用的方式進行互操作環境。
高效便攜的表示:
- 緊湊:具有二進制格式快速發送由比典型的文本或本機代碼格式小。
- 模塊化:程序可以在能夠傳播,緩存,和分別消耗更小的部分被分割。
- 高效:可以解碼,驗證,並在快速單通編譯,無論是實時編譯( JIT, Just In Time )還是預編譯( AOT, Ahead Of Time)。
- 可流:允許解碼,驗證和編譯,以盡快開始,所有數據都已經看到了。
- 並行化:允許進行解碼,驗證,和編譯被划分成許多獨立的並行任務。
- 便攜性:可以讓不廣泛跨越現代的硬件不支持任何建築的假設。
WebAssembly 代碼也意在便於檢查和調試,尤其是在像網絡瀏覽器的環境中,但是這些特征超出了本規范的范圍。
范圍
在其核心,WebAssembly是虛擬指令集架構(Instruction Set Architecture(ISA) 虛擬)。因此,它有許多使用情況,並且可以嵌入在許多不同的環境。涵蓋多元化和實現最大限度的重用,在 WebAssembly 規范是分裂和分層為幾個文件。
這份文件是關於 WebAssembly 的核心 ISA 層。它定義了指令集,二進制編碼,驗證和執行語義,以及一個文本表示。這不,但是,定義如何 WebAssembly 程序可以與特定的環境中,他們執行的互動,也不是如何從這樣的環境中調用。
相反,該規范由定義接口的具體嵌入環境,如網絡附加文件的補充。這些將各自限定 WebAssembly 應用程序編程接口( API )適合於給定的環境。
安全注意事項
WebAssembly 提供在其中執行代碼的計算環境沒有環境的訪問。與環境,如 I / O,對資源的訪問,或操作系統調用的任何相互作用,只能通過調用嵌入器提供並導入到一個 WebAssembly 模塊的功能來執行。嵌入器可以通過控制或限制它使可供導入該功能能力建立適合各自的環境安全政策。這種考慮是一個嵌入的責任和 API 定義特定環境的主題。
因為 WebAssembly 被設計成被翻譯成直接在主機的硬件上運行的機器代碼,它是可能受到在硬件水平邊信道攻擊。在環境中,這是一個問題,一個嵌入可能不得不把合適的緩解措施到位,以隔離WebAssembly 計算。
vi設計http://www.maiqicn.com 辦公資源網站大全https://www.wode007.com
依賴
WebAssembly 取決於兩個現有的標准:
- IEEE 754-2019,對於浮點數據的表示和相應的數字操作的語義。
- Unicode 中,導入/導出名稱的表示和文本格式。
然而,為了使本說明書自包含的,前述標准相關方面進行定義和形式化為本說明書的一部分,例如作為二進制表示和浮點值的舍入,和值的范圍和 UTF-8 編碼的 Unicode 的字符。