Proposals for modifying the spec
This subdirectory is to contain discussion of proposed changes until they are agreed-upon. Once agreed-upon, the body of the proposal can be incorporated into the spec document.
Proposals that are accepted are marked with a leading

.
Proposals that are accepted but with clarifying questions are marked with a leading

.
Proposals that need revision before further consideration are marked with a leading

.
Proposals should eventually be marked
.
Once accepted, proposals should be available for public review and edited into the base specification. The public review structure involves splitting the page into a minimal proposal and a linked “discussion” page in the discussion: namespace. The emphasis here is on presenting the state of our consensus clearly, where it exists.
See inactive proposals for proposals which have been retracted, deferred, or made irrelevant.
See clarifications for pages discussing possibly unclear aspects of the existing spec and proposals, or general cross-proposal concerns of the committee.
Notational issues
We need to define various notations used to define the language.
grammar, the notation used to describe the syntax of the language
semantics, the way we express the verifier (type system) and evaluator
-
-
Foundational issues
These issues really need to be decided before anything else; if we change our minds on these issues, much if not all of the language needs to be revisited and revalidated.
type parameters, the proposal to permit unbounded, invariant type parameters
builtin classes, an attempt to write the ECMA-262 builtin classes using our new language features
-
is as to, the question of which type annotations and which type operators are in the language
nullability, the proposal to discuss when the value
null is and isn’t included in a given type
numbers, how the various numeric types work together
strict and standard modes, a proposal for phrasing the two “modes” of the language as two translation paths from a single surface syntax with annotations, to a single core language
-
intrinsic namespace, a proposal for a namespace containing intrinsic bindings for types and functions.
Mid-level issues
These have broad but reasonably orthogonal implications across the language.
enumerability, the proposal to define enumerability as a single
DontEnum bit set by
Object.p.propertyIsEnumerable(name, flag)
switch class, the proposal to permit type unions and safe type switching.
block expressions, the proposal to add a lexically scoped expression form that is not hoisted and that can serve as a “better var”.
proper tail calls, the proposal to enforce bounded control behavior for function calls in tail position
-
-
local packages, a lightweight
private package form to ease web programming
namespace shadowing, reference ambiguities are resolved by the block order of
use namespace and
import pragma
-
name objects, which follow from existing
for-in iteration semantics combined with namespaces.
-
-
resurrected eval, somewhat misnamed, a proposal to reform
eval by limiting indirect calls and (in strict mode) binding effects
arrays, gathering various attempts to make array objects more array-like and therefore useful
program units, a proposal to allow declaring compilation unit dependencies
-
Surface issues
These are (possibly) easy to change at the “last minute” without really affecting much else.
getters and setters, the proposal to specify named get, set, and method initialisers within object initialisers.
catchalls, the proposal to specify “catchall” get, set, and method-call accessors.
-
reformed with, the proposal to extend
with statement syntax to support precise object typing and lexical scope.
decimal, the proposal to add IEEE754r-style decimal floating point to the language.
typeof, what is the result of
typeof when used with some new fundamental types?
-
-
update unicode, the proposal to incorporate unicode v4 escapes (and possibly more) as lexemes.
bug fixes, a proposal to make a few small, “easy” fixes to ECMA-262 Edition 3.
globals, the proposal for providing access to the global environment as an object.
-
slice syntax, a proposal to support slice and splice syntax, for both conciseness and early binding optimization
line terminator normalization, a proposal to interpret CRLF and CR in source text as LF for purposes of multiline strings and regexps, as well as determining line numbers
versioning, a proposal to detect the supported version of ECMAScript
Standard library issues
meta objects, proposals to extend the language with standardized reflective meta-objects.
-
-
-
extend regexps, the proposal to add something
like perl’s
/e and
/x qualifiers to regexps.
hashcodes, the proposal to provide objects with a mechanism for producing integral ids.
static generics, a proposal to expose
Array,
Function, and
String generic methods via static methods (split from
bug fixes)
dictionary, proposal for a built-in class for value → value maps
vector, proposal for dense monotyped arrays that aren’t Arrays
Whatever we do, we intend with the right package and other facilities to support a standard library ecology. This may require embedding-specific features (e.g., a way for browsers to avoid reloading the same .js file even though it is hosted at multiple URIs). But Edition 4 should, if possible, help ECMAScript grow a standard library via a community, not through the narrow bandwidth and costly iteration cycle of ECMA TG1.
Optional library issues