Googleの「V8」JavaScriptエンジンで動作するサーバサイドJavaScript環境の最新版「Node.js 12」が公開された。TLS 1.3対応や診断レポート機能の実験的導入など多数の改良が施されている。
この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Node.js Foundationは2019年4月23日(米国時間)、Googleの「V8」JavaScriptエンジンで動作するサーバサイドJavaScript環境の最新版「Node.js 12」を公開した。
現在、「Node.js 10」が「Active LTS」(長期サポートの対象)というリリースステータスにあり、「Node.js 10.15.3 LTS」が推奨版として提供されている。Node.js 12は「Current」(最新)というリリースステータスにあり、2019年10月22日からActive LTSに移行する。
Node.js 12の新機能や強化機能の概要は次の通り。
V8 JavaScriptエンジンが「V8 7.4」へアップデートされたことに伴い、Node.jsの新版では非同期スタックのトレースや引数ミスマッチにおける呼び出しの高速化、awaitの高速化、JavaScript解析の高速化といった改良が施された。
Node.js 12は、インターネットセキュリティプロトコルの最新版である「TLS 1.3」に対応するとともに、必要な場合は無効にするためのスイッチ(CLI/NODE_OPTIONS)をサポートしている。ただし、TLS 1.3はTLS 1.2と比較してセキュリティ上の強化が著しいため、なるべくTLS 1.3を使うべきだという。
V8で設定されたデフォルトのJavaScriptヒープサイズを使用するのではなく、使用可能なメモリ量に基づいてヒープサイズを構成できるようになった。データセットのサイズが大きいときに役立つ。
Node.js 12では、デフォルトパーサを「llhttp」に切り替えた。これにより、新しいllhttpベースの実装のテストや比較が容易になった。
Node.js 12では、ネイティブモジュールの作成とサポートを容易にする取り組みが進んだ。ワーカースレッドと組み合わせたネイティブモジュールのサポートや、非同期関数に独自のスレッドを使いやすくするN-API バージョン4のサポートなどだ。
実験的に導入済みのワーカースレッド機能を改良し、ワーカースレッドを使用する際にフラグを使う必要がなくなった。
実験的機能として「診断レポート」を導入した。これにより、要求に応じてまたは特定のイベントが発生したときにレポートを生成できるようになった。
診断レポートにはクラッシュやパフォーマンスの低下、メモリリーク、高いCPU使用率、予期しないエラーなど運用環境で起こる問題の診断に役立つ情報が含まれている。
Node.js 12では、ヒープダンプ機能を標準で提供するように変更した。
これまではメモリに問題があった場合、ヒープダンプを生成するモジュールを本番環境にインストールしなければならなかったものの、速度の低下を招く可能性があった。
ビルド時に組み込みライブラリ用のコードキャッシュを事前に生成して、バイナリに埋め込むように改良した。
これにより、最終リリースでは、メインスレッドがコードキャッシュを使って、初期ロードを開始できる。この効果は高く、メインスレッドの開始時間を最大30%短縮できる。
Node.js 12では、実験的に提供済みの「ES6(ECMAScript6)モジュール」への対応を改善した。
ECMAScript6は、ECMAScript標準の最新版。ES6モジュールサポートは、Node.js 12のActive LTSへの移行までに、正式なものにすることが計画されている。
Node.jsとV8では、C++の新機能に対応するため、コンパイラの最適化やセキュリティの強化を進めている。そのため、macOSとWindows以外のプラットフォームでは、GCC 6とglibc 2.17が最小要件となった。
Windowsでの最小要件はNode.js 11と同等。Windows 7/Server 2008 R2/Server 2012 R2と、Visual Studio 2017だ。macOSユーザーがNode.jsのコンパイルを行うには、Xcode 8以降が必要。nodejs.orgで提供されるNode.jsバイナリは、OS X 10.10(Yosemite)以降に対応する。
Copyright © ITmedia, Inc. All Rights Reserved.