2013年4月11日、Node.jsの安定版シリーズにおける最新のアップデート版「Node.js v0.10.4」がリリースされました。

このバージョンは、システムの安定性と信頼性を高めるための多くの修正が含まれたメンテナンスリリースとなります。

開発チームは、メモリ管理の最適化やネットワーク機能の不具合修正に重点を置いて開発を進めました。

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

今回のリリースでは、Node.jsの基盤を支える重要な内部ライブラリが更新されています。

イベント駆動型I/Oを処理する「libuv」はバージョン0.10.4へとアップグレードされました。

パッケージマネージャーである「npm」もバージョン1.2.18へと更新され、パッケージ管理の安定性が向上しています。

JavaScriptエンジンのV8については、JSON.parseを実行する際に過度なメモリ消費が発生する問題が修正されました。

ネットワークとデータ処理の改善

通信に関連するモジュールにおいても、多くの機能改善やバグ修正が施されています。

NetモジュールとBufferの最適化

netモジュールでは、socket.bytesWrittenがBufferを正しくサポートするように修正されました。

bufferモジュールでは、オフセット値のチェック処理が見直され、データの安全性が強化されています。

また、ネットワーク接続時のエンコーディング計算において、.byteLengthが正確な値を返すように調整されました。

ストリームとHTTPの機能拡張

streamモジュールでは、finishイベントが発行される前に書き込みのコールバックを呼び出すよう動作が変更されました。

HTTP通信においては、write(data, 'hex')といった16進数エンコーディングによるデータの書き込みが新たにサポートされています。

セキュリティとプロセスの修正

セキュリティ面では、TLS通信の証明書検証プロセスが強化されました。

具体的には、証明書検証時におけるCN-IDのチェック機能が再有効化されています。

暗号化を担当するcryptoモジュールでは、Diffie-Hellman (DH) 共有鍵の生成時に、シークレットが適切にパディングされるよう修正されました。

また、実行環境の情報として、process.versionsプロパティからNODE_MODULE_VERSIONが参照可能になっています。

リリース情報のまとめ

以下の表は、Node.js v0.10.4における主要な変更点をまとめたものです。

カテゴリ主な変更内容
コアライブラリlibuv v0.10.4 / npm v1.2.18 への更新
V8エンジンJSON.parse時のメモリ肥大化の抑制
HTTP/Stream16進数書き込み対応、コールバックタイミングの修正
SecurityTLS証明書のCN-ID検証を再有効化

以下に、今回サポートされたHTTPでの16進数書き込みのコード例を示します。

JavaScript
// Node.js v0.10.4 での HTTP 16進数書き込みの例
const http = require('http');

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  // 'Hello' を16進数形式で書き込み
  res.write('48656c6c6f', 'hex');
  res.end();
});

server.listen(8080);
実行結果
HTTP/1.1 200 OK
Content-Type: text/plain

Hello

まとめ

Node.js v0.10.4は、安定版としての完成度をさらに高める重要なアップデートとなりました。

特にメモリ管理の修正やセキュリティの強化は、大規模なアプリケーションを運用する上で大きなメリットとなります。

開発者の皆様は、利用しているモジュールとの互換性を確認した上で、この安定版へのアップデートを検討することをお勧めいたします。