ニュース

「Node.js 18」がリリース ~fetch API、Web Streams APIがグローバルスコープで利用可能に

JavaScriptエンジン「V8」はv10.1へ

「Node.js」v18.0.0

 「Node.js」の新しいメジャーバージョン「Node.js 18」が、4月19日にリリースされた。JavaScriptエンジン「V8」がv10.1へアップデートされるなど、さまざまな機能強化が施されている。

fetch API

 指定したURLのコンテンツを取得する「fetch()」関数が、グローバルスコープで利用可能になった。まだ試験的(experimental)とされているが、試験フラグを指定しなくても既定で利用できる。

 ちなみに、「fetch()」関数の実装は「Node.js」のために書かれた HTTP/1.1 クライアントである「undici」をベースにしているとのこと。

Web Streams API

 「Web Streams API」の試験的実装が、グローバルスコープで利用可能になった。従来のAPIとは別に、Webブラウザーと互換性のあるAPIが利用できるようになる。

HTTPタイムアウト

 以下のパラメーターの既定値が更新される。サービス拒否(DoS)攻撃に備え、これらのパラメーターは「0」(タイムアウトなし)以外に設定することが推奨されている。

  • server.headersTimeout:パーサーがHTTPヘッダーの受信を完了するまでの待機時間(ミリ秒)。既定値は60秒(60000)になる
  • server.requestTimeout:クライアントからHTTPリクエスト全体の受信を完了するまでの待機時間(ミリ秒)。既定値は5分(300000)になる

 これらのタイムアウトが経過すると、サーバーはステータスコード「408」で応答し、接続を閉じる。

「node:test」モジュール

 結果をTAP形式で報告するJavaScriptテストの作成を支援するため、テストランナーモジュール(node:test)が試験的に追加される。

「V8」の更新に伴う新機能

 「V8」がv10.1へアップデートされ、以下のJavaScript機能が利用できるようになる。また、クラスフィールドとプライベートクラスメソッドのパフォーマンスが向上し、初期化は通常のプロパティストアと同じくらい速くなっているとのこと。

  • 配列メソッド「findLast()」「findLastIndex()」
  • 「Intl.Locale()」の改善
  • 「Intl.supportedValuesOf()」関数

そのほか

 そのほかにも、ツールチェーンのアップデートなどが行われた。macOSのビルド済みバイナリは「macOS 10.15」以降が必要となるほか、32bit版Windows向けのバイナリは依存関係の問題によりファーストリリースでは提供されないので注意。

 「Node.js 18」は現在、公式サイト「nodejs.org」から無償でダウンロード可能。本バージョンはLTS(長期サポート)リリースとなるため、6カ月の通常サポートに加え、30カ月の延長サポートが提供される。2025年4月30日までパッチが利用可能だ。

「Node.js」のサポート期間