WebAssembly

WebAssembly,简称Wasm,是一个低级编程语言。WebAssembly是可移植性抽象语法树[2],被设计来提供比JavaScript更快速的编译及运行[3]。WebAssembly将让开发者能运用自己熟悉的编程语言(最初以C/C++作为实作目标)编译,再藉虚拟机引擎在浏览器内运行[4]。WebAssembly的开发团队分别来自MozillaGoogleMicrosoftApple,代表着四大网络浏览器FirefoxChromeMicrosoft EdgeSafari[5]。2017年11月,以上四个浏览器都开始实验性的支持WebAssembly[6][7]。2019年12月5日,在W3C制定《WebAssembly内核规范[8]》后,WebAssembly正式被认证为Web的标准之一[9]

WebAssembly
结构化堆栈机器
设计者W3C
实作者
2017年3月2017-03
当前版本
  • 2.0 (2022年6月1日)[1]
型态系统静态
系统平台跨平台
许可证Apache许可证2.0
文档扩展名.wat (纯文本格式,人类可读)
.wasm(二进制文件)
网站
启发语言
影响语言
AssemblyScript

设计

最高指导目标

在官方的一个github页面[10]与说明文档[11]中,阐述了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年推出第一个版本后,同时也列出了下一阶段将实作的特色[12][13]

官方的宣传

Ending定律

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

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

现在这个定律除了 WebAssembly 的支持者用做宣传之外看不到任何实现的迹象。

参见

其他逐渐被舍弃的网页用户端技术与RIA

其他字节码

参考数据

  1. . 2022年6月1日 [2023年2月11日].
  2. . GitHub. [2016-03-20]. (原始内容存档于2021-03-08).
  3. . GitHub. [2016-03-20]. (原始内容存档于2019-06-06).
  4. . TechCrunch. 2015-06-17 [2015-06-20]. (原始内容存档于2022-04-05).
  5. Bright, Peter. . Ars Technica. Condé Nast. 2015-06-18 [2015-06-20]. (原始内容存档于2017-03-20).
  6. . iThome. [2018-01-06]. (原始内容存档于2020-05-30) (中文(繁体)).
  7. . www.linuxpilot.com. [2018-01-06]. (原始内容存档于2019-06-30) (中文(台湾)).
  8. WebAssembly内核规范 页面存档备份,存于
  9. . 2019-12-05 [2019-12-06]. (原始内容存档于2022-04-19).
  10. . [2018-01-06]. (原始内容存档于2019-06-06).
  11. . webassembly.org. [2018-01-13]. (原始内容存档于2022-04-22).
  12. . [2018-01-06]. (原始内容存档于2021-04-01).
  13. . webassembly.org. [2018-01-13]. (原始内容存档于2019-05-15).
  14. .

外部链接

This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.