ES6 doesn't need opt-in

Mark S. Miller erights at
Fri Jan 6 19:48:47 PST 2012

On Fri, Jan 6, 2012 at 12:29 PM, Brendan Eich <brendan at> wrote:

> On Jan 6, 2012, at 12:09 PM, Axel Rauschmayer wrote:
> >> Rather, we should minimize the state machine and how we talk about it.
> We could generalize it using Curr, Next, Curr&Next, and Curr-Next labels.
> >
> > I’m awfully sorry for belaboring this point. But the labels and the
> quote below don’t go together.
> >
> > Quoting Brendan:
> >
> >>> - ES6 is a superset of ES5.strict.
> >>
> >> That's always been promised.
> >
> >
> > Then I would only expect two labels: ES6 and non-strict
> You're counting different beans from Mark's "modes" and from Allen's
> states.

Hi Brendan, as I read it, Axel captures exactly the two modes I have in

> The reason the state machine matters is implementation (including the fine
> spec, the normative implementation). Authors can think of writing
> non-strict ES5 or lower, or ES5 strict -- or ES6 if they use a bit of
> novelty. Different beans again.
> I'm not sure what informs your label count expectation. In writing JS for
> the web over the next several years, you might have to worry quite a bit
> about ES5 strict vs. ES6. You can't just assume ES6 works everywhere that
> ES5 strict works.

The issue is: What does it mean for a browser to be standards compliant
once it is fully conformant with ES6? Yes, of course there will be a long
phase of partial ES6 compliance as features are incrementally rolled out.
Just as there was with ES5. But during this period, no one claims full
conformance with ES6, so standards compliance mean only compliance with
ES5. To be standards compliant once one is ES6 compliant, the state machine
+ ES6 keeps some portion of the ES5 spec as a live normative spec because
it is reachable from the state machine. The only question is: Which portion
is reachable? With Allen's plan, all of it. With the one line revision Axel
and I have in mind, the ES5-strict spec stops being reachable as normative
for ES6 compliant browsers. It is dead code that can be considered garbage.

In the ES6 era, I hope to be able to say "ES5-strict is dead. Long live

However, ES5-non-strict (or "non-strict", or "ES3") will continue to live
for the foreseeable future. It will probably outlive most of us.

> /be
> >
> > ES6-only => (a subset of) ES6
> > ES5-only => only possible for non-strict constructs => non-strict
> > ES5&ES6 => (a subset of) ES6
> > ES5~EAS6 => not possible  (“The construct has identical syntax and
> static semantics in both ES5 and ES6, but differing semantics.”)
> >
> > --
> > Dr. Axel Rauschmayer
> > axel at
> >
> > home:
> > twitter:
> > blog:
> >

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list