WebKit 全面支持 WebAssembly

  • Abel Avram
  • 薛命灯

2017 年 6 月 13 日

话题:JavaScriptApple语言 & 开发

Apple Safari 现在全面支持 WebAssembly,包括支持在未来集成 ECMAScript 模块和多线程。

Apple 为 WebKit 增加了对 WebAssembly 的全面支持,让 Safari 浏览器可以运行使用其他编程语言编写的代码。WebKit 目前支持 x86、x64 和 ARM 64 位平台上的 WebAssembly。

在浏览器里,WebAssembly 可以被作为一个 JavaScript 对象进行访问,所以 WebKit 可以重用已有的 JavaScript 功能来支持 WebAssembly。例如,WebAssembly.Instance API 是通过浏览器支持的 ECMAScript 模块来实现的,并为支持未来的特性做好准备。另外,WebKit 对 WebAssembly 的支持是线程安全的,所以可以在未来加入多线程支持,Chrome 的发展线路图中就包括了对多线程的支持。

代码被编译成 WebAssembly 时,已经进行了各种性能上的优化。WebKit 增加了额外的两层优化,分别是 Build Bytecode Quickly(BBQ)和 Optimized Machine-code Generator(OMG),它们都是基于B3 JIT,WebKit 用它调优 JavaScript。据 Apple 工程师透露,BBQ 的编译速度比 OMG 快 4 倍,但生成代码的运行速度只是 OMG 的一半。BBQ 用于加快代码的运行速度,OMG 用于预热代码,对在执行速度方面有很高要求的部分代码进行深度优化。

WebAssembly 包含在Safari 技术预览版 32里。Chrome 和 Firefox 在 3 月份已经提供了对 WebAssembly 的全面支持,而 Microsoft Edge 对 WebAssembly 的全平台支持处于预览模式,包括桌面版、移动版、Xbox 和混合现实

查看英文原文: WebKit Now Has Full Support for WebAssembly

JavaScriptApple语言 & 开发