Introducing Node.js 12 – Node.js Foundation – Medium
サーバサイド JavaScript や、フロントエンド JavaScript ビルドを実現する node.js が、新しいバージョンである 12 をリリースしました!
node.js は偶数番号が Long Term Support となるため、 v8, v10 に続いてこの v12 が 2019 年 10 月 から LTS となる予定です(LTS戦略はこちら)。
上記 Medium の記事を要約してみます。
V8 エンジンを 7.4 へアップグレード
JavaScript エンジンである V8 エンジンがアップグレードされ、パフォーマンス向上や言語・ランタイムの更新が行われました。ハイライトとしては以下。
- Async スタックトレース: Chrome 開発者ツールにはすでに搭載されている、 async 利用時にもスタックトレースをうまく表示する機能
- 引数のミスマッチ時の高速化: 定義した引数と異なる数(多くても少なくても)を渡すことが出来ますが、その際の速度を最大 60 % 高速化
-
Await の高速化: await 時に
Promise
インスタンスを渡していれば、初期化処理を挟まなくなるため高速になる。詳細 - JavaScript パースの高速化
など。
TLS 1.3 サポート
TLS 1.2 と 1.3 はマイナーバージョンアップに見えますが、実態としてはかなり大きな変更です。 OpenSSL 1.1.1 が入ったことにより、サポートが可能になりました。
デフォルトのヒープ制限を調整
デフォルトのヒープサイズが 700 MB から 1400 MB になりました。
起動速度の向上
ビルトインライブラリに対してコードキャッシュを生成することで、最大 30 % 程度の起動速度向上が見込まれます。
ES6 Module サポート
<script module>
という形式が今後一般的になっていきそうという話を以前しましたが、その新しい実装が入りました。現在はまだ experimental フラグを付けないと利用できませんが、 v12 が LTS になる 10 月までにフラグなしでも利用出来るようになるかもしれないとのことです。詳細
node.js は後方/前方互換性を非常に重視していて、 v4 で書いたスクリプトが普通に v12 で動いたりします。今回もほとんどのコードがそのまま動くと思います。
特に ES6 Module 周りが進んでいて良い感じですね。今後に期待です。