excluding features from sloppy mode

Mark Miller erights at gmail.com
Mon Dec 31 22:09:26 PST 2012

On Mon, Dec 31, 2012 at 9:12 PM, Brendan Eich
<brendan at mozilla.com<https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=brendan@mozilla.com>
> wrote:

> Mark S. Miller wrote:
>> Thanks for clarifying the primacy of "the rule". It was not clear, and it
>>> >  does not match what Dave proposed that Mark reconfirmed as "1JS".
>>> Although
>>> >  Dave left some wiggle room in his first post, I want to say that my
>>> attempts
>>> >  to make all new body-forms strict don't fit under the consensus "1JS"
>>> name
>>> >  and I'm not trying to usurp it. Your proposal should be called "2JS"
>>> since
>>> >  to get the new stuff, you have to "use strict".
>> In that case, I did not understand Dave's clarification. I thought
>> Dave clarified this to mean only no new additional modes or opt-ins
>> beyond those we already have, i.e., no mime types, additional pragmas,
>> etc.
> Yes, that much -- but more.
>    As I understood Dave's clarification, 1JS is orthogonal to our
>> decisions about how many of the new features to make available in
>> sloppy mode.
> No, Dave explicitly proposed that module be available in sloppy mode:
> https://mail.mozilla.org/**pipermail/es-discuss/2011-**
> December/019112.html<https://mail.mozilla.org/pipermail/es-discuss/2011-December/019112.html>
> "We can do better, and the way we can do it is with modules. We can
> introduce module syntax in a backwards-compatible way, and use them as the
> implicit opt-in for any new semantics [2]."

Sorry, I have only been skimming this thread and didn't realize that Kevin
had dropped "module". Yes, without even "module" being an implicit strict
opt-in, we have a different beast, and one that I don't like.

>    Andreas' position (and Kevin's pre-compromise position)
>> is then consistent with 1JS.
> It may be that we can relax "1JS" to mean less than Dave proposed, but I
> don't agree if it means "use strict" must be written to use any new syntax.
> Not that I'm playing brinksmanship games, just saying. Dave proposed it,
> the "1JS" name was coined soon after, and module in sloppy mode was always
> part of it.
> Kevin separated module back out in his pre-compromise position but did not
> try to use or abuse "1JS" for that position.
> I'm pretty happy with Kevin's compromise. Here it is again:
> (1) No opt-in required for new syntax, except:
> (2) No breaking changes to sloppy mode, and
> (3) No grammar contortions (e.g. let) to support sloppy mode.  And
> (4) All new syntax forms with code bodies are implicit strict.
> What do you say?

My preference order:

1.a) To the extent clean and practical, new features are available only in
strict mode,
1.b) Lexical f-i-b is available in sloppy mode as it is in ES6 strict,
since no browser will prohibit f-i-b syntax in sloppy mode. Better to have
the f-i-b sloppy semantics be aligned with the ES6 f-i-b strict semantics.
1.c) modules (both inline and out) implicitly opt-in to strict mode.
1.d) classes implicitly opt-in to strict mode.
1.e) nothing else causes an implicit strict mode opt-in.

2) Like #1 but without #1.d (which I think of as Andreas' position)

3) Like #1, but #1.e is replaced with
3.e) All code bodies within new function syntax is implicitly strict.

4) Like #3, but #1.a is replaced with
4.a) To the extent clean and practical, new features are available in
sloppy mode.
I take it this is essentially your position and Kevin's compromise position?

5) Where things stood at the end of the last TC39 meeting, where we were
violating the "clean" of #4.a to kludge things like "let",
non-duplicated-formals-sometimes, no-arguments-sometimes, weird scoping for
default argument expressions, etc, into sloppy mode.

6) Like #2 but without #1.c. Is this essentially Kevin's pre-compromise

>  Instead, what you say above seems to agree with what I thought 1JS
>> meant when I posted my inflammatory message.
> I don't know what you thought, but Dave always included module. You seemed
> to be reacting to 'let' contortions followed by function-in-block having
> two semantics, one de-facto and a browser-specific mess, the other
> block-scoped (hoisted binding and initialization of binding). The two are
> not the same!
> If you stick with what Dave proposed, do you really object once again?
>    If this is what 1JS
>> means, then, again, I do not subscribe to 1JS.
> I don't know what "this" you mean. Can you be specific?

No longer relevant.

>  If we cannot come to a common understanding of what 1JS means, we
>> should find other terminology.
> We have an archive, I keep posting links. True, not every message is
> unambiguous, correct, and otherwise complete. But "1JS" as
> module-in-sloppy-mode-opts-**into-ES6(-and-into-strict) was the original
> post (plus some followup on the -and-into-strict bit).
> Again I explicitly *do not* call my "new bodies are strict by fiat" / "new
> syntax is its own opt-in (where we can get away with it without breaking
> the web)" combo "1JS". I'd like it to be ES6, though :-P. Perhaps we should
> focus on the substantial points and not worry about the "1JS" brand just
> yet.

yes. Good new year's resolution!

> /be
> ______________________________**_________________
> es-discuss mailing list
> es-discuss at mozilla.org<https://mail.google.com/mail/?view=cm&fs=1&tf=1&to=es-discuss@mozilla.org>
> https://mail.mozilla.org/**listinfo/es-discuss<https://mail.mozilla.org/listinfo/es-discuss>

Text by me above is hereby placed in the public domain

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20121231/6de95038/attachment-0001.html>

More information about the es-discuss mailing list