# Ecma TC39 July 2021 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!). One such meeting is taking place this week, and here's a sampling of items on the [agenda](https://github.com/tc39/agendas/blob/master/2021/07.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. ## Ergonomic "brand checks" for private fields (`#privateField in obj`) https://github.com/tc39/proposal-private-fields-in-in proposes using `in` for detecting the presence of a private field in an object. It is seeking advancement to Stage 4. ## Import assertions (`import … assert { type: "json" }`) https://github.com/tc39/proposal-import-assertions/ proposes a means of communicating requirements of imported modules, primarily their type (e.g., `import config from "./config.json" assert { type: "json" }`). It is not seeking advancement. ## More Intl locale information (`textInfo`, `weekInfo`, `timeZones`, etc.) https://github.com/tc39/proposal-intl-locale-info proposes exposing more information in objects returned from `new Intl.Locale(…)`, including conventions around text direction, numbering systems, and calendars, along with default configuration for Intl APIs (e.g., `new Intl.Locale("ja-JP").timeZones` is `["Asia/Tokyo"]`). It is not seeking advancement. ## Intl.DisplayNames localization v2 https://github.com/tc39/intl-displaynames-v2 proposes extending `Intl.DisplayNames` to localize the names of calendar systems and date/time fields and language dialects (e.g., `(new Intl.DisplayNames("es", {type: "dateTimeField"})).of("year")` is `"año"`). It is not seeking advancement. ## Intl.DateTimeFormat time zone offsets and names https://github.com/tc39/proposal-intl-extend-timezonename proposes adding new options for the Intl.DateTimeFormat `timeZoneName` option to localize time zone as a UTC offset (e.g., "longOffset" for "GMT-0800" and "shortOffset" for "GMT-8") or a colloquial name (e.g., "longGeneric" for "Pacific Time" and "shortGeneric" for "PT"). It is not seeking advancement. ## Static property checker (`Object.hasOwn("name")`) https://github.com/tc39/proposal-accessible-object-hasownproperty proposes a static function to replace use of `Object.prototype.hasOwnProperty.call(obj, name)`. It is not seeking advancement. # Stage 2 A "Draft" proposal advances to Stage 3 after spec text is complete, reviewers sign off, and the committee approves it. ## Realms (`new Realm()`) https://github.com/tc39/proposal-realms proposes a way to construct new "realms" with their own independent collections of intrinsic objects (similar to iframe windows and Node.js [`vm`](https://nodejs.org/api/vm.html) contexts) for isolated code evaluation. It is seeking advancement to Stage 3. ## Decorators https://github.com/tc39/proposal-decorators proposes syntax for applying generic treatment and Symbol-keyed metadata to classes and their members (e.g., `@logged function interesting(){…}`), including getter/setter accessor pairs. It is not seeking advancement. ## Array find from end (`arr.findLast(isFinite)`) https://github.com/tc39/proposal-array-find-from-last proposes `findLast` and `findLastIndex` Array prototype methods for searching backwards by predicate function (matching the iteration order of `lastIndexOf` with the signature of `find`/`findIndex`). It is seeking advancement to Stage 3. ## Intl enumeration API (`Intl.supportedValuesOf("currency")`) https://github.com/tc39/proposal-intl-enumeration proposes a function for implementations to return their supported values for certain Intl collections (`calendar`, `collation`, `currency`, `numberingSystem`, `timeZone`, and `unit`). It is seeking advancement to Stage 3. ## Intl.NumberFormat v3 (`formatRange(start, end)` and `{roundingIncrement: 5, roundingMode: "ceil"}`) https://github.com/tc39/proposal-intl-numberformat-v3 proposes extending Intl.NumberFormat to support arbitrary-precision decimal strings, formatting numeric ranges (e.g., "€3–5"), and new rounding options (including multiple-of-five "nickel rounding" and ceil/floor/trunc/etc. modes). It is seeking advancement to Stage 3. # Stage 1 A "Proposal" advances to Stage 2 after draft spec text is ready and the committee approves it. ## `module "#…" {…}` fragments https://github.com/tc39-transfer/proposal-module-fragments proposes syntax for inline definition of inline-defined importable modules, e.g. `module "#const" { export VERSION="1.0.0"; }; import { VERSION } from "#const"`. It is not seeking advancement. ## Array filtering (`arr.filterReject(isNaN)` and `arr.groupBy(Math.sign)`) https://github.com/tc39/proposal-array-filtering proposes new array methods for filtering out values (the inverse of `filter`) and grouping values. It is seeking advancement to Stage 2. # Stage 0 A "Strawperson" advances to Stage 1 after the committee acknowledges a problem, identifies one or more "champions" to shepherd its solution, and takes ownership of the corresponding repository. ## ArrayBuffer to/from base64 (`ArrayBuffer.fromBase64("AQMDBw==")`) https://github.com/bakkot/proposal-arraybuffer-base64 proposes ArrayBuffer methods for converting to and from base64. It is seeking advancement to Stage 1 or 2.