TC39

Ecma International's TC39 is a group of JavaScript developers, implementers, academics, and more, collaborating with the community to maintain and evolve the definition of JavaScript.

We are part of
Ecma International

Contribute

TC39 welcomes contributions from the JavaScript community, whether it is feedback on existing proposals, improved documentation, testing, implementations, or even language feature ideas. See our contributor guide for details.

To participate in TC39 meetings as a member, join Ecma.

Specs

We develop the JavaScript (formally, ECMAScript) specification on GitHub and meet every two months to discuss proposals. To learn more about the process, please take a look at the five stages for new language feature proposals. See our meeting agendas and minutes to learn more.

State of Proposals

Current Candidates for the Specification

This section features proposals that are in Stage 3 of our process, which means they are close to completion.

How to read the proposals list

Each proposal has links out to other resources. The tags identify the following attributes. Below you will find a table with example tags and their meanings. All tags have hover text if you need help getting oriented.

Types of tags and what they mean

Legacy RegExp features in JavaScript

Author: Claude Pache | Champions: Mark Miller, Claude Pache
This is a specification draft for the legacy (deprecated) RegExp features in JavaScript, i.e., static properties of the constructor like RegExp.$1 as well as the RegExp.prototype.compile method.

Hashbang Grammar

Author: Bradley Farias | Champion Bradley Farias
This proposal is to match de-facto usage in some CLI JS hosts that allow for Shebangs / Hashbang. Such hosts strip the hashbang in order to generate valid JS source texts before passing to JS engines currently. This would unify and standardize how that is done.

Atomics.waitAsync

Author: Lars Hansen | Champions: Shu-yu Guo, Lars Hansen
A proposal for an “asynchronous atomic wait” for ECMAScript, primarily for use in agents that are not allowed to block.

Import Assertions

Authors: Myles Borins, Sven Sauleau, Dan Clark, Daniel Ehrenberg | Champions: Myles Borins, Sven Sauleau, Dan Clark, Daniel Ehrenberg
A proposal for syntax to import ES modules with assertions.

JSON Modules

Authors: Sven Sauleau, Daniel Ehrenberg, Myles Borins, Dan Clark | Champions: Sven Sauleau, Daniel Ehrenberg, Myles Borins, Dan Clark
Proposal to import JSON files as modules.

Temporal

Authors: Maggie Pint, Matt Johnson, Philipp Dunkel | Champions: Maggie Pint, Matt Johnson, Philipp Dunkel
Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme.

In-Place Resizable and Growable ArrayBuffers

Author: Shu-yu Guo | Champion Shu-yu Guo
ArrayBuffers have enabled in-memory handling of binary data and have enjoyed great success. This proposal extends the ArrayBuffer constructors to take an additional maximum length that allows in-place growth and shrinking of buffers. Similarly, SharedArrayBuffer is extended to take an additional maximum length that allows in-place growth. The transfer method is also re-introduced here as a standard way to detach ArrayBuffers, perform zero-copy moves, and to "fix" resizable ArrayBuffer instances to ArrayBuffer instances.

ShadowRealm API

Authors: Caridy Patiño, Jean-Francois Paradis | Champions: Dave Herman, Mark Miller, Caridy Patiño, Leo Balter
ShadowRealms are a distinct global environment, with its own global object containing its own intrinsics and built-ins (standard objects that are not bound to global variables, like the initial value of Object.prototype)..

Array Grouping

Author: Justin Ridgewell | Champion Justin Ridgewell
A proposal to make grouping of array items easier.
See proposals in all stages