Node.js 0.8.0リリース、I/O性能の向上や多くの新機能実装などが行われる

 6月26日、JavaScriptアプリケーションプラットフォーム「Node.js」の最新版「Node.js 0.8.0」がリリースされた。従来の安定版であったバージョン0.6系に代わる新たな安定版という位置付けで、性能が大きく改善しているほか、多くの新機能が追加されている。

 Node.jsはGoogle Chromeで採用されているJavaScript実行環境「V8」をベースとするJavaScriptアプリケーションプラットフォーム。JavaScriptコードを実行するランタイムと、各種I/Oやネットワークアクセスといった機能を提供するライブラリから構成されている。ネットワークソケットの待ち受けやファイルアクセスといった処理を容易にシングルスレッドで非同期実行できるという特徴を持ち、近年注目を浴びている。

 Node.js 0.8.0は新たな安定版ということで、多くの改良が加えられている。その中で特に注目されている改良点は下記のとおりだ。

  • 高速化および安定性の強化
  • ファイルディスクリプタによる処理の再実装
  • clusterモジュールの大幅な強化
  • domainモジュールの追加
  • 対話的実行環境(repl)の改善
  • ビルドシステムの変更
  • 多くのバグ修正やパフォーマンス改善

 Node.js 0.8.0ではV8およびプラットフォーム抽象化ライブラリ「libuv」の改良により、処理速度が大幅に改善されているという。Node.jsのブログで公開されているテスト結果によると、ファイルI/Oでは2~3倍程度の高速化が見られ、Webサーバーのスループットも向上している。

 また、Node.jsでは従来ビルドにPythonベースの「WAF」と呼ばれるシステムが使われていたが、Node.js 0.8.0からは「GYP」と呼ばれるビルドシステムに変更された。GYPはMakefileやVisual StudioおよびXcodeのプロジェクトファイルを生成でき、プラットフォームことの最適化やビルドが用意になっているという。従来使われていたWAFは公式に廃止となるとのこと。

 ライブラリ関連では、まずhttp.Serverクラスのlistemメソッドにおいて、ファイルディスクリプタの指定が可能になった。これはNode.js 0.4で廃止されたlistenFDメソッドに相当するもので、これによって複数のNode.jsプロセスで同じソケットを共用できる。複数のNode.jsプロセスを扱うモジュールとしてはclusterモジュールが用意されていたが、listenFDメソッドを利用しているケースも多かったための復活という。

 clusterモジュールも大幅に強化され、全体に書き直しが行われているという。ほとんどのAPIは以前のバージョンとの互換性があるが、一部のAPIについてはそうでないとのこと。Node.js 0.6でclusterモジュールを使用していたコードは正しく動作するだけでなく、より高速かつ最適に動作するという。

 新モジュールであるdomainモジュールは、複数のIO操作をグルーピングして扱う手段を提供するものだという。まだ実験的な段階であるが、イベント機構が実装された複数のオブジェクトやコールバック関数をdomainオブジェクトに登録し管理する、といったことが可能になるようだ。

 なお、旧バージョンとなったNode.js 0.6.0については、2012年いっぱいは重大なバグフィックスやセキュリティ修正が提供される見込み。また、時期開発版である0.9系の開発も開始されるという。

Node.js
http://nodejs.org/