From b3d1a7237340ca851250fa05723b197228e9e9bc Mon Sep 17 00:00:00 2001 From: Derek Lewis Date: Sat, 2 Jan 2021 13:24:05 -0500 Subject: [PATCH] =?UTF-8?q?=E2=AC=86=EF=B8=8F3=EF=B8=8F=E2=83=A3=20=20Janu?= =?UTF-8?q?ary=202021?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- _data/stage3.yml | 256 ++++++++++++++++++++++++++++------------------- 1 file changed, 154 insertions(+), 102 deletions(-) diff --git a/_data/stage3.yml b/_data/stage3.yml index c40db41a..6f197df1 100644 --- a/_data/stage3.yml +++ b/_data/stage3.yml @@ -1,57 +1,79 @@ -- title: Legacy RegExp features in JavaScript - id: proposal-regexp-legacy-features - presented: - - date: May 2017 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 - has_specification: false - description: 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. +- id: proposal-regexp-legacy-features authors: - Claude Pache champions: - Mark Miller - Claude Pache + description: >- + 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. + has_specification: false + presented: + - date: "May\_2017" + url: >- + https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3 + title: Legacy RegExp features in JavaScript tests: - 'https://github.com/tc39/test262/pull/2650' -- title: Private instance methods and accessors - id: proposal-private-methods +- id: proposal-private-methods + authors: + - Daniel Ehrenberg + champions: + - Daniel Ehrenberg + - Kevin Gibbons + description: >- + Keeping state and behavior private to a class lets library authors present a + clear, stable interface, while changing their code over time behind the + scenes. example: |- class Counter extends HTMLElement { #xValue = 0; + get #x() { return #xValue; } set #x(value) { this.#xValue = value; window.requestAnimationFrame(this.#render.bind(this)); } + #clicked() { this.#x++; } + constructor() { super(); this.onclick = this.#clicked.bind(this); } + connectedCallback() { this.#render(); } + #render() { this.textContent = this.#x.toString(); } } window.customElements.define('num-counter', Counter); + has_specification: true presented: - - date: January 2019 + - date: "September\_2020" url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-01/jan-30.md#private-fields-and-methods-refresher - has_specification: true - description: Keeping state and behavior private to a class lets library authors present a clear, stable interface, while changing their code over time behind the scenes. + https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features + title: Private instance methods and accessors + tests: + - >- + https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+methods +- id: proposal-class-fields authors: - Daniel Ehrenberg + - Kevin Gibbons champions: - Daniel Ehrenberg + - Jeff Morrison + - Kevin Smith - Kevin Gibbons - tests: - - >- - https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+methods -- title: Class Public Instance Fields & Private Instance Fields - id: proposal-class-fields + description: >- + This proposes a combined vision for public fields and private fields, + drawing on the earlier Orthogonal Classes and Class Evaluation Order + proposals. example: |- class X { #foo; @@ -59,30 +81,32 @@ console.log(this.#foo) } } + has_specification: true presented: - - date: March 2019 + - date: "September\_2020" url: >- - https://github.com/tc39/notes/blob/master/meetings/2020-03/march-31.md#add-support-for-optionalchainprivateidentifier-in-class-features-proposals - has_specification: true - description: This proposes a combined vision for public fields and private fields, drawing on the earlier Orthogonal Classes and Class Evaluation Order proposals. + https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features + title: Class Public Instance Fields & Private Instance Fields + tests: + - 'https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+fields' +- id: proposal-static-class-features authors: - Daniel Ehrenberg - Kevin Gibbons - champions: - - Daniel Ehrenberg - Jeff Morrison - Kevin Smith - - Kevin Gibbons - tests: - - 'https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+fields' -- title: Static class fields and private static methods - id: proposal-static-class-features + champions: + - Shu-Yu Guo + - Daniel Ehrenberg + description: >- + A proposal to add three features to JavaScript classes, building on the + previous class fields and private methods proposals. example: |- class ColorFinder { static #red = "#ff0000"; static #green = "#00ff00"; static #blue = "#0000ff"; - + static colorName(name) { switch (name) { case "red": return ColorFinder.#red; @@ -91,143 +115,161 @@ default: throw new RangeError("unknown color"); } } - + // Somehow use colorName } + has_specification: true presented: - - date: January 2019 + - date: "September\_2020" url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-01/jan-30.md#private-fields-and-methods-refresher - has_specification: true - description: A proposal to add three features to JavaScript classes, building on the previous class fields and private methods proposals. - authors: - - Daniel Ehrenberg - - Kevin Gibbons - - Jeff Morrison - - Kevin Smith - champions: - - Shu-Yu Guo - - Daniel Ehrenberg + https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features + title: Static class fields and private static methods tests: - 'https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+static+fields' -- title: Hashbang Grammar - id: proposal-hashbang +- id: proposal-hashbang + authors: + - Bradley Farias + champions: + - Bradley Farias + description: >- + 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. example: |- #!/usr/bin/env node // in the Module Goal export {}; console.log(1); + has_specification: true presented: - - date: November 2018 + - date: "November\_2018" url: >- https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar - has_specification: true - description: 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. - authors: - - Bradley Farias - champions: - - Bradley Farias + title: Hashbang Grammar tests: - 'https://github.com/tc39/test262/pull/2065' -- title: Top-level await - id: proposal-top-level-await +- id: proposal-top-level-await + authors: + - Myles Borins + champions: + - Myles Borins + description: >- + Top-level await enables modules to act as big async functions. + With top-level await, ECMAScript Modules (ESM) can await + resources, causing other modules who import them to wait before they start + evaluating their body. example: |- // file.html <script type=module src="a.mjs"></script> + // a.mjs await import("./b.mjs"); + // b.mjs await import("./a.mjs"); + has_specification: true presented: - - date: June 2019 + - date: "June\_2019" url: >- https://github.com/tc39/notes/blob/master/meetings/2019-06/june-6.md#top-level-await-for-stage-3 - has_specification: true - description: Top-level await enables modules to act as big async functions. With top-level await, ECMAScript Modules (ESM) can await resources, causing other modules who import them to wait before they start evaluating their body. - authors: - - Myles Borins - champions: - - Myles Borins + title: Top-level await tests: - 'https://github.com/tc39/test262/pull/2274' -- title: RegExp Match Indices - id: proposal-regexp-match-indices +- id: proposal-regexp-match-indices + authors: + - Ron Buckton + champions: + - Ron Buckton + description: >- + ECMAScript RegExp Match Indicies provide additional information about the + start and end indices of captured substrings relative to the start of the + input string. example: |- const re1 = /a+(?<Z>z)?/; + // indices are relative to start of the input string: const s1 = "xaaaz"; const m1 = re1.exec(s1); m1.indices[0][0] === 1; m1.indices[0][1] === 5; s1.slice(...m1.indices[0]) === "aaaz"; + m1.indices[1][0] === 4; m1.indices[1][1] === 5; s1.slice(...m1.indices[1]) === "z"; + m1.indices.groups["Z"][0] === 4; m1.indices.groups["Z"][1] === 5; s1.slice(...m1.indices.groups["Z"]) === "z"; + // capture groups that are not matched return `undefined`: const m2 = re1.exec("xaaay"); m2.indices[1] === undefined; m2.indices.groups["Z"] === undefined; + has_specification: false presented: - - date: December 2019 + - date: "December\_2019" url: >- https://github.com/tc39/notes/blob/master/meetings/2019-12/december-3.md#regexp-match-indices-performance-feedback - has_specification: false - description: ECMAScript RegExp Match Indicies provide additional information about the start and end indices of captured substrings relative to the start of the input string. - authors: - - Ron Buckton - champions: - - Ron Buckton + title: RegExp Match Indices tests: - 'https://github.com/tc39/test262/pull/2309' -- title: Atomics.waitAsync - id: proposal-atomics-wait-async - presented: - - date: December 2019 - url: >- - https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 - has_specification: true - description: A proposal for an "asynchronous atomic wait" for ECMAScript, primarily for use in agents that are not allowed to block. +- id: proposal-atomics-wait-async authors: - Lars Hansen champions: - Shu-yu Guo - Lars Hansen + description: >- + A proposal for an "asynchronous atomic wait" for ECMAScript, primarily for + use in agents that are not allowed to block. + has_specification: true + presented: + - date: "December\_2019" + url: >- + https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 + title: Atomics.waitAsync tests: - 'https://github.com/tc39/test262/issues/2511' -- title: .at() - id: proposal-relative-indexing-method - example: |- - var list = ["apple", "orange", "banana"]; - list.at(-1) // banana, using negative index - list.at(0) // apple - list.at(1) // orange - list.at(2) // banana - presented: - - date: September 2020 - url: item - has_specification: true - description: A proposal to add a .at() method to all the basic indexable classes (Array, String, TypedArray). +- id: proposal-relative-indexing-method authors: - Shu-yu Guo - Tab Atkins champions: - Shu-yu Guo - Tab Atkins + description: >- + A proposal to add a .at() method to all the basic indexable + classes (Array, String, TypedArray). + example: |- + function at(n) { + // ToInteger() abstract op + n = Math.trunc(n) || 0; + // Allow negative indexing from the end + if(n < 0) n += this.length; + // OOB access is guaranteed to return undefined + if(n < 0 || n >= this.length) return undefined; + // Otherwise, this is just normal property access + return this[n]; + } + + // Other TypedArray constructors omitted for brevity. + for (let C of [Array, String, Uint8Array]) { + Object.defineProperty(C.prototype, "at", + { value: at, + writable: true, + enumerable: false, + configurable: true }); + } + has_specification: true + presented: + - date: "November\_2020" + url: at + title: .at() tests: - 'https://github.com/tc39/test262/pull/2812' -- title: Import Assertions - id: proposal-import-assertions - example: >- - new Worker("foo.wasm", { type: "module", assert: { type: - "webassembly" } }); - presented: - - date: September 2020 - url: import-assertions - has_specification: true - description: A proposal for syntax to import ES modules with assertions. +- id: proposal-import-assertions authors: - Myles Borins - Sven Sauleau @@ -238,3 +280,13 @@ - Sven Sauleau - Dan Clark - Daniel Ehrenberg + description: A proposal for syntax to import ES modules with assertions. + example: >- + new Worker("foo.wasm", { type: "module", assert: { type: + "webassembly" } }); + has_specification: true + presented: + - date: "September\_2020" + url: >- + https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-22.md#import-assertions-for-stage-3 + title: Import Assertions