|
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 |
9 | 2 | authors:
|
10 | 3 | - Claude Pache
|
11 | 4 | champions:
|
12 | 5 | - Mark Miller
|
13 | 6 | - 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 |
14 | 17 | tests:
|
15 | 18 | - '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. |
18 | 29 | example: |-
|
19 | 30 | class Counter extends HTMLElement {
|
20 | 31 | #xValue = 0;
|
| 32 | +
|
21 | 33 | get #x() { return #xValue; }
|
22 | 34 | set #x(value) {
|
23 | 35 | this.#xValue = value;
|
24 | 36 | window.requestAnimationFrame(this.#render.bind(this));
|
25 | 37 | }
|
| 38 | +
|
26 | 39 | #clicked() {
|
27 | 40 | this.#x++;
|
28 | 41 | }
|
| 42 | +
|
29 | 43 | constructor() {
|
30 | 44 | super();
|
31 | 45 | this.onclick = this.#clicked.bind(this);
|
32 | 46 | }
|
| 47 | +
|
33 | 48 | connectedCallback() { this.#render(); }
|
| 49 | +
|
34 | 50 | #render() {
|
35 | 51 | this.textContent = this.#x.toString();
|
36 | 52 | }
|
37 | 53 | }
|
38 | 54 | window.customElements.define('num-counter', Counter);
|
| 55 | + has_specification: true |
39 | 56 | presented:
|
40 |
| - - date: January 2019 |
| 57 | + - date: "September\_2020" |
41 | 58 | 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 |
45 | 65 | authors:
|
46 | 66 | - Daniel Ehrenberg
|
| 67 | + - Kevin Gibbons |
47 | 68 | champions:
|
48 | 69 | - Daniel Ehrenberg
|
| 70 | + - Jeff Morrison |
| 71 | + - Kevin Smith |
49 | 72 | - 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. |
55 | 77 | example: |-
|
56 | 78 | class X {
|
57 | 79 | #foo;
|
58 | 80 | method() {
|
59 | 81 | console.log(this.#foo)
|
60 | 82 | }
|
61 | 83 | }
|
| 84 | + has_specification: true |
62 | 85 | presented:
|
63 |
| - - date: March 2019 |
| 86 | + - date: "September\_2020" |
64 | 87 | 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 |
68 | 93 | authors:
|
69 | 94 | - Daniel Ehrenberg
|
70 | 95 | - Kevin Gibbons
|
71 |
| - champions: |
72 |
| - - Daniel Ehrenberg |
73 | 96 | - Jeff Morrison
|
74 | 97 | - 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. |
80 | 104 | example: |-
|
81 | 105 | class ColorFinder {
|
82 | 106 | static #red = "#ff0000";
|
83 | 107 | static #green = "#00ff00";
|
84 | 108 | static #blue = "#0000ff";
|
85 |
| -
|
| 109 | + |
86 | 110 | static colorName(name) {
|
87 | 111 | switch (name) {
|
88 | 112 | case "red": return ColorFinder.#red;
|
|
91 | 115 | default: throw new RangeError("unknown color");
|
92 | 116 | }
|
93 | 117 | }
|
94 |
| -
|
| 118 | + |
95 | 119 | // Somehow use colorName
|
96 | 120 | }
|
| 121 | + has_specification: true |
97 | 122 | presented:
|
98 |
| - - date: January 2019 |
| 123 | + - date: "September\_2020" |
99 | 124 | 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 |
111 | 127 | tests:
|
112 | 128 | - '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. |
115 | 139 | example: |-
|
116 | 140 | #!/usr/bin/env node
|
117 | 141 | // in the Module Goal
|
118 | 142 | export {};
|
119 | 143 | console.log(1);
|
| 144 | + has_specification: true |
120 | 145 | presented:
|
121 |
| - - date: November 2018 |
| 146 | + - date: "November\_2018" |
122 | 147 | url: >-
|
123 | 148 | 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 |
130 | 150 | tests:
|
131 | 151 | - '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> lets us rely on the module system itself to |
| 159 | + handle all of these promises, and make sure that things are |
| 160 | + well-coordinated. |
134 | 161 | example: |-
|
135 | 162 | // file.html
|
136 | 163 | <script type=module src="a.mjs"></script>
|
| 164 | +
|
137 | 165 | // a.mjs
|
138 | 166 | await import("./b.mjs");
|
| 167 | +
|
139 | 168 | // b.mjs
|
140 | 169 | await import("./a.mjs");
|
| 170 | + has_specification: true |
141 | 171 | presented:
|
142 |
| - - date: June 2019 |
| 172 | + - date: "June\_2019" |
143 | 173 | url: >-
|
144 | 174 | 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> lets us rely on the module system itself to handle all of these promises, and make sure that things are well-coordinated. |
147 |
| - authors: |
148 |
| - - Myles Borins |
149 |
| - champions: |
150 |
| - - Myles Borins |
| 175 | + title: Top-level <code>await</code> |
151 | 176 | tests:
|
152 | 177 | - 'https://github.com/tc39/test262/pull/2274'
|
153 |
| -- title: RegExp Match Indices |
154 |
| - id: proposal-regexp-match-indices |
| 178 | +- id: proposal-regexp-match-indices |
| 179 | + authors: |
| 180 | + - Ron Buckton |
| 181 | + champions: |
| 182 | + - Ron Buckton |
| 183 | + description: >- |
| 184 | + ECMAScript RegExp Match Indicies provide additional information about the |
| 185 | + start and end indices of captured substrings relative to the start of the |
| 186 | + input string. |
155 | 187 | example: |-
|
156 | 188 | const re1 = /a+(?<Z>z)?/;
|
| 189 | +
|
157 | 190 | // indices are relative to start of the input string:
|
158 | 191 | const s1 = "xaaaz";
|
159 | 192 | const m1 = re1.exec(s1);
|
160 | 193 | m1.indices[0][0] === 1;
|
161 | 194 | m1.indices[0][1] === 5;
|
162 | 195 | s1.slice(...m1.indices[0]) === "aaaz";
|
| 196 | +
|
163 | 197 | m1.indices[1][0] === 4;
|
164 | 198 | m1.indices[1][1] === 5;
|
165 | 199 | s1.slice(...m1.indices[1]) === "z";
|
| 200 | +
|
166 | 201 | m1.indices.groups["Z"][0] === 4;
|
167 | 202 | m1.indices.groups["Z"][1] === 5;
|
168 | 203 | s1.slice(...m1.indices.groups["Z"]) === "z";
|
| 204 | +
|
169 | 205 | // capture groups that are not matched return `undefined`:
|
170 | 206 | const m2 = re1.exec("xaaay");
|
171 | 207 | m2.indices[1] === undefined;
|
172 | 208 | m2.indices.groups["Z"] === undefined;
|
| 209 | + has_specification: false |
173 | 210 | presented:
|
174 |
| - - date: December 2019 |
| 211 | + - date: "December\_2019" |
175 | 212 | url: >-
|
176 | 213 | 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 |
| 214 | + title: RegExp Match Indices |
183 | 215 | tests:
|
184 | 216 | - 'https://github.com/tc39/test262/pull/2309'
|
185 |
| -- title: <code>Atomics.waitAsync</code> |
186 |
| - id: proposal-atomics-wait-async |
187 |
| - presented: |
188 |
| - - date: December 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. |
| 217 | +- id: proposal-atomics-wait-async |
193 | 218 | authors:
|
194 | 219 | - Lars Hansen
|
195 | 220 | champions:
|
196 | 221 | - Shu-yu Guo
|
197 | 222 | - Lars Hansen
|
| 223 | + description: >- |
| 224 | + A proposal for an "asynchronous atomic wait" for ECMAScript, primarily for |
| 225 | + use in agents that are not allowed to block. |
| 226 | + has_specification: true |
| 227 | + presented: |
| 228 | + - date: "December\_2019" |
| 229 | + url: >- |
| 230 | + https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3 |
| 231 | + title: <code>Atomics.waitAsync</code> |
198 | 232 | tests:
|
199 | 233 | - 'https://github.com/tc39/test262/issues/2511'
|
200 |
| -- title: <code>.item()</code> |
201 |
| - id: proposal-item-method |
| 234 | +- id: proposal-item-method |
| 235 | + authors: |
| 236 | + - Shu-yu Guo |
| 237 | + - Tab Atkins |
| 238 | + champions: |
| 239 | + - Shu-yu Guo |
| 240 | + - Tab Atkins |
| 241 | + description: >- |
| 242 | + A proposal to add a <code>.item()</code> method to all the basic indexable |
| 243 | + classes (<code>Array</code>, <code>String</code>, <code>TypedArray</code>). |
202 | 244 | example: |-
|
203 | 245 | function item(n) {
|
204 | 246 | 	// ToInteger() abstract op
|
|
210 | 252 | 	// Otherwise, this is just normal property access
|
211 | 253 | 	return this[n];
|
212 | 254 | }
|
| 255 | +
|
213 | 256 | // Other TypedArray constructors omitted for brevity.
|
214 | 257 | for (let C of [Array, String, Uint8Array]) {
|
215 | 258 | Object.defineProperty(C.prototype, "item",
|
|
218 | 261 | enumerable: false,
|
219 | 262 | configurable: true });
|
220 | 263 | }
|
221 |
| - presented: |
222 |
| - - date: September 2020 |
223 |
| - url: item |
224 | 264 | has_specification: true
|
225 |
| - description: A proposal to add a <code>.item()</code> method to all the basic indexable classes (<code>Array</code>, <code>String</code>, <code>TypedArray</code>). |
226 |
| - authors: |
227 |
| - - Shu-yu Guo |
228 |
| - - Tab Atkins |
229 |
| - champions: |
230 |
| - - Shu-yu Guo |
231 |
| - - Tab Atkins |
| 265 | + presented: |
| 266 | + - date: "September\_2020" |
| 267 | + url: >- |
| 268 | + https://github.com/tc39/notes/blob/master/meetings/2020-09/sept-22.md#item-for-stage-3 |
| 269 | + title: <code>.item()</code> |
232 | 270 | tests:
|
233 | 271 | - 'https://github.com/tc39/test262/pull/2812'
|
234 |
| -- title: Import Assertions |
235 |
| - id: proposal-import-assertions |
236 |
| - example: >- |
237 |
| - new Worker("foo.wasm", { type: "module", assert: { type: |
238 |
| - "webassembly" } }); |
239 |
| - presented: |
240 |
| - - date: September 2020 |
241 |
| - url: import-assertions |
242 |
| - has_specification: true |
243 |
| - description: A proposal for syntax to import ES modules with assertions. |
| 272 | +- id: proposal-import-assertions |
244 | 273 | authors:
|
245 | 274 | - Myles Borins
|
246 | 275 | - Sven Sauleau
|
|
251 | 280 | - Sven Sauleau
|
252 | 281 | - Dan Clark
|
253 | 282 | - Daniel Ehrenberg
|
| 283 | + description: A proposal for syntax to import ES modules with assertions. |
| 284 | + example: >- |
| 285 | + new Worker("foo.wasm", { type: "module", assert: { type: |
| 286 | + "webassembly" } }); |
| 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