WebAssembly 得到了所有浏览器的支持

  • Kevin Ball
  • 张卫滨

2017 年 12 月 17 日

话题:JavaScriptChrome语言 & 开发

随着 9 月 19 日 Safari 和 10 月 31 日 Edge 的发布,苹果与微软加入了谷歌和 Mozilla,在生成环境浏览器中提供了对 WebAssembly 的支持。这四家公司的浏览器都能运行编译为 wasm 二进制格式的代码。

Safari 支持 WebAssembly 的第一个版本是 11,而 Edge 的版本是 16。Firefox 是第一个发布支持 WebAssembly 功能的主流浏览器,是于 2017 年 3 月 7 日发布的 52 号版本,Chrome 紧随其后,在 2017 年 3 月 9 日发布的 57 号版本中包含了对 WebAssembly。通过使用其他的高级工具,开发人员能够以 wasm 二进制格式来交付代码,并且可以预期它能够支持大多数的终端用户。

从 2017 年 3 月 31 日各个主要的浏览器厂商就 v1 版本的规范达成共识以来,WebAssembly 已经取得了巨大的进步。不仅在所有的浏览器中都得到了实现,而且其编译工具链已经开始成熟,现在已经有人尝试将 WebAssembly 集成到像 webpack 这样更加标准的 Web 开发工具中。

webassembly.org推荐的编译 WebAssembly 的工具链是 Emscripten。网站上有一个快速的开发人员指南,MDN 上还有更多深入的文档。这个工具链目前可以编译 C、C++ 或 Rust,它首先将代码编译为 LLVM 字节码,然后将其转换为 asm.js,最后使用 asm2wasm 编译工具,此时该工具用到了 WebAssembly 二进制工具集。通过 wasm 后端直接实现对纯 LLVM 编译的支持目前正在进行之中并且正在逐渐成熟,在11 月 20 日的一次 pull request 合并中,Rust 成为了第一个使用它的语言。

在传统的 Web 开发工具方面,发展也是很迅速的。Webpack得到了 Mozilla 的一个授权,将 WebAssembly 作为第一等的模块类型。webpack 团队相信让 WebAssembly 更容易地集成到真正的生产环境中会推动 WebAssembly 的实际采用。webpack 核心团队的 Sean Larkin 这样说:

如果开发人员、业务以及公司不能无缝地将其应用于生产环境,WebAssembly 不会进步、发展和演进。我们感觉 webpack 能够让人们更容易地使用该技术,并促进它的广泛采用。

随着工具链的改善和更多的支持,行业在迅速地将 web assembly 集成到各种领域之中。Mozilla 最近的声明宣布 wasm 得到了广泛的支持,所涵盖的范围从计算机视觉到语言探测,以及方方面面。Mozilla 的工程师 Luke Wagner 说:

现在,我们看到人们将 WebAssembly 用到了各种类型的新项目之中。所以,这意味着,最终会有一天我们将在 Web 上运行大多数的程序,其效果就像现在在本地 PC 上运行那样。

查看英文原文WebAssembly Now Supported across All Browsers

JavaScriptChrome语言 & 开发