2012年12月30日、Node.jsの開発チームは不安定版(Unstable)シリーズの最新アップデートとなるバージョン0.9.5を公開しました。

このリリースは、次期安定版であるv0.10のリリースに向けた重要なステップとなります。

主にパフォーマンスの最適化、APIの一貫性の向上、そして複数のメモリリークやバグの修正に焦点が当てられています。

不安定版ではありますが、将来のNode.jsの方向性を示す重要な変更が多く含まれています。

主要なパフォーマンスの改善

BufferとHTTPの高速化

今回のリリースで最も注目すべき改善点は、bufferモジュールの処理速度向上です。

具体的には、Base64エンコーディングの処理が従来と比較して約20%高速化されました。

また、httpモジュールにおいても、streams2の仕組みを利用した際のパフォーマンス強化が行われています。

さらにhttpsモジュールのcreateConnection()メソッドが最適化され、ネットワーク通信の効率が向上しました。

APIの変更と安定性の向上

Domainモジュールの刷新

エラーハンドリングを容易にするdomainモジュールにおいて、プロパティの命名規則がsnake_caseからcamelCaseに変更されました。

これにより、Node.js全体のコーディング規約との一貫性が高まっています。

また、domainが内部でuncaughtExceptionハンドラを使用しなくなったことで、副作用の少ないエラー管理が可能となりました。

バグ修正とリソース管理

ストリーム関連では、readstreamにおけるpipeおよびunpipe時のイベントハンドラ漏れが修正されました。

これにより、長期間稼働するアプリケーションにおけるメモリリークのリスクが軽減されています。

また、未捕捉の例外(uncaught exception)によってプロセスが終了する際、適切に‘exit’イベントが発行されるようになりました。

モジュール主な変更内容
bufferBase64エンコード速度を20%向上
domain命名規則をcamelCaseに変更し、内部処理を改善
fsReadStreamでの’end’イベント発行を修正
netsocket.readyStateの修正
JavaScript
// Node.js v0.9.5におけるBufferの利用例
const data = "Node.js 0.9.5 Update";
const buffer = new Buffer(data);

// 高速化されたBase64エンコーディング
const base64Data = buffer.toString('base64');
console.log(base64Data);
実行結果
Tm9kZS5qcyAwLjkuNSBVcGRhdGU=

まとめ

Node.js v0.9.5は、パフォーマンス面とAPIの洗練度の両面で大きな進歩を遂げたリリースです。

特にBase64処理の高速化やDomainモジュールの改善は、実用的なアプリケーションの開発において大きなメリットとなります。

これらの変更は、将来の安定版に向けた基盤をより強固なものにするでしょう。