NGINX is an advanced Internet infrastructure software.

Nginxは9月28日(米国時間)、「nginScript - why create our own JavaScript implementation?」において、先日公開した「nginScript」や独自のJavaScriptランタイムを開発するに至った理由などを説明した。厳密なものではないが、今後の開発スケジュールも示されている。

nginScriptはnginxと連動して動作するJavaScriptランタイム。ECMAScript 5の仕様をすべて実装するのではなく、nginxで必要になる基本的でシンプルな機能が実装されている。似たような取り組みとしてはNode.jsがあるが、こちらはChromeのJavaScriptエンジンであるV8を採用しており、nginxとはアプローチが異なっている。Node.jsとしてはChrome開発のエコシステムに乗ることで、常に最新のJavaScriptエンジンの恩恵に預かることを期待している。

nginxがV8を採用せず、独自のランタイムを実装するに至った理由としては次のようなものが挙げられている。

  • 必要とされる機能はシングルスレッドで即座に実行し、そして即座に破棄するような用途。ガベージコレクタも必要なく、実装するのが比較的簡単
  • nginxと密に連携する機能が必要であり、既存の実装をインポートするよりもネイティブに実装したほうが利点が大きい

開発はまだ初期段階にあるため、ランタイムの性能は他のインタプリタと同じようなもので、JITほどは高速ではないレベルと説明している。今後はまず機能を実装を優先的に進め、その後で性能などの向上に着手。また、最終的には長期にわたる実行にも耐えうるようにガベージコレクタの実装にも取りかかると考えているが、かなり先の話になるだろうと説明している。