webassembly
2015年6月,JavaScript的发明者和Mozilla的共同创始人Brendan Eich宣布了Web上令人兴奋的内容:WebAssembly。
Eich解释说,JavaScript被称为Web的汇编语言 ,他对此持不同意见,然后继续介绍WebAssembly,WebAssembly是“ Web上安全代码的新中间表示形式 ”,正如他所描述的那样。 在Eich宣布之前,Google,Microsoft,Mozilla,Apple和其他一些人已经对其进行了试验。
WebAssembly,简称“ wasm”,文件名后缀为.wasm,是一个新兴的标准,其目标是定义一个安全,可移植,大小和加载时间有效的二进制编译器目标,该目标可提供接近本机的性能-Web的虚拟CPU 。
为什么需要WebAssembly? 好吧, asm.js要求引擎对其进行优化,从而使解析器成为热点(从字面上讲,移动设备可能真的很热)。 这是由于需要传输压缩,这也可以节省带宽,但是在解析之前对其进行解压缩可能会很痛苦。 而且,一旦浏览器本地支持WebAssembly格式,JavaScript和wasm便可以分开,而不会在JavaScript中引入不安全或不适当的功能,而这些功能仅供采购几种完全不同的编程语言的编译器使用。
如果您需要更好的概述,则Auth0在本文中很好地解释了WebAssembly 。
WebAssembly –一年后
WebAssembly在设计时考虑了浏览器内外的几个用例 。 您可以猜到,wasm可用于图像/视频编辑,浏览器中的AAA游戏,实时增强功能,虚拟现实等等。 几乎所有在网络上已经可以实现的功能,但都有可能变得更快,更高效。 但是WebAssembly在浏览器之外也很有用:服务器端应用程序,混合本机应用程序,不受信任代码的服务器端计算只是其中的一些潜在应用程序。
路线图也进展顺利。 去年,WebAssembly社区小组取得了长足的进步,产生了:
- 初始功能集和计划的未来功能的描述和基本原理;
- 规范和参考解释器;
- 13,000行测试用于验证规范解释器和浏览器;
- 二进制格式的初稿。
有了如此激动人心的承诺,浏览器供应商一直在努力在其浏览器引擎中提供早期的WebAssembly实现。 现在可以构建在多个实验性实现上运行的WebAssembly演示。
为什么要进行实验? 这是因为二进制格式和WebAssemblyJavaScript绑定在未来几个月(直到第一个稳定版本)之前可能会发生不兼容的更改。 对于压力测试或基准测试,预期实现尚不成熟,而且还需要一段时间。
但是,这是一个巨大的飞跃,因为所有浏览器都位于同一页面上,当您考虑Internet Explorer过去所做的事情时,这是很棒的。
阅读Mozilla Hacks WebAssembly文章以获取更多详细信息。
WebAssembly演示
让我们通过Firefox Nightly试用WebAssembly演示(它也应在Chrome Canary上运行)。 确保您已安装Nightly的最新版本,打开about:config
并将javascript.options.wasm
设置为true
。
观看这个实验性演示《 愤怒的机器人》 ,这是一款已移植到WebAssembly的Unity游戏。 您可以在此自上而下的射击游戏中与机器人战斗并探索3D空间站。 移动由W,A,S,D或箭头键控制,瞄准和发射由鼠标控制。
即将来临
在发布第一个稳定版本之前,WebAssembly仍面临主要任务:
- 需要定义正式的WebAssembly文本格式。
- 进一步减小二进制格式的大小。
- 迭代WebAssembly JavaScript API。
- 适用于编译器作者,工具作者,黑客和学生的更易理解的文档。
- 更多测试已添加到测试套件中。
网络,组装!
如果您想参与其中,可以加入W3C上的社区小组。 实际的WebAssembly规范正在GitHub上的规范存储库中开发。 该小组建议应通过问题和请求请求继续在设计库中进行高层设计讨论。 在您潜水之前,请确保还通读《道德守则》和《专业行为守则》 。
激动了吗? 您如何看待有关WebAssembly的最新消息?
webassembly