by Parth Shandilya
TC39 and its contributions to ECMAScript
In this blog post, I am going to discuss TC39 and its contributions to ECMAScript.
What is ECMAScript?
ECMA-262 is a standard published by ECMA International. It contains the specification for a general purpose scripting language which is known as ECMAScript.
What is ECMA?
ECMA is a standards organization for information and communication systems. ECMA aims to develop standards and technical reports to facilitate and standardize the use of information communication technology and consumer electronics. It encourages the correct use of standards by influencing the environment in which they are applied, and it publishes these standards and reports in electronic and printed form.
And now, let’s introduce the hard working people behind ECMAScript: TC39.
What is TC 39?
TC 39 works on:
- Maintaining and updating the standard for the ECMAScript programming language.
- Identifying, developing and maintaining standards for libraries that extend the capabilities of ECMAScript.
- Developing test suites that may be used to verify correct implementation of these standards.
- Contributing with selected standards to the ISO/IEC JTC 1 committee.
- Evaluating and considering proposals for complementary or additional technologies.
Since ES6 came out, TC 39 streamlined the proposal previsioning process to meet modern expectations. The new process uses a superset of HTML to format the proposals. They use GitHub pull requests, which helped boost participation from the community. The number of proposals being made also increased.
The specification is now more of a living standard, meaning that proposals see adoption faster, and we don’t spend years waiting for a new edition of the specification to come out.
A more general view
Stage 0: Strawman
Any discussion, idea, change, or addition which has not yet been submitted as a formal proposal is considered to be a “strawman” proposal at this stage. Only members of TC39 can create these proposals, and there’s over a dozen active strawman proposals today.
Stage 1: Proposal
At this stage, a proposal is formalized and expected to address cross-cutting concerns, interactions with other proposals, and implementation concerns. Proposals in this stage identify a discrete problem and offer a concrete solution to that problem.
At this stage, proposal often includes a high level API description, usage examples, and a discussion of internal semantics and algorithms. These proposals are likely to change significantly as they make their way through the process.
Stage 2: Draft
Proposals in this stage should offer an initial draft of the specification.
At this point, it’s reasonable for implementers to begin experimenting with actual implementations in runtime. The implementation could come in many forms: a polyfill, user code that mangles the runtime into adhering to the proposal, an engine implementation (which natively provides support for the proposal), or it could be support by a build-time compiler like Babel.
Stage 3: Candidate
Proposals in this stage are candidate recommendations. At this advanced stage, the specification editor and designated reviewers must have signed off on the final specification. A Stage 3 proposal is unlikely to change beyond fixes to issues identified in the wild.
Implementers should have expressed interest in the proposal as well — a proposal without support from implementers is dead in the water. In practice, proposals move to this level with at least one browser implementation, a high-fidelity polyfill, or when supported by a build-time transpiler like Babel.
Stage 4: Finished
Finally, proposals get to this stage when there are at least two independent implementations that pass acceptance tests.
Proposals that make their way through to stage 4 will be included in the next revision of ECMAScript. When the spec goes through its yearly ratification as a standard, the proposal is ratified as part of it.
This is how ideas for evolving the ECMAScript language are accepted and added to next revision of ECMAScript. And we are all thankful for the work done by TC39, which is invaluable.
With that, we have reached the end of our discussion on TC39 and its contributions to ECMAScript.
Thanks for reading.