2012年12月13日、Node.js 0.8系列の最新安定版(Stable)となるNode.js 0.8.16が公開されました。
本リリースは、既存のバグ修正やパフォーマンスの改善を目的としたメンテナンスアップデートです。
特にファイルシステムや暗号化に関連するモジュールにおいて、メモリリークの問題が解消されている点が大きな注目を集めています。
主な修正内容と機能改善
今回の更新では、システムの信頼性を向上させるために複数の重要なコアモジュールに対して修正が加えられました。
コアモジュールの安定化
fsモジュールにおいて、WriteStreamやReadStreamを使用する際にファイル記述子(fd)がリークする重大な不具合が修正されました。
また、cryptoモジュールのGetPeerCertificateメソッドにおいて発生していたメモリリークの問題も解消されています。
さらに、netモジュールではIPアドレスの検証精度が向上し、IPv6のドット表記もより正確に扱えるようになりました。
npmのアップグレード
同梱されているパッケージマネージャのnpmが、バージョン1.1.69にアップグレードされました。
これにより、外部ライブラリのインストールや依存関係の管理がより安定して行えるようになります。
アップデートの詳細一覧
本バージョンにおける主な変更点を以下の表にまとめています。
| モジュール | 修正および変更内容 |
|---|---|
| fs | WriteStream/ReadStreamにおけるファイル記述子のリーク修正 |
| crypto | GetPeerCertificateにおけるメモリリークの解消 |
| net | IPアドレス検証の精度向上とIPv6表記の改善 |
| buffer | 数値引数に関する二重否定処理の修正 |
ネットワークモジュールの動作確認例
以下は、修正が行われたネットワーク関連の機能を活用した、簡単なサーバー構築のサンプルコードです。
// 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向けバイナリも提供されており、容易に更新作業を行うことが可能です。
