---
# System prepended metadata

title: Ecma TC39 August 2021 agenda overview

---

# 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.