Friday, March 14th, 2008

ECMAScript 4 Progress Tracking

Category: JavaScript

John Resig started a detailed spreadsheet to track the progress of ECMAScript 4 implementations. There is also a set of columns to track the thoughts of various companies (Mozilla, Google, Apple, Microsoft, Adobe, etc) on various parts and pieces of the spec, which is enlightening. You get to see a layer of transparency in the ECMA process. Imagine if this was more open?

Francis Cheng of Adobe has written a brief description of the implementations:

  • ES4 RI: This is the ECMAScript 4th Edition reference implementation that the ES4 working group is developing. It is written in Standard ML ’97, except for the library of core classes, which is written in ES4 itself.
  • Tamarin: This began life as the AVM2 (ActionScript Virtual Machine 2), but morphed into Tamarin when the AVM2 was released as open source and handed over to Mozilla for hosting and coordination. Tamarin will serve as the VM for future versions of Flash Player as well as future versions of the FireFox web browser.
  • Spidermonkey: This is a JavaScript engine hosted by Mozilla. It provides scripting support in many applications, some of which are Mozilla FireFox, Yahoo! Widgets, Adobe Acrobat, and Adobe Flash CS3 (allows scripting control of the Flash authoring tool with JSFL).
  • Rhino: This is another Mozilla JavaScript engine, but this one is written entirely in Java and is intended for use in applications rather than in browsers.
  • Futhark: This is a JavaScript engine developed by Opera Software for use in Opera’s browser versions 9.5 and 10.0.
  • Mbedthis: Mbedthis specializes in embedded web server solutions and is developing EJScript 3.0, which is based on ES4.
  • JSCore: This is short for JavaScriptCore, which is the JavaScript engine in WebKit.

Posted by Dion Almaer at 7:06 am

3 rating from 12 votes


Comments feed TrackBack URI

can someone shed some light on the whole tamarin/spidermonkey deal? I can’t imagine firefox using two different js engines, so is spidermonkey obsolete now?

Comment by urandom — March 14, 2008


Seems like something is missing from the list. What could it be?

Comment by ozonecreations — March 14, 2008


Tamarin is the name of a Virtual Machine which Adobe has donated to the Mozilla Foundation. It does not currently include a “front end”, or the compiler bit of the interpreter as we currently know it. Spidermonkey, OTOH, is the venerable JS interpreter written in C which Mozilla has used for more than a decade. It does not have a bytecode interpreter (which is what Tamarin is), but does include a “front end” for translating source JavaScript into an internal format which can be interpreted. In a successful ES4 implementation in Mozilla, we can expect to see either Tamarin grow a front-end (and therefore fully superceede Spidermonkey), or perhaps the Spidermonkey front-end may generate bytecode for some other back-end (perhaps Tamarin).


Comment by slightlyoff — March 14, 2008

“You get to see a layer of transparency in the ECMA process. Imagine if this was more open?”

It took me 5 mins or less to get in direct contact with the working group and post my request (I requested an integer division operator) and in less than a week it was added to the spreadsheet as the div operator I believe, how more transparent can you get than that?

The spreadsheet is just easier to look at in a larger sense, its not where the rubber meets the road.

Sign up for the mailing list and give your input.

Comment by TNO — March 14, 2008

slightlyoff (Alex ;-): SpiderMonkey has been bytecoded from day one, as was the original 1995 “Mocha” runtime, because it was meant to run in Netscape’s server products.

ActionMonkey is the project to fuse SpiderMonkey and Tamarin, at this point tamarin-tracing (the tracing JIT version of Tamarin in the Mercurial repository of that name — see The project is multi-stage, with the current stage unifying all of Gecko to use MMgc, Tamarin’s garbage-collecting memory manager.

Next up, we thing: trace-tree JITting for SpiderMonkey, keeping the API and object model intact. This will happen after Firefox 3 ships. All the perf wins in Firefox 3 have been done without a JIT.


Comment by BrendanEich — March 14, 2008

Leave a comment

You must be logged in to post a comment.