Permalink
Fetching contributors…
Cannot retrieve contributors at this time
304 lines (286 sloc) 32.8 KB

ECMAScript Proposals

ECMAScript, the standard for JavaScript, is an evolving language specification, ECMA-262, and maintained by Ecma Technical Committee 39 - ECMAScript (TC39). Proposed changes go through four stages to archive approval for the next version of the standard that is currently released yearly. Status for proposals are tracked by the tc39/proposals repository README.

Axel Rauschmayer provides a useful guide to the coming features in the next version of the standard in his post Feature watch: ECMAScript 2018.

Typescript support for proposals is tracked here. Babel support for proposals is tracked here. NodeJs support for proposals is tracked here.

Table Of Proposals

Table of ECMAScript proposals and their usage in Jail.

Proposal Status Information Jali Polyfill TypeScript Babel Plugin NodeJs Comment
modules ES2015 mdn01
mdn02
Yes Yes transform-es2015-modules-commonjs 9 Babel transform not used as modules are supported by Webpack 2.
Used by AVA based unit testing
function.name property ES2015 mdn03 Yes Yes transform-es2015-function-name 6 LTS Transform used for browser.
Array#includes ES2016 mdn05 Yes core.js Yes NA 6 LTS
exponentiation operator ES2016 mdn04 Yes Yes transform-exponentiation-operator 8 LTS
Object.{values,entries} ES2017 mdn06
mdn07
Yes core.js Yes NA 8 LTS
String#{padStart,padEnd} ES2017 mdn08
mdn09
Yes core.js Yes NA 8 LTS
Object.getOwnPropertyDescriptors ES2017 mdn10 Yes core.js Yes NA 8 LTS
trailing commas from function calls ES2017 2ality00 Yes Yes syntax-trailing-function-commas 8 LTS
Async Functions ES2017 mdn11 Yes Yes transform-async-to-generator 8 LTS
Shared memory and atomics ES2017 mdn13 See notes 2.6 #15753 9 Typescript supports the syntax. Implementation support javascript runtime and version
Lifting Template Literal Restriction ES2018 mdn14
2ality02
#12700 V7 Core See PR #274 9
s (dotAll) flag for regular expressions ES2018 2ality10 Yes transform-modern-regexp 9
RegExp named capture groups ES2018 2ality09 Yes transform-modern-regexp 10 Babel may also support through regexpu See babel proposals #35
RegExp Lookbehind Assertions ES2018 2ality07 No. See transform-modern-regexp #5 9
RegExp Unicode Property Escapes ES2018 2ality08 Yes transform-unicode-property-regex 10
Rest/Spread Properties ES2018 2ality04 Yes 2.1] transform-object-rest-spread 8 LTS
Promise#finally ES2018 2ality11 Yes core.js 10 promise.prototype.finally
Asynchronous Iteration ES2018 2ality05 Yes 2.3 #11326 transform-async-generator-functions 10
Optional catch binding ES2019 2ality14 Yes 2.5 #17467 transform-optional-catch-binding Added to chrome codebase 2018-01-19
JSON superset ES2019 PR #[#7985]
Function#toString revision Stage 3 2ality01 10. 6 LTS (Partial)
global Stage 3 2ality03 Yes core.js #12902 core.js v2.5.0
import() Stage 3 2ality06 Yes 2.4 #14495 syntax-dynamic-import Babel syntax/transform not used as dynamic modules are supported by Webpack 2.
Used by AVA based unit testing
Legacy RegExp features in JavaScript Stage 3
BigInt Stage 3 2ality12 #15096 PR #6015
import.meta Stage 3 2ality15
Private instance methods and accessors Stage 3 2ality13 #9950 V7 transform-class-properties See #7842 Merged 2018-05-18 for 7.0.0-beta.48
Array#{flat,flatMap} Stage 3 Yes core.js
Instance class fields and methods Stage 3 2ality13 Yes Yes. See comment transform-class-properties Bug in TypeScript #12212 does not pass through to Babel
Static class fields and methods Stage 3 2ality13 Yes Yes. See comment transform-class-properties Bug in TypeScript #12212 does not pass through to Babel
String#{trimStart,trimEnd} Stage 3 Yes core.js
String#matchAll Stage 3 Yes core.js
Symbol#description Stage 3 Yes core.js
Numeric separators Stage 2 2.7 #20582 transform-numeric-separator
function.sent metaproperty Stage 2 Yes transform-function-sent
Decorators Stage 2 Yes Yes transform-decorators-legacy Needs write in Babel
Throw expressions Stage 2
Atomics.waitAsync Stage 2
Hashbang Grammar Stage 2
WeakRefs Stage 2
Object.fromEntries Stage 2
Top-level await Stage 2
New Set methods Stage 2
Well-formed JSON.stringify Stage 2
Function#toString() censorship Stage 2
Realms Stage 2
Date.parse fallback semantics Stage 1
export v from "mod"; statements Stage 1
Observable Stage 1 Yes core.js
Frozen Realms Stage 1
Math Extensions Stage 1 Yes core.js
of and from on collection constructors Stage 1 Yes core.js
Generator arrow functions Stage 1
Promise.try Stage 1 Yes core.js
Optional Chaining Stage 1
Math.signbit: IEEE-754 sign bit Stage 1 Yes core.js
Error stacks Stage 1
do expressions Stage 1
Temporal Stage 1
Float16 on TypedArrays, DataView, Math.hfround Stage 1
[Number.{parseInt,parseFloat} changes Stage 1
Binary AST Stage 1
Pipeline Operator Stage 1
Extensible numeric literals Stage 1
First-Class Protocols Stage 1
Nullary coalescing operator Stage 1
Partial application Stage 1
Cancellation API Stage 1
InterpreterDirective Stage 1
String#replaceAll Stage 1
String#codePoints Stage 1
Distinguishing literal strings Stage 1
Object.freeze + Object.seal syntax Stage 1
Block Params Stage 1
{BigInt,Number}.fromString Stage 1
Math.seededRandoms Stage 1
Maximally minimal mixins Stage 1
Getting last item from Array Stage 1
Collection methods Stage 1
Richer Keys Stage 1
Slice notation Stage 1
Logical Assignment Operators Stage 1
Sequence properties in Unicode property escapes Stage 1
Module Keys Stage 1
Class Static Block Stage 1
class Access Expressions Stage 1
Pattern Matching Stage 1
RegExp Match array offsets Stage 1
String.prototype.at Stage 0 Yes core.js

Document Workflow

Next update to process for meeting TC39 2018-05 from TC39 Proposals README document is 83f2325 on 2018-05-22.

Process Status