4月にリリースされたNode.js 22について、@spring_rainingがNode.jsのCore Collaboratorである@cola119に話を聞きました。
Node.js 22
- https://nodejs.org/en/blog/announcements/v22-release-announce
- 4月にリリース 収録時点ではv22.2.0
- LTSのサポート状況 https://nodejs.org/en/about/previous-releases
- v18: 2025年4月にサポート終了
- v20: 2026年4月にサポート終了
Node.js 22のアップデート
- V8がv12.4にアップグレード
- Array.fromAsync, Set methods, iterator helperの追加
- Maglev https://v8.dev/blog/maglev
- ESM→CJSの同期的なrequire()のサポート(Experimental)
- –run オプション(Experimental)
- 2023/2 に同様の提案が行われていた(https://github.com/nodejs/node/pull/46534 )。しかしPoC的な目的が強かったことや、議論が収束しなかったことによりマージには至らなかった
- 2024/5 に別の人によりPRを作り直す形で再挑戦された(https://github.com/nodejs/node/pull/52190 )。
- JSによる実装からC++での実装に修正され更に1.5倍くらいパフォーマンスが向上した(https://github.com/nodejs/node/pull/52609 )
- カレントディレクトリにpackage.jsonが見つからない場合に、親ディレクトリを辿っていく仕様が
実装中v22.3.0 でリリースされました(https://github.com/nodejs/node/pull/53154 )
- StreamのHigh Water Markのデフォルト値が16KiBから64KiBに
- –watchがStableに
- WebSocketがStableに
- globとglobSync(Experimental)
- AbortSignalインスタンス作成のパフォーマンス向上
v22リリース以降のアップデート
- v22.1.0
NODE_COMPILE_CACHE
という環境変数によって、コンパイル済みのコードをon-diskにキャッシュできる機構が実装された
- v22.2.0
--inspector-wait
フラグの導入 by @cola119(https://github.com/nodejs/node/pull/52734 )