From 81ea5c880b329d5ca0902b721d24b081d20aa850 Mon Sep 17 00:00:00 2001
From: codehag
+ {{ site.data.proposals.community_translations }}
+ Atomics.waitAsync
- id: proposal-atomics-wait-async
- presented:
- - date: Dezember 2019
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3
- has_specification: true
+proposal-atomics-wait-async:
+ title: Atomics.waitAsync
description: Ein Vorschlag für eine "asynchrone atomare Wartezeit" für ECMAScript, in erster Linie zur Verwendung in Prozessen, die nicht blockieren dürfen.
- authors:
- - Lars Hansen
- champions:
- - Shu-yu Guo
- - Lars Hansen
- 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: at
- has_specification: true
+proposal-relative-indexing-method:
+ title: .at()
description: Ein Vorschlag zum Hinzufügen einer Methode .at() zu allen grundlegenden indizierbaren Klassen (Array, String, TypedArray).
- authors:
- - Shu-yu Guo
- - Tab Atkins
- champions:
- - Shu-yu Guo
- - Tab Atkins
- 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
+proposal-import-assertions:
+ title: Import Assertions
description: Ein Vorschlag für die Syntax zum Import von ES-Modulen mit Assertions.
- authors:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
- champions:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
-- title: JSON Modules
- id: proposal-json-modules
- example: >-
- import json from "./foo.json" assert { type: "json" };
- presented:
- - date: January 2021
- url: >-
- https://github.com/tc39/notes/blob/master/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
-- title: Ergonomic Brand Checks
- id: proposal-private-fields-in-in
- authors:
- - Jordan Harband
- champions:
- - Jordan Harband
- example: >-
- class C {
- #brand;
- #method() {}
- get #getter() {}
- static isC(obj) {
- return #brand in obj && #method in obj && #getter in obj;
- }
- }
- has_specification: true
- description: EcmaScript proposal to provide brand checks without exceptions.
- presented:
- - date: "January\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks
-- id: proposal-class-static-block
+proposal-json-modules:
+ title: JSON Modules
+ description:
+proposal-private-fields-in-in:
+ title: Ergonomic Brand Checks
+ description:
+proposal-class-static-block:
title: Class Static Block
- authors:
- - Ron Buckton
- champions:
- - Ron Buckton
- description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal.
- example: >-
- // "friend" access (same module)
- let A, B;
- {
- let friendA;
-
- A = class A {
- #x;
-
- static {
- friendA = {
- getX(obj) { return obj.#x },
- setX(obj, value) { obj.#x = value }
- };
- }
- };
-
- B = class B {
- constructor(a) {
- const x = friendA.getX(a); // ok
- friendA.setX(a, x); // ok
- }
- };
- }
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks
-- id: proposal-error-cause
+ description:
+proposal-error-cause:
title: Error Cause
- authors:
- - Chengzhong Wu
- champions:
- - Ron Buckton
- - Chengzhong Wu
- - Hemanth HM
- description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause.
- example: >-
- await fetch('http://domain/upload', { method: 'POST', body: jobResult })
- .catch(err => {
- throw new Error('Upload job result failed', { cause: err });
- });
- has_specification: true
- presented:
- - date: "March\_2021"
-- id: proposal-temporal
+ description:
+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
-
- const date = Temporal.now.plainDateISO(); // Gets the current date
-
- date.toString(); // returns the date in ISO 8601 date format
-
- // If you additionally want the time
-
- Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3
-- id: proposal-accessible-object-hasownproperty
+ description:
+proposal-accessible-object-hasownproperty:
title: Accessible Object.prototype.hasOwnProperty()
- authors:
- - Jamie Kyle
- - Tierney Cyren
- champions:
- - Tierney Cyren
description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible.
- example: >-
- if (Object.hasOwn(object, "foo")) {
- console.log("has property foo")
- }
- has_specification: true
- presented:
- - date: "May\_2021"
-- id: proposal-resizablearraybuffer
+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
-
- let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 });
- assert(rab.byteLength === 1024);
- assert(rab.maximumByteLength === 1024 ** 2);
- assert(rab.resizable);
- rab.resize(rab.byteLength * 2);
- assert(rab.byteLength === 1024 * 2);
-
- // Transfer the first 1024 bytes.
- let ab = rab.transfer(1024);
-
- // rab is now detached
- assert(rab.byteLength === 0);
- assert(rab.maximumByteLength === 0);
-
- // The contents are moved to ab.
- assert(!ab.resizable);
- assert(ab.byteLength === 1024);
- has_specification: true
- presented:
- - date: "May\_2021"
+ description:
diff --git a/_data/en/proposals.yml b/_data/en/proposals.yml
index c621e406..74e49588 100644
--- a/_data/en/proposals.yml
+++ b/_data/en/proposals.yml
@@ -21,3 +21,19 @@ champion: Champion
champions: Champions
authors-and-champions: Authors and Champions
see-more: See proposals in all stages
+needs_translation: Needs Translation
+needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation.md
+community_translations: This page is translated by the community. If you want to contribute, read our guidelines.
+months:
+ 1: January
+ 2: February
+ 3: March
+ 4: April
+ 5: May
+ 6: June
+ 7: July
+ 8: August
+ 9: September
+ 10: October
+ 11: November
+ 12: December
diff --git a/_data/en/site.yml b/_data/en/site.yml
index 610a7905..89109857 100644
--- a/_data/en/site.yml
+++ b/_data/en/site.yml
@@ -19,18 +19,6 @@ navigation:
read: Reading the Spec
discourse: Join the Discourse
sub-menu: Toggle sub-menu for Contribute
- language:
- title: Language
- url: ""
- languages:
- - title: Deutsch
- url: "/de"
- - title: 简体中文
- url: "/zh-Hans"
- - title: 日本語
- url: "/ja"
- - title: Русский
- url: "/ru"
state-of-proposals: State of Proposals
skip-content: Skip to content
open: Open Menu
diff --git a/_data/en/stage3.yml b/_data/en/stage3.yml
index 07ffa07c..1661cee5 100644
--- a/_data/en/stage3.yml
+++ b/_data/en/stage3.yml
@@ -1,256 +1,36 @@
-- 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
+proposal-regexp-legacy-features:
+ title: Legacy RegExp features in JavaScript
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.
- authors:
- - Claude Pache
- champions:
- - Mark Miller
- - Claude Pache
- tests:
- - 'https://github.com/tc39/test262/pull/2650'
-- title: Hashbang Grammar
- id: proposal-hashbang
- example: |-
- #!/usr/bin/env node
- // in the Module Goal
- export {};
- console.log(1);
- presented:
- - date: November 2018
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar
- has_specification: true
+proposal-hashbang:
+ title: Hashbang Grammar
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
- tests:
- - 'https://github.com/tc39/test262/pull/2065'
-- 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
+proposal-atomics-wait-async:
+ title: Atomics.waitAsync
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'
-- 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: at
- has_specification: true
+proposal-relative-indexing-method:
+ title: .at()
description: A proposal to add a .at() method to all the basic indexable classes (Array, String, TypedArray).
- authors:
- - Shu-yu Guo
- - Tab Atkins
- champions:
- - Shu-yu Guo
- - Tab Atkins
- 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
+proposal-import-assertions:
+ title: Import Assertions
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
-- title: JSON Modules
- id: proposal-json-modules
- example: >-
- import json from "./foo.json" assert { type: "json" };
- presented:
- - date: January 2021
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3
- has_specification: true
+proposal-json-modules:
+ title: JSON Modules
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
-- title: Ergonomic Brand Checks
- id: proposal-private-fields-in-in
- example: >-
- class C {
- #brand;
- #method() {}
- get #getter() {}
- static isC(obj) {
- return #brand in obj && #method in obj && #getter in obj;
- }
- }
- presented:
- - date: January 2021
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks
- has_specification: true
+proposal-private-fields-in-in:
+ title: Ergonomic Brand Checks
description: EcmaScript proposal to provide brand checks without exceptions.
- authors:
- - Jordan Harband
- champions:
- - Jordan Harband
-- id: proposal-class-static-block
+proposal-class-static-block:
title: Class Static Block
- authors:
- - Ron Buckton
- champions:
- - Ron Buckton
description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal.
- example: >-
- // "friend" access (same module)
- let A, B;
- {
- let friendA;
-
- A = class A {
- #x;
-
- static {
- friendA = {
- getX(obj) { return obj.#x },
- setX(obj, value) { obj.#x = value }
- };
- }
- };
-
- B = class B {
- constructor(a) {
- const x = friendA.getX(a); // ok
- friendA.setX(a, x); // ok
- }
- };
- }
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks
-- id: proposal-error-cause
+proposal-error-cause:
title: Error Cause
- authors:
- - Chengzhong Wu
- champions:
- - Ron Buckton
- - Chengzhong Wu
- - Hemanth HM
description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause.
- example: >-
- await fetch('http://domain/upload', { method: 'POST', body: jobResult })
- .catch(err => {
- throw new Error('Upload job result failed', { cause: err });
- });
- has_specification: true
- presented:
- - date: "March\_2021"
-- id: proposal-temporal
+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
-
- const date = Temporal.now.plainDateISO(); // Gets the current date
-
- date.toString(); // returns the date in ISO 8601 date format
-
- // If you additionally want the time
-
- Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3
-- id: proposal-accessible-object-hasownproperty
+proposal-accessible-object-hasownproperty:
title: Accessible Object.prototype.hasOwnProperty()
- authors:
- - Jamie Kyle
- - Tierney Cyren
- champions:
- - Tierney Cyren
description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible.
- example: >-
- if (Object.hasOwn(object, "foo")) {
- console.log("has property foo")
- }
- has_specification: true
- presented:
- - date: "May\_2021"
-- id: proposal-resizablearraybuffer
+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
-
- let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 });
- assert(rab.byteLength === 1024);
- assert(rab.maximumByteLength === 1024 ** 2);
- assert(rab.resizable);
- rab.resize(rab.byteLength * 2);
- assert(rab.byteLength === 1024 * 2);
-
- // Transfer the first 1024 bytes.
- let ab = rab.transfer(1024);
-
- // rab is now detached
- assert(rab.byteLength === 0);
- assert(rab.maximumByteLength === 0);
-
- // The contents are moved to ab.
- assert(!ab.resizable);
- assert(ab.byteLength === 1024);
- has_specification: true
- presented:
- - date: "May\_2021"
diff --git a/_data/ja/proposals.yml b/_data/ja/proposals.yml
index 0c1b041d..9d599d4c 100644
--- a/_data/ja/proposals.yml
+++ b/_data/ja/proposals.yml
@@ -21,3 +21,21 @@ champion: 支持者
champions: 支持者
authors-and-champions: 提出者、及び支持者
see-more: 全ステージのプロポーザルを見る
+needs_translation: Needs Translation
+needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation_ja.md
+community_translations: This page is translated by the community. If you want to contribute, read our guidelines.
+months:
+ 1: 1月
+ 2: 2月
+ 3: 3月
+ 4: 4月
+ 5: 5月
+ 6: 6月
+ 7: 7月
+ 8: 8月
+ 9: 9月
+ 10: 10月
+ 11: 11月
+ 12: 12月
+
+
diff --git a/_data/ja/site.yml b/_data/ja/site.yml
index 7cf9d4e7..d2e6195e 100644
--- a/_data/ja/site.yml
+++ b/_data/ja/site.yml
@@ -19,18 +19,6 @@ navigation:
read: 仕様の読み方について
discourse: Discourseに参加する
sub-menu: コントリビュートのサブメニューを表示する
- language:
- title: 言語
- url: "/ja"
- languages:
- - title: English
- url: "/"
- - title: Deutsch
- url: "/de"
- - title: 简体中文
- url: "/zh-Hans"
- - title: Русский
- url: "/ru"
state-of-proposals: プロポーザルの状態
skip-content: プロポーザルの状態へ飛ぶ
open: メニューを表示する
diff --git a/_data/ja/stage3.yml b/_data/ja/stage3.yml
index 3906800a..4bbf97ba 100644
--- a/_data/ja/stage3.yml
+++ b/_data/ja/stage3.yml
@@ -1,257 +1,36 @@
-- title: Legacy RegExp features in JavaScript
- id: proposal-regexp-legacy-features
- presented:
- - date: 5月 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
+proposal-regexp-legacy-features:
+ title: Legacy RegExp features in JavaScript
description: JavaScriptの古い(非推奨の)正規表現機能の仕様ドラフトです。例えば、RegExp.$1やRegExp.prototype.compileメソッドのようなコンストラクタのスタティックプロパティなどです。
- authors:
- - Claude Pache
- champions:
- - Mark Miller
- - Claude Pache
- tests:
- - 'https://github.com/tc39/test262/pull/2650'
-- title: Hashbang Grammar
- id: proposal-hashbang
- example: |-
- #!/usr/bin/env node
- // in the Module Goal
- export {};
- console.log(1);
- presented:
- - date: 11月 2018
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar
- has_specification: true
+proposal-hashbang:
+ title: Hashbang Grammar
description: このプロポーザルは、シェバン/ハッシュバンに対応しているいくつかのCLI JSのホストでデファクトとなっている使用方法と合わせるものです。それらのホストは現在、JSエンジンにソーステキストを渡す前にそれらを有効なものにするためにハッシュバンを取り除いています。これはそれがどのように行われるかを統一、また標準化します。
- authors:
- - Bradley Farias
- champions:
- - Bradley Farias
- tests:
- - 'https://github.com/tc39/test262/pull/2065'
-- title: Atomics.waitAsync
- id: proposal-atomics-wait-async
- presented:
- - date: 12月 2019
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3
- has_specification: true
+proposal-atomics-wait-async:
+ title: Atomics.waitAsync
description: 主にブロッキングが許されないエージェントで使用するための"Atomics.waitの非同期版"をECMAScriptに追加するためのプロポーザルです。
- authors:
- - Lars Hansen
- champions:
- - Shu-yu Guo
- - Lars Hansen
- 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: 9月 2020
- url: at
- has_specification: true
+proposal-relative-indexing-method:
+ title: .at()
description: すべての基本的なインデックス可能なクラス(Array, String, TypedArray)に、.at()メソッドを追加するプロポーザルです。
- authors:
- - Shu-yu Guo
- - Tab Atkins
- champions:
- - Shu-yu Guo
- - Tab Atkins
- 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: 9月 2020
- url: import-assertions
- has_specification: true
+proposal-import-assertions:
+ title: Import Assertions
description: ES Modulesをアサーション付きでインポートする構文のためのプロポーザルです。
- authors:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
- champions:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
-- title: JSON Modules
- id: proposal-json-modules
- example: >-
- import json from "./foo.json" assert { type: "json" };
- presented:
- - date: 1月 2021
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-25.md#json-modules-for-stage-3
- has_specification: true
+proposal-json-modules:
+ title: JSON Modules
description: JSONファイルをモジュールとしてインポートするためのプロポーザルです。
- authors:
- - Sven Sauleau
- - Daniel Ehrenberg
- - Myles Borins
- - Dan Clark
- champions:
- - Sven Sauleau
- - Daniel Ehrenberg
- - Myles Borins
- - Dan Clark
-- title: Ergonomic Brand Checks
- id: proposal-private-fields-in-in
- example: >-
- class C {
- #brand;
- #method() {}
- get #getter() {}
- static isC(obj) {
- return #brand in obj && #method in obj && #getter in obj;
- }
- }
- presented:
- - date: 1月 2021
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks
- has_specification: true
+proposal-private-fields-in-in:
+ title: Ergonomic Brand Checks
description: 例外なしにブランドチェックを実現するためのプロポーザルです。
- authors:
- - Jordan Harband
- champions:
- - Jordan Harband
- has_specification: true
-- id: proposal-class-static-block
+proposal-class-static-block:
title: Class Static Block
- authors:
- - Ron Buckton
- champions:
- - Ron Buckton
description: Class static blockは、クラス定義の評価中に追加の静的初期化を実行する仕組みを提供します。これは、静的解析ツールに役立つ情報を提供し、デコレーターのための妥当なターゲットであるため、パブリックフィールドの置き換えを意図したものではありません。むしろ、これは既存のユースケースを補強し、このプロポーザルで現在処理されていない新しいユースケースを実現できるようにすることを目的としています。
- example: >-
- // "friend" access (same module)
- let A, B;
- {
- let friendA;
-
- A = class A {
- #x;
-
- static {
- friendA = {
- getX(obj) { return obj.#x },
- setX(obj, value) { obj.#x = value }
- };
- }
- };
-
- B = class B {
- constructor(a) {
- const x = friendA.getX(a); // ok
- friendA.setX(a, x); // ok
- }
- };
- }
- has_specification: true
- presented:
- - date: 3月 2021
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks
-- id: proposal-error-cause
+proposal-error-cause:
title: Error Cause
- authors:
- - Chengzhong Wu
- champions:
- - Ron Buckton
- - Chengzhong Wu
- - Hemanth HM
description: エラーは、実行時の異常を表現するために作られます。予期しない動作の診断を容易にするためは、エラーメッセージやエラーインスタンスのプロパティなど、その時点で何が起こったかを明らかにする状況情報をエラーに追加する必要があります。エラーが内部の深いメソッドからスローされた場合、スローされたエラーは、適切な例外設計パターンなしに簡単に処理できるとは限りません。このプロポーザルは原因を伝達するための便利な手段を導入します。
- example: >-
- await fetch('http://domain/upload', { method: 'POST', body: jobResult })
- .catch(err => {
- throw new Error('Upload job result failed', { cause: err });
- });
- has_specification: true
- presented:
- - date: 3月 2021
-- id: proposal-temporal
+proposal-temporal:
title: Temporal
- authors:
- - Maggie Pint
- - Matt Johnson
- - Philipp Dunkel
- champions:
- - Maggie Pint
- - Matt Johnson
- - Philipp Dunkel
description: ECMAScriptでは、Dateが長年の悩みの種でした。そこで提案されたのがTemporalであり、これは(Mathのような)トップレベルの名前空間として振る舞い、ECMAScriptに最新のdate/time APIをもたらすグローバルオブジェクトです。動機の詳しい説明については、プロポーザルのREADMEをご覧ください。
- example: >-
- // See the repo for detailed examples.
- // small example from the cook book
-
- const date = Temporal.now.plainDateISO(); // Gets the current date
-
- date.toString(); // returns the date in ISO 8601 date format
-
- // If you additionally want the time
-
- Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format
- has_specification: true
- presented:
- - date: 3月 2021
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3
-- id: proposal-accessible-object-hasownproperty
+proposal-accessible-object-hasownproperty:
title: Accessible Object.prototype.hasOwnProperty()
- authors:
- - Jamie Kyle
- - Tierney Cyren
- champions:
- - Tierney Cyren
description: よりObject.prototype.hasOwnProperty()を利用しやすくするためのObject.hasOwn()のプロポーザルです。
- example: >-
- if (Object.hasOwn(object, "foo")) {
- console.log("has property foo")
- }
- has_specification: true
- presented:
- - date: "May\_2021"
-- id: proposal-resizablearraybuffer
+proposal-resizablearraybuffer:
title: In-Place Resizable and Growable ArrayBuffers
- authors:
- - Shu-yu Guo
- champions:
- - Shu-yu Guo
description: ArrayBufferは、バイナリデータをインメモリで処理できるようにし、大きな成功を収めました。このプロポーザルは、ArrayBufferコンストラクタを拡張することで、バッファのインプレースの拡張と縮小が可能な最大長を新たに受け取れるようにします。同様に、SharedArrayBufferは、インプレースの拡張が可能な最大長を新たに受け取れるように拡張されています。transferメソッドは、ArrayBufferをデタッチし、ゼロコピーによる移動を行い、リサイズ可能なArrayBufferインスタンスをArrayBufferインスタンスとして「固定」するための標準的な方法としてもここで再導入されています。
- example: |-
- // Resizable ArrayBuffer
-
- let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 });
- assert(rab.byteLength === 1024);
- assert(rab.maximumByteLength === 1024 ** 2);
- assert(rab.resizable);
- rab.resize(rab.byteLength * 2);
- assert(rab.byteLength === 1024 * 2);
-
- // Transfer the first 1024 bytes.
- let ab = rab.transfer(1024);
-
- // rab is now detached
- assert(rab.byteLength === 0);
- assert(rab.maximumByteLength === 0);
-
- // The contents are moved to ab.
- assert(!ab.resizable);
- assert(ab.byteLength === 1024);
- has_specification: true
- presented:
- - date: "May\_2021"
diff --git a/_data/languages.yml b/_data/languages.yml
new file mode 100644
index 00000000..2d3e8568
--- /dev/null
+++ b/_data/languages.yml
@@ -0,0 +1,10 @@
+- title: English
+ id: en
+- title: Sprache
+ id: de
+- title: 简体中文
+ id: zh-Hans
+- title: 日本語
+ id: ja
+- title: Русский
+ id: ru
diff --git a/_data/ru/proposals.yml b/_data/ru/proposals.yml
index 9775a953..d96991d3 100644
--- a/_data/ru/proposals.yml
+++ b/_data/ru/proposals.yml
@@ -21,3 +21,19 @@ champion: Чемпион
champions: Чемпионы
authors-and-champions: Авторы и чемпионы
see-more: Предложения на всех этапах
+needs_translation: Needs Translation
+needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation_ru.md
+community_translations: This page is translated by the community. If you want to contribute, read our guidelines.
+months:
+ 1: январь
+ 2: февраль
+ 3: март
+ 4: апрель
+ 5: май
+ 6: июнь
+ 7: июль
+ 8: август
+ 9: сентябрь
+ 10: октябрь
+ 11: ноябрь
+ 12: декабрь
diff --git a/_data/ru/site.yml b/_data/ru/site.yml
index 29e6d5c3..4b7c5c48 100644
--- a/_data/ru/site.yml
+++ b/_data/ru/site.yml
@@ -19,18 +19,6 @@ navigation:
read: Как читать спецификацию
discourse: Присоединяйся к обсуждениям
sub-menu: Открыть меню «Сделать вклад»
- language:
- title: Язык
- url: "/ru"
- languages:
- - title: English
- url: "/"
- - title: Deutsch
- url: "/de"
- - title: 简体中文
- url: "/zh-Hans"
- - title: Русский
- url: "/ru"
state-of-proposals: Статус предложений
skip-content: Перейти к содержанию
open: Открыть меню
diff --git a/_data/ru/stage3.yml b/_data/ru/stage3.yml
index fe9d472a..9293272d 100644
--- a/_data/ru/stage3.yml
+++ b/_data/ru/stage3.yml
@@ -1,256 +1,37 @@
-- title: Устаревшие возможности RegExp в JavaScript
- id: proposal-regexp-legacy-features
- presented:
- - date: Май 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
+proposal-regexp-legacy-features:
+ title: Устаревшие возможности RegExp в JavaScript
description: Черновик спецификации для устаревших возможностей RegExp в JavaScript, т.е. статических свойств конструктора вида RegExp.$1, а также метода RegExp.prototype.compile.
- authors:
- - Claude Pache
- champions:
- - Mark Miller
- - Claude Pache
- tests:
- - 'https://github.com/tc39/test262/pull/2650'
-- title: Грамматика Hashbang
- id: proposal-hashbang
- example: |-
- #!/usr/bin/env node
- // in the Module Goal
- export {};
- console.log(1);
- presented:
- - date: Ноябрь 2018
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar
- has_specification: true
+proposal-hashbang:
+ title: Грамматика Hashbang
description: Это предложение по стандартизации использования Shebang / Hashbang в соответствии с тем, как они фактически уже используются в некоторых CLI-окружениях JS. В настоящее время такие окружения удаляют шебанг для того, чтобы сгенерировать валидный исходный код на JS перед тем, как отдать его на исполнение JS-движкам. Это предложение позволит унифицировать и стандартизировать такое использование.
- authors:
- - Bradley Farias
- champions:
- - Bradley Farias
- tests:
- - 'https://github.com/tc39/test262/pull/2065'
-- title: Atomics.waitAsync
- id: proposal-atomics-wait-async
- presented:
- - date: Декабрь 2019
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2019-12/december-4.md#atomicswaitasync-for-stage-3
- has_specification: true
+proposal-atomics-wait-async:
+ title: Atomics.waitAsync
description: Предложение для добавления атомарной операции ожидания асинхронной операции в ECMAScript, прежде всего, для использования в агентах, в которых невозможна блокировка.
- authors:
- - Lars Hansen
- champions:
- - Shu-yu Guo
- - Lars Hansen
- 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: Сентябрь 2020
- url: at
- has_specification: true
+proposal-relative-indexing-method:
+ title: .at()
description: Предложение по добавлению метода .at() во все основные перечисляемые классы (Array, String, TypedArray).
- authors:
- - Shu-yu Guo
- - Tab Atkins
- champions:
- - Shu-yu Guo
- - Tab Atkins
- 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: Сентябрь 2020
- url: import-assertions
- has_specification: true
+proposal-import-assertions:
+ title: Import assertions
description: Предложение по добавлению синтаксиса для импорта модулей ES с дополнительными параметрами.
- authors:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
- champions:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
-- title: JSON Modules
- id: proposal-json-modules
- example: >-
- import json from "./foo.json" assert { type: "json" };
- presented:
- - date: January 2021
- url: >-
- https://github.com/tc39/notes/blob/master/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
-- title: Ergonomic Brand Checks
- id: proposal-private-fields-in-in
- example: >-
- class C {
- #brand;
- #method() {}
- get #getter() {}
- static isC(obj) {
- return #brand in obj && #method in obj && #getter in obj;
- }
- }
- presented:
- - date: January 2021
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks
- has_specification: true
- description: EcmaScript proposal to provide brand checks without exceptions.
- authors:
- - Jordan Harband
- champions:
- - Jordan Harband
-- id: proposal-class-static-block
+proposal-json-modules:
+ title: JSON Modules
+ description:
+proposal-private-fields-in-in:
+ title: Ergonomic Brand Checks
+ description:
+proposal-class-static-block:
title: Class Static Block
- authors:
- - Ron Buckton
- champions:
- - Ron Buckton
- description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal.
- example: >-
- // "friend" access (same module)
- let A, B;
- {
- let friendA;
-
- A = class A {
- #x;
-
- static {
- friendA = {
- getX(obj) { return obj.#x },
- setX(obj, value) { obj.#x = value }
- };
- }
- };
-
- B = class B {
- constructor(a) {
- const x = friendA.getX(a); // ok
- friendA.setX(a, x); // ok
- }
- };
- }
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks
-- id: proposal-error-cause
+ description:
+proposal-error-cause:
title: Error Cause
- authors:
- - Chengzhong Wu
- champions:
- - Ron Buckton
- - Chengzhong Wu
- - Hemanth HM
- description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause.
- example: >-
- await fetch('http://domain/upload', { method: 'POST', body: jobResult })
- .catch(err => {
- throw new Error('Upload job result failed', { cause: err });
- });
- has_specification: true
- presented:
- - date: "March\_2021"
-- id: proposal-temporal
+ description:
+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
-
- const date = Temporal.now.plainDateISO(); // Gets the current date
-
- date.toString(); // returns the date in ISO 8601 date format
-
- // If you additionally want the time
-
- Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3
-- id: proposal-accessible-object-hasownproperty
+ description:
+proposal-accessible-object-hasownproperty:
title: Accessible Object.prototype.hasOwnProperty()
- authors:
- - Jamie Kyle
- - Tierney Cyren
- champions:
- - Tierney Cyren
description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible.
- example: >-
- if (Object.hasOwn(object, "foo")) {
- console.log("has property foo")
- }
- has_specification: true
- presented:
- - date: "May\_2021"
-- id: proposal-resizablearraybuffer
+ description:
+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
-
- let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 });
- assert(rab.byteLength === 1024);
- assert(rab.maximumByteLength === 1024 ** 2);
- assert(rab.resizable);
- rab.resize(rab.byteLength * 2);
- assert(rab.byteLength === 1024 * 2);
-
- // Transfer the first 1024 bytes.
- let ab = rab.transfer(1024);
-
- // rab is now detached
- assert(rab.byteLength === 0);
- assert(rab.maximumByteLength === 0);
-
- // The contents are moved to ab.
- assert(!ab.resizable);
- assert(ab.byteLength === 1024);
- has_specification: true
- presented:
- - date: "May\_2021"
+ description:
diff --git a/_data/stage3.yml b/_data/stage3.yml
deleted file mode 100644
index 51e0e54d..00000000
--- a/_data/stage3.yml
+++ /dev/null
@@ -1,397 +0,0 @@
-- 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'
-- 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: "September\_2020"
- url: >-
- 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
- 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;
- method() {
- console.log(this.#foo)
- }
- }
- has_specification: true
- presented:
- - date: "September\_2020"
- url: >-
- 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
- - Jeff Morrison
- - Kevin Smith
- 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;
- case "blue": return ColorFinder.#blue;
- case "green": return ColorFinder.#green;
- default: throw new RangeError("unknown color");
- }
- }
-
- // Somehow use colorName
- }
- has_specification: true
- presented:
- - date: "September\_2020"
- url: >-
- 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'
-- 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"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar
- title: Hashbang Grammar
- tests:
- - 'https://github.com/tc39/test262/pull/2065'
-- 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"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2019-06/june-6.md#top-level-await-for-stage-3
- title: Top-level await
- tests:
- - 'https://github.com/tc39/test262/pull/2274'
-- 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"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2019-12/december-3.md#regexp-match-indices-performance-feedback
- title: RegExp Match Indices
- tests:
- - 'https://github.com/tc39/test262/pull/2309'
-- 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'
-- 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: |-
- var list = ["apple", "orange", "banana"];
- list.at(-1) // banana, using negative index
- list.at(0) // apple
- list.at(1) // orange
- list.at(2) // banana
- has_specification: true
- presented:
- - date: "November\_2020"
- url: https://github.com/tc39/notes/blob/master/meetings/2020-11/nov-17.md#item-rename--revisit-inclusion-on-string
- title: .at()
- tests:
- - 'https://github.com/tc39/test262/pull/2812'
-- id: proposal-import-assertions
- authors:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
- champions:
- - Myles Borins
- - 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
-- title: JSON Modules
- id: proposal-json-modules
- example: >-
- import json from "./foo.json" assert { type: "json" };
- presented:
- - date: January\_2021
- url: >-
- https://github.com/tc39/notes/blob/master/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
-- title: Ergonomic Brand Checks
- id: proposal-private-fields-in-in
- example: >-
- class C {
- #brand;
- #method() {}
- get #getter() {}
- static isC(obj) {
- return #brand in obj && #method in obj && #getter in obj;
- }
- }
- description: EcmaScript proposal to provide brand checks without exceptions.
- authors:
- - Jordan Harband
- has_specification: true
- presented:
- - date: "January\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks
-- id: proposal-class-static-block
- title: Class Static Block
- authors:
- - Ron Buckton
- champions:
- - Ron Buckton
- description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal.
- example: >-
- // "friend" access (same module)
- let A, B;
- {
- let friendA;
-
- A = class A {
- #x;
-
- static {
- friendA = {
- getX(obj) { return obj.#x },
- setX(obj, value) { obj.#x = value }
- };
- }
- };
-
- B = class B {
- constructor(a) {
- const x = friendA.getX(a); // ok
- friendA.setX(a, x); // ok
- }
- };
- }
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks
-- id: proposal-error-cause
- title: Error Cause
- authors:
- - Chengzhong Wu
- champions:
- - Ron Buckton
- - Chengzhong Wu
- - Hemanth HM
- description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause.
- example: >-
- await fetch('http://domain/upload', { method: 'POST', body: jobResult })
- .catch(err => {
- throw new Error('Upload job result failed', { cause: err });
- });
- has_specification: true
- presented:
- - date: "March\_2021"
-- 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
-
- const date = Temporal.now.plainDateISO(); // Gets the current date
-
- date.toString(); // returns the date in ISO 8601 date format
-
- // If you additionally want the time
-
- Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3
diff --git a/_data/stage3_base.yml b/_data/stage3_base.yml
new file mode 100644
index 00000000..b871ed3c
--- /dev/null
+++ b/_data/stage3_base.yml
@@ -0,0 +1,268 @@
+- title: Legacy RegExp features in JavaScript
+ id: proposal-regexp-legacy-features
+ presented:
+ - month: 5
+ year: 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.
+ authors:
+ - Claude Pache
+ champions:
+ - Mark Miller
+ - Claude Pache
+ tests:
+ - 'https://github.com/tc39/test262/pull/2650'
+- title: Hashbang Grammar
+ id: proposal-hashbang
+ example: |-
+ #!/usr/bin/env node
+ // in the Module Goal
+ export {};
+ console.log(1);
+ presented:
+ - month: 11
+ year: 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
+ tests:
+ - 'https://github.com/tc39/test262/pull/2065'
+- title: Atomics.waitAsync
+ id: proposal-atomics-wait-async
+ presented:
+ - month: 12
+ year: 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.
+ authors:
+ - Lars Hansen
+ champions:
+ - Shu-yu Guo
+ - Lars Hansen
+ 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:
+ - month: 9
+ year: 2020
+ url: at
+ has_specification: true
+ description: A proposal to add a .at() method to all the basic indexable classes (Array, String, TypedArray).
+ authors:
+ - Shu-yu Guo
+ - Tab Atkins
+ champions:
+ - Shu-yu Guo
+ - Tab Atkins
+ 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:
+ - 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
+- 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/master/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
+- title: Ergonomic Brand Checks
+ id: proposal-private-fields-in-in
+ example: >-
+ class C {
+ #brand;
+ #method() {}
+ get #getter() {}
+ static isC(obj) {
+ return #brand in obj && #method in obj && #getter in obj;
+ }
+ }
+ presented:
+ - month: 1
+ year: 2021
+ url: >-
+ https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks
+ has_specification: true
+ description: EcmaScript proposal to provide brand checks without exceptions.
+ authors:
+ - Jordan Harband
+ champions:
+ - Jordan Harband
+- id: proposal-class-static-block
+ title: Class Static Block
+ authors:
+ - Ron Buckton
+ champions:
+ - Ron Buckton
+ description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal.
+ example: >-
+ // "friend" access (same module)
+ let A, B;
+ {
+ let friendA;
+
+ A = class A {
+ #x;
+
+ static {
+ friendA = {
+ getX(obj) { return obj.#x },
+ setX(obj, value) { obj.#x = value }
+ };
+ }
+ };
+
+ B = class B {
+ constructor(a) {
+ const x = friendA.getX(a); // ok
+ friendA.setX(a, x); // ok
+ }
+ };
+ }
+ has_specification: true
+ presented:
+ - month: 3
+ year: 2021
+ url: >-
+ https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks
+- id: proposal-error-cause
+ title: Error Cause
+ authors:
+ - Chengzhong Wu
+ champions:
+ - Ron Buckton
+ - Chengzhong Wu
+ - Hemanth HM
+ description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause.
+ example: >-
+ await fetch('http://domain/upload', { method: 'POST', body: jobResult })
+ .catch(err => {
+ throw new Error('Upload job result failed', { cause: err });
+ });
+ has_specification: true
+ presented:
+ - month: 3
+ year: 2021
+- 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
+
+ const date = Temporal.now.plainDateISO(); // Gets the current date
+
+ date.toString(); // returns the date in ISO 8601 date format
+
+ // If you additionally want the time
+
+ Temporal.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/master/meetings/2021-03/mar-9.md#temporal-for-stage-3
+- id: proposal-accessible-object-hasownproperty
+ title: Accessible Object.prototype.hasOwnProperty()
+ authors:
+ - James Kyle
+ - Tierney Cyren
+ champions:
+ - Tierney Cyren
+ description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible.
+ example: >-
+ if (Object.hasOwn(object, "foo")) {
+ console.log("has property foo")
+ }
+ has_specification: true
+ presented:
+ - month: 5
+ year: 2021
+- 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
+
+ let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 });
+ assert(rab.byteLength === 1024);
+ assert(rab.maximumByteLength === 1024 ** 2);
+ assert(rab.resizable);
+ rab.resize(rab.byteLength * 2);
+ assert(rab.byteLength === 1024 * 2);
+
+ // Transfer the first 1024 bytes.
+ let ab = rab.transfer(1024);
+
+ // rab is now detached
+ assert(rab.byteLength === 0);
+ assert(rab.maximumByteLength === 0);
+
+ // The contents are moved to ab.
+ assert(!ab.resizable);
+ assert(ab.byteLength === 1024);
+ has_specification: true
+ presented:
+ - month: 5
+ year: 2021
diff --git a/_data/zh-Hans/proposals.yml b/_data/zh-Hans/proposals.yml
index 09f39073..785fb4b9 100644
--- a/_data/zh-Hans/proposals.yml
+++ b/_data/zh-Hans/proposals.yml
@@ -21,3 +21,19 @@ champion: 推进者
champions: 推进者
authors-and-champions: 作者和推进者
see-more: 查看各阶段的提案
+needs_translation: Needs Translation
+needs_translation_url: https://github.com/tc39/tc39.github.io/blob/master/translation_zh-Hans.md
+community_translations: This page is translated by the community. If you want to contribute, read our guidelines.
+months:
+ 1: January
+ 2: February
+ 3: March
+ 4: April
+ 5: May
+ 6: June
+ 7: July
+ 8: August
+ 9: September
+ 10: October
+ 11: November
+ 12: December
diff --git a/_data/zh-Hans/stage3.yml b/_data/zh-Hans/stage3.yml
index d34e18be..314db3bf 100644
--- a/_data/zh-Hans/stage3.yml
+++ b/_data/zh-Hans/stage3.yml
@@ -1,261 +1,36 @@
-- title: JavaScript 中的历史 RegExp 特性
- 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
+proposal-regexp-legacy-features:
+ title: JavaScript 中的历史 RegExp 特性
description: 该提案规范了 JavaScript 中已废弃的 RegExp 特性,即构造函数的静态属性以及 RegExp.prototype.compile 方法。
- authors:
- - Claude Pache
- champions:
- - Mark Miller
- - Claude Pache
- tests:
- - 'https://github.com/tc39/test262/pull/2650'
-- title: Hashbang 语法
- id: proposal-hashbang
- example: |-
- #!/usr/bin/env node
- // in the Module Goal
- export {};
- console.log(1);
- presented:
- - date: November 2018
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2018-11/nov-28.md#hash-bang-grammar
- has_specification: true
+proposal-hashbang:
+ title: Hashbang 语法
description: 该提案意在配合一些允许/需要使用 Hashbang 的 JS 环境。在这种环境中,目前它们需要先删除 hashbang 以生成有效的 JS 代码。该提案将统一和规范这种做法。
- authors:
- - Bradley Farias
- champions:
- - Bradley Farias
- tests:
- - 'https://github.com/tc39/test262/pull/2065'
-- 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
+proposal-atomics-wait-async:
+ title: Atomics.waitAsync
description: 该提案为 Atomics 添加一个异步的 wait,用于不允许阻塞线程的环境。
- authors:
- - Lars Hansen
- champions:
- - Shu-yu Guo
- - Lars Hansen
- 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: at
- has_specification: true
+proposal-relative-indexing-method:
+ title: .at()
description: 该提案计划在所有可索引类(Array、String、TypedArray)中添加一个.at()方法。该方法允许负数索引。
- authors:
- - Shu-yu Guo
- - Tab Atkins
- champions:
- - Shu-yu Guo
- - Tab Atkins
- tests:
- - 'https://github.com/tc39/test262/pull/2812'
-- title: import 断言
- id: proposal-import-assertions
- example: >-
- new Worker("foo.wasm", { type: "module", assert: { type:
- "webassembly" } });
- presented:
- - date: September 2020
- url: import-assertions
- has_specification: true
+proposal-import-assertions:
+ title: import 断言
description: 该提案为 `import` 语句添加了断言语法。如果模块不符合期望的断言,则导入会失败。
- authors:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
- champions:
- - Myles Borins
- - Sven Sauleau
- - Dan Clark
- - Daniel Ehrenberg
-- title: JSON Modules
- id: proposal-json-modules
- example: >-
- import json from "./foo.json" assert { type: "json" };
- presented:
- - date: January 2021
- url: >-
- https://github.com/tc39/notes/blob/master/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
-- title: Ergonomic Brand Checks
- id: proposal-private-fields-in-in
- example: >-
- class C {
- #brand;
- #method() {}
- get #getter() {}
- static isC(obj) {
- return #brand in obj && #method in obj && #getter in obj;
- }
- }
- presented:
- - date: January 2021
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks
- has_specification: true
- description: EcmaScript proposal to provide brand checks without exceptions.
- authors:
- - Jordan Harband
- champions:
- - Jordan Harband
- has_specification: true
- presented:
- - date: "January\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-01/jan-27.md#ergonomic-brand-checks
-- id: proposal-class-static-block
+proposal-json-modules:
+ title: JSON Modules
+ description:
+proposal-private-fields-in-in:
+ title: Ergonomic Brand Checks
+ description:
+proposal-class-static-block:
title: Class Static Block
- authors:
- - Ron Buckton
- champions:
- - Ron Buckton
- description: Class static blocks provide a mechanism to perform additional static initialization during class definition evaluation. This is not intended as a replacement for public fields, as they provide useful information for static analysis tools and are a valid target for decorators. Rather, this is intended to augment existing use cases and enable new use cases not currently handled by that proposal.
- example: >-
- // "friend" access (same module)
- let A, B;
- {
- let friendA;
-
- A = class A {
- #x;
-
- static {
- friendA = {
- getX(obj) { return obj.#x },
- setX(obj, value) { obj.#x = value }
- };
- }
- };
-
- B = class B {
- constructor(a) {
- const x = friendA.getX(a); // ok
- friendA.setX(a, x); // ok
- }
- };
- }
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#class-static-initialization-blocks
-- id: proposal-error-cause
+ description:
+proposal-error-cause:
title: Error Cause
- authors:
- - Chengzhong Wu
- champions:
- - Ron Buckton
- - Chengzhong Wu
- - Hemanth HM
- description: Errors will be constructed to represent runtime abnormalities. To help unexpected behavior diagnosis, errors need to be augmented with contextual information like error messages, error instance properties to explain what happened at the time. If the error were thrown from deep internal methods, the thrown error may not be straightforward to be easily conducted without proper exception design pattern. This proposal introduces a convenient way to forward the cause.
- example: >-
- await fetch('http://domain/upload', { method: 'POST', body: jobResult })
- .catch(err => {
- throw new Error('Upload job result failed', { cause: err });
- });
- has_specification: true
- presented:
- - date: "March\_2021"
-- id: proposal-temporal
+ description:
+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
-
- const date = Temporal.now.plainDateISO(); // Gets the current date
-
- date.toString(); // returns the date in ISO 8601 date format
-
- // If you additionally want the time
-
- Temporal.now.plainDateTimeISO().toString(); // date and time in ISO 8601 format
- has_specification: true
- presented:
- - date: "March\_2021"
- url: >-
- https://github.com/tc39/notes/blob/master/meetings/2021-03/mar-9.md#temporal-for-stage-3
-- id: proposal-accessible-object-hasownproperty
+ description:
+proposal-accessible-object-hasownproperty:
title: Accessible Object.prototype.hasOwnProperty()
- authors:
- - Jamie Kyle
- - Tierney Cyren
- champions:
- - Tierney Cyren
description: Proposal for an Object.hasOwn() method to make Object.prototype.hasOwnProperty() more accessible.
- example: >-
- if (Object.hasOwn(object, "foo")) {
- console.log("has property foo")
- }
- has_specification: true
- presented:
- - date: "May\_2021"
-- id: proposal-resizablearraybuffer
+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
-
- let rab = new ArrayBuffer(1024, { maximumByteLength: 1024 ** 2 });
- assert(rab.byteLength === 1024);
- assert(rab.maximumByteLength === 1024 ** 2);
- assert(rab.resizable);
- rab.resize(rab.byteLength * 2);
- assert(rab.byteLength === 1024 * 2);
-
- // Transfer the first 1024 bytes.
- let ab = rab.transfer(1024);
-
- // rab is now detached
- assert(rab.byteLength === 0);
- assert(rab.maximumByteLength === 0);
-
- // The contents are moved to ab.
- assert(!ab.resizable);
- assert(ab.byteLength === 1024);
- has_specification: true
- presented:
- - date: "May\_2021"
+ description:
diff --git a/_includes/proposals.html b/_includes/proposals.html
index e97e9ee4..eea512c6 100644
--- a/_includes/proposals.html
+++ b/_includes/proposals.html
@@ -9,6 +9,11 @@
{{ site.data["proposals"]["description"] }}
+ {% if site.active_lang != site.default_lang %}
+
{{ site.data["proposals"]["how-to-read"]["title"] }}
@@ -17,6 +22,7 @@
{{ site.data["proposals"]["how-to-read"]["description"] }}