Browse Source

RELEASES ES6/7 -> ES2015/2016 renames

pull/1240/head
Sami Vaarala 8 years ago
parent
commit
c0463f39d5
  1. 95
      RELEASES.rst

95
RELEASES.rst

@ -311,11 +311,11 @@ Released
(Duktape.modSearch) (Duktape.modSearch)
* Add Object.setPrototypeOf() and Object.prototype.__proto__, both borrowed * Add Object.setPrototypeOf() and Object.prototype.__proto__, both borrowed
from ES6 draft, to improve internal prototype handling from ES2015 draft, to improve internal prototype handling
* Add proxy objects borrowed from ES6 draft to allow property virtualization, * Add proxy objects borrowed from ES2015 draft to allow property
subset limited to the following traps: has, get, set, deleteProperty, virtualization, subset limited to the following traps: has, get, set,
enumerate, ownKeys deleteProperty, enumerate, ownKeys
* Add property name as a non-standard setter/getter argument to make it * Add property name as a non-standard setter/getter argument to make it
possible to share a single setter/getter pair for multiple properties possible to share a single setter/getter pair for multiple properties
@ -1002,7 +1002,7 @@ Released
* Add support for Node.js Buffer API (GH-152) * Add support for Node.js Buffer API (GH-152)
* Add support for Khronos/ES6 TypedArray API (subset of ES6 API) (GH-151) * Add support for Khronos/ES2015 TypedArray API (subset of ES2015 API) (GH-151)
* Add duk_push_external_buffer(), duk_is_external_buffer(), and * Add duk_push_external_buffer(), duk_is_external_buffer(), and
duk_config_buffer() which provide support for external buffers, i.e. buffer duk_config_buffer() which provide support for external buffers, i.e. buffer
@ -1252,7 +1252,7 @@ Released
* Zero buffer data in ArrayBuffer and typed array constructors even when * Zero buffer data in ArrayBuffer and typed array constructors even when
DUK_USE_ZERO_BUFFER_DATA is not set (default is set) to respect explicit DUK_USE_ZERO_BUFFER_DATA is not set (default is set) to respect explicit
zeroing guarantee of Khronos/ES6 (GH-484) zeroing guarantee of Khronos/ES2015 (GH-484)
* Add duk_require_function() and duk_require_callable() (GH-441) * Add duk_require_function() and duk_require_callable() (GH-441)
@ -1443,10 +1443,10 @@ Released
which reduces low memory startup size using default RAM-based built-ins which reduces low memory startup size using default RAM-based built-ins
from 27kB to 24kB (GH-642) from 27kB to 24kB (GH-642)
* Allow ES6 unescaped curly braces ('{' and '}') in regular expressions * Allow ES2015 unescaped curly braces ('{' and '}') in regular expressions
(non-standard before ES6 Annex B) when no valid quantifier can be parsed; (non-standard before ES2015 Annex B) when no valid quantifier can be parsed;
this improves compatibility with existing Javascript code which often assumes this improves compatibility with existing Javascript code which often
support for literal curly braces (GH-142, GH-513, GH-547, GH-565) assumes support for literal curly braces (GH-142, GH-513, GH-547, GH-565)
* Change Function object .toString() output to be Emscripten compatible: * Change Function object .toString() output to be Emscripten compatible:
anonymous functions won't get an automatic "anon" name, and the function anonymous functions won't get an automatic "anon" name, and the function
@ -1741,7 +1741,7 @@ Planned
was copied into internal string representation as is) (GH-1020) was copied into internal string representation as is) (GH-1020)
* Incompatible change: change Object constructor argument coercion policy * Incompatible change: change Object constructor argument coercion policy
to match ES6 requirements for .keys(), .getOwnPropertyNames(), to match ES2015 requirements for .keys(), .getOwnPropertyNames(),
.getOwnPropertyDescriptor(), .getPrototypeOf(), .freeze(), .isFrozen(), .getOwnPropertyDescriptor(), .getPrototypeOf(), .freeze(), .isFrozen(),
.seal(), .isSealed(), .preventExtensions(), and .isExtensible(); .seal(), .isSealed(), .preventExtensions(), and .isExtensible();
instead of rejecting non-objects with a TypeError, they are now coerced instead of rejecting non-objects with a TypeError, they are now coerced
@ -1847,7 +1847,7 @@ Planned
tools/configure.py instead (GH-929) tools/configure.py instead (GH-929)
* Incompatible change: remove duk_to_defaultvalue() which invoked the * Incompatible change: remove duk_to_defaultvalue() which invoked the
[[DefaultValue]] specification algorithm removed in ES6 (it was folded [[DefaultValue]] specification algorithm removed in ES2015 (it was folded
to ToPrimitive()), use duk_to_primitive() instead (GH-984) to ToPrimitive()), use duk_to_primitive() instead (GH-984)
* Incompatible change: duk_gc() no longer allows a NULL context pointer * Incompatible change: duk_gc() no longer allows a NULL context pointer
@ -1897,60 +1897,61 @@ Planned
genbuiltins.py to reduce code footprint for ROM-based built-ins and custom genbuiltins.py to reduce code footprint for ROM-based built-ins and custom
bindings; footprint reduction is around 14-15kB on 32-bit targets (GH-872) bindings; footprint reduction is around 14-15kB on 32-bit targets (GH-872)
* Add experimental support for ES6 Symbol built-in (disabled by default, * Add experimental support for ES2015 Symbol built-in (disabled by default,
enable using DUK_USE_SYMBOL_BUILTIN), duk_is_symbol() API call (GH-982, enable using DUK_USE_SYMBOL_BUILTIN), duk_is_symbol() API call (GH-982,
GH-1227, GH-1237) GH-1227, GH-1237)
* Allow ES6 Annex B unescaped right bracket (']') in regular expressions * Allow ES2015 Annex B unescaped right bracket (']') in regular expressions
(non-standard before ES6 Annex B), left bracket ('[') not yet supported (non-standard before ES2015 Annex B), left bracket ('[') not yet supported
because it needs backtracking (GH-871) because it needs backtracking (GH-871)
* Allow ES6 Annex B identity escapes, i.e. allow identity escapes also for * Allow ES2015 Annex B identity escapes, i.e. allow identity escapes also for
identifier part characters; the support is not yet complete as Duktape identifier part characters; the support is not yet complete as Duktape
won't backtrack on e.g. an invalid hex escape and treat it literally won't backtrack on e.g. an invalid hex escape and treat it literally
(GH-926) (GH-926)
* Add support for ES6 computed property names in object literals * Add support for ES2015 computed property names in object literals
({ [1+2]: 'three' }), identifier shorthand ({ foo, bar }), and method ({ [1+2]: 'three' }), identifier shorthand ({ foo, bar }), and method
definition shorthand ({ func(a,b) { return a+b; } }); however, computed definition shorthand ({ func(a,b) { return a+b; } }); however, computed
name for method definition ({ ['foo' + 'bar'](a,b) { ... } }) is not name for method definition ({ ['foo' + 'bar'](a,b) { ... } }) is not
yet supported (GH-985, GH-1190, GH-1193) yet supported (GH-985, GH-1190, GH-1193)
* Add support for ES7 exponentiation and exponentiation assignment operators, * Add support for ES2016 exponentiation and exponentiation assignment
e.g. "2 ** 10" evaluates to 1024, avoiding the cost of an Ecmascript call to operators, e.g. "2 ** 10" evaluates to 1024, avoiding the cost of an
Math.pow() while also being more readable (GH-987, GH-997) Ecmascript call to Math.pow() while also being more readable (GH-987,
GH-997)
* Add a Reflect built-in, provides Reflect.construct() etc. from ES6; some * Add a Reflect built-in, provides Reflect.construct() etc. from ES2015; some
features like constructor retargeting require ES6+ semantics and are thus not features like constructor retargeting require ES2015+ semantics and are thus
yet supported (GH-1025) not yet supported (GH-1025)
* Add support for ES6 \u{H+} escape syntax for source code string literals * Add support for ES2015 \u{H+} escape syntax for source code string literals
and identifiers, no RegExp support yet (requires RegExp /u Unicode mode) and identifiers, no RegExp support yet (requires RegExp /u Unicode mode)
(GH-1001) (GH-1001)
* Add support for ES6 octal (0o123) and binary (0b100001) in source code * Add support for ES2015 octal (0o123) and binary (0b100001) in source code
literals and ToNumber() coercion (e.g. "+'0o123'") (GH-1057, GH-1084) literals and ToNumber() coercion (e.g. "+'0o123'") (GH-1057, GH-1084)
* Add support for ES6 String.prototype.codePointAt(), String.fromCodePoint(), * Add support for ES2015 String.prototype.codePointAt(), String.fromCodePoint(),
and String.prototype.repeat() (GH-1043, GH-1049, GH-1050) and String.prototype.repeat() (GH-1043, GH-1049, GH-1050)
* Add support for ES6 Math.hypot(), Math.cbrt(), Math.log2(), Math.log10(), * Add support for ES2015 Math.hypot(), Math.cbrt(), Math.log2(), Math.log10(),
Math.trunc() (GH-1069, GH-1093, GH-1095) Math.trunc() (GH-1069, GH-1093, GH-1095)
* Add support for ES6 Object.assign() (GH-1064) * Add support for ES2015 Object.assign() (GH-1064)
* Add support for ES6 Object.is() and duk_samevalue() API call (GH-1068) * Add support for ES2015 Object.is() and duk_samevalue() API call (GH-1068)
* Add TextEncoder and TextDecoder built-ins (the Encoding API) which allow * Add TextEncoder and TextDecoder built-ins (the Encoding API) which allow
Ecmascript code to read and write text stored in an ArrayBuffer or a plain Ecmascript code to read and write text stored in an ArrayBuffer or a plain
buffer (GH-975) buffer (GH-975)
* Respect ES6 enumeration order (array index keys, other keys in insertion * Respect ES2015 enumeration order (array index keys, other keys in insertion
order) for Object.getOwnPropertyNames(), also use the same order in order) for Object.getOwnPropertyNames(), also use the same order in
for-in, Object.keys(), and duk_enum() even though that's not strictly for-in, Object.keys(), and duk_enum() even though that's not strictly
required by ES6 or ES7 (GH-1054) required by ES2015 or ES2016 (GH-1054)
* Follow ES7 behavior when a Proxy instance is used as a for-in target: * Follow ES2016 behavior when a Proxy instance is used as a for-in target:
the "ownKeys" trap is invoked instead of the "enumerate" trap, and the the "ownKeys" trap is invoked instead of the "enumerate" trap, and the
"enumerate" trap is thus obsoleted entirely (GH-1115) "enumerate" trap is thus obsoleted entirely (GH-1115)
@ -1958,10 +1959,10 @@ Planned
trap; because "getOwnPropertyDescriptor" trap is not yet supported, the trap; because "getOwnPropertyDescriptor" trap is not yet supported, the
check is always made against the target object (GH-1115) check is always made against the target object (GH-1115)
* Align RegExp.prototype behavior more closely with ES6: .source, .global, * Align RegExp.prototype behavior more closely with ES2015: .source, .global,
.ignoreCase, .multiline are now inherited getters; .flags, .sticky, and .ignoreCase, .multiline are now inherited getters; .flags, .sticky, and
.unicode have been added (they are inherited getters too); constructor .unicode have been added (they are inherited getters too); constructor
behavior has been revised for ES6 behavior; however, leniency to allow behavior has been revised for ES2015 behavior; however, leniency to allow
e.g. RegExp.prototype.source (from ES2017 draft) is supported for real e.g. RegExp.prototype.source (from ES2017 draft) is supported for real
world code compatibility (GH-1178) world code compatibility (GH-1178)
@ -2091,31 +2092,31 @@ Planned
this aligns better with behavior of other engines (GH-1057) this aligns better with behavior of other engines (GH-1057)
* Change parsing of octal escapes in string literals to better align with * Change parsing of octal escapes in string literals to better align with
ES6 and other engines; "\078" is now accepted and is the same as ES2015 and other engines; "\078" is now accepted and is the same as
"\u00078", "\8" and "\9" are accepted as literal "8" and "9" (GH-1057) "\u00078", "\8" and "\9" are accepted as literal "8" and "9" (GH-1057)
* Change bound function .name property handling to match ES6 requirements; * Change bound function .name property handling to match ES2015 requirements;
for a target function with name "foo", bound function name is "bound foo" for a target function with name "foo", bound function name is "bound foo"
(GH-1113) (GH-1113)
* Change bound function internal prototype handling to match ES6 requirements; * Change bound function internal prototype handling to match ES2015 requirements;
bound function internal prototype is copied from the target function bound function internal prototype is copied from the target function
instead of always being Function.prototype (GH-1135) instead of always being Function.prototype (GH-1135)
* Change Function.prototype.toString() output to match ES6 requirements; * Change Function.prototype.toString() output to match ES2015 requirements;
the output no longer parses with eval() but causes a SyntaxError instead the output no longer parses with eval() but causes a SyntaxError instead
(GH-1141) (GH-1141)
* Make function instance .name and .length properties configurable (but * Make function instance .name and .length properties configurable (but
non-writable and non-enumerable) to match ES6 requirements; also change non-writable and non-enumerable) to match ES2015 requirements; also change
.fileName to follow the same attribute convention (GH-1153, GH-1177) .fileName to follow the same attribute convention (GH-1153, GH-1177)
* Remove anonymous function own .name property to match ES6 requirements; * Remove anonymous function own .name property to match ES2015 requirements;
anonymous functions inherit an empty string as their name from anonymous functions inherit an empty string as their name from
Function.prototype.name (GH-1183) Function.prototype.name (GH-1183)
* Change functions created using new Function() to have the .name * Change functions created using new Function() to have the .name
"anonymous" to match ES6 requirements (GH-1183) "anonymous" to match ES2015 requirements (GH-1183)
* Make Error instance .fileName and .lineNumber properties configurable * Make Error instance .fileName and .lineNumber properties configurable
but non-writable and non-enumerable to match function instance property but non-writable and non-enumerable to match function instance property
@ -2124,20 +2125,20 @@ Planned
* Change NativeError (TypeError, RangeError, etc) constructor to inherit * Change NativeError (TypeError, RangeError, etc) constructor to inherit
from the Error constructor rather than Function.prototype directly as from the Error constructor rather than Function.prototype directly as
required by ES6 (GH-1182) required by ES2015 (GH-1182)
* Change object literal getter/setter to match ES6 requirements: no automatic * Change object literal getter/setter to match ES2015 requirements: no automatic
.prototype property, and the functions are non-constructable (GH-1188) .prototype property, and the functions are non-constructable (GH-1188)
* Allow duplicate property names in object literals as required by ES6 * Allow duplicate property names in object literals as required by ES2015
(GH-1190) (GH-1190)
* Change typed array constructor chain to match ES6, e.g. Uint8Array * Change typed array constructor chain to match ES2015, e.g. Uint8Array
constructor inherits from intrinsic %TypedArray% constructor (GH-1191) constructor inherits from intrinsic %TypedArray% constructor (GH-1191)
* Move typed array properties .byteLength, .byteOffset, and .buffer to * Move typed array properties .byteLength, .byteOffset, and .buffer to
prototype objects and make them (inherited) accessors to better match prototype objects and make them (inherited) accessors to better match
ES6 requirements; .length remains a virtual own property (GH-1197) ES2015 requirements; .length remains a virtual own property (GH-1197)
* Add a fastint check for duk_put_number_list() values (GH-1086) * Add a fastint check for duk_put_number_list() values (GH-1086)
@ -2185,7 +2186,7 @@ Planned
(GH-1096) (GH-1096)
* Fix Object.prototype.__proto__ handling to use ToObject() coercion rather * Fix Object.prototype.__proto__ handling to use ToObject() coercion rather
than requiring an object; this matches ES6 requirements and allows e.g. than requiring an object; this matches ES2015 requirements and allows e.g.
the expression (123).__proto__ to work (GH-1080) the expression (123).__proto__ to work (GH-1080)
* Fix String.fromCharCode() behavior for non-BMP characters when standard * Fix String.fromCharCode() behavior for non-BMP characters when standard

Loading…
Cancel
Save