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
评论