-
Notifications
You must be signed in to change notification settings - Fork 60
/
stage3.json
181 lines (181 loc) · 9.29 KB
/
stage3.json
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
{
"proposal-regexp-legacy-features": {
"title": "Legacy RegExp features in JavaScript",
"id": "proposal-regexp-legacy-features",
"presented": [
{
"month": 5,
"year": 2017,
"url": "https://github.com/tc39/notes/blob/main/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 <code>RegExp.$1</code> as well as the <code>RegExp.prototype.compile</code> method.",
"authors": ["Claude Pache"],
"champions": ["Mark Miller", "Claude Pache"],
"tests": ["https://github.com/tc39/test262/pull/2650"]
},
"proposal-hashbang": {
"title": "Hashbang Grammar",
"id": "proposal-hashbang",
"example": "#!/usr/bin/env node\n// in the Module Goal\nexport {};\nconsole.log(1);",
"presented": [
{
"month": 11,
"year": 2018,
"url": "https://github.com/tc39/notes/blob/main/meetings/2018-11/nov-28.md#hash-bang-grammar"
}
],
"has_specification": true,
"tests": ["https://github.com/tc39/test262/pull/2065"],
"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"]
},
"proposal-atomics-wait-async": {
"title": "<code>Atomics.waitAsync</code>",
"id": "proposal-atomics-wait-async",
"presented": [
{
"month": 12,
"year": 2019,
"url": "https://github.com/tc39/notes/blob/main/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.",
"authors": ["Lars Hansen"],
"champions": ["Shu-yu Guo", "Lars Hansen"],
"tests": ["https://github.com/tc39/test262/issues/2511"]
},
"proposal-import-assertions": {
"title": "Import Assertions",
"id": "proposal-import-assertions",
"example": "new Worker("foo.wasm", { type: "module", assert: { type: "webassembly" } });",
"presented": [{ "month": 9, "year": 2020, "url": "import-assertions" }],
"has_specification": true,
"description": "A proposal for syntax to import ES modules with assertions.",
"authors": [
"Myles Borins",
"Sven Sauleau",
"Dan Clark",
"Daniel Ehrenberg"
],
"champions": [
"Myles Borins",
"Sven Sauleau",
"Dan Clark",
"Daniel Ehrenberg"
],
"tests": [null]
},
"proposal-json-modules": {
"title": "JSON Modules",
"id": "proposal-json-modules",
"example": "import json from "./foo.json" assert { type: "json" };",
"presented": [
{
"month": 1,
"year": 2021,
"url": "https://github.com/tc39/notes/blob/main/meetings/2021-01/jan-25.md#json-modules-for-stage-3"
}
],
"has_specification": true,
"description": "Proposal to import JSON files as modules.",
"authors": [
"Sven Sauleau",
"Daniel Ehrenberg",
"Myles Borins",
"Dan Clark"
],
"champions": [
"Sven Sauleau",
"Daniel Ehrenberg",
"Myles Borins",
"Dan Clark"
],
"tests": ["https://github.com/tc39/test262/pull/2999"]
},
"proposal-temporal": {
"id": "proposal-temporal",
"title": "Temporal",
"authors": ["Maggie Pint", "Matt Johnson", "Philipp Dunkel"],
"champions": ["Maggie Pint", "Matt Johnson", "Philipp Dunkel"],
"description": "Date has been a long-standing pain point in ECMAScript. This proposes Temporal, a global Object that acts as a top-level namespace (like Math), that brings a modern date/time API to the ECMAScript language. For a detailed breakdown of motivations, see the proposal readme.",
"example": "// See the repo for detailed examples. // small example from the cook book\nconst date = Temporal.now.plainDateISO(); // Gets the current date\ndate.toString(); // returns the date in ISO 8601 date format\n// If you additionally want the time\nTemporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format",
"has_specification": true,
"presented": [
{
"month": 3,
"year": 2021,
"url": "https://github.com/tc39/notes/blob/main/meetings/2021-03/mar-9.md#temporal-for-stage-3"
}
],
"tests": [
"https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Amerged+temporal+in%3Atitle+"
]
},
"proposal-resizablearraybuffer": {
"id": "proposal-resizablearraybuffer",
"title": "In-Place Resizable and Growable ArrayBuffers",
"authors": ["Shu-yu Guo"],
"champions": ["Shu-yu Guo"],
"description": "ArrayBuffers have enabled in-memory handling of binary data and have enjoyed great success. This proposal extends the ArrayBuffer constructors to take an additional maximum length that allows in-place growth and shrinking of buffers. Similarly, SharedArrayBuffer is extended to take an additional maximum length that allows in-place growth. The transfer method is also re-introduced here as a standard way to detach ArrayBuffers, perform zero-copy moves, and to \"fix\" resizable ArrayBuffer instances to ArrayBuffer instances.",
"example": "// Resizable ArrayBuffer\n\nlet rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 });\nassert(rab.byteLength === 1024);\nassert(rab.maximumByteLength === 1024 ** 2);\nassert(rab.resizable);\nrab.resize(rab.byteLength * 2);\nassert(rab.byteLength === 1024 * 2);\n\n// Transfer the first 1024 bytes.\nlet ab = rab.transfer(1024);\n\n// rab is now detached\nassert(rab.byteLength === 0);\nassert(rab.maximumByteLength === 0);\n\n// The contents are moved to ab.\nassert(!ab.resizable);\nassert(ab.byteLength === 1024);",
"has_specification": true,
"tests": [
"https://github.com/tc39/test262/pulls?q=is%3Apr+is%3Amerged+resizable+in%3Atitle+"
],
"presented": [
{
"month": 5,
"year": 2021,
"url": "https://github.com/tc39/notes/blob/main/meetings/2021-05/may-25.md#resizable-arraybuffers-for-stage-3"
}
]
},
"proposal-array-find-from-last": {
"id": "proposal-array-find-from-last",
"title": "Array.prototype.findLast and Array.prototype.findLastIndex",
"description": "Proposal for finding the first match from the end of the array for both elements and indices.",
"authors": ["Wenlu Wang"],
"champions": ["Wenlu Wang", "Daniel Rosenwasser"],
"example": "const array = [{ value: 1 }, { value: 2 }, { value: 3 }, { value: 4 }];\narray.find(n => n.value % 2 === 1); // { value: 1 }\narray.findIndex(n => n.value % 2 === 1); // 0",
"has_specification": true,
"tests": ["https://github.com/tc39/test262/pull/3045"],
"presented": [
{
"month": 7,
"year": 2021,
"url": "https://github.com/tc39/notes/blob/main/meetings/2021-07/july-14.md#array-find-from-last"
}
]
},
"proposal-shadowrealm": {
"id": "proposal-shadowrealm",
"title": "ShadowRealm API",
"description": "ShadowRealms are a distinct global environment, with its own global object containing its own intrinsics and built-ins (standard objects that are not bound to global variables, like the initial value of Object.prototype)..",
"authors": ["Caridy Patiño", "Jean-Francois Paradis"],
"champions": ["Dave Herman", "Mark Miller", "Caridy Patiño", "Leo Balter"],
"example": "const red = new ShadowRealm();\n\n// realms can import modules that will execute within it's own environment.\n// When the module is resolved, it captured the binding value, or creates a new\n// wrapped function that is connected to the callable binding.\nconst redAdd = await red.importValue('./inside-code.js', 'add');\n\n// redAdd is a wrapped function exotic object that chains it's call to the\n// respective imported binding.\nlet result = redAdd(2, 3);",
"tests": ["https://github.com/tc39/test262/pull/3046"],
"has_specification": true,
"presented": [
{
"month": 8,
"year": 2021,
"url": "https://github.com/tc39/notes/blob/main/meetings/2021-08/aug-31.md#realms-renaming-bikeshedding-thread"
}
]
},
"proposal-array-grouping": {
"id": "proposal-array-grouping",
"title": "Array Grouping",
"description": "A proposal to make grouping of array items easier.",
"authors": ["Justin Ridgewell"],
"champions": ["Justin Ridgewell"],
"example": "const array = [1, 2, 3, 4, 5];\n\n// groupBy groups items by arbitrary key.\n// In this case, we're grouping by even/odd keys\narray.groupBy((num, index, array) => {\n return num % 2 === 0 ? 'even': 'odd';\n});\n\n// => { odd: [1, 3, 5], even: [2, 4] }\n\n// groupByToMap returns items in a Map, and is useful for grouping using\n// an object key.\nconst odd = { odd: true };\nconst even = { even: true };\narray.groupByToMap((num, index, array) => {\n return num % 2 === 0 ? even: odd;\n});\n\n// => Map { {odd: true}: [1, 3, 5], {even: true}: [2, 4] }",
"has_specification": true,
"presented": [{ "month": 12, "year": 2021 }]
}
}