The General Assembly of Ecma International has announced the approval of ECMA-262 6th edition, which is the Language Specification of ECMAScript 6 (ES6), also known as ECMAScript 2015.
JavaScript was created by Brendan Eich in 10 days back in 1995, but it needed 20 years to evolve some of the features that are popular in other modern languages. JavaScript was not a great language to start with, but it was a great idea: a language for the browser. JavaScript draw attention immediately, being submitted for standardization the following year, with version 1.0 coming out from Ecma in 1997, followed by 2.0, having some minor changes, in 1998, then 3.0, with some new features, in 1999.
The language was later much neglected for several years until Ajax was seen as a reasonably good solution for building client applications in the browser. Work restarted on improving JavaScript but the parties involved did not initially agree on the path to follow until 2008 when the TC39, the committee overseeing ECMAScript, came to an agreement and decided to have a smaller iteration first, materialized as ECMAScript 5 (ES5) in 2009, and then a more larger one as ES6 which has now been approved.
The official name of the latest JavaScript version is ECMAScript 2015, and Ecma intends to release new versions in smaller increments more often, the next one being planned for the next year and called ECMAScript 2016. From now on, the name of the new versions will include ECMAScript followed by the year of their release.
ES6 is a major improvement over ES5, the language specification having almost 600 pages compared to 245 for ES 5.1. ES6 adds much needed features such as modules and classes, and some useful ones, Maps, Sets, Promises or Generators. And many others. In spite of being a large release, ES6 is fully backwards-compatible with previous versions, the standardization committee having decided to avoid “breaking the web” caused by non compatible versions of the language. As a result, all the previous code runs and the transition is smoother. But that also means that some of the issues that developers complained about for years will remain.
Currently, none of the JavaScript agents fully supports ES6, so the developers keen on using the latest features of the language will have to transpile the code to ES5. And it will take some time to see the major browsers fully implementing ES6 features, possibly more than a year. For a concise and detailed view of how agents support ES6 features we recommend the ECMAScript Compatibility Table maintained by kangax.
Work has started on ECMAScript 2016, a number of proposals being submitted already, including among others: async functions, typed objects, parallel JavaScript, class decorators, and observables. While these features are actively considered by the committee, we cannot be certain on their future. Some will be included in the next specification, some in future ones, and some may never be adopted. The TC39 Process explains the various stages of a desired feature until it becomes adopted and included in the language.
JavaScript’s evolution was slow in the beginning but it has picked up the pace lately. JavaScript is here to stay, and, hopefully, the standardization body will take it where the community wants it for the benefit of the millions of developers using it.
As a complementary read, we recommend Exploring ES6: Book Introduction and Author Interview, a review of Axel Rauschmayer’s book providing an in-depth view of all the new features in ES 6.