Node.js 16 发布,V8 升级至 9.0!

共 3602字,需浏览 8分钟

 ·

2021-05-25 14:42

我们很高兴地宣布 Node.js 16 正式发布了!升级重点包括 V8 JS 引擎升级至 9.0,预构建的 Apple Silicon 二进制文件,还有一些额外的稳定 API。

image.png

你可以在 这里[1] 下载最新版,或者使用 UNIX 上的 Node 版本管理器[2] 运行 nvm install 16 命令进行安装。Node.js 博客中包含的变更日志可以在 这里[3] 找到。

最初,Node.js 16 将会替代 Node.js 15 成为我们的「当前」发布版本。根据 发布时间表[4],Node.js 16 将是未来 6 个月的「当前』版本,然后在 2021 年 10月 升级为长期支持(LTS)。一旦升级为长期支持,将以 “Gallium” 的代号发布。

提醒一下 —— Node.js 12 将保持长期支持直到2022年4月,Node.js 14 将保持长期支持直到 2023 年 4 月。Node.js 10 将在这个月底(2021 年 4 月)结束生命。可以在 Node.js 发布工作组仓库[5]中找到关于我们的发布计划或者时间表的更多细节。

V8 升级至 9.0

和往常一样,V8 JavaScript 引擎的新版本带来了性能调整和改进,并使 Node.js 保持最新的 JavaScript 语言特性。在 Node.js v16.0.0 中,V8 引擎从 Node.js 15 中的 8.6 升级到 9.0。

这个更新带来了 ECMAScript RegExp 匹配索引,它提供了捕获字符串的开始和结束索引。当正则表达式具有 /d 标志时,索引数组可以通过匹配对象的 .indices 属性获得。

> const matchObj = /(Java)(Script)/d.exec('JavaScript');
undefined
> matchObj.indices
[ [ 0, 10 ], [ 0, 4 ], [ 4, 10 ], groups: undefined ]
> matchObj.indices[0]; // Match
[ 0, 10 ]
> matchObj.indices[1]; // First capture group
[ 0, 4 ]
> matchObj.indices[2]; // Second capture group
[ 4, 10 ]
复制代码

V8 中的更多新特性以及更新内容请查看 V8 博客:v8.dev/[6]

稳定的 Timers Promises API

Timers Promises API 提供了另一组返回 Promise 对象的定时器函数,不再需要使用 util.promisify()

import { setTimeout } from 'timers/promises';
async function run({
  await setTimeout(5000);
  console.log('Hello, World!');
}
run();
复制代码

James Snell 在 Node.js v15.0.0 中添加了该特性(github.com/nodejs/node…[7]

其他特性

我们发布进度的本质意味着新特性大约每两周在「当前」发布版本线中发布一次。由于这个原因,最近的 Node.js 15 版本中已经提供了许多新添加的内容,但是对于运行时来说仍然是相对较新的。

Node.js 15 最近发布的一些特性,也将在 Node.js 16 中可用,包括:

  • 标准 Web Crypto API[8] 的实验实现
  • npm 7(Node.js v16.0.0 中为 npm 7.10.0)
  • Node-API v8
  • 稳定的 Source Map v3
  • Web 平台 atob(buffer.atob(data))和btoa(buffer.btoa(data))实现,以兼容遗留的 Web 平台 api

新的编译器

Node.js 为几种不同的平台提供了预构建的二进制文件。对于每个主要版本,最小的工具链被评估并在适当的地方被提出。

Node.js v16.0.0 将会是第一个支持 Apple Silicon 的预构建二进制文件。虽然我们将为 Intel(darwin-x64)和 ARM (darwin-arm64)架构提供单独的 tarball,但 macOS 安装程序(.pkg)将以 “fat”(多架构) 二进制文件的形式发布。

这些二进制文件的生产版本得以实现,要感谢 MacStadium 为该项目提供了必要的硬件。

在我们基于 linux 的平台上,构建 Node.js 16 的最低 GCC 版本将是 GCC 8.3。关于所支持的工具链和编译器的详细信息在Node.js BUILDING.md[9] 中有文档说明。

描述

一个新的主要版本发布,这也是我们介绍新的运行时废弃的时候。Node.js 项目旨在将任何破坏性改变对生态系统的破坏最小化。该项目使用名为 CITGM[10](金矿中的金丝雀)的工具来测试任何破坏性更改(包括弃用)对大量流行的生态系统模块的影响,以便在完成这些更改之前提供额外的见解。

Node.js 16 中值得注意的弃用包括运行时弃用一些核心模块的 process.binding() 访问,比如 process.binding('http_parser')

参考资料

[1]

这里: https://nodejs.org/en/download/current/

[2]

Node 版本管理器: https://github.com/nvm-sh/nvm

[3]

这里: https://nodejs.org/en/blog/release/v16.0.0

[4]

发布时间表: https://github.com/nodejs/Release#release-schedule

[5]

Node.js 发布工作组仓库: https://github.com/nodejs/release

[6]

v8.dev/: https://v8.dev/

[7]

github.com/nodejs/node…: https://github.com/nodejs/node/pull/33950%EF%BC%89%EF%BC%8C%E5%9C%A8%E6%9C%AC%E6%AC%A1%E6%9B%B4%E6%96%B0%E4%B8%AD%EF%BC%8C%E5%AE%83%E4%BB%AC%E4%BB%8E%E5%AE%9E%E9%AA%8C%E7%8A%B6%E6%80%81%E8%BF%87%E6%B8%A1%E5%88%B0%E7%A8%B3%E5%AE%9A%E7%8A%B6%E6%80%81%E3%80%82

[8]

Web Crypto API: https://www.w3.org/TR/WebCryptoAPI/

[9]

BUILDING.md: https://github.com/nodejs/node/blob/v12.x/BUILDING.md#platform-list

[10]

CITGM: https://github.com/nodejs/citgm

转自:Jacob是我了

https://juejin.cn/post/6957316675918102558

浏览 43
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报