2012年12月13日、Node.js 0.8系列の最新安定版(Stable)となるNode.js 0.8.16が公開されました。

本リリースは、既存のバグ修正やパフォーマンスの改善を目的としたメンテナンスアップデートです。

特にファイルシステムや暗号化に関連するモジュールにおいて、メモリリークの問題が解消されている点が大きな注目を集めています。

主な修正内容と機能改善

今回の更新では、システムの信頼性を向上させるために複数の重要なコアモジュールに対して修正が加えられました。

コアモジュールの安定化

fsモジュールにおいて、WriteStreamReadStreamを使用する際にファイル記述子(fd)がリークする重大な不具合が修正されました。

また、cryptoモジュールのGetPeerCertificateメソッドにおいて発生していたメモリリークの問題も解消されています。

さらに、netモジュールではIPアドレスの検証精度が向上し、IPv6のドット表記もより正確に扱えるようになりました。

npmのアップグレード

同梱されているパッケージマネージャのnpmが、バージョン1.1.69にアップグレードされました。

これにより、外部ライブラリのインストールや依存関係の管理がより安定して行えるようになります。

アップデートの詳細一覧

本バージョンにおける主な変更点を以下の表にまとめています。

モジュール修正および変更内容
fsWriteStream/ReadStreamにおけるファイル記述子のリーク修正
cryptoGetPeerCertificateにおけるメモリリークの解消
netIPアドレス検証の精度向上とIPv6表記の改善
buffer数値引数に関する二重否定処理の修正

ネットワークモジュールの動作確認例

以下は、修正が行われたネットワーク関連の機能を活用した、簡単なサーバー構築のサンプルコードです。

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

// サーバーの作成
const server = net.createServer((socket) => {
  socket.write('Echo server\r\n');
  socket.pipe(socket);
});

// ローカルホストで待機
server.listen(8080, '127.0.0.1');
console.log('Server started on port 8080');
実行結果
Server started on port 8080

まとめ

Node.js 0.8.16は、長時間のサーバー運用において致命的となり得るメモリリークやリソース漏洩を修正した重要なリリースです。

既存の0.8系を利用しているプロジェクトでは、システムの安定稼働を維持するために速やかなアップデートを検討することをお勧めします。

公式サイトでは各種OS向けバイナリも提供されており、容易に更新作業を行うことが可能です。