Narcissus/Zaphod JavaScript Research VM for Firefox 4

Zaphod Beeblebrox


Our research intern Tom Austin released the first version of the Narcissus JavaScript Virtual Machine for Firefox 4. Narcissus is a JavaScript virtual machine written in JavaScript. Tom’s Firefox extension Zaphod allows using Narcissus as the default JavaScript engine in Firefox 4. This opens up the world of JavaScript language and virtual machine research to JavaScript programmers. It is no longer necessary to modify complex C++ code to implement new prototype language features for JavaScript (i.e. modules, type annotations, etc.). Similarly, Narcissus/Zaphod can also be used to try out new JavaScript optimizations and static analysis. Since Zaphod runs directly in Firefox, such experiments are no longer limited to simple command line JavaScript shell test cases. Zaphod can run complex websites and all the JS code on them.

Stay tuned for future updates to Zaphod and Narcissus. We have bold plans for both. Our static analysis pass for Narcissus will soon be integrated with Zaphod, as well as our new Static Single Assignment-form Narcissus AST/intermediate representation.

Want to work on cool research projects in the JavaScript/Web space? Join Mozilla Research as research intern. We are looking for highly talented PhD students for Winter 2010/2011 and Summer 2011. Contact me at

3 thoughts on “Narcissus/Zaphod JavaScript Research VM for Firefox 4

  1. Pingback: Fear Not < Rob Sayre's Mozilla Blog

  2. Pingback: HTML all you need to know» Blog Archive » Narcissus/Zaphod JavaScript Research VM for Firefox 4 « Andreas Gal

  3. Pingback: about:mozilla – Firefox, Fennec, Kraken, OIN, MDN, Zaphod, Narcissus, Thunderbird, P2PU, Firefox Home, and more… | archively

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s