JavaScript 引擎 V8 发布 8.6 版本

栏目: 软件资讯 · 发布时间: 4年前

内容简介:JavaScript 引擎 V8 发布了 8.6 版本(测试阶段),正式版本将在之后随 Chrome 86 一起推出。8.6 版本带来了一些面向开发人员的特性,主要亮点包括: JavaScript 开源 JS-Fuzzer JS-Fuzzer 一直是 V8 稳定性和安全...

JavaScript 引擎 V8 发布了 8.6 版本(测试阶段),正式版本将在之后随 Chrome 86 一起推出。8.6 版本带来了一些面向开发人员的特性,主要亮点包括:

JavaScript

开源 JS-Fuzzer

JS-Fuzzer 一直是 V8 稳定性和安全性的基石,现在它开源了。

最近 V8 团队开始以差异测试模式运行 fuzzer 实例,以检测 JavaScript 的正确性问题。

Number.prototype.toString 中的加速

在一般情况下,将 JavaScript 数字转换为字符串可能会非常复杂,必须考虑浮点精度、科学计数法、NaN、无穷大、舍入等。在计算之前,甚至不知道结果字符串的大小。因此,V8 对 Number.prototype.toString 的实现将提供给 C++ 运行时函数。

但很多时候,你可能只想打印一个简单的小整数(“Smi”)。这是一个简单得多的操作,不再需要调用 C++ 运行时函数的开销。因此,V8 团队为使用 Torque 编写的 Number.prototype.toString 添加了一个小整数的简单快速路径,以减少这种常见情况的开销。

Atomics.wake 已删除

将 Atomics.wake 重命名为 Atomics.notify 以匹配 v7.3 中的规格更改。现在,已弃用的 Atomics.wake 别名已删除。

此外,还有一些小的规范变化。

WebAssembly

在 Liftoff 中实现 SIMD

Liftoff 是 WebAssembly 的基准编译器,从 V8 v8.5 开始,所有平台上均已提供。SIMD 提案使 WebAssembly 可以利用常用的硬件矢量指令来加速计算密集型工作负载。它目前处于实验阶段。

SIMD 仅在 V8 的顶级编译器 TurboFan 中实现。现在,Liftoff 中也实现了 SIMD,你将可以在 Liftoff 中调试 SIMD 代码,其性能要比 WebAssembly 解释器好得多。

使用 Liftoff 标量实现作为基准,会看到以下结果:

JavaScript 引擎 V8 发布 8.6 版本

Liftoff SIMD 的速度比 Liftoff 标量快 2.8 倍,而 TurboFan SIMD 的速度要快 7.5 倍。

Wasm 到 JS 的调用速度更快

如果 WebAssembly 调用导入的 JavaScript 函数,则通过所谓的 “Wasm-to-JS wrapper”(或 “import wrapper”)进行调用。此包装器将参数转换为 JavaScript 可以理解的对象,并在返回 JavaScript 调用时,将返回值转换回 WebAssembly。

为了确保 JavaScript 参数对象准确反映从 WebAssembly 传递来的参数,如果检测到参数数量不匹配,则通过所谓的 “arguments adapter trampoline” 进行调用。

但是在很多情况下,这不是必需的,因为被调用的函数不使用 arguments 对象。v8.6 版本获得了一个修复程序,该程序避免了在这种情况下通过参数适配器进行的调用,这使得受影响的调用明显更快。

发布公告


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

软件开发者路线图

软件开发者路线图

Dave H. Hoover、Adewale Oshineye / 王江平 / 机械工业出版社 / 2010年9月 / 35.00元

作为一名软件开发者,你在奋力推进自己的职业生涯吗?面对今天日新月异和不断拓展的技术,取得成功需要的不仅仅是技术专长。为了增强专业性,你还需要一些软技能以及高效的学习技能。本书的全部内容都是关于如何修炼这些技能的。两位作者Dave Hoover和Adewale Oshineye给出了数十种行为模式,来帮你提高主要的技能。 本书中的模式凝结了多年的调查研究、无数次的访谈以及来自O’Reilly在......一起来看看 《软件开发者路线图》 这本书的介绍吧!

JS 压缩/解压工具
JS 压缩/解压工具

在线压缩/解压 JS 代码

SHA 加密
SHA 加密

SHA 加密工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具