On Tue, Feb 18, 2014 at 11:23 AM, Allen Wirfs-Brock
<[email protected]>wrote:

>
> On Feb 18, 2014, at 11:09 AM, Domenic Denicola wrote:
>
> > From: Allen Wirfs-Brock <[email protected]>
> >
> >> No, even if you removed the checks in Map and Promise and WeakMap that
> prevent them from trying to initialize an object that lacks the appropriate
> internal slots it still wouldn't work because obj does not have the
> internal slots necessary to support the built-in operations upon those
> objects and implementations commonly implement such objects in a manner
> that prevents the dynamic addition of such slots.
> >
> >> The whole purpose of @@create is to allow implementations to allocate
> prior to invoking a constructor the correctly shaped object for built-ins.
> >
> > Well, but you could just move the internal slot initialization into the
> constructor itself (as Scott has done in his es6-shim promises). Unlike
> e.g. `Array`, the objects returned by `Promise[@@create]` are not exotic
> objects; they are simply normal objects with some internal slots
> initialized. So the movement of code between `@@create` and the constructor
> does not impact very much.
>
> No, the whole point of @@create was to avoid that.  In fact, initially I
> tried to specify something like that and implementors objected.  The
> problem is that some implementations want to allocate different shaped
> object records for built-ins with specific internal slots and they can't
> dynamically change the size of the a normal object record that lacks those
> slots.  It doesn't have anything to do with exotic objectness (which is
> about the behavior of the internal MOP methods) but instead about the
> memory layout of the objects.
>
> This was was discussed in detail 2+ years ago and there was consensus that
> @@create was the way to go. Now it's time to implement it.
>
> It probably isn't appropriate for implementors to unilaterally decide
> whether or not this is a low priority feature.


Hi Allen, I agree with the rest, but I'm puzzled by your statement above.
ES6 is large. It has many pieces. Implementors cannot do everything first.
TC39 does not state a priority order among ES6 features so implementors
must. It has always been thus.




>  However, I can understand how they might reach that conclusion if
> application and framework authors aren't vocal if they consider it to be a
> high priority feature.
>

It is certainly valid and valuable for the community to provide feedback,
to help implementors prioritize. But it is still the implementors that must
make these priority order decisions.



>
> The reason I championed this capability was because I had heard years of
> complaining from JS developers about not being able to "subclass" Array,
> Date, etc.
>
> Allen




-- 
    Cheers,
    --MarkM
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to