FWIW, that looks great to me Allen, thanks for writing that down!
I specially like that it's going to take just about 22 years before `arguments` will be usable as Array ... eh eh eh, about the time :D Best Regards On Thu, Feb 26, 2015 at 10:17 PM, Allen Wirfs-Brock <[email protected]> wrote: > I send a new topic message about the following, but for some reason it > seems slow getting to es-discuss. So, I'm trying it via a replay: > > Here is a new proposal for some additional meta properties that should be > considered for ES7 > https://github.com/allenwb/ESideas/blob/master/ES7MetaProps.md > > > > > On Feb 26, 2015, at 12:19 PM, Mark S. Miller wrote: > > On Thu, Feb 26, 2015 at 10:52 AM, Andrea Giammarchi < > [email protected]> wrote: > >> `callee` could be spec'd similar to `super` and transpiled or resolved >> statically instead of dynamically, but `callee.caller` or in general the >> function `caller` raised many security concerns, giving you the ability to >> reach objects you probably shouldn't have. >> >> These two were different beasts, but `callee` for numerous reasons, and >> specially for anonymous and non referenced Object methods syntax, is really >> leaving a hole in the language, IMO >> > > > To respond to this, I searched in vain for the following message on > es-discuss, only to find it in a private thread. This message helped > contribute towards the syntactic direction we finally took, where allowable > new meta-accesses are introduces by <keyword>.<identifier>, but only for > keywords that are not valid expressions by themselves. ES6 contains the > first example of this in "new.target". Many thanks to David Herman for this > generalization -- I didn't see it at all. > > Note that most of the meta.* proposals I list below I am not advocating -- > indeed I think most are probably bad ideas. I include them only as examples > of what lexical context meta accesses could be soundly added to the > language as special forms. > > For the record: > > > ---------- Forwarded message ---------- > From: Mark S. Miller <[email protected]> > Date: Fri, Jan 2, 2015 at 5:10 PM > Subject: Re: Subclassing Builtins > > > [...] close but not quite. E has a lexical reflective access special form > that gives quite a lot of access -- the "meta" keyword. The important > features that make it non-objectionable: > > a) Its usage patterns is to extract from it the more specific reflective > access needed for each use. > b) Its API is designed to encourage such authority division on use. > c) It is understood and documented from the beginning as giving broad > access, so hopefully no one will mistake it for providing less access than > it does. > > So, hypothetically, if, say, we introduced "meta" as such a special form > to JS, then > > "meta.arguments" could provide arguments. > "meta.originalContructor" could provide the original constructor. > "meta.callee" could provide access to the function it appears in. > "meta.source" could provide access to the source code of the function it > appears in. > "meta.strictness" could be a boolean indicating the strictness of the code > it appears in. > "meta.environment" could provide a Map from variable name to value > reflecting the lexical scope at the place it appears. > > More dangerously but still plausibly > "meta" could provide an object with the above fields. The reason it is > more dangerous is that passing "meta" might give access to a field added in > a later spec. The reason it is still plausible is that passing "meta" > itself, unlike passing "arguments" or "meta.arguments", would be understood > as passing broad access. > > However, > "meta.caller", as something that provide[s] access to the current > activation's caller, must still be forbidden. > > > -- > Cheers, > --MarkM > _______________________________________________ > es-discuss mailing list > [email protected] > https://mail.mozilla.org/listinfo/es-discuss > > >
_______________________________________________ es-discuss mailing list [email protected] https://mail.mozilla.org/listinfo/es-discuss

