WebAssembly 浏览器预览

自 3 月份 上次 WebAssembly 里程碑 以来,我们在 WebAssembly 社区小组 中一直在努力定义标准,并在各自的浏览器中实现该标准。

我很高兴地宣布,我们现在有了二进制格式的发布候选版本,并且在主干 SpiderMonkeyV8 中已经有了兼容的实现,在 ChakraJavaScriptCore 中也正在积极进行工作。我们已经达到了这个重要的里程碑,现在我们希望从社区获得更广泛的反馈,特别是那些一直在等待事情稳定下来后再尝试的人。

在这个“浏览器预览”期间,WebAssembly 仍然会在一个标志后面,并且至少会有一次计划好的更改,将 二进制版本 重置为 1,我们希望它永远保持在那里。从设计上来说,这意味着现在没有人应该尝试在生产环境中使用 WebAssembly 二进制文件。但是,假设没有发现需要大量时间才能解决的问题,WebAssembly 社区小组希望在 2017 年第一季度将标准的初始版本标记为“完成”,这将使浏览器能够开始在没有标志的情况下发布 WebAssembly。就我们而言,在 Firefox 中,这个绿灯信号意味着将在 Firefox 52(2017 年 3 月)中发布 WebAssembly。

自上次里程碑以来有什么新变化?

如果你一直在关注开发进展,自 3 月份上次里程碑以来已经取得了很多进展

经过所有这些努力,我们还可以获得经典 Emscripten 内部测量 的一些初始数据,比较端到端的 asm.js 与 WebAssembly [在 64 位 Firefox 52(Nightly)、Intel Core i7-2600 @ 3.40GHz、Linux 上测量]

asmjs-wasm-comparison

我们在这里看到的加速是由于 Binaryen 优化、浏览器优化和 WebAssembly 公开的新硬件功能的结合。整个管道的优化仍在进行中,因此结果有望在发布之前得到改善(理解并修复了像 Bullet 中的轻微减速这样的异常 更新 11/21:通过最近的 Binaryen 优化 修复)。但即使现在,我们也可以看到 WebAssembly 已经有了明显的改进,即使对于已经从 asm.js 优化 中获益的 Firefox 用户来说也是如此。

此外,强调新的 WebAssembly 操作的计算内核可以显示出更大的加速。例如,使用与上述相同的实验设置,一个 64 位整数算术内核 在 asm.js 中比原生速度慢 8.93 倍,因为它是使用 32 位 JS 操作进行模拟的,而在 WebAssembly 中,它只比原生速度慢 1.13 倍。

试用一下

要试用 WebAssembly,请访问 webassembly.org,其中包含有关 使用 Emscripten 编译 WebAssembly 模块,然后 从 JavaScript 加载和运行 WebAssembly 模块 的说明。

由于这仍然是相当前沿的技术,因此有一些注意事项适用

首先,重申以上内容:在标准被标记为完成并在浏览器中启用 WebAssembly 之前,事情会一直变化(然后它将回到不要破坏网络的常态!)。为了帮助将更改传达给社区,我们将把过去或计划的更改发布到我们的 路线图 页面。使用 Nightly 构建进行测试也是一个好主意。

其次,完整的 WebAssembly “规范” 目前散布在 设计 代码库中的各种 Markdown 文件中,一些细节(如验证规则)只存在于 参考解释器 中。在浏览器预览期间,我们将收集这些分散的片段,并在 规范 代码库中编写一个单一的、连贯的规范。

最后,虽然你现在可以在 Firefox 的调试器源代码视图中看到 WebAssembly 文本格式的渲染,但完整的调试器还没有开始工作(尽管我们 即将完成!)。在此期间,实验者将需要使用传统的printf 调试方法。

除了这些注意事项之外,我们已经看到很多激动人心的实验,我们希望在未来几个月看到更多。根据你的反馈是否与总体设计、参考解释器或特定浏览器实现有关,有许多地方可以提供反馈;我们已经收集了 反馈链接列表 在 webassembly.org 上。祝你编程愉快!

关于 Luke Wagner

Luke Wagner 是 Mozilla 的软件工程师,并在 Firefox 中开发 JavaScript 和 WebAssembly。

Luke Wagner 的更多文章...


5 条评论

  1. Rob G

    感谢你们的辛勤工作。我真的很高兴看到 WebAssembly 的潜力过渡到真正的支持。

    DOM 集成将是一个很好的功能,它可以让我们摆脱 JS 作为 Web 应用程序唯一可行语言的局面。

    2016 年 10 月 31 日 下午 4:41

  2. Andrew

    PNaCl 比 WebASM 快多少?

    2016 年 11 月 1 日 上午 11:02

  3. chad

    我迫不及待地想要看到它,因为我的 Unity 游戏在将我的代码编译成数百万行 asm.js,然后将它与 1GB 解压缩的纹理一起保存在 RAM 中的压力下快要崩溃了。

    2016 年 11 月 1 日 下午 10:47

  4. mihai

    我们什么时候可以期待 DOM 访问?我认为很多人都关心这个问题。

    2016 年 11 月 3 日 上午 5:02

    1. Luke Wagner

      很难说,但就我个人而言,我希望明年我们能开始着手开发。这绝对是一个重要的功能,它将为许多很棒的新用例打开大门。

      2016 年 11 月 3 日 上午 6:26

本文的评论已关闭。