Tuesday, August 19th, 2008

ECMA What? Harmony Who? TC39? Tamarin? JavaScript!

Category: JavaScript

Alex Russell has seen the confusion of the many names that were bandied around with the Harmony news last week. There are so many names, that involve specs, projects, and general technical jargon that it can get a little confusing. Alex has made it very clear:

ECMAScript 3
Aka: JavaScript, ES3, ECMAScript 262-3, and JScript.

The current JavaScript that every browser implements (more or less). This is the current ratified standard and represents the 3rd edition of the ECMAScript spec. It is very old. Nothing else in this list is (yet) a ratified standard of any sort.

ECMAScript 4
Aka: ES4, “JavaScript 2?.

A new language which was to be mostly backwards compatible but add optional (gradual) typing and class-based inheritance. Based loosely on Adobe’s ActionScript 3. This is the language effort which died as a result of Harmony.

ECMAScript 3.1
Aka: ES3.1. A set of small additions to ES3.

Planning for this edition was started at Microsoft and Yahoo’s behest late last year, causing the split in the working group which has been healed by the Harmony announcement.

ActionScript 3
Aka: AS3

Adobe’s current JavaScript-like language, only with many features lifted from languages like Java which also enforce types and class-based semantics. This was the starting point for much of the work which became known as ES4.

A JIT-ing byte-code virtual machine (VM) which is at the core of the Flash Player and was donated by Adobe to the Mozilla Foundation. This is the VM that runs ActionScript 3 code today but will likely run “real” JavaScript for Mozilla in the future. It is not a full implementation of ES3 or ES4, but instead implements its own byte-code and needs to be wedded to a “front end” (like the ActionScript 3
compiler from Adobe) in order to be usable by programmers.
A VM which implements the same byte-code language as Tamarin (known as “ABC”) but which is designed for use in mobile devices and other scenarios where code size and VM footprint are important. It implements trace-tree JIT-ing as a way to speed up hot-spots. Also donated to Mozilla by Adobe.
The name of the ECMA technical committee which is chartered to evolve the JavaScript language.
A new code-name for a language which is to come after ES3.1. It will feature many of the things ES4 was trying to accomplish, but may attempt them from different directions and will
focus much more on incremental, step-wise evolution of the language.
JavaScript 2
A now-defunct name. This name was originally given to Waldemar Horwat’s first proposal at a large-scale evolution of the JavaScript language in 1999. That effort did not succeed (although Microsoft implemented some of it in JScript.NET) and subsequent work via the current TC39 charter to build ES4 has sometimes been given the name “JavaScript 2?, but it never really stuck. Not a name that describes any ratified standard or current proposal.
The formalized name of the JavaScript language. Since Sun Microsystems owns the name JavaScript and has no idea what to do with the trademark (but has been benevolent thus far), the ECMA committee which standardized the language was forced to adopt a different name.

Posted by Dion Almaer at 7:48 am

4.4 rating from 24 votes


Comments feed TrackBack URI

I may be wrong, but I was under the impression that “Harmony” was a code name referring to 3.1 (since they achieved harmony with it), not strictly to its some-day predecessor.

Comment by shadedecho — August 19, 2008

errr… ‘successor’ i meant… doh, it’s too early for me! :)

Comment by shadedecho — August 19, 2008

We should start a campaign to remove the word ‘javascript’ from the world.

Comment by JohnDeHope3 — August 19, 2008

@JohnDelHope3: Firstly we should replace AJAX by AEAX and Ajaxian by Aeaxian :P

Comment by andytesti — August 19, 2008

@shadedecho: That’s incorrect. What Alex has written up is the current state of affairs – ECMAScript 3.1 is logically distinct from ECMAScript Harmony (a number of news sources have gotten this point wrong, as well).

Comment by JohnResig — August 19, 2008

Correct me if I’m wrong, but Actionscript 3 was based on early drafts of Ecmascript 4, not the other way around.


Comment by genericallyloud — August 19, 2008


the paragraph in question is:

ActionScript 3.0 is compliant with the ECMAScript Language Specification, Third Edition (ECMA-262). It also contains functionality based on ongoing work on ECMAScript Edition 4, occurring within the ECMA standards body.

Much of this is true. AS3 is *nearly* compliant with ES3 (aka: ECMAScript 262-3), however it has no support for dynamic code loading or for eval(). This leaves it able to start up somewhat faster but means that it’s not really the dynamic language that JS hackers know and love. The relationship between ES4 and AS3 is very direct by I think the timeline which is implied there is in some doubt. Adobe contributed much of the work that had gone into AS3 for consideration by the ES4 working group, and much was (up until last week) on target to be accepted. I don’t work for Adobe and don’t know whether the chicken or the egg came first. Regardless, Adobe had been tracking the standards process with their language and I hope that commitment continues as the shape of Harmony becomes clearer.


Comment by slightlyoff — August 19, 2008

It’s a matter of opinion whether “Ecmascript 4” was a “new language” that was merely backward compatible. You could just as easily say that jscript in IE is a different language from the javascript in firefox. Is php5 a different language from PHP 4? Perl 6 a different language from Perl 5? Or are they different versions of the same language? Where exactly do you draw the line? It seems to me that calling ecmascript 4 a new language was some kind of political style spin meant to make it sound scary and bad.

It seems to have worked to such a frightening extent that they were forced to change the name of Ecmascript 4 to Ecmascript Harmony, just to shake off the bad vibes.

Comment by Breton — August 19, 2008


The difference between ES4 and ES3 would have been similar in scope to the difference between PHP4 and PHP6 and perhaps also between Perl5 and Perl6. They all represent entirely new ways of handling complexity (classes with real semantics and syntax) but keep much of the flavor of their predacessors.

Insofar as ES4 introduced *both* classes and types to the language as well as packages and namespaces, it was a huge set of potential changes. I don’t think anyone who would call it a “new language” was being prone to hyperbole. It really was a gigantic set of changes.

Harmony *might still* be a gigantic set of changes, and it may also wind up being a “new language” in the same sense. What’s settled now, though, is that it won’t introduce packages or namespaces and that much of the class and type semantics, structure, and construction are up for a re-think. Insofar as those were the bits that would have defined ES4, it’s a big change.


Comment by slightlyoff — August 20, 2008

@slightlyoff: you mispelled my name (why? it’s not that hard, and it’s written out for you on the screen), and failed to address my point. Unless you can point me at a definition for what amounts to a “new language” that is generally agreed with by most experts on the subject, then what you are expressing is an opinion.

I should think that this is somewhat inappropriate for a piece that is selling itself as some kind of authoritative source for definitions. It didn’t seem quite funny enough to be obviously a humour peice (which would excuse the use of personal opinion) But I don’t know, I might be missing something. It seems quite dubious to intentionally mislead confused people like this.

Comment by Breton — August 20, 2008

@slightlyoff: I was referring to two things in the article:

Based loosely on Adobe’s ActionScript 3.


This was the starting point for much of the work which became known as ES4.

I’ve had trouble tracking down specific dates, but what I’m saying is that I believe ES4 was started first. Features from early drafts of ES4 were put into AS3 hoping that it could stay compatible. The article is saying that AS3 was created independently and then ES4 used it as a starting point which I think is misleading.

That said, Adobe has been a major contributor to the ES4 spec, so I imagine that many of the same people worked on both.

Comment by genericallyloud — August 20, 2008

Leave a comment

You must be logged in to post a comment.