2012年6月19日、Node.jsの開発チームは最新の開発版であるv0.7.12をリリースしました。
このバージョンは、0.7系列における最後のリリースとして位置付けられています。
数日後には次期安定版となるv0.8.0のリリースが予定されており、今回のアップデートはその最終調整にあたります。
開発者にとって、安定版への移行をスムーズに行うための重要な準備期間となるでしょう。
安定版v0.8.0に向けたAPIの凍結
Node.js v0.7.12の公開に伴い、APIは事実上のフリーズ状態(凍結)となりました。
これは、v0.8.x系列の安定性を確保するために、これ以上の破壊的な変更を加えないことを意味します。
開発チームは、今回のリリースとv0.8.xの間で機能的な差異がほとんど発生しないことを明言しています。
そのため、既存のアプリケーションがv0.8で正常に動作するかを検証する最終的なチャンスとなります。
バイナリアドオンの互換性とlibuvへの移行
v0.8.x系列では、以前の偶数番号リリースと同様に、APIおよびバイナリの互換性が維持されます。
今回のアップデートでは、libeioやlibevを直接利用しているバイナリアドオン向けに、後方互換性を保つためのシム(Shims)が導入されました。
これにより、v0.6系列向けにビルドされたモジュールがコンパイルできない問題の解消が図られています。
ただし、libevについてはv0.8で正式に非推奨(deprecated)となり、次期開発版のv0.9では完全に削除される予定です。
開発者には、アドオンの基盤を速やかにlibuvへ移行することが強く推奨されています。
内部エンジンの更新とnpmの改善
JavaScriptエンジンであるV8は、バージョン3.11.10へとアップデートされました。
このV8 3.11.x系列は、Node.js v0.8.xの提供期間を通じて継続して使用される予定です。
npm v1.1.30の同梱
標準のパッケージマネージャであるnpmも、v1.1.30へとアップグレードされました。
npm initコマンドの挙動改善や、README.mdファイルからデフォルトの説明文を読み込む機能などが追加されています。
新たに追加・改善された主な構成オプションは以下の通りです。
| 項目 | 内容 |
|---|---|
| –save-bundle (-B) | 構成オプションにバンドル保存機能を追加 |
| logstream | 削除された logfd に代わる新しいログ出力オプション |
| Cygwin対応 | Windows環境におけるCygwin上でのスクリプト実行を改善 |
主要な修正と新機能の実装
今回のリリースでは、ネットワークやプロセス管理に関する重要な修正も多く含まれています。
例えば、net.Socketにおいて、接続が完了するまでpauseやresumeの実行を遅延させる修正が行われました。
また、child_processのforkメソッドにおいて、子プロセス側にstdinストリームを追加できるようになっています。
// child_process.fork における stdin の利用例
const cp = require('child_process');
const child = cp.fork('child_script.js', [], {
silent: true // stdin, stdout, stderr をパイプとして設定
});
child.stdin.write('hello from parent\n');
この変更により、親子プロセス間でのデータ受け渡しがより柔軟に制御可能となりました。
その他、querystringモジュールの高速化や、Unix環境におけるファイル監視機能の強化も図られています。
まとめ
Node.js v0.7.12は、まさに次世代の安定版であるv0.8.0への橋渡しとなるリリースです。
APIが凍結され、互換性維持のためのシムが提供されたことで、エコシステム全体が安定版へ移行するための準備が整いました。
開発者の皆様は、ぜひこのバージョンで既存のモジュールの動作確認を行い、libuvへの対応を進めてください。
安定性とパフォーマンスの両立を目指すNode.jsの進化において、非常に重要な一歩となるでしょう。
