2012年9月18日、Node.jsの開発チームは新たな開発版であるバージョン 0.9.2 (Unstable) を公開しました。
このリリースは、次期安定版に向けた「不安定版」シリーズの一つであり、数多くの機能改善とバグ修正が盛り込まれています。
特にセキュリティ面と、各種プラットフォームにおける動作の安定性に重点を置いたアップデートとなっています。
当時の開発環境において、より堅牢なネットワークアプリケーションを構築するための重要なステップとなりました。
TLSおよびHTTPSにおけるセキュリティの強化
本バージョンにおける最も大きな変更点の一つは、ネットワーク通信の安全性向上です。
TLSおよびHTTPSにおいて、サーバー証明書の検証がデフォルトで有効になりました。
これにより、開発者が明示的に設定を行わなくても、中間者攻撃などのリスクを軽減する安全な通信が標準となります。
また、証明書やキーが不足している場合には例外をスローするように変更され、設定ミスをより確実に検知できるようになりました。
さらに、セッションストレージの非同期対応が行われるなど、パフォーマンスと柔軟性の両立も図られています。
プラットフォーム固有の修正と各OSへの最適化
Windows環境では、多くの重要なバグ修正とエラーマッピングの改善が行われました。
具体的には、カスタム環境変数を使用した spawn プロセスの動作が修正され、より安定した外部コマンド実行が可能になっています。
Macintosh (Darwin) 環境においては、ディレクトリの変更を監視するために FSEvents を使用するように刷新されました。
Unix系 OS では、NetBSD における API の不足が補完されたほか、特定の条件下で発生していた EMFILE エラーによるビジーループの問題が修正されています。
APIの機能拡張とパフォーマンス向上
データ処理の中核を担う Buffer クラスにおいて、利便性を高める機能が追加されました。
Buffer.prototype.toJSON() が実装されたことで、バッファデータを JSON 形式へ変換する処理が簡略化されています。
また、数値データの書き込みにおいて NaN (Not a Number) や Infinity のサポートが追加されました。
// Bufferの内容をJSON形式に変換する例
var buf = new Buffer('hello');
var json = buf.toJSON();
console.log(json);
{ type: 'Buffer', data: [ 104, 101, 108, 108, 111 ] }
さらに、Url クラスを利用した URL 解析処理の高速化が行われ、アプリケーション全体のパフォーマンス向上が期待できます。
その他の主な変更点
| カテゴリ | 変更内容の概要 |
|---|---|
| ライブラリ | OpenSSL 1.0.1c へのアップグレード |
| HTTP | http.ServerResponse が ‘end’ イベントを発行するように変更 |
| CLI | -p オプションを -pe と同等に変更 |
| ビルド | ninja ビルドシステムのサポート追加 (./configure –ninja) |
まとめ
Node.js v0.9.2 は、セキュリティ設定のデフォルト化や、マルチプラットフォームでの安定性向上を成し遂げた重要な開発版です。
特に TLS 通信の仕様変更は、当時の Node.js エコシステムにおけるセキュリティ意識の高まりを象徴しています。
これらの改善は、後にリリースされる安定版 v0.10 系への基礎を築くものとなりました。
開発者の皆様は、こうした不安定版での変更を把握することで、将来の安定した運用に備えることができました。
