WebAssembly,簡稱Wasm,是一個低階程式語言。WebAssembly是可移植性的抽象語法樹[2],被設計來提供比JavaScript更快速的編譯及執行[3]。WebAssembly將讓開發者能運用自己熟悉的程式語言(最初以C/C++作為實作目標)編譯,再藉虛擬機器引擎在瀏覽器內執行[4]。WebAssembly的開發團隊分別來自Mozilla、Google、Microsoft、Apple,代表着四大網絡瀏覽器Firefox、Chrome、Microsoft Edge、Safari[5]。2017年11月,以上四個瀏覽器都開始實驗性的支援WebAssembly[6][7]。2019年12月5日,在W3C制定《WebAssembly核心規範[8]》後,WebAssembly正式被認證為Web的標準之一[9]。
設計
在官方的一個github頁面[10]與說明文件[11]中,闡述了WebAssembly的設計與實作原則,包含:
- 定義一個可移植,具有大小與載入高效率的二進位格式,作為編譯標的。這個編譯標的必須可以被編譯至常見的平台,包含移動端與物聯網,並且可以善用硬件資源、有原生執行碼的執行速度。
- 規格與實作:
- 設計可以執行在現有的網絡平台之內以及與之整合:
- 保持無版本問題、特色測試、向後相容的網絡平台
- 在與Javascript相同的環境中執行
- 允許從Javascript中同步呼叫
- 強化同源(Same-origin)和安全性權限政策
- 允許瀏覽器存取相同功能的Javascript API
- 定義一個可人工讀取,能和二進位格式互換的純文字格式,以支援檢視原始碼
- 設計也可以用於非瀏覽器的嵌入式系統
- 製作大平台
官方的宣傳
Ending定律也稱為終結者定律, 它是Ending在2016年Emscripten技術交流會上給出的斷言[14]:
所有可以用WebAssembly實現的終將會用WebAssembly實現。
現在這個定律除了 WebAssembly 的支持者用做宣傳之外看不到任何實現的跡象。
參見
- ActiveX
- VBScript
- Flash / ActionScript
- Microsoft Silverlight
- Java Applet / JavaFX
- asm.js
- Native Client
其他位元組碼
參考資料
外部連結
Wikiwand in your browser!
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.