跳转到内容

WebAssembly:修订间差异

维基百科,自由的百科全书
删除的内容 添加的内容
第11行: 第11行:
| screenshot = <!-- (filename) -->
| screenshot = <!-- (filename) -->
| screenshot caption =
| screenshot caption =
| paradigm = [[结构化编程|结构化]][[堆栈机器]]
| paradigm = [[结构化编程|结构化]][[堆栈机器]]
| family =
| family =
| released = <!-- {{start date and age|YYYY|MM|DD|df=yes/no}} -->
| released = <!-- {{start date and age|YYYY|MM|DD|df=yes/no}} -->

2022年2月2日 (三) 20:41的版本

WebAssembly
编程范型结构化堆栈机器
当前版本
  • 2.0 (2022年6月1日)[1]
編輯維基數據鏈接
型態系統静态
系统平台跨平台
許可證Apache许可证
文件扩展名.wast, .wasm
網站webassembly.org 編輯維基數據鏈接
啟發語言
Asm.jsPNaCl

WebAssembly或稱wasm是一個實驗性的低階程式語言,應用於瀏覽器內的客戶端。WebAssembly是可攜式的抽象語法樹[2],被設計來提供比JavaScript更快速的編譯及執行[3]。WebAssembly將讓開發者能運用自己熟悉的程式語言(最初以C/C++作為實作目標)編譯,再藉虛擬機器引擎在瀏覽器內執行[4]。WebAssembly的開發團隊分別來自MozillaGoogleMicrosoftApple,代表著四大網路瀏覽器FirefoxChromeMicrosoft EdgeSafari[5]。2017年11月,以上四個瀏覽器都開始實驗性的支援WebAssembly[6][7]。WebAssembly 于 2019 年 12 月 5 日成为万维网联盟(W3C)的推荐,与 HTML,CSS 和 JavaScript 一起,成为 Web 的第四种语言。[8]

設計

最高指導目標

在官方的一個github頁面[9]與說明文件[10]中,闡述了WebAssembly的設計與實作原則,包含:

  1. 定義一個可移植,具有大小與載入高效率的二進位格式,作為編譯標的。這個編譯標的必須可以被編譯至常見的平台,包含移動端物聯網,並且可以善用硬體資源、有原生執行碼的執行速度。
  2. 規格與實作:
    • 最初的MVP(Minimum Viable Product)與Asm.js有大略相等的功能,並以C/C++語言為優先;
    • 其他額外的特性最初集中在執行緒,零消耗的异常,和SIMD。這些額外的特性先以回饋和實驗為主,包含C/C++以外其他語言的支持。
  3. 設計可以執行在現有的網路平台之內以及與之整合:
    • 保持無版本問題、特色測試、向後相容的網路平台
    • 在與Javascript相同的環境中執行
    • 允許從Javascript中同步呼叫
    • 強化同源(Same-origin)和安全性權限政策
    • 允許瀏覽器存取相同功能的Javascript API
    • 定義一個可人工讀取,能和二進位格式互換的純文字格式,以支援查看原始碼
  4. 設計也可以用於非瀏覽器的嵌入式系統
  5. 製作大平台
    • 為WebAssembly建置新的LLVM後端與伴隨的Clang接口
    • 推動其他WebAssembly的編譯器與工具
    • 啟用更多有用的工具

下一階段要實作的特色

在2017年推出第一個版本後,同時也列出了下一階段將實作的特色[11][12]

官方的宣傳

Ending定律

Ending定律也称为终结者定律[13], 它是Ending在2016年Emscripten技术交流会上给出的断言[來源請求]

所有可以用WebAssembly实现的终将会用WebAssembly实现。

現在這個定律除了 WebAssembly 的支持者用做宣傳之外看不到任何實現的跡象。

參見

其他逐漸被捨棄的網頁用戶端技術與RIA

其他位元組碼

參考資料

外部連結