On Jan 6, 2012, at 1:03 PM, Axel Rauschmayer wrote: >>> 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. >> >> 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. > > Ah, got it! You want ECMA-262 version 6 to allow an à la carte approach: > implementors can choose between non-strict ES5, strict ES5, ES6, etc.
No! ES6 will be a normative all or none spec, ignoring informative annexes and Annex B (revised to be normative-optional, meaning if you implement these APIs you must follow this annex, but you are not required to implement them). The issue is *how* the spec and implementations decide what is supported, and when to raise an error on new syntax mixed (after) old non-strict code (e.g., 'with'). >> 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. > > > I was thinking about how to specify only (exclusively) an ES6 environment. > You pretend to live in a “perfect ES6 world” and then only have two labels. > There are two ways out of this world: > > - Non-ES6 environments for implementors: refer to ECMA-262 version 5.1. > > - Non-ES6 environments for developers: simulate ES6 (via static compilation, > dynamic compilation, etc.). That's fair, and some developers will just assume ES6 and require latest l33t browsers. There are many possible bean-counting approaches depending on your business, hobby, mood, etc. For the spec we need an algorithm for syntax-as-opt-in. That's what the state machine is about. /be _______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

