new instantiation design alternatives

Axel Rauschmayer axel at
Wed Sep 17 05:18:31 PDT 2014

I find the new suggestions hard to make sense of and the current approach quite elegant:

Foo[[Construct]](arg) ::=
    1. let obj = Foo[@@create]()
    2., arg)

To me, it seems that this is how things should work internally, because that’s what’s actually going on. Is there no other way to fix the following two problems? For example: to fix #2, couldn’t we somehow prevent direct invocations? I also don’t fully understand what #1 means.

1. If instances aren't sufficiently initialized by @@create, then instance objects could leak (e.g. via a nefarious decoupling between the @@create allocation process and the constructor-function initialization process)
2. @@create could be called directly

Observation about the new approach:: could the `if (new^) ...` check be turned into a method?


On 11 Sep 2014, at 18:35 , Allen Wirfs-Brock <allen at> wrote:

> At the last TC39 meeting ( and ) we agreed to a general direction to try for a new object instantiation design to replace @@create. 
> Since then I have gotten feedback and had design discussions with a number of individuals. This has lead to a number of refinements of the core design and one remaining point where there are strong contrary positions. The point of contention is about whether or not a subclass construction ever implicitly calls its superclass constructor.
>  summaries the  main syntactic changes since the meeting and provides rationales them. These features are common  to both alternates.  this is a good place to start, after reading the meeting notes. 
> I have prepared two longer Gists that outline the two alternatives designs, presents design rationales,  and provides usage examples for a number of likely use cases. Note that  there is more commonalities then differences among the two alternatives.  the syntactic choices and semantics of [[Construct]] are the same for both. 
> These two Gist have parallel construction for easy comparison. I suggest approaching this is by first readying through one of the Gists and then doing a side by side read through of the alternative to see the differences in the designs and usage.
> with implicit super construct if no local allocation
> explicit super construct required if no local allocation
> I appreciate it if major constructive feedback on any of these documents were made via Gist comments. 
> Allen
> _______________________________________________
> es-discuss mailing list
> es-discuss at

Dr. Axel Rauschmayer
axel at

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list