The next sections explain concepts that are important in the world of ES6.
The ECMAScript 6 design process centers on proposals for features. Proposals are often triggered by suggestions from the developer community. To avoid design by committee, proposals are maintained by champions (1–2 committee delegates).
A proposal goes through the following steps before it becomes a standard:
[Source of this section: “The Harmony Process” by David Herman.]
Starting with ECMAScript 2016 (ES7), TC39 will time-box releases. A new version of ECMAScript will be released every year, with whatever features are ready at that time. That means that from now on, ECMAScript versions will be relatively small upgrades. For more information on the new process, including finished and upcoming feature proposals, consult the GitHub repository
The stake holders on the web are:
These groups have remarkably little control over each other. That’s why upgrading a web language is so challenging.
Goals and requirements clash in the design of ES6:
The original project page for Harmony/ES6 mentions several goals. In the following subsections, I’m taking a look at some of them.
The goal is: Be a better language for writing:
Math.fround() – rounding Numbers to 32 bit floats
Math.imul() – multiplying two 32 bit ints
The goal is: Improve interoperation, adopting de facto standards where possible.
The goal is: Keep versioning as simple and linear as possible.
The introduction of the ES6 specification lists all new features:
Some of [ECMAScript 6’s] major enhancements include modules, class declarations, lexical block scoping, iterators and generators, promises for asynchronous programming, destructuring patterns, and proper tail calls. The ECMAScript library of built-ins has been expanded to support additional data abstractions including maps, sets, and arrays of binary numeric values as well as additional support for Unicode supplemental characters in strings and regular expressions. The built-ins are now extensible via subclassing.
There are three major categories of features:
This section describes what happened on the road to ECMAScript 6.
Work on ES4 started after the release of ES3 in 1999. In 2003, an interim report was released after which work on ES4 paused. Subsets of the language described in the interim report were implemented by Adobe (in ActionScript) and by Microsoft (in JScript.NET).
That may have contributed to TC39 resuming work on ES4 in fall 2005. They based ES4 on ES3, the interim ES4 report and experiences with ActionScript and JScript.NET.
There were now two groups working on future ECMAScript versions:
At the end of July 2008, there was a TC39 meeting in Oslo, whose outcome was described as follows by Brendan Eich:
The agreement that was worked out at the meeting consisted of four points:
Thus: The ES4 group agreed to make Harmony less radical than ES4, the rest of TC39 agreed to keep moving things forward.
The next versions of ECMAScript are: