A new ES6 draft, Rev28

# Allen Wirfs-Brock (10 years ago)

ES6 Draft 29, harmony:specification_drafts#october_14_2014_draft_rev_28

This includes the major work items from the September TC39 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...

# Isiah Meadows (10 years ago)

From: Allen Wirfs-Brock <allen at wirfs-brock.com>

Removed own @@iterator properties from various standard iterators, they now inherit it from %IteratorPrototype%

I was rather confused about this in the spec. Thankfully, it's fixed.

Eliminated Symbol.create and @@create.

Where's the discussion?

# Rick Waldron (10 years ago)

On Tuesday, October 14, 2014, Isiah Meadows <impinball at gmail.com> wrote:

Where's the discussion?

rwaldron/tc39-notes/blob/master/es6/2014-09/sept-24.md

Enjoy ;)

# Isiah Meadows (10 years ago)

Explains all. Thanks.

One other thing not mentioned is the difficulty in VM optimization for functions implementing that property.

# Kevin Smith (10 years ago)

One other thing not mentioned is the difficulty in VM optimization for functions implementing that property.

This is really vague - can you explain?

# Kevin Smith (10 years ago)

ES6 Draft 29, harmony:specification_drafts#october_14_2014_draft_rev_28

This is awesome : )

  • 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
# Allen Wirfs-Brock (10 years ago)

On Oct 14, 2014, at 8:31 PM, Kevin Smith wrote:

This is awesome : )

thanks

Any discussion about will author this separate spec - TC39?

yes, same folks driving the work. Just decoupled the specs and schedules.

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

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,

# John Barton (10 years ago)

On Tue, Oct 14, 2014 at 11:04 PM, Allen Wirfs-Brock <allen at wirfs-brock.com>

wrote:

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)

Any discussion about will author this separate spec - TC39?

yes, same folks driving the work. Just decoupled the specs and schedules.

I just tried to lookup some thing about modules on people.mozilla.org/~jorendorff/es6-draft.html. The Loader related stuff is now either unrecognizable or completely different. Why were such drastic changes made and where is the discussion about the path forward?

jjb

# Rick Waldron (10 years ago)

On Sun, Nov 2, 2014 at 2:07 PM, John Barton <johnjbarton at google.com> wrote:

On Tue, Oct 14, 2014 at 11:04 PM, Allen Wirfs-Brock <allen at wirfs-brock.com

wrote:

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)

Any discussion about will author this separate spec - TC39?

yes, same folks driving the work. Just decoupled the specs and schedules.

I just tried to lookup some thing about modules on people.mozilla.org/~jorendorff/es6-draft.html. The Loader related stuff is now either unrecognizable or completely different. Why were such drastic changes made and where is the discussion about the path forward?

Removed.

rwaldron/tc39-notes/blob/master/es6/2014-09/sept-25.md#loader