メインコンテンツまでスキップ

V8 ❤️ Node.js

· 約4分
フランツィスカ・ヒンケルマン, Node モンキーパッチャー

Node.jsの人気はここ数年で着実に成長しており、私たちはNode.jsをより良くするために取り組んでいます。このブログ記事では、V8とDevToolsにおける最近の取り組みをいくつか紹介します。

DevToolsでNode.jsをデバッグ

現在、Chrome開発者ツールを使用してNodeアプリケーションをデバッグすることができます。Chrome DevToolsチームはデバッグプロトコルを実装するソースコードをChromiumからV8に移動させました。これにより、Node Coreがデバッガーのソースや依存関係を最新の状態に保つことが容易になりました。他のブラウザベンダーやIDEもChromeデバッグプロトコルを利用しており、Nodeを操作する際の開発者体験が向上しています。

ES2015の高速化

私たちはV8をこれまで以上に高速化するために懸命に取り組んでいます。最近のパフォーマンス改善作業は主にES6の機能に焦点を当てています。これには、プロミス、ジェネレータ、デストラクタ、およびrest/spread演算子が含まれます。Node 6.2以降のV8バージョンはES6を完全にサポートしているため、Node開発者はポリフィルを使用せずに新しい言語機能を「ネイティブ」に利用できます。これにより、Node開発者はES6のパフォーマンス向上の恩恵をいち早く受けることができる一方で、パフォーマンスの低下も早期に認識する可能性があります。入念なNodeコミュニティのおかげで、instanceofbuffer.length長い引数リスト、およびlet/constに関するパフォーマンス問題を含むいくつかの低下を発見し、修正しました。

Node.jsのvmモジュールとREPLの修正が来る

vmモジュールにはいくつかの長年の制約がありました。これらの問題を適切に解決するため、私たちはより直感的な動作を実現するためにV8 APIを拡張しました。vmモジュールの改善は、Node財団のOutreachyで支援しているプロジェクトの1つであることを発表できることを嬉しく思います。このプロジェクトや他のプロジェクトで今後さらなる進展があることを期待しています。

async/await

非同期関数を使用することで、プロミスを順次待機することにより、非同期コードを大幅に簡素化できます。async/await次回のV8アップデートでNodeに追加されます。プロミスとジェネレータのパフォーマンスを改善するための最近の作業により、非同期関数が高速化されました。それに関連して、私たちはプロミスフック、すなわちNode Async Hook APIに必要な一連の内部検査APIを提供する作業も進めています。

最新のNode.jsを試してみたいですか?

Nodeで最新のV8機能を試したい、または最新の不安定なソフトウェアを使用することを厭わない場合は、こちらの統合ブランチを試してみてください。V8はNode.jsに統合される前に最新の継続的統合が行われるので、問題を早期に発見できます。ただし、Node.js最新ツリーよりもさらに実験的ですのでご注意ください。