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

