2012年3月30日、Node.jsの次期安定版を見据えた開発版であるバージョン0.7.7がリリースされました。

このバージョンは、当時開発が進められていたv0.7系(アンステイブル・ブランチ)における重要なアップデートの一つです。

JavaScriptエンジンの刷新やパッケージマネージャーの更新、さらにはマルチプロセス管理機能の強化など、多岐にわたる改良が含まれています。

本記事では、Node.js v0.7.7で導入された主要な新機能や変更点について詳しく解説します。

コアコンポーネントのアップデート

本リリースでは、Node.jsの心臓部であるJavaScriptエンジンV8がバージョン3.9.24.7へとアップグレードされました。

エンジンの更新により、コードの実行速度やメモリ効率の向上が期待されます。

また、標準のパッケージマネージャーであるnpmもバージョン1.1.15へと更新され、モジュール管理の安定性が高まりました。

Clusterモジュールとプロセス管理の強化

マルチコア環境での並列処理を支えるClusterモジュールにおいて、重要な機能改善が行われています。

具体的には、マスタープロセスが終了した際に全てのワーカープロセスを自動的に終了させる機能が追加されました。

これにより、マスタープロセスがいなくなった後もワーカーだけが残り続けるといったリソース管理の不備を防ぐことができます。

さらに、接続を安全に終了させるためのgraceful disconnect機能もサポートされました。

child_processモジュールにおいては、closeイベントとexitイベントが分離されました。

プロセスの終了と、標準入出力ストリームの終了を個別にハンドリングできるようになったため、より精密な制御が可能です。

イベント名発生のタイミング
exit子プロセス自体が終了した際に発生します。
close子プロセスの標準入出力ストリームがすべて閉じられた際に発生します。

開発者の利便性を高める新機能

デバッガーには、例外が発生したタイミングで自動的にブレークするbreakOnExceptionコマンドが追加されました。

この機能を活用することで、エラーの原因究明が大幅に容易になります。

また、REPLを強制的に起動するためのコマンドラインフラグとして -i および --interactive が導入されました。

さらに、これまで課題となっていた絵文字 (Emoji) 文字列の適切な処理にも対応し、多言語対応が進められています。

APIの拡張とバイナリ操作の改善

型付き配列(Typed Arrays)において、新たにUint8ClampedArrayがサポートされました。

これは画像データなどのバイナリデータを扱う際、値を0から255の範囲に自動で収めたい場合に非常に便利です。

また、Node.jsのビルド時設定を確認できるprocess.configが追加されました。

Node.js本体に渡された引数を確認するためのプロパティ process.execArgv も利用可能になっています。

JavaScript
// Node.js本体に渡されたコマンドライン引数を表示する
// 例: node --harmony app.js を実行した場合
console.log(process.execArgv);
実行結果
[ '--harmony' ]

ネットワーク関連では、TLSモジュールにおける setKeepAlive() の不具合修正など、安定性が向上しています。

タイマー機能においても、マイナスの値や数値以外が渡された際の処理が改善されました。

まとめ

Node.js v0.7.7は、プロセスの管理能力の向上やデバッグ機能の強化など、次期安定版に向けた着実な進化を遂げたリリースです。

特にClusterモジュールの改善は、実用的なサーバーアプリケーションの構築において極めて重要な役割を果たします。

詳細な変更内容や最新のドキュメントについては、公式の配布サイト(Node.js v0.7.7 Dist)をご確認ください。