WebAssembly
编程范型 | 结构化堆栈机器 |
---|---|
設計者 | W3C |
實作者 | |
发行时间 | 2017年3月 |
当前版本 |
|
型態系統 | 静态 |
系统平台 | 跨平台 |
許可證 | Apache许可证2.0 |
文件扩展名 | .wat (純文字格式,人類可讀) .wasm(二進制檔案) |
網站 | webassembly |
啟發語言 | |
影響語言 | |
AssemblyScript |
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
- 定義一個可人工讀取,能和二進位格式互換的純文字格式,以支援查看原始碼
- 設計也可以用於非瀏覽器的嵌入式系統
- 製作大平台
下一階段要實作的特色
在2017年推出第一個版本後,同時也列出了下一階段將實作的特色[12][13]
- 制定規格
- 執行緒
- 固定長度的SIMD
- 例外處理
- 垃圾回收
- 記憶體區塊操作
- 網頁內容安全性政策
- ECMAScript 模組整合
- 尾端呼叫
- Non-trapping浮點數-整數轉換
- 多值函數
- Host bindings
官方的宣傳
Ending定律
Ending定律也称为终结者定律, 它是Ending在2016年Emscripten技术交流会上给出的断言[14]:
所有可以用WebAssembly实现的终将会用WebAssembly实现。
現在這個定律除了 WebAssembly 的支持者用做宣傳之外看不到任何實現的跡象。
參見
- ActiveX
- VBScript
- Flash / ActionScript
- Microsoft Silverlight
- Java Applet / JavaFX
- asm.js
- Native Client
其他位元組碼
參考資料
- ^ Release 2.0. 2022年6月1日 [2023年2月11日].
- ^ design/Rationale.md at master · WebAssembly/design. GitHub. [2016-03-20]. (原始内容存档于2021-03-08).
- ^ design/HighLevelGoals.md at master · WebAssembly/design. GitHub. [2016-03-20]. (原始内容存档于2019-06-06).
- ^ Google, Microsoft, Mozilla And Others Team Up To Launch WebAssembly, A New Binary Format For The Web. TechCrunch. 2015-06-17 [2015-06-20]. (原始内容存档于2022-04-05).
- ^ Bright, Peter. The Web is getting its bytecode: WebAssembly. Ars Technica. Condé Nast. 2015-06-18 [2015-06-20]. (原始内容存档于2017-03-20).
- ^ 【2018關鍵趨勢1:WebAssembly】主流瀏覽器紛紛支援,網頁飆速成真. iThome. [2018-01-06]. (原始内容存档于2020-05-30) (中文(繁體)).
- ^ 主流瀏覽器都加入了 WebAssembly 支援 – Linuxpilot. www.linuxpilot.com. [2018-01-06]. (原始内容存档于2019-06-30) (中文(臺灣)).
- ^ WebAssembly核心規範 (页面存档备份,存于互联网档案馆)
- ^ World Wide Web Consortium (W3C) brings a new language to the Web as WebAssembly becomes a W3C Recommendation. 2019-12-05 [2019-12-06]. (原始内容存档于2022-04-19).
- ^ WebAssembly High-Level Goals. [2018-01-06]. (原始内容存档于2019-06-06).
- ^ WebAssembly High-Level Goals - WebAssembly. webassembly.org. [2018-01-13]. (原始内容存档于2022-04-22).
- ^ Features to add after the MVP. [2018-01-06]. (原始内容存档于2021-04-01).
- ^ Features to add after the MVP - WebAssembly. webassembly.org. [2018-01-13]. (原始内容存档于2019-05-15).
- ^ Ending定律即将生效!.
外部連結
- 官方网站
- WebAssembly Community Group(页面存档备份,存于互联网档案馆)
- WebAssembly Design (页面存档备份,存于互联网档案馆)
- WebAssembly资源精选 - 中文版 (页面存档备份,存于互联网档案馆)
- WebAssembly标准入门 - 人民邮电 (页面存档备份,存于互联网档案馆)
- C/C++面向WebAssembly编程 - 开源图书 (页面存档备份,存于互联网档案馆)
- MDN Web Docs WebAssembly文档(中文版 (页面存档备份,存于互联网档案馆)、英文版 (页面存档备份,存于互联网档案馆))