2013年3月6日、Node.jsの開発チームは最新の開発版となるバージョン0.9.12をリリースしました。
本リリースは、次期安定版であるv0.10.0のリリースに向けた実質的な リリース候補 (RC) 版 として位置づけられています。
開発チームは、現時点のv0.9.12がv0.9系列の中で最も安定した状態にあるとして、ユーザーに積極的なテストと利用を呼びかけています。
もし重大な問題が見つからなければ、2013年3月11日の月曜日には正式なv0.10.0が公開される見込みです。
v0.8を超える圧倒的なパフォーマンスの向上
Node.js v0.9系列の開発における最大の焦点の一つは、前世代の安定版であるv0.8のパフォーマンスを超えることでした。
今回のv0.9.12において、ついに HTTP、ファイルシステム (FS)、およびTLSの全主要ベンチマークでv0.8を上回るスコア を記録しました。
これは、長らく続いてきたv0.9系列の開発が、性能面でも完成の域に達したことを証明しています。
以下の表は、今回のアップデートで特に注目すべき変更カテゴリをまとめたものです。
| カテゴリ | 主な改善内容 |
|---|---|
| パフォーマンス | HTTP, FS, TLSの処理速度がv0.8を上回る |
| Stream API | Readable.pushへの文字列対応、内部バッファの最適化 |
| ネットワーク | DNSのNAPTRクエリ対応、FIN送信後のエラーハンドリング改善 |
| クラスタ | destroy() メソッドを kill() へ名称変更 |
ストリームAPIの大幅な刷新と最適化
開発の要となっている ストリーム (Stream) 関連の機能 には、多くの破壊的ではない修正と改善が含まれています。
例えば、Readable.push や unshift において文字列を直接扱えるようになったことで、バイナリデータ以外の処理がよりスムーズになります。
また、内部的なメモリ管理に関わる bufferSize オプションが削除され、大量の読み込み時に highWaterMark が自動的に増加する仕組みが導入されました。
これにより、開発者が手動で詳細なバッファ調整を行わなくても、効率的なデータの流れが確保されるようになっています。
以下に、今回のリリースに関連するクラスターモジュールの変更例を示します。
// v0.9.12におけるクラスターの操作例
const cluster = require('cluster');
if (cluster.isMaster) {
const worker = cluster.fork();
// 以前の destroy() から kill() へ名称が変更されました
// シグナルを指定してワーカーを停止します
worker.kill('SIGTERM');
}
(実行結果として指定したシグナルに基づきワーカープロセスが終了します)
開発環境に関連するその他の修正点
Windows環境での利便性向上も図られており、child_process において ENOENT エラーが正しく処理されるようになりました。
また、MSIインストーラーのビルドプロセスが修正され、パスにスペースが含まれる環境でも正常に動作するようになっています。
DNSモジュールでは、新しく NAPTR (Naming Authority Pointer) クエリがサポート され、より高度な名前解決が可能になりました。
デバッグを容易にするために、非推奨の機能を警告する --throw-deprecation フラグも追加されています。
まとめ
Node.js v0.9.12は、次世代の安定版である v0.10.0への架け橋となる重要なリリース です。
懸案だったパフォーマンス面でもv0.8を超えたことで、多くのユーザーが安心して移行できる準備が整いました。
来週に予定されているv0.10.0の正式リリースを前に、このv0.9.12を使用して既存のアプリケーションの互換性やパフォーマンスをぜひ確認してみてください。
