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’イベントが発行されるようになりました。
| モジュール | 主な変更内容 |
|---|---|
| buffer | Base64エンコード速度を20%向上 |
| domain | 命名規則をcamelCaseに変更し、内部処理を改善 |
| fs | ReadStreamでの’end’イベント発行を修正 |
| net | socket.readyStateの修正 |
// 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モジュールの改善は、実用的なアプリケーションの開発において大きなメリットとなります。
これらの変更は、将来の安定版に向けた基盤をより強固なものにするでしょう。
