Reading the countless articles concerning Javascript and specifically ES7, I noticed complete and utter confusion about introduced features.
Any new feature introduced after ES6 is tagged as a feature that will be introduced in ES7.
Nothing could be further from the truth!
Features like async function or decorators will not be introduced in ES7, so if you were hoping for its introduction as standard of this year… you have been deceived! 🙂
How then to consider the features of the proposal process introduced in Javascript?
Well, we firstly need to clarify who manages ECMAScript…
Techinical Committee 39 (TC39) is the authority responsible for handling and evolving Javascript.
Its members are companies, in most cases browsers producers, which regularly meet to establish new features. Each new feature is introduced by a majority decision process.
Following the massive introduction of functionalities with ES6, mainly due to the lack of updates in the previous 6 years (ES5 was released in December 2009, ES6 in June 2015), TC39 has decided on a more frequent and, thus, lighter process creation (fixes by the end of January, conclusive test cycle from March, release of the standard in June).
In this repository you can find all existing proposals listed.
Each proposal of new features goes through the maturation stages, beginning from stage 0.
Transition to a new stage needs TC39‘s approval.
# Stage 0: Strawman
This is the first phase and consists in making known ideas for language evolution.
Idea submission comes from a member of TC39 or a non-member (like me or you) who is registered as a contributor.
Once sent, TC39 decides if it can be inserted in the proposal stages 0 section.
# Stage 1: Proposal
This stage involves a formal proposal of the feature.
The proposal is then assigned to some members of TC39 who will be in charge of it.
A valid proposal has the following characteristics:
- Description with examples
- API
- Discussion on semantics
- Definition of potential obstacles
- Interaction with other features
- Polyfills
- Demos
If accepted, the proposal goes to Stage 2 and TC39 will be in charge of reviewing, modifying and contributing to its development.
# Stage 2: Draft
The transition to this phase requires a first version of the specification, a formal description of the syntax and semantics.
Furthermore two experimental implementations of the feature are needed.
They are usually implemented through Babel.
If the proposal reaches this stage, it’s likely going to be part of the standard in the future.
# Stage 3: Candidate
Specifications are finalized and from now on changes are only incremental, in response to critical problems.
The proposal goes under an implementation test cycle; feedback is examined to perform analysis.
# Stage 4: Finished
Hooray! The proposal is ready to be included in the standard!
Transition to the final stage requires:
- Acceptance of the full suite of test262 (Official ECMAScript Conformance Test Suite)
- Two spec-compliant implementations that pass the tests
- Significant exposure implementations
Considering this new release process, it is better to avoid associating any new feature to ES7!
It is far more correct to associate it with ESNext.
Check out this compatibility table to have an understanding of the current adherence of the new specifications in different browsers.
In a following article (stay tuned!) we’ll see how to use the new ES7 / ESNext features today through Babel.