阅读 6086

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

原文链接:medium.com/the-node-js…

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

image.png

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

最初,Node.js 16 将会替代 Node.js 15 成为我们的「当前」发布版本。根据 发布时间表,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 发布工作组仓库中找到关于我们的发布计划或者时间表的更多细节。

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/

稳定的 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…

其他特性

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

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

  • 标准 Web Crypto API 的实验实现
  • 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 中有文档说明。

描述

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

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

文章分类
前端