2011年8月1日、Node.jsの開発チームは最新のアンストーブル(unstable)版である「Node.js 0.5.3」をリリースしました。

このバージョンは、翌年に控える安定版0.6系のリリースに向けた重要なマイルストーンであり、現在のNode.jsでも馴染み深いutil.format()の導入や、Windows環境における実行基盤の強化が行われています。

開発版という位置づけながら、ネットワーク機能やファイル操作といったコアAPIに多くの改善が加えられました。

util.format() 関数の導入

今回のアップデートにおける大きな変更点の一つが、sprintfスタイルの文字列フォーマットを可能にする「util.format()」関数の追加です。

これまで複雑だった文字列の組み立てが、プレースホルダを利用して直感的に記述できるようになりました。

JavaScript
// utilモジュールの読み込み
const util = require('util');

// 文字列(%s)や数値(%d)を埋め込む例
const name = 'Node.js';
const version = '0.5.3';
const message = util.format('Welcome to %s version %s', name, version);

console.log(message);
実行結果
Welcome to Node.js version 0.5.3

この関数の登場により、ログ出力やエラーメッセージの生成が大幅に簡素化されました。

TLS SNIへの対応とネットワーク機能の強化

ネットワーク関連では、TLS SNI (Server Name Indication) のサポートが追加されました。

これにより、単一のIPアドレスで複数のSSL/TLS証明書を運用することが可能になり、ホスティングサービスなどでの利便性が向上しています。

また、HTTPモジュールにおいても大規模な変更が試行されています。

  • 新しいHTTPエージェントの実装:デフォルトでは無効ですが、コマンドラインフラグ --use-http2 を指定することで新しい実装を試すことができます。
  • Socket::bytesRead および Socket::bytesWritten の追加:送受信したデータ量を容易に取得できるようになりました。

Windowsサポートの強化とAPIの細かな改善

Node.jsのクロスプラットフォーム展開において、Windows環境への対応は極めて重要です。

本バージョンではWindowsにおける child_process のサポートが改善され、外部コマンドの実行やプロセスの管理がより安定しました。

また、開発者がより安全にコードを書けるよう、バッファ操作やファイルシステム周りでも以下の変更が行われています。

カテゴリー変更内容の詳細
BufferBuffer.write() に第3引数として length を指定可能に。
fsfs.writeFile 等で、非Bufferデータを自動的に文字列へ変換。
CryptoBase64のエンコード・デコードの修正、およびRFCに準拠したHMACの改善。
CLI--eval オプション実行時に結果を標準出力しないよう変更。

内部構造の整理

プロセス管理においては、ビルドオプションや環境情報を確認するための process.features が追加された一方で、process.useUV が削除されました。

これは内部のイベントループライブラリである libuv への移行が着実に進んでいることを示唆しています。

また、起動時間のレグレッション(性能低下)の修正も行われており、全体的なパフォーマンス向上が図られています。

まとめ

Node.js 0.5.3は、開発版(unstable)としての役割を忠実に果たし、将来の安定版に向けた新機能の実験と既存のバグ修正をバランスよく含んだリリースとなりました。

特にutil.format()の追加やWindowsサポートの進展は、Node.jsがより汎用的なプラットフォームへと成長する過程で欠かせないステップでした。

これらの新機能をいち早く試したい開発者は、公式サイトよりソースコードまたはWindows用実行ファイルをダウンロードして検証することが推奨されています。

ただし、開発版であるため、本番環境での利用には注意が必要です。

Node.js 0.5.3 公式ドキュメント