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定律即将生效!. 

    外部链接[编辑]