New ES6 draft now available

Allen Wirfs-Brock allen at
Fri Nov 23 09:48:28 PST 2012

The Nov. 22, 2012 draft of the ES6 specificaiotn is now at 

Here are the release notes:

Changes marked as “Rev 12”

This is a major revision that takes the first step at reforming the internal Meta-Object Protocol (the “internal methods”) and extending it to support Proxies. Quite a bit of material has moved within the document. The overall document organization is in a state of flux and some sections will be moved in the future. For now, somethings have been temporarily left in their old locations to preserve change markup relative to ES 5.1 that might otherwise get lost.

Changes include:

	• Reorganized Chapter 8 into separate language type and specification type sub sections
	• Added Symbol property keys to the definition of the Object Type. terminology migration from talking about “property names” to “property keys”.
	• Restructured 8.6.2 (now as the abstract interface definition of the internal object MOP. eliminated Table 9 (Internal props of only some objects) and distribute related material to definitions of specific object forms. Moved discussion of internal method invariants plus invariant enforced by proxies into separate place order subsection. This needs a complete rewrite to clearly define the actual internal methods invariants.
	• MOP changes: Added [[GetInheritance]]/[[SetInheritance]] as internal methods for accessing [[Prototype]] internal prototype chain. Added [[[IsExtensible]]/[[PreventExtensions]]. Replaced [[Get]]/[[Put]] with [[GetP]]/[[SetP]]. At some point we may be able to rename these as [[Get]]/[[Set]]. Eliminated [[GetProperty]], [[CanPut]], [[HasProperty]], [[DefaultValue]].  Added Keys, [[OwnPropertyKeys]], [[Freeze]], [[Seal]], [[IsFrozen]], [[IsSealed]].
	• [[DefaultValue]] now part of ToPrimitive with a possible dispatch through a @@ToPrimitive symbol keyed method on objects. Define a @@ToPrimitive method on Date.prototype to take care of special date [[DefaultValue]] rules.
	• As part of “proto climbing” reform refactored GetValue and PutValue to directly incorporate the logic for property references on primitive values. Eliminated special [[Put]] and [[Get]] for primitive bases.
	• Eliminated all “strict” arguments to internal methods that were used to request trapping in strict mode”. All such methods now always return true/false success status. It’s up to the called (usually via a convenience function) to throw on failure.
	• Section 8.3-8.5 now provided the concrete implementation of the MOP interface for all ordinary and exotic object forms defined in the specification. this will eventually move into a new top level section following the current section 10.
	• Defined Symbol objects as a kind of exotic object. Its internal methods make it stateless and immutable.
	• In 9.3 added a number of convenience functions that operate at the level of the generic object MOP. These can be thought of as generic “derived” operations that will work with any kind of object. They are now used throughout the specification.
	• Added Table 25 (incomplete) in 10.3 to define the “intrinsic objects” of a code realm
	• instanceof operator no longer uses an internal method. Instead, extensible via a @@hasInstance symbol-keyed regular method.
	• Restated most Object.* reflection functions to delegate to corresponding MOP internal method.
	• Defined all of the functions in the @Reflect module corresponding to MOP internal operations.
	• Resolved bugs: 982, 979, 978, 973, 971-969, 966, 960, 958-956, 954-952, 950, 948-945, 943-936, 934-925, 923, 920-914, 912-904, 902-883, 881-873, 870-853, 851-839, 837-818, 808, 785, 672, 591, 400, 150, 100
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the es-discuss mailing list