WebAssembly

維基百科,自由的百科全書
跳至導覽 跳至搜尋
WebAssembly
File:WebAssembly Logo.svg
編程範型結構化堆疊機器
設計者W3C
實作者
釋出時間2017年3月,​9年前​(2017-03
目前版本
    Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    型態系統靜態
    系統平台跨平台
    特許條款Apache特許條款2.0
    副檔名.wat (純文字格式,人類可讀)
    .wasm(二進制檔案)
    網站{{URL|example.com|可选的显示文本}}Module:EditAtWikidata第29行Lua錯誤:attempt to index field 'wikibase' (a nil value)
    受影響於
    影響語言
    AssemblyScript英語AssemblyScript

    WebAssembly,簡稱Wasm,是一個低階程式語言。WebAssembly是可移植性抽象語法樹[1],被設計來提供比JavaScript更快速的編譯及執行[2]。WebAssembly將讓開發者能運用自己熟悉的程式語言(最初以C/C++作為實作目標)編譯,再藉虛擬機器引擎在瀏覽器內執行[3]。WebAssembly的開發團隊分別來自MozillaGoogleMicrosoftApple,代表着四大網絡瀏覽器FirefoxChromeMicrosoft EdgeSafari[4]。2017年11月,以上四個瀏覽器都開始實驗性的支援WebAssembly[5][6]。2019年12月5日,在W3C制定《WebAssembly核心規範[7]》後,WebAssembly正式被認證為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定律也稱為終結者定律, 它是Ending在2016年Emscripten技術交流會上給出的斷言[13]

    所有可以用WebAssembly實現的終將會用WebAssembly實現。

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

    參見[編輯]

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

    其他位元組碼

    參考資料[編輯]

    1. ^ design/Rationale.md at master · WebAssembly/design. GitHub. [2016-03-20]. (原始內容存檔於2021-03-08). 
    2. ^ design/HighLevelGoals.md at master · WebAssembly/design. GitHub. [2016-03-20]. (原始內容存檔於2019-06-06). 
    3. ^ 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). 
    4. ^ Bright, Peter. The Web is getting its bytecode: WebAssembly. Ars Technica. Condé Nast. 2015-06-18 [2015-06-20]. (原始內容存檔於2017-03-20). 
    5. ^ 【2018關鍵趨勢1:WebAssembly】主流瀏覽器紛紛支援,網頁飆速成真. iThome. [2018-01-06]. (原始內容存檔於2020-05-30) (中文(繁體)). 
    6. ^ 主流瀏覽器都加入了 WebAssembly 支援 – Linuxpilot. www.linuxpilot.com. [2018-01-06]. (原始內容存檔於2019-06-30) (中文(臺灣)). 
    7. ^ WebAssembly核心規範頁面存檔備份,存於互聯網檔案館
    8. ^ 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). 
    9. ^ WebAssembly High-Level Goals. [2018-01-06]. (原始內容存檔於2019-06-06). 
    10. ^ WebAssembly High-Level Goals - WebAssembly. webassembly.org. [2018-01-13]. (原始內容存檔於2022-04-22). 
    11. ^ Features to add after the MVP. [2018-01-06]. (原始內容存檔於2021-04-01). 
    12. ^ Features to add after the MVP - WebAssembly. webassembly.org. [2018-01-13]. (原始內容存檔於2019-05-15). 
    13. ^ Ending定律即将生效!. 

    外部連結[編輯]