# Ecma TC39 August 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 proposals
A stage 3 proposal advances into 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.
## What should be the official name of `Realm`?
https://github.com/tc39/proposal-realms proposes introducing a way to construct a new global object with intrinsics, similar to behavior with Node.js [`vm`](https://nodejs.org/api/vm.html) or HTML \<iframe> [`contentWindow`](https://html.spec.whatwg.org/multipage/iframe-embed-object.html#dom-iframe-contentwindow). https://github.com/tc39/proposal-realms/issues/321#issuecomment-900523250 is exploring names for the new constructor.
## Array/indexable relative indexing (`arr.at(index)`)
https://github.com/tc39/proposal-relative-indexing-method proposes introducing an `at` method on Array, <em>Type</em>Array, and String instances for retrieving an item at arbitrary index, with negative values interpreted from the end as in `slice` and DOM method `item` (e.g., `"abcdef".at(-2)` is "e").
It is seeking advancement to Stage 4.
## `Object.hasOwn` static function
https://github.com/tc39/proposal-accessible-object-hasownproperty proposes a static function to replace use of `Object.prototype.hasOwnProperty.call(obj, name)` with `Object.hasOwn(obj, name)`.
It is seeking advancement to Stage 4.
## Class `static {…}` initialization blocks
https://github.com/tc39/proposal-class-static-block proposes a mechanism to perform additional static initialization at the end of class definition evaluation with access to private state:
```js
let assertInstanceOfC;
class C {
static x = {…};
static y;
#isC
static {
this.y = getYFromX(this.x);
assertInstanceOfC = v => {v.#isC; return true};
}
…
}
```
It is seeking advancement to Stage 4.
## Temporal
https://github.com/tc39/proposal-temporal proposes a "Temporal" collection of classes for supporting convenient and correct use of dates and times.
It is seeking a number of [proposed normative changes](https://ptomato.name/talks/tc39-2021-08/).
# Stage 2 proposals
A stage 2 proposal advances to stage 3 after spec text is complete, reviewers sign off, and the committee approves it.
## Iterator helpers
https://github.com/tc39/proposal-iterator-helpers proposes adding Iterator and AsyncIterator methods to make working with them more convenient, such as `map` and `filter` and `take`.
It is not seeking advancement.
## RegExp Unicode sets and properties of strings
https://github.com/tc39/proposal-regexp-set-notation proposes a new flag for extending regular expression character classes to support set operations as available for [Unicode regular expressions](https://www.unicode.org/reports/tr18/#Subtraction_and_Intersection), such as "non-ASCII digits" `[\p{Decimal_Number}--[0-9]]` or "single-code-point emoji" `[\p{RGI_Emoji}&&\p{Any}]`.
It is not seeking advancement.
## `Intl.DurationFormat`
https://github.com/tc39/proposal-intl-duration-format proposes an interface for formatting durations such as the length of a flight or elapsed audio/video time:
```js
const df = (new Intl.DurationFormat("en", {style: "narrow"}));
df.format({hours: 18, minutes: 50});
// => "18h 50m"
```
It is not seeking advancement.
# Stage 1 proposals
A stage 1 proposal advances to stage 2 after draft spec text is ready and the committee approves it.
## Change Array by copy
https://github.com/tc39/proposal-change-array-by-copy proposes adding Array and <em>Type</em>Array mutation methods that return a modified copy rather than performing changes in place, such as `withPushed` and `withSorted` and `withAt`.
It is seeking advancement to Stage 2.
## Pipeline operator
https://github.com/js-choi/proposal-hack-pipes/ proposes adding an operator for sending data from one expression to another in a linear rather than nested fashion, e.g.
```js
const filtered =
Object.entries(obj)
|> %.filter(keepEntry)
|> new Map(%)
```
It is seeking advancement to Stage 2.
# Stage 0 proposals
A stage 0 proposal 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.
## BigInt `Math` functions
https://github.com/js-choi/proposal-bigint-math proposes adding support for BigInt arguments to `Math` functions such as `Math.abs`, `Math.log2`, and `Math.bigMax`.
It is seeking advancement to Stage 1.
## Get Intrinsic
https://github.com/ljharb/proposal-get-intrinsic proposes adding a function for accessing a built-in value that may have been subsequently removed or overwritten, e.g. `const iteratorProto = getIntrinsic("%IteratorPrototype%")`.
It is seeking advancement to Stage 1.
## Fixed shape objects
https://github.com/syg/proposal-structs/ proposes adding `struct`s with static shape and memory layout for convenient communication of structured data, e.g.
```js
struct class Point {
x;
y;
constructor(x, y) { Object.assign(this, {x, y}); }
}
```
It is seeking advancement to Stage 1.
## RegExp Feature Parity
https://github.com/rbuckton/proposal-regexp-features proposes adding numerous new regular expression flags and embedded syntax to support functionality found in other languages.
It is seeking advancement to Stage 1.