Discussion:
A new ES6 draft, Rev28
Allen Wirfs-Brock
2014-10-14 22:31:48 UTC
Permalink
ES6 Draft 29, http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#october_14_2014_draft_rev_28

This includes the major work items from the September TD39 meeting.

Changes include:

Removed loader pipeline and Reflect.Loader API (functionality being transfered to sperate specification)
Stream-lined module linking semantics for declarative modules.
Added Module request task
Removed Module declaration
Update Import declaration to include module imports.
Updated default export syntax and semantics to support export of anonymous default functions
Added Module Environment Records and indirect (import) bindings
Added Module evaluation jobs
Added Host hooks for module name normalization and source access.
Finished up ES6 eval function semantics
Eliminated unused abstract operations, PromiseAll, PromiseCatch, PromiseThen
Modified Promise.all so specification internally uses a List instead of an Array to accumulate result promises
Added @@iterator property to %IteratorPrototype%
Added requirement that the object returned by ordinary object [[Enumerate]] must inherit from %IteratorPrototype%
Removed own @@iterator properties from various standard iterators, they now inherit it from %IteratorPrototype%
Updated ToPropertyKey to accept Symbol wrapper objects, similar to how other primitive coercion abstract operations handle wrapper objects
ToNumber now recognizes binary and octal string numeric values.
Significant fix to destructuring assignment where the rest assignment target is itself a destructuring pattern
Changed ordinary object creation to dispatch object allocation through [[CreateAction]] internal slot instead of @@create method.
Converted all @@create methods into CreateAction abstract operations.
Eliminated Symbol.create and @@create.
super without an immediately following property specifier is now illegal in all MethodDefinition (no more implicit super using current method name)
super in a constructor call expression references the constructor?s [[Prototype]]
Function.prototype.toMethod no longer takes an optional name argument
Updated Annex A Grammars to match ES6
Resolved bugs: 3278-3273, 3271-3270, 3268, 3266, 3263-3262, 3260-3258, 3255-3254, 3252, 3247, 3245, 3243-3238, 3236-3231, 3228-3224, 3222-3221, 3218, 3216-3215, 3211-3207, 3204-3162, 3159-3151, 3149, 3144, 3132, 3130-3129, 3123, 3119, 3106, 3104, 3094, 3013, 2999, 2996, 2972, 2947, 2852, 2834, 2820-2819, 2812, 2792, 2726, 2684, 2683, 2524, 2341, 2302, 2039, 1788, 1608, 1595, 1111, 949, 921, 502, 164, 151
There may be an end to this tunnel...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141014/f96ea7d3/attachment.html>
Isiah Meadows
2014-10-15 00:14:36 UTC
Permalink
From: Allen Wirfs-Brock <allen at wirfs-brock.com>
To: es-discuss list <es-discuss at mozilla.org>
Date: Tue, 14 Oct 2014 15:31:48 -0700
Subject: A new ES6 draft, Rev28
ES6 Draft 29,
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#october_14_2014_draft_rev_28
This includes the major work items from the September TD39 meeting.
Removed loader pipeline and Reflect.Loader API (functionality being
transfered to sperate specification)
Stream-lined module linking semantics for declarative modules.
Added Module request task
Removed Module declaration
Update Import declaration to include module imports.
Updated default export syntax and semantics to support export of
anonymous default functions
Added Module Environment Records and indirect (import) bindings
Added Module evaluation jobs
Added Host hooks for module name normalization and source access.
Finished up ES6 eval function semantics
Eliminated unused abstract operations, PromiseAll, PromiseCatch,
PromiseThen
Modified Promise.all so specification internally uses a List instead of
an Array to accumulate result promises
Added requirement that the object returned by ordinary object
[[Enumerate]] must inherit from %IteratorPrototype%
now inherit it from %IteratorPrototype%

I was rather confused about this in the spec. Thankfully, it's fixed.
Updated ToPropertyKey to accept Symbol wrapper objects, similar to how
other primitive coercion abstract operations handle wrapper objects
ToNumber now recognizes binary and octal string numeric values.
Significant fix to destructuring assignment where the rest assignment
target is itself a destructuring pattern
Changed ordinary object creation to dispatch object allocation through
Where's the discussion?
super without an immediately following property specifier is now illegal
in all MethodDefinition (no more implicit super using current method name)
super in a constructor call expression references the constructor?s
[[Prototype]]
Function.prototype.toMethod no longer takes an optional name argument
Updated Annex A Grammars to match ES6
Resolved bugs: 3278-3273, 3271-3270, 3268, 3266, 3263-3262, 3260-3258,
3255-3254, 3252, 3247, 3245, 3243-3238, 3236-3231, 3228-3224, 3222-3221,
3218, 3216-3215, 3211-3207, 3204-3162, 3159-3151, 3149, 3144, 3132,
3130-3129, 3123, 3119, 3106, 3104, 3094, 3013, 2999, 2996, 2972, 2947,
2852, 2834, 2820-2819, 2812, 2792, 2726, 2684, 2683, 2524, 2341, 2302,
2039, 1788, 1608, 1595, 1111, 949, 921, 502, 164, 151
There may be an end to this tunnel...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141014/625b577b/attachment.html>
Rick Waldron
2014-10-15 00:21:07 UTC
Permalink
From: Allen Wirfs-Brock <allen at wirfs-brock.com
<javascript:_e(%7B%7D,'cvml','allen at wirfs-brock.com');>>
To: es-discuss list <es-discuss at mozilla.org
<javascript:_e(%7B%7D,'cvml','es-discuss at mozilla.org');>>
Date: Tue, 14 Oct 2014 15:31:48 -0700
Subject: A new ES6 draft, Rev28
ES6 Draft 29,
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#october_14_2014_draft_rev_28
This includes the major work items from the September TD39 meeting.
Removed loader pipeline and Reflect.Loader API (functionality being
transfered to sperate specification)
Stream-lined module linking semantics for declarative modules.
Added Module request task
Removed Module declaration
Update Import declaration to include module imports.
Updated default export syntax and semantics to support export of
anonymous default functions
Added Module Environment Records and indirect (import) bindings
Added Module evaluation jobs
Added Host hooks for module name normalization and source access.
Finished up ES6 eval function semantics
Eliminated unused abstract operations, PromiseAll, PromiseCatch,
PromiseThen
Modified Promise.all so specification internally uses a List instead of
an Array to accumulate result promises
Added requirement that the object returned by ordinary object
[[Enumerate]] must inherit from %IteratorPrototype%
now inherit it from %IteratorPrototype%
I was rather confused about this in the spec. Thankfully, it's fixed.
Updated ToPropertyKey to accept Symbol wrapper objects, similar to how
other primitive coercion abstract operations handle wrapper objects
ToNumber now recognizes binary and octal string numeric values.
Significant fix to destructuring assignment where the rest assignment
target is itself a destructuring pattern
Changed ordinary object creation to dispatch object allocation through
Where's the discussion?
https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-24.md

Enjoy ;)

Rick
super without an immediately following property specifier is now illegal
in all MethodDefinition (no more implicit super using current method name)
super in a constructor call expression references the constructor?s
[[Prototype]]
Function.prototype.toMethod no longer takes an optional name argument
Updated Annex A Grammars to match ES6
Resolved bugs: 3278-3273, 3271-3270, 3268, 3266, 3263-3262, 3260-3258,
3255-3254, 3252, 3247, 3245, 3243-3238, 3236-3231, 3228-3224, 3222-3221,
3218, 3216-3215, 3211-3207, 3204-3162, 3159-3151, 3149, 3144, 3132,
3130-3129, 3123, 3119, 3106, 3104, 3094, 3013, 2999, 2996, 2972, 2947,
2852, 2834, 2820-2819, 2812, 2792, 2726, 2684, 2683, 2524, 2341, 2302,
2039, 1788, 1608, 1595, 1111, 949, 921, 502, 164, 151
There may be an end to this tunnel...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141014/18a37737/attachment.html>
Isiah Meadows
2014-10-15 00:51:11 UTC
Permalink
Explains all. Thanks.

One other thing not mentioned is the difficulty in VM optimization for
functions implementing that property.
Post by Rick Waldron
Post by Allen Wirfs-Brock
From: Allen Wirfs-Brock <allen at wirfs-brock.com>
To: es-discuss list <es-discuss at mozilla.org>
Date: Tue, 14 Oct 2014 15:31:48 -0700
Subject: A new ES6 draft, Rev28
ES6 Draft 29,
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#october_14_2014_draft_rev_28
This includes the major work items from the September TD39 meeting.
Removed loader pipeline and Reflect.Loader API (functionality being
transfered to sperate specification)
Stream-lined module linking semantics for declarative modules.
Added Module request task
Removed Module declaration
Update Import declaration to include module imports.
Updated default export syntax and semantics to support export of
anonymous default functions
Added Module Environment Records and indirect (import) bindings
Added Module evaluation jobs
Added Host hooks for module name normalization and source access.
Finished up ES6 eval function semantics
Eliminated unused abstract operations, PromiseAll, PromiseCatch,
PromiseThen
Modified Promise.all so specification internally uses a List instead of
an Array to accumulate result promises
Added requirement that the object returned by ordinary object
[[Enumerate]] must inherit from %IteratorPrototype%
now inherit it from %IteratorPrototype%
I was rather confused about this in the spec. Thankfully, it's fixed.
Updated ToPropertyKey to accept Symbol wrapper objects, similar to how
other primitive coercion abstract operations handle wrapper objects
ToNumber now recognizes binary and octal string numeric values.
Significant fix to destructuring assignment where the rest assignment
target is itself a destructuring pattern
Changed ordinary object creation to dispatch object allocation through
Where's the discussion?
https://github.com/rwaldron/tc39-notes/blob/master/es6/2014-09/sept-24.md
Enjoy ;)
Rick
Post by Allen Wirfs-Brock
super without an immediately following property specifier is now
illegal in all MethodDefinition (no more implicit super using current
method name)
super in a constructor call expression references the constructor?s
[[Prototype]]
Function.prototype.toMethod no longer takes an optional name argument
Updated Annex A Grammars to match ES6
Resolved bugs: 3278-3273, 3271-3270, 3268, 3266, 3263-3262, 3260-3258,
3255-3254, 3252, 3247, 3245, 3243-3238, 3236-3231, 3228-3224, 3222-3221,
3218, 3216-3215, 3211-3207, 3204-3162, 3159-3151, 3149, 3144, 3132,
3130-3129, 3123, 3119, 3106, 3104, 3094, 3013, 2999, 2996, 2972, 2947,
2852, 2834, 2820-2819, 2812, 2792, 2726, 2684, 2683, 2524, 2341, 2302,
2039, 1788, 1608, 1595, 1111, 949, 921, 502, 164, 151
There may be an end to this tunnel...
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141014/95297a54/attachment-0001.html>
Kevin Smith
2014-10-15 03:00:24 UTC
Permalink
Post by Isiah Meadows
One other thing not mentioned is the difficulty in VM optimization for
functions implementing that property.
This is really vague - can you explain?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141014/666837a1/attachment.html>
Kevin Smith
2014-10-15 03:31:35 UTC
Permalink
Post by Allen Wirfs-Brock
ES6 Draft 29,
http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#october_14_2014_draft_rev_28
This is awesome : )
Post by Allen Wirfs-Brock
This includes the major work items from the September TD39 meeting.
- Removed loader pipeline and Reflect.Loader API (functionality being
transfered to sperate specification)
Any discussion about will author this separate spec - TC39?
- Updated default export syntax and semantics to support export of
anonymous default functions
Interestingly, class expressions are not "HoistableDeclarations" which
might result in the (somewhat) surprising behavior previously identified:

export default class C { }
let c = new C; // Error
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141014/48f25145/attachment.html>
Allen Wirfs-Brock
2014-10-15 06:04:23 UTC
Permalink
Post by Allen Wirfs-Brock
ES6 Draft 29, http://wiki.ecmascript.org/doku.php?id=harmony:specification_drafts#october_14_2014_draft_rev_28
This is awesome : )
thanks
Post by Allen Wirfs-Brock
This includes the major work items from the September TD39 meeting.
Removed loader pipeline and Reflect.Loader API (functionality being transfered to sperate specification)
Any discussion about will author this separate spec - TC39?
yes, same folks driving the work. Just decoupled the specs and schedules.
Post by Allen Wirfs-Brock
Updated default export syntax and semantics to support export of anonymous default functions
export default class C { }
let c = new C; // Error
Hmm...I think you're right. Not clear why classes shouldn't be default exports, even though they aren't hoistable. Also, since an anonymous function can be exported as default I don't see why an anonymous class shouldn't also be acceptable.

Should be easy things to fix.

This is why we put drafts out for review!

thanks again,
Allen

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.mozilla.org/pipermail/es-discuss/attachments/20141014/7f8668f9/attachment.html>
Loading...