V8 JavaScript 引擎 7.2 Beta 版发布,支持公共 class 字段

  

V8 JavaScript 引擎 7.2 已发布,开发团队表示目前尚处于 Beta 版阶段,正式版将会于几周后和 Chrome 72 Stable 一起推出。

V8 v7.2 提供了很多面向开发者的新特性,下面我们不妨简单看一下。

内存

现在,在 ia32 架构中默认支持并启用嵌入式内置函数(Embedded builtins)。

性能

JavaScript 解析

平均而言,网页花费了 V8 启动时所用时间的 9.5% 来解析 JavaScript。因此,7.2 版本专注为 V8 提供最快的 JavaScript 解析器,全面提高解析速度。从 7.0 开始,桌面上的解析速度提高了大约 30%。下图显示了过去几个月 Facebook 加载基准测试的显着改进。

Facebook.com 上的 V8 解析时间(越低越好)

开发团队在不同场合都对解析器进行了优化,下图显示了几个热门网站上相对于最新 7.2 版本的改进。

总而言之,最近的改进将平均解析时间百分比从 9.5% 降低到 7.5%,从而加快了加载时间并提高了响应速度。

async/await

V8 v7.2 带来了更快的 async/await 实现,并在默认情况下启用。同时,开发团队制定了一个规范提案,目前正在收集 Web 兼容性数据,以便将更改正式合并到 ECMAScript 规范中。

WebAssembly

开发团第表示,在分析了许多 WebAssembly 基准测试后,最后选择通过它们来指导顶级执行层中的代码生成。特别是,V8 v7.2 在优化编译器的调度程序和后端循环旋转(loop rotation)中启用了节点拆分(node splitting)。此外,还改进了封装器缓存并引入了自定义封装器,以减少调用导入的 JavaScript 数学函数的开销。最后,开发团队设计了对寄存器分配器的更改,以改善许多代码模式的性能,这些代码模式将在更高版本中出现。

JavaScript 语言特性

V8 7.2 新增对公共 class 字段(public class fields) 的支持,例如下面的旧写法:

class Animal {
  constructor(name) {
    this.name = name;
  }
}
class Cat extends Animal {
  constructor(name) {
    super(name);
    this.likesBaths = false;
  }
  meow() {
    console.log('Meow!');
  }
}

现在可以这样写:

class Animal {
  constructor(name) {
    this.name = name;
  }
}
class Cat extends Animal {
  likesBaths = false;
  meow() {
    console.log('Meow!');
  }
}

计划在未来的 V8 版本中支持私有类字段(private class fields)。

详细更新内容请查看发布公告:https://v8.dev/blog/v8-release-72

猜你喜欢

转载自www.oschina.net/news/102851/v8-7-2-released