Specifying ECMAScript via ML

Brendan Eich has just mentioned on the es4-discuss mailing list that we will be using ML as the definition language for the semantics of ECMAScript Edition 4. One of the immediate benefits of this approach will be that our definition will also serve as a reference implementation. LtUers will of course recognize this as the approach of "definitional interpreters" (discussed on LtU here and countless other times).

Our initial intention was to write a custom specification language that would be tailored to our purposes, with just the right core control features and datatypes to serve as an appropriately abstract model of ECMAScript. But before long, we realized that we were pretty much describing ML. Rather than specifying, implementing, and documenting another programming language that was 80% ML, why reinvent the wheel?

The benefits of this approach are many: a definition in a formal language that itself has a clear and precise definition, the luxury of many robust and high-performance implementations (we'll be using OCaml extended with first-class continuations), and free "technology transfer" from all the existing ML literature and communities.

And finally, by releasing real software--written in a direct functional style--for reading, type-checking, and evaluating ECMAScript programs, we'll be providing a standard set of tools for static analysis and other research on the ECMAScript language.

Public resources for ECMAScript Edition 4

The ECMAScript group has created some public resources for the Edition 4 design and specification process. We've released a public export of the group wiki and started a public mailing list for discussion related to ECMAScript Edition 4.

Keep in mind this is an ongoing process, and we've preferred to release information early to integrate community feedback into the process. As a result the documents are not in their final state, and none of these documents should be considered authoritative yet.

You'll find most of the activity, and the most up-to-date material, in the proposals section. There's a fair bit of information under discussion and clarification as well.

Here's a small sample of proposals that members of LtU might find particularly interesting:

JavaScript 2 and the Future of the Web

Brendan Eich, JavaScript 2 and the Future of the Web, XTech 2006


  • Fix problems in JS1 that bug people daily
  • A type system to enforce invariants
  • Programming in the large
  • Support bootstrapping and metaprogramming

Brendan Eich presented these slides recently at a conference on the future of web technology.

XML feed