天天看点

V8引擎发布7.0正式版,支持WebAssembly线程预览、优化数组排序算法

原文作者:Michael Hablich

译者:UC 国际研发 PPP

V8引擎发布7.0正式版,支持WebAssembly线程预览、优化数组排序算法

V8团队每隔六周都会创建一个新的V8发布分支。每个版本都将在Chrome Beta到达一个milestone之前,从V8的Git的master分支拉出的。

该版本将会在几周内与Chrome 70稳定版一起发布,在此之前一直作为Beta版本与Chrome进行联调测试。V 7.0包涵了许多对开发人员很有帮助的新功能。本文带你一起了解其中的一些亮点。

Embedded built-ins

Embedded builtins 通过在多个V8隔离器之间共享生成的代码来节省内存。从V 6.9开始,我们就在x64上启用了Embedded builtins。V 7.0把这一能力扩大到了除ia32之外的所有平台,为平台节省内存。

WebAssembly线程预览

WebAssembly(Wasm)支持用C++和其他语言编写的代码在Web上运行。原生(Native)应用一个非常有用的能力是使用线程 - 用于并行计算。大多数C和C++开发人员都对pthreads比较熟悉,它是线程管理的标准API。

WebAssembly社区小组一直在努力让Web拥有真正的多线程能力。作为这项工作的一部分,V8已经为WebAssembly引擎中的线程实现了必要的支持。如果想在Chrome中使用该功能,你可以通过chrome://flags/#enable-webassembly-threads来启用,或者也可以为你的网站注册Origin Trial。Origin Trials允许开发人员在完全标准化之前尝试新的Web功能,这也有助于我们收集对新功能和改进至关重要的,真实的反馈。

Origin Trial:

https://github.com/GoogleChrome/OriginTrials

JavaScript语言的新功能

新增Symbol.prototype.description。这使得获取Symbol的描述变得更自然。在此之前,只能通过Symbol.protoype.toString()间接访问描述。感谢Igalia为这个功能的实现做出贡献!

Array.prototype.sort已经在v7.0稳定。以前,v8对于大于10个元素的数组使用“不稳定的”快速排序算法(注:排序算法不稳定,是指该算法可能改变两个相等元素的位置)。现在,我们改用TimSort算法,稳定的排序算法。有关详细信息,请参阅我们的博文。

博文地址:

https://v8.dev/blog/array-sort

V8 API

请通过 git log branch-heads/6.9..branch-heads/7.0 include/v8.h 获取API更改列表。

已经checkout过V8代码的开发者可以通过 git checkout -b 7.0 -t branch-heads/7.0 来测试的新功能。

英文原文:

https://v8.dev/blog/v8-release-70