2021-04-20にNode.js 16がリリースされました。このリリースの主な変更は、V8 JavaScriptエンジンの9.0へのアップデート、ビルド済みのApple Siliconバイナリ、および追加の安定したAPIが含まれます。

今後、Node.js 16は15に置き換わり、カレントリリースになります。また2021-10には、コードネーム「Gallium」となり、LTSに昇格するようです。

注意点として、Node.js 12は2022-04まで長期サポートを継続し、Node.js 14は2023-04まで長期サポートを継続します。Node.js 10は今月(2021-04)にサポートを終了します。リリース計画/スケジュールの詳細については、Node.jsリリースワーキンググループリポジトリを確認してください。

V8 upgraded to V8 9.0

V8 JavaScriptエンジンの新しいバージョンは、いつものようにパフォーマンスの微調整と改善をもたらすだけでなく、JavaScript言語機能としてNode.jsを最新の状態に保ちます。Node.js v16では、V8エンジンがV8 9.0に更新されています( Node.js 15のV8 8.6からアップしています)

この更新により、 ECMAScript RegExp Match Indices が提供されます。キャプチャされた文字列の開始インデックスと終了インデックスを取得できるようになります。正規表現に/ 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ブログ(https://v8.dev/)を確認してください。

Stable 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();

このAPIはNode.js 15に実験的に追加されたましたが、このリリースでは実験的なステータスから安定した状態に移行します。

Other recent features

リリースプロセスの性質上、新機能は約2週間ごとに現在のリリースラインでリリースされます。このため、最近の多くの追加はNode.js 15リリースですでに利用可能になっています。

Node.js 15で最近リリースされた機能には、Node.js 16でも利用できるようになるものがあります。

  • WebCryptoAPIの実験的な実装
  • npm 7 (v7.10.0 in Node.js v16.0.0)
  • Node-API version 8
  •  AbortController Web API (安定したAbortControllerに基づくWeb API実装)
  • Stable Source Maps v3
  • 従来のWebプラットフォームAPIとの互換性のためのWebプラットフォーム( atob(buffer.atob(data))および btoa(buffer.btoa(data)) の実装)

New compiler and platform minimums

Node.jsは、いくつかの異なるプラットフォーム用に事前に構築されたバイナリを提供します。メジャーリリースごとに、最小限のツールチェーンが評価され、必要に応じて引き上げられます。

Node.js 16は、AppleSilicon用のビルド済みバイナリを出荷する最初のリリースになります。Intel(darwin-x64)アーキテクチャとARM(darwin-arm64)アーキテクチャに別々のtarballを提供していますが、macOSインストーラー(.pkg)は「ファット」(マルチアーキテクチャ)バイナリとして提供されます。

Linuxベースのプラットフォームでは、Node.js 16をビルドするための最小のGCCレベルはGCC 8.3になります。サポートされているツールチェーンとコンパイラの詳細は、Node.js BUILDING.md ファイルを確認して下さい。

Deprecations

新しいメジャーリリースとして、ランタイムの非推奨を導入する時期でもあります。Node.jsプロジェクトは、重大な変更があった場合のエコシステムへの影響を最小限に抑えることを目的としています。このプロジェクトでは、CITGM(Canary in the Goldmine)という名前のツールを使用して、多数の人気のあるエコシステムモジュールに対する重大な変更(非推奨を含む)の影響をテストし、これらの変更を行う前に追加の洞察を提供します。

Node.js 16の注目すべき非推奨には process.binding() などの多くのコアモジュールに対するアクセスの実行時の非推奨が含まれます。

CAPTCHA