2011年10月21日、Node.jsの開発チームは最新の開発版となるNode.js v0.5.10をリリースしました。

このバージョンは「unstable (不安定版)」として位置づけられており、次期安定版であるv0.6.0のリリースに向けた最終調整の段階にあります。

今回のアップデートでは、長年メンテナンスされてきた古いビルドシステムの整理や、モダンなWeb開発に欠かせないHTTPメソッドの追加など、プラットフォームの健全性を高めるための重要な変更が数多く含まれています。

ビルドシステムとレガシーコードの大幅な整理

今回のリリースにおいて最もドラスティックな変更の一つが、cmakeビルドシステムの削除とCygwinサポートの終了です。

Node.jsは今後、ビルドツールとしてGYP (Generate Your Projects)への一本化を進めることになります。

これにより、メンテナンスコストの削減とビルドプロセスの高速化が期待されています。

また、初期のNode.jsから存在していたレガシーなAPIも整理の対象となりました。

例えば、process.ENV や process.ARGV といった大文字表記のプロパティが削除され、現代的な process.env や process.argv への移行が完了しました。

主要な削除・変更点

項目変更内容
ビルドツールcmakeを削除し、GYP (r1081) へ移行
OSサポートCygwinの公式サポートを終了
プロセス関連process.ENV, process.ARGV などのレガシープロパティを削除
メモリ計測process.memoryUsage().vsize の削除

HTTP PATCHメソッドの公式サポート

Web APIの設計において、リソースの部分更新を行うためのHTTP PATCHメソッドの需要が高まっていました。

v0.5.10では、このPATCHメソッドが標準でサポートされました。

これにより、サードパーティのライブラリに頼ることなく、標準の http モジュールでRESTfulなサービスをより正確に実装できるようになります。

以下は、新しくサポートされたPATCHメソッドを扱うサーバーの実装例です。

JavaScript
const http = require('http');

// HTTP PATCHメソッドを処理するシンプルなサーバー
const server = http.createServer((req, res) => {
  if (req.method === 'PATCH') {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Received a PATCH request');
  } else {
    res.writeHead(405);
    res.end('Method Not Allowed');
  }
});

server.listen(3000, () => {
  console.log('Server is listening on port 3000');
});

ネットワーク層とエンジンの強化

ネットワーク関連では、DNSのルックアップ処理において従来の c-ares に代わり、システム標準の getaddrinfo を使用するように変更されました。

これにより、OSレベルでのホスト名解決との整合性が向上します。

また、TLS APIについても、TCP APIとの一貫性を持たせるための修正が行われており、プログラミングモデルの統一が進んでいます。

内部エンジンについても、Googleが開発するJavaScriptエンジン V8がバージョン 3.7.0 にアップグレードされました。

これにより、実行パフォーマンスの向上とメモリ管理の最適化が図られています。

その他の主な改善

  • REPLの改善:実行結果が undefined の場合でも明示的に出力されるようになり、デバッグ時の視認性が向上しました。
  • Child Process:child_process.fork において引数が意図せず変更されるバグが修正されました。
  • Windows対応:Windows環境においてCPU情報を取得するための GetCPUInfo が追加されました。

まとめ

Node.js v0.5.10は、単なる機能追加に留まらず、プラットフォームの将来を見据えた「断捨離」と「標準化」を強く意識したリリースです。

Cygwinサポートの終了や古いプロパティの削除は、既存のユーザーにとって移行の手間を伴うものですが、Node.jsがより高速で安定したランタイムへと進化するためには避けて通れない道と言えるでしょう。

次期安定版であるv0.6.0のリリースが近づく中、今回のビルドシステムの刷新やV8エンジンの更新は、Node.jsのエコシステムにさらなる活力を与えることが期待されます。

開発者の皆様は、今のうちに本バージョンでの動作確認を行い、迫るメジャーアップデートに備えることを推奨します。