转载

JavaScript引擎V8 5.1遵循了更多的ECMAScript规范并支持WASM

Google宣布了其 5.1版本的 V8 JavaScript引擎,这个版本提升了对 ECMAScript 2017草案规范 的支持,并为 WASM 提供了初步的支持,WASM是一个低层级的、轻便式的字节码,它致力于实现接近原生的执行速度。

与往常一样,V8 的发布流程 是与Chrome结合在一起的,所以V8 5.1会在Chrome 51稳定版释放的时候才会发布。

这个发布版本的最终目标是将对 ECMAScript 2015的支持提升至97% 。为了实现这一目标,V8 5.1包含了如下功能:

  • Symbol.species ,它允许子类重写默认的构造器,这个构造器可以用在像 Array.prototype.map 这样的方法所使用的对象中。例如,我们可以定义一个 MyArray 类,它与 map 组合使用时,就会返回指定的类构造器:

    `class MyArray extends Array {   //将它的类型重写为父Array的构造器   static get [Symbol.species]() { return Array; } } var a = new MyArray(1,2,3); var mapped = a.map(x => x * x);  console.log(mapped instanceof MyArray); // false console.log(mapped instanceof Array);   // true`
  • Symbol.hasInstance ,可以进行重写,用来决定某个构造器是否会将某个对象视为其实例。

  • Iterator现在支持 close 方法,如果循环提前终止的话,它会被调用。
  • RegExp子类可以定义自己的 exec 方法,从而修改所使用的正则表达式算法。
  • 推断函数的名称可以通过 name 属性来获取。

V8 5.1还对 WebAssembly(WASM) 提供了初步的支持。如前所述,WebAssembly是一个低层级的、轻便式的字节码,它致力于实现接近原生的执行速度,WebAssembly依赖于 通用硬件的处理能力(common hardware capabilities) ,这在很多的平台上都是可用的。除此之外,WASM AST设计为启用压缩和高效的 二进制格式 ,这意味着它会在一个 沙箱环境 中执行。

最后,V8 5.1提升了很多JavaScript特性的性能,包括执行像 for-in 这样的循环、promise与RegExp初始化、Math操作等等。

查看英文原文: V8 JavaScript Engine 5.1 Brings More ECMAScript Compliance, WASM Support

原文  http://www.infoq.com/cn/news/2016/05/v8-javascript-engine-51
正文到此结束
Loading...