2013年1月18日、Node.jsの次期安定版を見据えた開発サイクルの一環として、Node.js v0.9.7 (Unstable)がリリースされました。
このバージョンは「不安定版」として位置づけられており、内部エンジンの更新や数多くの機能改善が盛り込まれています。
本記事では、V8エンジンのアップデートや各モジュールの変更点について詳しくお伝えします。
主要コンポーネントのアップデート
今回のリリースでは、コアとなるJavaScriptエンジンや周辺ツールのバージョンが引き上げられています。
JavaScriptエンジンであるV8はバージョン3.15.11.7へとアップグレードされ、実行効率の向上が期待されます。
また、パッケージマネージャーであるnpmもバージョン1.2.2に更新されました。
| コンポーネント | バージョン |
|---|---|
| V8エンジン | 3.15.11.7 |
| npm | 1.2.2 |
| punycode | 1.2.0 |
開発効率とパフォーマンスの改善
開発者にとって利便性の高い変更として、REPL(対話型評価環境)においてビルトインモジュールがデフォルトで利用可能になりました。
これにより、事前のrequire()呼び出しなしで、標準モジュールの機能を即座に試すことができます。
ネットワークとストリームの強化
TLS(Transport Layer Security)の実装では、RFC6125により厳格に従うよう修正が行われました。
また、ストリーム処理においてプッシュストリームからの巨大な読み込みを適切に処理できるよう改善されています。
モジュールとバッファの挙動変更
モジュールシステムでは、require()が空の文字列で呼び出された場合にアサート(警告)を出す変更が加えられました。
さらに、Bufferクラスにおける浮動小数点の読み書きや、TypedArraysのDataViewパフォーマンス向上など、低レイヤーの処理も最適化されています。
// v0.9.7におけるrequireの変更点を確認する例
try {
// 空文字列でのrequireはエラーの対象となります
require('');
} catch (err) {
console.error('モジュール読み込みエラー:', err.message);
}
モジュール読み込みエラー: require() called with a non-empty string
OS固有の改善とクラスター機能
Windows環境への対応も進んでおり、_Totalパフォーマンスカウンターのサポートが追加されました。
また、クラスターモジュールにおいて、ワーカープロセスでもプロファイリング(–prof)が機能するようになっています。
これにより、マルチプロセス構成のアプリケーションにおけるデバッグやチューニングがより容易になります。
まとめ
Node.js v0.9.7は、V8エンジンの更新を筆頭に、ストリームやバッファといったコア機能の堅牢性を高める重要なアップデートとなりました。
不安定版(Unstable)としてのリリースですが、次期安定版であるv0.10に向けた開発が最終段階に入っていることを感じさせる内容です。
開発者の皆様は、新機能の動作確認や互換性のチェックを、この機会に進めておくことをお勧めいたします。
