IronJSはDLR上のECMAScript 3.0実装である。先日のi-programmerに対するインタビューで、IronJSのクリエイターであるFredrik Holmström氏はDLR上の言語の実装に関する詳細に関して述べた。
Fredrik氏が強調する事の一つは、どれだけの作業がDLRによって削減されるかという事に関してである。
DLRによってみなさんは非常に多くの作業から解放されます。
それ(言語相互互換性)は確かに重要な点の一つではありますが、DLRコードがどれほど信頼できるもので、技術の非常に大きな領域をあなたのために解決してくれるという点も重要です。
Fredrik氏はDLRを利用する二つの方法を指摘する。関連するバインディングを利用するか、DLRをIL生成やコンパイラーツールとして利用し、自身のバインディングを利用するかである。前者は遅いので、IronJSは後者を用いている。約1年前にベンチマークが公開されたように、これはすでにIE8エンジンよりも速い。
自身のバインディングを利用する副作用は、DLR上の他の言語に対する相互互換性が無い事である。
IronJSパーサーは現在F#で記述されていて、コアランタイムはC#で記述されている。さらにスピードを上げるために、Fredrik氏はIronJSの次のバージョンですべてのF#コードをC#で置き換える計画をしている。しかし、氏はScott Hanselmann氏へのインタビューでCLR上で構築されているという事は、ネイティブコード上で構築されているV8のようなものと比較すると、遅かれ早かれIronJSはパフォーマンスの壁にぶち当たると述べている。
もし、あなたがDLR上で自身の言語の実装を始めたいのであれば、このドキュメントから始めるのが良い。また、IronPythonやIronRubyのような「Iron」言語のうちの一つのソースコードを読むのも良いだろう。