On May 1, 2010, at 2:49 PM, Dmitry A. Soshnikov wrote:
Hello Mark,
Sunday, May 2, 2010, 1:02:36 AM, you wrote:
On Sat, May 1, 2010 at 1:27 PM, Brendan Eich <[email protected]>
wrote:
On May 1, 2010, at 12:34 PM, Faisal Vali wrote:
As I read the proposal, I do wish an invoke-like trap had been
accepted - but I understand that there were some technicalities
that
proved unresolvable.
Everyone wants __noSuchMethod__
I don't. I want proxies instead. ;)
I meant "Everyone" to mean "many people" -- for the convenience.
By the way, why exactly proxies? And not special meta hooks such as
__noSuchMethod__, __construct__, __call__, __get__, __set__ and other?
Mark and Tom's write-up is on the wiki, have you read it?
Stratifying means native objects need no magic meta methods which can
be hijacked by user code. This is important for the spec's soundness,
as well as for security and ease of implementation/optimization.
Nothing reserved __names__, that is just a Python convention, and C,
or really the C pre-processor I suppose. The ship has sailed. Even if
we could reserve __names__, mixing traps and base methods is a recipe
for spec unsoundness, insecurity, and implementation bugs and slowness.
Proxies avoid all these problems. They are truly winning, we have an
implementation nearly done for SpiderMonkey so I can write this as an
implementor.
The only issue that nags at us is the loss of a convenient invoke trap
that preserves evaluation order. One could be added, but it is
tantamount to creating (or hitting a cached) Proxy, in order to
preserve order of evaluation.
/be
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss