Skip to content

Latest commit

 

History

History
333 lines (314 loc) · 35.6 KB

ecmascript-proposals.md

File metadata and controls

333 lines (314 loc) · 35.6 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 Yes 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 On TypeScript 3.2 roadmap
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 Yes transform-object-rest-spread 8 LTS
Promise#finally ES2018 2ality11 Yes core.js Yes 10 promise.prototype.finally
Asynchronous Iteration ES2018 2ality05 Yes Yes transform-async-generator-functions 10
Optional catch binding ES2019 2ality14 Yes Yes transform-optional-catch-binding Added to chrome codebase 2018-01-19
JSON superset ES2019 [proposal-json-strings ]
Function#toString revision Stage 3 2ality01 10. 6 LTS (Partial)
global Stage 3 2ality03 Yes core.js #12902
import() Stage 3 2ality06 Yes Yes 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 On TypeScript 3.2 roadmap
import.meta Stage 3 2ality15 Partial Yes 10. See Typescript PR #23327 for instructions how to use
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.sj
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 core.js
Object.fromEntries Stage 3 core.js PR #26149
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
Top-level await Stage 2
New Set methods Stage 2
Well-formed JSON.stringify Stage 2
Function#toString() censorship Stage 2
Realms Stage 2
ArrayBuffer#transfer Stage 2
RegExp Match array offsets Stage 2
Sequence properties in Unicode property escapes Stage 2
InterpreterDirective Stage 2
Temporal Stage 2
export v from "mod"; statements Stage 1
Observable Stage 1 Yes core.js core-js/fn/observable
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
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
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
Module Keys Stage 1
Class Static Block Stage 1
class Access Expressions Stage 1
Pattern Matching Stage 1
Explicit Resource Management Stage 1
Dynamic Modules Stage 1
JavaScript Standard Library Stage 1
"use modules" Stage 1
for-in mechanics Stage 1
Uniform Date.parse Stage 1
JSON.parse source text access Stage 1

Core-js imports

Proposal Imports
global core-js/fn/global
Array#{flat,flatMap} core-js/fn/array/flat-map
core-js/fn/array/flatten (but renamed v. > 2.5.7!)
String#{trimStart,trimEnd} core-js/fn/string/trim-left
core-js/fn/string/trim-right
String#matchAll core-js/fn/string/match-all
Symbol#description v > 2.5.7, core-js/fn/symbol/description
Object.fromEntries v > 2.5.7, core-js/fn/object/fromEntries
Observable core-js/fn/observable
Math Extensions

Document Workflow

Processed update for meeting TC39 2018-09 from TC39 Proposals Processed README document through commit 1626c4b on 2018-09-27.

Process Status