イェーガー モンキー
このところブラウザの速度というと、Opera と Chrome (WebKit) にばかり目が集まっているが、JavaScript の高速化の口火をかつて切った、もう 1 つの陣営がある。Mozilla の Gecko エンジンである。
いちはやく TraceMonekey で JIT を導入し、どんなものだと言わんばかりの時期があった。このところはすっかり Opera や WebKit に遅れをとり、すっかりおとなしくなってしまっていたが*1、数日前にイェーガー モンキーなる新 JavaScript エンジンの名前が出ていた。既に JIT を採用していたはずの TraceMonkey があるのに、どこが違うのかと、先ずは公式 Wiki ページを開いた。
- Gecko の JavaScript エンジンは、正式には SpiderMonkey という。
- SpiderMoneky にネイティブコード作成機能を追加するのが TraceMonkey である。
すると JägerMonkey は何なのか、素人なりに疑問が生じてくる。
公式解説には、SpiderMonkey 向けにインラインスレッディングを実行するのがイェーガー モンキーだと書いてある。要するに TraceMonkey の更なる最適化プロジェクトに付けられた名前といった理解で良いのだろう。
開発は 1 から行われたものではなく、ライバル(あるいはオープンソースの同僚) である WebKit の JavaScript エンジンからコピーしたと公式に書いてある。
- WebKit の JavaScript エンジンは SquirrelFish (最近では SquirrelFish Extream と称しているようだ) という。
- WebKit を使ったデスクトップブラウザの代表格、Chrome ではマーケティング上の理由だろうか V8、Safari では Nitro と呼ばれ、Google、Apple がそれぞれに改良を加えている。
その WebKit のうち Mozilla は Apple の Nitro をそのまま使ったとある。他所のコードを転用するというと思い出すのが、Adobe Flash 9 の JavaScript エンジンを SpiderMonkey に移植しようという Tamarin というプロジェクトがかつてあった。それは頓挫したが、オープンソースではこうしたことが時々ある。
Mozilla ではいずれの場合もバックエンドには Nanojit というライブラリを使っていたが、イェーガー モンキーでは Nanojit は役不足だったのか、上記 Nitro に乗り換えたとある。
こんな勢いでは、そのうち Gecko のレンダリングエンジン自体までもが "simple and fast" な WebKit になったりはしないのかと言い出す人が出てきてもおかしくはない。