Skip to content

Commit f7b1636

Browse files
⬆️ update stage 3 January 2021
1 parent 64a68ae commit f7b1636

File tree

1 file changed

+154
-102
lines changed

1 file changed

+154
-102
lines changed

_data/stage3.yml

Lines changed: 154 additions & 102 deletions
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,112 @@
1-
- title: Legacy RegExp features in JavaScript
2-
id: proposal-regexp-legacy-features
3-
presented:
4-
- date: May 2017
5-
url: >-
6-
https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3
7-
has_specification: false
8-
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.
1+
- id: proposal-regexp-legacy-features
92
authors:
103
- Claude Pache
114
champions:
125
- Mark Miller
136
- Claude Pache
7+
description: >-
8+
This is a specification draft for the legacy (deprecated) RegExp features in
9+
JavaScript, i.e., static properties of the constructor like RegExp.$1 as
10+
well as the RegExp.prototype.compile method.
11+
has_specification: false
12+
presented:
13+
- date: "May\_2017"
14+
url: >-
15+
https://github.com/tc39/notes/blob/master/meetings/2017-05/may-25.md#15ia-regexp-legacy-features-for-stage-3
16+
title: Legacy RegExp features in JavaScript
1417
tests:
1518
- 'https://github.com/tc39/test262/pull/2650'
16-
- title: Private instance methods and accessors
17-
id: proposal-private-methods
19+
- id: proposal-private-methods
20+
authors:
21+
- Daniel Ehrenberg
22+
champions:
23+
- Daniel Ehrenberg
24+
- Kevin Gibbons
25+
description: >-
26+
Keeping state and behavior private to a class lets library authors present a
27+
clear, stable interface, while changing their code over time behind the
28+
scenes.
1829
example: |-
1930
class Counter extends HTMLElement {
2031
#xValue = 0;
32+
2133
get #x() { return #xValue; }
2234
set #x(value) {
2335
this.#xValue = value;
2436
window.requestAnimationFrame(this.#render.bind(this));
2537
}
38+
2639
#clicked() {
2740
this.#x++;
2841
}
42+
2943
constructor() {
3044
super();
3145
this.onclick = this.#clicked.bind(this);
3246
}
47+
3348
connectedCallback() { this.#render(); }
49+
3450
#render() {
3551
this.textContent = this.#x.toString();
3652
}
3753
}
3854
window.customElements.define('num-counter', Counter);
55+
has_specification: true
3956
presented:
40-
- date: January 2019
57+
- date: "September\_2020"
4158
url: >-
42-
https://github.com/tc39/notes/blob/master/meetings/2019-01/jan-30.md#private-fields-and-methods-refresher
43-
has_specification: true
44-
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.
59+
https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features
60+
title: Private instance methods and accessors
61+
tests:
62+
- >-
63+
https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+methods
64+
- id: proposal-class-fields
4565
authors:
4666
- Daniel Ehrenberg
67+
- Kevin Gibbons
4768
champions:
4869
- Daniel Ehrenberg
70+
- Jeff Morrison
71+
- Kevin Smith
4972
- Kevin Gibbons
50-
tests:
51-
- >-
52-
https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+methods
53-
- title: Class Public Instance Fields & Private Instance Fields
54-
id: proposal-class-fields
73+
description: >-
74+
This proposes a combined vision for public fields and private fields,
75+
drawing on the earlier Orthogonal Classes and Class Evaluation Order
76+
proposals.
5577
example: |-
5678
class X {
5779
#foo;
5880
method() {
5981
console.log(this.#foo)
6082
}
6183
}
84+
has_specification: true
6285
presented:
63-
- date: March 2019
86+
- date: "September\_2020"
6487
url: >-
65-
https://github.com/tc39/notes/blob/master/meetings/2020-03/march-31.md#add-support-for-optionalchainprivateidentifier-in-class-features-proposals
66-
has_specification: true
67-
description: This proposes a combined vision for public fields and private fields, drawing on the earlier Orthogonal Classes and Class Evaluation Order proposals.
88+
https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features
89+
title: Class Public Instance Fields & Private Instance Fields
90+
tests:
91+
- 'https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+fields'
92+
- id: proposal-static-class-features
6893
authors:
6994
- Daniel Ehrenberg
7095
- Kevin Gibbons
71-
champions:
72-
- Daniel Ehrenberg
7396
- Jeff Morrison
7497
- Kevin Smith
75-
- Kevin Gibbons
76-
tests:
77-
- 'https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+private+fields'
78-
- title: Static class fields and private static methods
79-
id: proposal-static-class-features
98+
champions:
99+
- Shu-Yu Guo
100+
- Daniel Ehrenberg
101+
description: >-
102+
A proposal to add three features to JavaScript classes, building on the
103+
previous class fields and private methods proposals.
80104
example: |-
81105
class ColorFinder {
82106
static #red = "#ff0000";
83107
static #green = "#00ff00";
84108
static #blue = "#0000ff";
85-
109+
86110
static colorName(name) {
87111
switch (name) {
88112
case "red": return ColorFinder.#red;
@@ -91,143 +115,161 @@
91115
default: throw new RangeError("unknown color");
92116
}
93117
}
94-
118+
95119
// Somehow use colorName
96120
}
121+
has_specification: true
97122
presented:
98-
- date: January 2019
123+
- date: "September\_2020"
99124
url: >-
100-
https://github.com/tc39/notes/blob/master/meetings/2019-01/jan-30.md#private-fields-and-methods-refresher
101-
has_specification: true
102-
description: A proposal to add three features to JavaScript classes, building on the previous class fields and private methods proposals.
103-
authors:
104-
- Daniel Ehrenberg
105-
- Kevin Gibbons
106-
- Jeff Morrison
107-
- Kevin Smith
108-
champions:
109-
- Shu-Yu Guo
110-
- Daniel Ehrenberg
125+
https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-23.md#status-update-for-class-fields-private-methods-static-class-features
126+
title: Static class fields and private static methods
111127
tests:
112128
- 'https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Aclosed+static+fields'
113-
- title: Hashbang Grammar
114-
id: proposal-hashbang
129+
- id: proposal-hashbang
130+
authors:
131+
- Bradley Farias
132+
champions:
133+
- Bradley Farias
134+
description: >-
135+
This proposal is to match de-facto usage in some CLI JS hosts that allow for
136+
Shebangs / Hashbang. Such hosts strip the hashbang in order to generate
137+
valid JS source texts before passing to JS engines currently. This would
138+
unify and standardize how that is done.
115139
example: |-
116140
#!/usr/bin/env node
117141
// in the Module Goal
118142
export {};
119143
console.log(1);
144+
has_specification: true
120145
presented:
121-
- date: November 2018
146+
- date: "November\_2018"
122147
url: >-
123148
https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar
124-
has_specification: true
125-
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.
126-
authors:
127-
- Bradley Farias
128-
champions:
129-
- Bradley Farias
149+
title: Hashbang Grammar
130150
tests:
131151
- 'https://github.com/tc39/test262/pull/2065'
132-
- title: Top-level <code>await</code>
133-
id: proposal-top-level-await
152+
- id: proposal-top-level-await
153+
authors:
154+
- Myles Borins
155+
champions:
156+
- Myles Borins
157+
description: >-
158+
Top-level <code>await</code> enables modules to act as big async functions.
159+
With top-level <code>await</code>, ECMAScript Modules (ESM) can await
160+
resources, causing other modules who import them to wait before they start
161+
evaluating their body.
134162
example: |-
135163
// file.html
136164
&#x3C;script type=module src=&#x22;a.mjs&#x22;&#x3E;&#x3C;/script&#x3E;
165+
137166
// a.mjs
138167
await import(&#x22;./b.mjs&#x22;);
168+
139169
// b.mjs
140170
await import(&#x22;./a.mjs&#x22;);
171+
has_specification: true
141172
presented:
142-
- date: June&#xA0;2019
173+
- date: "June\_2019"
143174
url: >-
144175
https://github.com/tc39/notes/blob/master/meetings/2019-06/june-6.md#top-level-await-for-stage-3
145-
has_specification: true
146-
description: Top-level <code>await</code> enables modules to act as big async functions. With top-level <code>await</code>, ECMAScript Modules (ESM) can await resources, causing other modules who import them to wait before they start evaluating their body.
147-
authors:
148-
- Myles Borins
149-
champions:
150-
- Myles Borins
176+
title: Top-level <code>await</code>
151177
tests:
152178
- 'https://github.com/tc39/test262/pull/2274'
153-
- title: RegExp Match Indices
154-
id: proposal-regexp-match-indices
179+
- id: proposal-regexp-match-indices
180+
authors:
181+
- Ron Buckton
182+
champions:
183+
- Ron Buckton
184+
description: >-
185+
ECMAScript RegExp Match Indicies provide additional information about the
186+
start and end indices of captured substrings relative to the start of the
187+
input string.
155188
example: |-
156189
const re1 = /a+(?&#x3C;Z&#x3E;z)?/;
190+
157191
// indices are relative to start of the input string:
158192
const s1 = &#x22;xaaaz&#x22;;
159193
const m1 = re1.exec(s1);
160194
m1.indices[0][0] === 1;
161195
m1.indices[0][1] === 5;
162196
s1.slice(...m1.indices[0]) === &#x22;aaaz&#x22;;
197+
163198
m1.indices[1][0] === 4;
164199
m1.indices[1][1] === 5;
165200
s1.slice(...m1.indices[1]) === &#x22;z&#x22;;
201+
166202
m1.indices.groups[&#x22;Z&#x22;][0] === 4;
167203
m1.indices.groups[&#x22;Z&#x22;][1] === 5;
168204
s1.slice(...m1.indices.groups[&#x22;Z&#x22;]) === &#x22;z&#x22;;
205+
169206
// capture groups that are not matched return &#x60;undefined&#x60;:
170207
const m2 = re1.exec(&#x22;xaaay&#x22;);
171208
m2.indices[1] === undefined;
172209
m2.indices.groups[&#x22;Z&#x22;] === undefined;
210+
has_specification: false
173211
presented:
174-
- date: December&#xA0;2019
212+
- date: "December\_2019"
175213
url: >-
176214
https://github.com/tc39/notes/blob/master/meetings/2019-12/december-3.md#regexp-match-indices-performance-feedback
177-
has_specification: false
178-
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.
179-
authors:
180-
- Ron Buckton
181-
champions:
182-
- Ron Buckton
215+
title: RegExp Match Indices
183216
tests:
184217
- 'https://github.com/tc39/test262/pull/2309'
185-
- title: <code>Atomics.waitAsync</code>
186-
id: proposal-atomics-wait-async
187-
presented:
188-
- date: December&#xA0;2019
189-
url: >-
190-
https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3
191-
has_specification: true
192-
description: A proposal for an "asynchronous atomic wait" for ECMAScript, primarily for use in agents that are not allowed to block.
218+
- id: proposal-atomics-wait-async
193219
authors:
194220
- Lars Hansen
195221
champions:
196222
- Shu-yu Guo
197223
- Lars Hansen
224+
description: >-
225+
A proposal for an "asynchronous atomic wait" for ECMAScript, primarily for
226+
use in agents that are not allowed to block.
227+
has_specification: true
228+
presented:
229+
- date: "December\_2019"
230+
url: >-
231+
https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3
232+
title: <code>Atomics.waitAsync</code>
198233
tests:
199234
- 'https://github.com/tc39/test262/issues/2511'
200-
- title: <code>.at()</code>
201-
id: proposal-relative-indexing-method
202-
example: |-
203-
var list = ["apple", "orange", "banana"];
204-
list.at(-1) // banana, using negative index
205-
list.at(0) // apple
206-
list.at(1) // orange
207-
list.at(2) // banana
208-
presented:
209-
- date: September&#xA0;2020
210-
url: item
211-
has_specification: true
212-
description: A proposal to add a <code>.at()</code> method to all the basic indexable classes (<code>Array</code>, <code>String</code>, <code>TypedArray</code>).
235+
- id: proposal-relative-indexing-method
213236
authors:
214237
- Shu-yu Guo
215238
- Tab Atkins
216239
champions:
217240
- Shu-yu Guo
218241
- Tab Atkins
242+
description: >-
243+
A proposal to add a <code>.at()</code> method to all the basic indexable
244+
classes (<code>Array</code>, <code>String</code>, <code>TypedArray</code>).
245+
example: |-
246+
function at(n) {
247+
&#x9;// ToInteger() abstract op
248+
&#x9;n = Math.trunc(n) || 0;
249+
&#x9;// Allow negative indexing from the end
250+
&#x9;if(n &#x3C; 0) n += this.length;
251+
&#x9;// OOB access is guaranteed to return undefined
252+
&#x9;if(n &#x3C; 0 || n &#x3E;= this.length) return undefined;
253+
&#x9;// Otherwise, this is just normal property access
254+
&#x9;return this[n];
255+
}
256+
257+
// Other TypedArray constructors omitted for brevity.
258+
for (let C of [Array, String, Uint8Array]) {
259+
Object.defineProperty(C.prototype, &#x22;at&#x22;,
260+
{ value: at,
261+
writable: true,
262+
enumerable: false,
263+
configurable: true });
264+
}
265+
has_specification: true
266+
presented:
267+
- date: "November\_2020"
268+
url: at
269+
title: <code>.at()</code>
219270
tests:
220271
- 'https://github.com/tc39/test262/pull/2812'
221-
- title: Import Assertions
222-
id: proposal-import-assertions
223-
example: >-
224-
new Worker(&#x22;foo.wasm&#x22;, { type: &#x22;module&#x22;, assert: { type:
225-
&#x22;webassembly&#x22; } });
226-
presented:
227-
- date: September&#xA0;2020
228-
url: import-assertions
229-
has_specification: true
230-
description: A proposal for syntax to import ES modules with assertions.
272+
- id: proposal-import-assertions
231273
authors:
232274
- Myles Borins
233275
- Sven Sauleau
@@ -238,3 +280,13 @@
238280
- Sven Sauleau
239281
- Dan Clark
240282
- Daniel Ehrenberg
283+
description: A proposal for syntax to import ES modules with assertions.
284+
example: >-
285+
new Worker(&#x22;foo.wasm&#x22;, { type: &#x22;module&#x22;, assert: { type:
286+
&#x22;webassembly&#x22; } });
287+
has_specification: true
288+
presented:
289+
- date: "September\_2020"
290+
url: >-
291+
https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-22.md#import-assertions-for-stage-3
292+
title: Import Assertions

0 commit comments

Comments
 (0)