WebAssembly,扩大生态圈 - Ben Smith 在 WebAssembly 峰会上的演讲

WebAssembly Summit 回顾与WebAssembly的发展历程

在2020年2月10日于硅谷举行的WebAssembly Summit上,WebAssembly社区组主席Ben Smith回顾了WebAssembly的起源,并讨论了其范围和能力的扩展与精炼。

WebAssembly的起源

Smith首先回顾了WebAssembly的发展历程,指出五年前(2015年),WebAssembly甚至还不存在。2013年,Google的NaCL技术已经允许将C/C++程序编译并在Chrome浏览器中以沙盒方式运行。Alon Zakai于2010年创立了emscripten,并与他人共同创建了WebAssembly和asm.js,证明了C和C++程序可以通过emscriptenasm.js移植到任何Web浏览器中。

WebAssembly的初步目标

2015年4月,几位开发者提出了WebAssembly的可执行二进制和文本格式。当时,WebAssembly的高层次目标包括:

  1. 定义一个便携、大小和加载时间高效的二进制格式,作为Web编译目标。
  2. 定义一个可编辑的文本格式,与二进制格式同构并可相互转换。
  3. 设计v.1版本,允许通过客户端编译到asm.js实现高效的加载时间和性能。
  4. 设计v.1版本作为最小可行产品,基本与asm.js功能相当。
  5. 设计以与现有Web平台良好集成。
  6. 设计以保持Web的无版本、功能测试和向后兼容的演进故事。
  7. 设计以允许在非浏览器环境中执行。

WebAssembly的扩展与精炼

从这些初始目标出发,WebAssembly不断扩展和精炼其范围和规范。Smith将这些演变比喻为一个“PIE”(APIE框架),分别代表:

  • Abilities(Wasm能做什么?)
  • Producer(谁可以制作Wasm?)
  • Interoperability(Wasm能与谁交互?)
  • Embedder(什么可以使用Wasm?)

具体发展里程碑

  • 2017年11月:WebAssembly增加了垃圾回收(Abilities和Producer类别)和主机绑定(Interoperability类别)。
  • 2018年:Wasm C API被添加到Embedder类别。
  • 2019年8月:类型化函数引用加入Abilities类别,而类型导入、WebAssembly系统接口(WASI)和接口类型加入Interoperability类别。

这些新提案基于之前的工作,如垃圾回收和主机绑定,以及将高级语言编译到WebAssembly的经验。主机绑定提案已被接口类型提案所取代。如今,WASI和接口类型已经有了自己的小组或子小组。其他倡议,如SOIL(单一开放中间语言),也因WebAssembly的发展而兴起。

总结

WebAssembly Summit是一个为期一天的单轨会议,专注于WebAssembly的所有相关内容。Smith的完整演讲《WebAssembly: Expanding the PIE》可以在Summit的网站上观看,其中包含了更多的技术细节、历史视角和插图。

通过这次演讲,Smith展示了WebAssembly从无到有,逐步扩展其能力和应用范围的过程,强调了其在Web平台和非浏览器环境中的潜力和重要性。

阅读 10
0 条评论