This Ecma Standard defines the ECMAScript 2015 Language. It is the sixth edition of the ECMAScript Language Specification. Since publication of the first edition in 1997, ECMAScript has grown to be one of the world’s most widely used general purpose programming languages. It is best known as the language embedded in web browsers but has also been widely adopted for server and embedded applications. The sixth edition is the most extensive update to ECMAScript since the publication of the first edition in 1997.
Goals for ECMAScript 2015 include providing better support for large applications, library creation, and for use of ECMAScript as a compilation target for other languages. Some of its 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.
The previous paragraph provides a high-level overview of new features added to the language. Each of the items listed are significant additions to the language and often garner a chapter dedicated to each of them in programming books and literature.
The story of ECMAScript
The development of the ECMAScript Language Specification started in November 1996. The first edition of this Ecma Standard was adopted by the Ecma General Assembly of June 1997.
That Ecma Standard was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved as international standard ISO/IEC 16262, in April 1998. The Ecma General Assembly of June 1998 approved the second edition of ECMA-262 to keep it fully aligned with ISO/IEC 16262. Changes between the first and the second edition are editorial in nature.
In other words, not much changed between the first and second edition other than some editorial changes.
The third edition adopted in 1999 and published in 2002 introduced important and basic features to the language such as try/catch handling, and regular expressions. ES3 was widely adopted and is fully supported by browsers as far back as Internet Explorer 6.
The third edition of the Standard introduced powerful regular expressions, better string handling, new control statements, try/catch exception handling, tighter definition of errors, formatting for numeric output and minor changes in anticipation future language growth. The third edition of the ECMAScript standard was adopted by the Ecma General Assembly of December 1999 and published as ISO/IEC 16262:2002 in June 2002.
Unfortunately, disagreements as to the future of the language arose post-release of the third edition.
After publication of the third edition, ECMAScript achieved massive adoption in conjunction with the World Wide Web where it has become the programming language that is supported by essentially all web browsers. Significant work was done to develop a fourth edition of ECMAScript. However, that work was not completed and not published as the fourth edition of ECMAScript but some of it was incorporated into the development of the sixth edition.
The reason for this is that many in the committee believed ES4 was too ambitious, and perhaps it was, as in 2008 the spec was dropped and an agreement called ECMAScript Harmony was formed. The executive summary of the 2008 agreement states:
12345678910111213 The committee has resolved in favor of these tasks and conclusions:1. Focus work on ES3.1 with full collaboration of all parties, andtarget two interoperable implementations by early next year.2. Collaborate on the next step beyond ES3.1, which will includesyntactic extensions but which will be more modest than ES4 in bothsemantic and syntactic innovation.3. Some ES4 proposals have been deemed unsound for the Web, and areoff the table for good: packages, namespaces and early binding. Thisconclusion is key to Harmony.4. Other goals and ideas from ES4 are being rephrased to keepconsensus in the committee; these include a notion of classes basedon existing ES3 concepts combined with proposed ES3.1 extensions.
Subsequently, ES3.1 was released in 2009 as ES5 and slightly revised in 2011 as ES5.1, while much of the original ES4 was incorporated into the sweeping changes of ES6.
Very important yet modest features made their way into ES5. Important new features include enhanced object creation and control properties/functions, utility array functions, strict mode, and native JSON support. ES5 has full native support in IE9+, Firefox 4+, and Chrome 7+.
The fifth edition of ECMAScript (published as ECMA-262 5th edition) codified de facto interpretations of the language specification that have become common among browser implementations and added support for new features that had emerged since the publication of the third edition. Such features include accessor properties, reflective creation and inspection of objects, program control of property attributes, additional array manipulation functions, support for the JSON object encoding format, and a strict mode that provides enhanced error checking and program security. The Fifth Edition was adopted by the Ecma General Assembly of December 2009.
The fifth Edition was submitted to ISO/IEC JTC 1 for adoption under the fast-track procedure, and approved as international standard ISO/IEC 16262:2011. Edition 5.1 of the ECMAScript Standard incorporated minor corrections and is the same text as ISO/IEC 16262:2011. The 5.1 Edition was adopted by the Ecma General Assembly of June 2011.
Focused development of the sixth edition started in 2009, as the fifth edition was being prepared for publication. However, this was preceded by significant experimentation and language enhancement design efforts dating to the publication of the third edition in 1999. In a very real sense, the completion of the sixth edition is the culmination of a fifteen year effort.
Dozens of individuals representing many organizations have made very significant contributions within Ecma TC39 to the development of this edition and to the prior editions. In addition, a vibrant informal community has emerged supporting TC39’s ECMAScript efforts. This community has reviewed numerous drafts, filed thousands of bug reports, performed implementation experiments, contributed test suites, and educated the world-wide developer community about ECMAScript. Unfortunately, it is impossible to identify and acknowledge every person and organization who has contributed to this effort.
Indeed! ES6 is among the most exciting developments in modern programming history. It is a sweeping set of additions to one of the world’s most popular languages. It indeed reflects 15 years of collaboration and effort by many of the brightest minds in our industry.
New uses and requirements for ECMAScript continue to emerge. The sixth edition provides the foundation for regular, incremental language and library enhancements.
Moving forward, the goal is to produce yearly, incremental, updates to the language. ES6 or ECMAScript 2015 is the start of this exciting process!