第2章 機能
このセクションには、Red Hat build of Node.js 22 リリースにおける機能の変更に関する情報が記載されています。
2.1. 新機能および変更された機能 リンクのコピーリンクがクリップボードにコピーされました!
Node.js 22 LTS には、Red Hat build of Node.js がサポートする次の新機能と機能拡張があります。
Node.js 22 LTS の変更点の詳細は、アップストリームコミュニティーの リリースノート と ドキュメント を参照してください。
2.1.1. v12.4 への V8 JavaScript エンジンのアップグレード リンクのコピーリンクがクリップボードにコピーされました!
このリリースには、Chromium 124 の一部である v12.4 への V8 JavaScript エンジンのアップグレードが含まれています。
アップグレードされた V8 JavaScript エンジンには、以下の新機能および機能拡張が含まれています。
V8 JavaScript エンジンで利用可能な変更の詳細は、V8 ブログ を参照してください。
2.1.2. Node.js ストリームのデフォルトハイウォーターマークの増加 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Node.js 22 では、Node.js ストリームのデフォルトのハイウォーターマークが 16 KB から 65 KB に増加しました。この機能拡張により、Node.js ストリームの全体的なパフォーマンスが向上します。
この機能拡張により、メモリー使用量もわずかに増加します。環境がメモリーの影響を受ける場合は、setDefaultHighWaterMark() を使用してデフォルト値を変更できます。
詳細は、Node.js の new stream.Writable および new stream.Readable ドキュメントを参照してください。
2.1.3. AbortSignal 作成のパフォーマンスの向上 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Node.js 22 では、AbortSignal インスタンスの作成が効率化します。この機能拡張により、fetch() API とテストランナーモジュールのパフォーマンスが大幅に向上します。
詳細は、Node.js の AbortSignal ドキュメントを参照してください。
2.1.4. 同期ファイルシステム API のパフォーマンスの向上 リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Node.js 22 では、UTF-8 でエンコードされた文字列データ用の非常に効率的な高速パスの追加により、writeFileSync() メソッドが強化されています。このリリースでは、appendFileSync() メソッドを最適化するために、改良された writeFileSync() 機能も使用されます。この機能拡張は、特に文字列データ操作の効率を最大化することに重点を置いています。
詳細は、Node.js の fs.writeFileSync および fs.appendFileSync ドキュメントを参照してください。
2.1.5. 不適切な IPV6 設定の処理の改善 リンクのコピーリンクがクリップボードにコピーされました!
Node.js 17 リリース以降、Node.js は IPv6 アドレスよりも IPv4 アドレスを優先しなくなりました。Node.js は、ドメイン名検索 (DNS) エントリーに基づいて返される順序に従います。この動作は通常、適切に設定されたホストには影響しません。しかし、IPv6 スタックが部分的にまたは誤って設定されているホストでは、この動作により問題が発生する可能性があります。最近のリリースでは、Happy Eyeballs アルゴリズムの実装を組み込み、エッジケースを修正することで、誤って設定されている IPv6 スタックのユーザーエクスペリエンスを向上させることを目指しています。
Red Hat build of Node.js 22 には、net.createConnection フロー内の接続試行に関する次の 3 つの新しいイベントが追加されています。
-
新しい接続試行が確立されると、
connectionAttemptイベントが発生します。Happy Eyeballs を使用すると、このイベントが複数回発生する場合があります。 -
接続試行が失敗すると、
connectionAttemptFailedイベントが発生します。Happy Eyeballs を使用すると、このイベントが複数回発生する場合があります。 -
接続試行が指定タイムアウト期間を超えると、
connectionAttemptTimeoutイベントが発生します。Happy Eyeballs を使用する場合、最後の試行ではこのイベントは発生しません。Happy Eyeballs を使用していない場合、このイベントは発生しません。
さらに、Red Hat build of Node.js 22 では、前回の試行が失敗し、ユーザーがすでに接続を破棄した後に、新しい接続の試行が開始されることがある問題が解決されています。この問題により、以前のリリースではアサーションが失敗していました。
問題が発生した場合は、以前のリリースと同様に、--dns-result-order=ipv4first CLI オプションを使用して以前の動作に戻すことができます。--no-network-family-autoselection オプションを使用して、Happy Eyeballs を無効にすることもできます。
詳細は、Node.js の net.Socket ドキュメントを参照してください。
2.1.6. Web Streams の deflate-raw 圧縮形式のサポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Node.js 22 では、CompressionStream および DecompressionSteam コンストラクターで deflate-raw パラメーターのサポートが追加されました。deflate-raw パラメーターは、ヘッダーと末尾のチェックサムなしで DEFLATE アルゴリズムを使用してストリームを圧縮または展開します。この機能拡張により、最新のブラウザーがサポートする Web ストリーム圧縮との一貫性が確保されます。
詳細は、Node.js の CompressionStream および DecompressionStream ドキュメントを参照してください。
2.1.7. ウォッチモードの完全なサポート リンクのコピーリンクがクリップボードにコピーされました!
Red Hat build of Node.js 22 は、実稼働環境で使用できる安定した機能としてウォッチモードを提供します。以前のリリースでは、ウォッチモードは実験的な機能としてのみ提供されていました。
node --watch CLI オプションを使用すると、Node.js アプリケーションをウォッチモードで実行できます。アプリケーションをウォッチモードで実行すると、インポートしたファイルを変更したときにプロセスが再起動されます。これにより、内部ループの開発サイクルが高速化するという主な利点が得られます。
ウォッチモードには次のオプションがあります。
-
--watchオプションは、Node.js をウォッチモードで起動します。 -
--watch-pathオプションは、Node.js をウォッチモードで起動し、監視するパスを指定します。 --watch-preserve-outputオプションは、ウォッチモードによってプロセスが再起動されるときのコンソールのクリアを無効にします。注記このオプションを使用するには、
--watchまたは--watch-pathオプションも使用する必要があります。
詳細は、Node.js の --watch ドキュメントを参照してください。