Newly revised Section 10 for ES3.1.
brendan at mozilla.org
Wed Jul 9 23:59:26 PDT 2008
On Jul 9, 2008, at 11:37 PM, Mark Miller wrote:
> What are the compatibility relationships between ES4 opt-in, ES4
> opt-in strict, ES4 strict, and ES4? I think it's clear that ES4 opt-in
> strict is a subset of ES4 opt-in.
You have to opt into ES4 to even utter the pragma |use strict|, so
there's no "ES4 strict" without opt-in.
"ES4" without opt-in is also not meaningfully different from the
compatible default version that browsers more-or-less agree on (which
has been called "ES3 + reality", which was one idea for ES3.1).
Keywords new in ES4, even though only contextually reserved under opt-
in versioning, would not be reserved in any context in the default
As for new syntax not involving new keywords, and new library APIs,
we have talked about supporting these additions in the default
version, since doing so cannot break existing code. Note that "new
syntax not involving new keywords" does not cover function sub-
statements, as noted in this thread -- there, compatibility issues
exist. Also, some implementations have extended ES3 with, e.g., const
-- again not compatibly with ES4 as proposed. So opt-in versioning
may (or may not, depending on browser-specific content) be required
to change the meaning of const or function in a block or other sub-
> Are there any other subset
> relationships among them? I hadn't realized till just now how large
> the gulf might be between ES4 opt-in and ES4.
What is "ES4" without opt-in version selection? How could it differ
from <script>...</script> or <script type="application/
> Do opt-in and strict
> define orthogonal switches? Can opt-in and non-opt-in programs
> co-exist in the same frame (global object)? We all need to clarify
> these issues.
Have you read
More information about the Es4-discuss