2011年8月12日、Node.jsの開発版であるバージョン 0.5.4 (unstable)が公開されました。

このリリースは、Node.jsがクロスプラットフォームなランタイムへと進化する過程において非常に重要な意味を持っています。

特に、これまでUnix系システムが中心だった開発環境から、Windows環境への本格的な対応を加速させるための改善が多数盛り込まれているのが特徴です。

また、ネットワーク通信の根幹を支えるHTTPモジュールの刷新も行われ、実用性が一段と高まっています。

Windowsプラットフォーム対応の進展

今回のアップデートで最も注目すべき点は、libuvによるWindows互換性の向上です。

Node.jsの非同期I/Oを司るコアライブラリであるlibuvの改善により、Windows上での動作がより安定しました。

また、ビルドシステムにおいても大きな進展がありました。

Microsoft Visual Studioを用いたビルドがGYP経由で可能となり、プロジェクト内に含まれる generate-projects.bat を実行することで、ソリューションファイル (.sln) を生成できるようになっています。

これにより、WindowsベースのエンジニアがNode.jsのコア開発や拡張に携わるためのハードルが大幅に下がりました。

HTTPエージェントのデフォルト変更

通信機能における大きな変更点として、Mikeal Rogers氏によって開発された新しいHTTPエージェントが標準設定となりました。

これにより、以前よりも柔軟で効率的なHTTP接続管理が可能になっています。

もし、互換性の問題などで以前のHTTPクライアントを使用し続ける必要がある場合は、–use-http1 フラグを指定することで従来の動作を維持できます。

さらに、HTTPSのホストヘッダーにおけるデフォルトポートの処理に関する不具合も修正されており、ネットワーク関連の堅牢性が向上しています。

開発を支える細かな改善と仕様変更

利便性を高めるための細かな修正も多岐にわたります。

例えば、JavaScriptファイルやJSONファイルを読み込む際に、バイト順マーク (BOM) を自動的に削除する処理が追加されました。

また、デバッグ時に頻用される util.format() のブラウザ互換性が向上しています。

JavaScript
// util.format() の使用例
const util = require('util');

// ブラウザの console.log のようなフォーマットが可能に
const result = util.format('Node.js version: %s', '0.5.4');
console.log(result);
// 出力: Node.js version: 0.5.4

その他の主な変更点は以下の通りです。

カテゴリ変更内容
V8エンジンバージョン 3.5.4 へのアップグレード
Bufferread/writeInt における符号なし整数 (uint) エントリポイントの提供
ビルドCMakeの改善

まとめ

Node.js 0.5.4 (unstable) は、将来の安定版リリースに向けた開発の中核を担うアップデートとなりました。

Windowsサポートの強化は、Node.jsのユーザー層を拡大する決定的な要因となり、HTTPエージェントの刷新は現代的なWebアプリケーション開発に求められるパフォーマンスの向上に寄与しています。

開発版のため本番環境での利用には注意が必要ですが、当時の開発者にとっては、Node.jsがより汎用的で強力なツールへと進化していく様子を強く実感させるリリースであったといえるでしょう。

詳細な情報は、公式サイトのリリースノートから確認することが可能です。