イェーガー モンキー

このところブラウザの速度というと、OperaChrome (WebKit) にばかり目が集まっているが、JavaScript の高速化の口火をかつて切った、もう 1 つの陣営がある。MozillaGecko エンジンである。
いちはやく TraceMonekey で JIT を導入し、どんなものだと言わんばかりの時期があった。このところはすっかり OperaWebKit に遅れをとり、すっかりおとなしくなってしまっていたが*1、数日前にイェーガー モンキーなる新 JavaScript エンジンの名前が出ていた。既に JIT を採用していたはずの TraceMonkey があるのに、どこが違うのかと、先ずは公式 Wiki ページを開いた。

すると JägerMonkey は何なのか、素人なりに疑問が生じてくる。
公式解説には、SpiderMonkey 向けにインラインスレッディングを実行するのがイェーガー モンキーだと書いてある。要するに TraceMonkey の更なる最適化プロジェクトに付けられた名前といった理解で良いのだろう。
開発は 1 から行われたものではなく、ライバル(あるいはオープンソースの同僚) である WebKitJavaScript エンジンからコピーしたと公式に書いてある。

その WebKit のうち MozillaApple の Nitro をそのまま使ったとある。他所のコードを転用するというと思い出すのが、Adobe Flash 9 の JavaScript エンジンを SpiderMonkey に移植しようという Tamarin というプロジェクトがかつてあった。それは頓挫したが、オープンソースではこうしたことが時々ある。
Mozilla ではいずれの場合もバックエンドには Nanojit というライブラリを使っていたが、イェーガー モンキーでは Nanojit は役不足だったのか、上記 Nitro に乗り換えたとある。
こんな勢いでは、そのうち Geckoレンダリングエンジン自体までもが "simple and fast" な WebKit になったりはしないのかと言い出す人が出てきてもおかしくはない。

*1:一部では IE 6 と同じ理屈で、実際の Web サイト/サービスはシェアの大きなブラウザに最適化して作られている、よって IE 6 や Firefox の方が実際の利用場面では高速だなどと言い出す始末。Firefox が異常なまでにシェアを気にする理由はそこにある。