サーバサイドJavaScript実行環境の最新バージョン「Node.js 18」が公開された。JavaScriptエンジン「V8」が10.1にアップデートされ、グローバルフェッチが既定で有効になり、コアテストランナーモジュールが追加されている。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Node.jsプロジェクトは2022年4月19日(米国時間)、サーバサイドJavaScript実行環境の最新バージョン「Node.js 18」を公開した。JavaScriptエンジン「V8」が10.1にアップデートされ、グローバルフェッチが既定で有効になり、コアテストランナーモジュールが追加されている。
Node.js 18はまず、Node.js 17に代わって「Current」リリースとして提供され、2022年10月25日に「LTS」(長期サポート)リリースに昇格する。LTSリリースとしてのコードネームは「Hydrogen」となる。Node.js 18は2025年4月30日までサポートされる予定だ。
Node.js 18の新機能や改良点は次の通り。
実験的なfetch APIがグローバルスコープで、既定で利用可能になった。この実装は、Node.js用HTTP/1.1クライアント「undici」に基づいている。
fetch APIの使用例を次に示す。
Web Streams APIの実験的実装が公開され、次のAPIがグローバルに利用可能になった。
ReadableStream、ReadableStreamDefaultReader、ReadableStreamBYOBReader、ReadableStreamBYOBRequest、ReadableByteStreamController、ReadableStreamDefaultController、TransformStream、TransformStreamDefaultController、WritableStream、WritableStreamDefaultWriter、WritableStreamDefaultController、ByteLengthQueuingStrategy、CountQueuingStrategy、TextEncoderStream、TextDecoderStream、CompressionStream、DecompressionStream.WriteableStream、TextStreamDefaultController
次のAPIがグローバルスコープで公開された。これらは実験的機能ではなくなった。
実験的機能として追加された「node:test」モジュールは、TAP(Test Anything Protocol)形式で結果を報告するJavaScriptテストの作成を容易にする。アクセスするには、次のようにする。
2つのサブテストを持つ親テストの実装例を次に示す。
2つのオプションの既定値が新たに設定された。
これらのタイムアウトが経過すると、サーバは、リクエストをリクエストリスナに転送せずにステータス「408」で応答し、接続を閉じる。
サーバがリバースプロキシなしで展開された場合に発生し得るDoS攻撃から保護するために、どちらのタイムアウトも「0」以外の値に設定する必要がある。
Node.jsは、幾つかの異なるプラットフォーム向けにビルド済みのバイナリを提供している。メジャーリリースごとに最小限のツールチェーンが評価され、必要に応じてアップグレードされる。Node.js 18では、次のように変更された。
32bit版Windows用のビルド済みバイナリは、V8に関連する依存関係の問題から、当初は提供されない。Node.jsプロジェクトは、「V8の将来のアップデートに伴い、32bit版Windows用ビルド済みバイナリを復活させたい」としている。
V8エンジンがバージョン10.1にアップデートされた。V8 10.1はChromium 101の一部となっている。次のような新機能を提供する。
Node.js 18の新機能ではないが、Node.jsプロジェクトは過去数カ月間、ECMAScriptモジュールの実装を開発してきた。注目すべきマイルストーンとして、JSON Import Assertionsの実験的サポートの追加、JSONモジュールのアンフラグ(実験的機能)、HTTPSおよびHTTPインポートの実験的サポートがある。Node.jsにおけるECMAScriptモジュールローダ実装の開発も続けている。
Copyright © ITmedia, Inc. All Rights Reserved.