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

Reply via email to