Couldn’t all ES6 built-ins come from modules? Then I’d expect them to be in Top 
Lex instead of their own environment.

On May 4, 2012, at 6:42 , Allen Wirfs-Brock wrote:

> Goals:
>   Duplicate current browser global semantics
>         Existing ES5 built-ins are properties of "the global object"
>         Global Function and Var declarations create properties of the global 
> object
>         Ad hoc semantics relating explicit Function/Var global bindings and 
> non-declared global object properties include attribute and inheritance issues
>    Don't  make the web compatible global object worse
>         New declaration forms (let/const/class) shouldn't pollute the global 
> object
>         Don't add any new ES built-in bindings to the global object
>    Don't force non-browser or nested ECMAScript global environment hosts to 
> duplicate quirky browser global semantics
> 
> Basic Approach
>    Define a global environment model that is flexible enough to both maintain 
> compat. with existing browser semantics and allow simpler non-browser global 
> semantics
> 
> Three sub-environment of the global environment record:
>      Built-ins: declarative environment record , immutable bindings for 
> standard and impl defined built-in globals
>      Global Object: A Object environment record, that shadows the built-ins.  
> Content is host defined and may replicate global bindings for globals
>      Top Lex: A declarative environment record that shadows the Global Object 
> environment for lexical bindings created by top level declarations
> 
> These sub-environments are hidden behind the environment record interface of 
> a single global environment record, hence their existence does not impact the 
> rest of the specification.
> When a global environment is initialized it can be configured so var and 
> function declaration bindings go into  either the Global Object environment 
> or the  Top Lex environment
> 
> The structuring of Top Lex to support declarations from multiple 
> program/script fragments is an orthogonal issue.  However, I favor a single 
> top lex shared by all program/script fragments.
> 
> Common ways to configure the global environment:
> 
>   Browser compat:
>       ES5 built-in global bindings replicated on the global object
>       any new ES6 built-in global bindings are not replicated on the global 
> object
>       global var/function declarations create bindings on global object 
> environment
>       global const/let/class/module declarations create bindings in Top Lex
>       This would be specified in the browser specific optional/normative 
> annex.
> 
>   Clean Global Object
>        No built-ins replicated on global object
>        all ES top level declarations (including var/function) create binding 
> in Top Lex
>        global object properties are only be created via explicit reference to 
> global this
> 
>    No Global Object
>       Global object is undefined
>       all ES top level declarations (including var/function) create binding 
> in Top Lex
> 
> 
> Thoughts?  I'm ready to write the spec for this.
> 
> Allen
> _______________________________________________
> es-discuss mailing list
> [email protected]
> https://mail.mozilla.org/listinfo/es-discuss
> 

-- 
Dr. Axel Rauschmayer
[email protected]
twitter.com/rauschma

Home: rauschma.de
Blog: 2ality.com

_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to