首页 体育 教育 财经 社会 娱乐 军事 国内 科技 互联网 房产 国际 女人 汽车 游戏

JavaScr股票初入门ipt 引擎 V8 发布 8.5 版本

(来源:网站编辑 2020-07-25 20:23)
文章正文

JavaScript 引擎 V8 宣告了 8.5 版本(测试阶段),股票初入门正式版本将在之后随 Chrome 85 一路推出。8.5 版本带来了一些面向开辟职员的特点,重要亮点包罗:

JavaScript

Promise.any 和 AggregateError:

Promise.any 是一个 Promise 组合器,一旦输入的一个 Promise 中意,它就会办理所产生的 Promise。

const promises = [  fetch('/endpoint-a').then(() => 'a'),  fetch('/endpoint-b').then(() => 'b'),  fetch('/endpoint-c').then(() => 'c'),];try {  const first = await Promise.any(promises);  // Any of the promises was fulfilled.  console.log(first);  // → e.g. 'b'} catch (error) {  // All of the promises were rejected.  console.assert(error instanceof AggregateError);  // Log the rejection values:  console.log(error.errors);}

如果全体输入的 Promise 都被谢绝,则所产生的 Promise 将被 AggregateError 工具谢绝,建材板块股票该工具包孕一个 error 属性,该属性生涯一个谢绝值数组。

String.prototype.replaceAll:

String.prototype.replaceAll 提供了一种简朴的要领来替代全体显现的子字符串,而无需建设全局 RegExp。

const queryString = 'q=query+string+parameters';// Works, but requires escaping inside regular expressions.queryString.replace(/\+/g, ' ');// → 'q=query string parameters'// Simpler!queryString.replaceAll('+', ' ');// → 'q=query string parameters'

Logical assignment operators(逻辑赋值运算符)

逻辑赋值运算符是新的复合赋值运算符,它将逻辑运算符 &&、 || 或者 ?? 与使命组合在一路

x &&= y;// Roughly equivalent to x && (x = y)x ||= y;// Roughly equivalent to x || (x = y)x ??= y;// Roughly equivalent to x ?? (x = y)

与数学和按位复合赋值运算符差异,逻辑赋值运算符仅有前提地执行赋值。

WebAssembly

在全体平台上都提供了 Liftoff

从 V8 v6.9 最先,股票壳资源Liftoff 一向用作 Intel 平台上 WebAssembly 的基准编译器(Chrome 69 在桌面体系上启用了它)。因为担忧内存的增进(基线编译器会天生更多代码),因而到今朝为止一向将其保留在挪移体系中。

颠末近来几个月的实验,v8 团队发现大大都环境下的内存增进可以忽视不计,因而终极在全体架构上默认都启用了 Liftoff,从而进步了编译速率,特别是在 ARM 设备(32 位和 64 位)上。

提供多值(Multi-value)支撑

此刻,WebAssembly 对多值代码块和函数返回的支撑已可以广泛行使。这反映了该提案近来在正式的 WebAssembly 尺度中的归并,并获得全体编译层的支撑。

譬喻,此刻这是一个实用的 WebAssembly 函数:

(func $swap (param i32 i32) (result i32 i32)  (local.get 1) (local.get 0))

如果导出了该函数,则也可以从 JavaScript 对其举办挪用,并返回一个数组:

instance.exports.swap(1, 2);// → [2, 1]

相反,如果 JavaScript 函数返回数组(或者任何迭代器),则可以将其导入并在 WebAssembly 模块内作为多返回函数挪用:

new WebAssembly.Instance(module, {  imports: {    swap: (x, y) => [y, x],  },});(func $main (result i32 i32)  i32.const 0  i32.const 1  call $swap)

更紧张的是,器材链此刻可以行使此成果在 WebAssembly 模块中天生更紧凑、更快的代码。

支撑 JS BigInts

已提供 WebAssembly 支撑,用于将 WebAssembly I64 值与 JavaScript BigInts 彼此转换,而且依照官方尺度的最新变动,该支撑可用于一样找常用途。

此刻可以从 JavaScript 挪器具有 i64 参数和返回值的 WebAssembly 函数,而不会造成精度丧失:

(module  (func $add (param $x i64) (param $y i64) (result i64)    local.get $x    local.get $y    i64.add)  (export "add" (func $add)))

从 JavaScript,只能将 BigInts 作为 I64 参数转达:

WebAssembly.instantiateStreaming(fetch('i64.wasm'))  .then(({ module, instance }) => {    instance.exports.add(12n, 30n);    // → 42n    instance.exports.add(12, 30);    // → TypeError: parameters are not of type BigInt  });V8 API

可行使 git log branch-heads/8.4..branch-heads/8.5 include/v8.h 来猎取 API 变动列表。

更新申明:https://v8.dev/blog/v8-release-85

文章评论
首页
评论
分享
Top