# Ecma TC39 November 2020 agenda overview
Ecma Technical Committee 39 ([TC39](https://www.ecma-international.org/memento/tc39.htm)) is the group responsible for standardizing JavaScript as a formal "ECMAScript" specification, and generally releases a new edition every year.
Substantial changes are managed at "plenary" meetings involving delegates of member organizations (including the OpenJS Foundation!)[¹](#note-1).
The final full meeting of 2020 is taking place this week, and here's a sampling of major items on the [agenda](https://github.com/tc39/agendas/blob/master/2020/11.md), grouped by how close they are to inclusion according to the documented [four-stage process](https://tc39.es/process-document/).
Feel free to reach out if you want your voice to be heard regarding any of these.
[TOC]
# Stage 3
A "Candidate" proposal is added to the working draft for the next edition after [tests](https://github.com/tc39/test262) are ready, at least two independent implementations in browsers and/or Node.js and/or other engines pass them, and the committee approves it.
## `.item(index)`
https://github.com/tc39/proposal-item-method proposes adding a method capable of accessing indexable (array) elements "from the end", e.g. `["a", "b", "c"].item(-1)` is `"c"`.
It was originally going to be named "item" for alignment with methods on [DOM](https://dom.spec.whatwg.org/) collections, but that turned to be web-incompatible and thus unacceptable.
The [current plan](https://github.com/tc39/proposal-item-method/issues/34) is renaming the method, presumably to "at".
## Regular expression match indices
https://github.com/tc39/proposal-regexp-match-indices proposes adding substring indices to regular expression match objects, e.g. `/ba(.)\s*/.exec("foo bar baz").indices` is `[[4,8], [6,7]]`.
JavaScriptCore (the JavaScript engine for Safari), in consideration of performance degradation related to array allocations, are asking for the new property to be made opt-in by a new regular expression flag.
# Stage 2
A "Draft" proposal advances to Stage 3 after spec text is complete, reviewers sign off, and the committee approves it.
## JSON modules
https://github.com/tc39/proposal-json-modules/ proposes a means of forcing an imported module to be interpreted as JSON, e.g. `import config from "./config.json" assert { type: "json" }`.
It is seeking advancement to Stage 3.
## Realms
https://github.com/tc39/proposal-realms proposes a way to construct new "realms" with their own independent set of intrinsic objects, similar to iframe windows and Node.js [`vm`](https://nodejs.org/api/vm.html) contexts.
It is seeking advancement to Stage 3.
## Temporal
https://github.com/tc39/proposal-temporal proposes a "Temporal" collection of classes for supporting convenient and correct use of dates and times.
In anticipation of a request for advancement next year, the champions are presenting a [tour](https://docs.google.com/presentation/d/1xP3_UaXlS4-SilVpFu6UFOL8QQw0Dr_VsaR8mSSEATI/edit) of its data model, types, and operations.
# Stage 1
A "Proposal" advances to Stage 2 after draft spec text is ready and the committee approves it.
# Stage 0
A "Strawperson" advances to Stage 1 after the committee acknowledges a problem, identifies a "champion" to shepherd its solution, and takes ownership of the corresponding repository.
## Inline modules
https://github.com/surma/proposal-js-module-blocks proposes "module blocks" for declaring modules inside other code, e.g. `const sharedData = module { export default new Map(); }`.
It is seeking advancement to Stage 1.
----
<a id="note-1"></a>¹ There are currently six plenary meetings per year, but this will change in 2021 to eight per year (quarterly full meetings plus half-length exclusively-remote meetings in between).