Mozilla semble décidément beaucoup aimer les moteurs JavaScript. Dans Firefox 4, qui est actuellement disponible en version bêta, le moteur JavaScript utilisé s'appelle SpiderMonkey. Ce dernier reçoit le renfort du compilateur TraceMonkey et avec la prochaine version bêta de Firefox 4, le renfort de JaegerMonkey.

TraceMonkey assure une compilation à la volée d'arbre de traces. JaegerMonkey vient pallier les faiblesses de TraceMonkey et se base sur l'inline threading afin de permettre des optimisations dynamiques pour la compilation JIT de JavaScript.

Zaphod est un module complémentaire de Firefox 4 qui permet d'opérer une bascule entre le moteur JavaScript SpiderMonkey et un autre dénommé Narcissus. Ce basculement ne s'adresse qu'aux développeurs. Lui-même écrit en JavaScript, Narcissus permet en effet de tester de nouvelles optimisations JavaScript, ce qui ne serait pas possible avec SpiderMonkey. Comme Zaphod fonctionne directement dans Firefox, ces tests peuvent être menés sans passer par le ligne de commande.

Chercheur à l'Université de Californie à Irvine, Andreas Gal travaille avec Mozilla Corporation sur la compilation just-in-time pour JavaScript. Il explique qu'avec Zaphod/Narcissus, il n'est plus nécessaire de modifier du code C++ complexe pour implémenter de nouvelles fonctionnalités pour JavaScript. Pour Mozilla Labs, qui met à disposition Zaphod, Narcissus est " l'outil idéal afin de développeur de nouvelles idées pour le langage JavaScript lui-même ".

Quelques exemples sont disponibles via cette page. Basculer de SpiderMonkey à Narcissus ( icône en bas à droite de la fenêtre ) peut néanmoins occasionner quelques problèmes. Pour tester les exemples, mieux vaut rester avec SpiderMonkey. Une balise meta dans la page permet de forcer l'utilisation de Narcissus pour l'exécution des applications.


Plus de détails sur Zaphod/Narcissus