@ -81,7 +81,7 @@ Released
* Enforce string/buffer length limits to avoid corner cases with strings
and buffers close to size_t limit
* Ecmas cript E5.1 test cases and fixes
* ECMAS cript E5.1 test cases and fixes
* Mark-and-sweep stringtable leak fixed, affected mostly builds without
reference counting
@ -108,7 +108,7 @@ Released
* Added support for function declarations outside function or program top
level (also known as "function statements"), with V8-like semantics
* Renamed __duk__ to Duktape for more consistency with Ecmas cript conventions
* Renamed __duk__ to Duktape for more consistency with ECMAS cript conventions
* Removed somewhat useless Duktape.build property and added Duktape.env
@ -205,7 +205,7 @@ Released
* Add duk_push_heap_stash(), duk_push_global_stash(), and
duk_push_thread_stash() to provide C code with stashes for storing
values invisible to Ecmas cript code
values invisible to ECMAS cript code
* Add duk_safe_to_string() and duk_safe_to_lstring() to make it easier
to write result printing in C
@ -221,10 +221,10 @@ Released
* Add Duktape.compact(), Duktape.line(), and Duktape.act()
* Add a "use duk notail" directive which indicates that an Ecmas cript
* Add a "use duk notail" directive which indicates that an ECMAS cript
function should never be tail called
* Add a barebones built-in logging framework with both Ecmas cript and C
* Add a barebones built-in logging framework with both ECMAS cript and C
APIs and easy customization
* Add a message argument to fatal handler function callback, simplify
@ -454,7 +454,7 @@ Released
duk_xmove())
* Change strictness behavior for Duktape API calls: all API calls now have
Ecmas cript strict semantics, even when a call is made with an empty call
ECMAS cript strict semantics, even when a call is made with an empty call
stack outside of any Duktape/C function
* Change strictness handling of duk_eval() and variants so that all code is
@ -469,7 +469,7 @@ Released
* Add API call duk_set_global_object() which allows the global object of a
context to be replaced; this is useful as an initial mechanism for proper
sandboxing of Ecmas cript code
sandboxing of ECMAS cript code
* Add API calls duk_get_prototype() and duk_set_prototype() for getting and
setting an object's "internal prototype" from C code
@ -515,7 +515,7 @@ Released
there will be no API to use it
* Fix value stack reserve handling for function calls: a function call
(Ecmas cript or Duktape/C) might reduce the valstack "checked size" which
(ECMAS cript or Duktape/C) might reduce the valstack "checked size" which
was previously requested by user code (for more detail, see API test case
test-dev-valstack-checked-size-call.c)
@ -524,7 +524,7 @@ Released
would also be executed for the Proxy object
* Fix a few Date bugs for large out-of-range years which caused some assert
failures and incorrect behavior when year was out of Ecmas cript range (e.g.
failures and incorrect behavior when year was out of ECMAS cript range (e.g.
year 870e6 and year -200e6)
* Minor compile warnings fixes for non-default options (e.g. when reference
@ -656,7 +656,7 @@ Released
* Add duk_def_prop() which allows creation of accessor (getter/setter)
properties and other custom properties from C code (instead of using
Object.defineProperty() from Ecmas cript code)
Object.defineProperty() from ECMAS cript code)
* Add duk_is_error() API call to check if a value inherits from Error
@ -671,7 +671,7 @@ Released
* Add vararg variants duk_error_va(), duk_push_error_object_va(), and
duk_log_va()
* Add DUK_GIT_DESCRIBE macro to the C API (with no Ecmas cript equivalent)
* Add DUK_GIT_DESCRIBE macro to the C API (with no ECMAS cript equivalent)
to allow application code to e.g. log more detailed version information
relevant for non-official snapshot builds
@ -778,7 +778,7 @@ Released
body was not checked and Duktape would accept e.g. "function () [}"
(GH-106)
* Fix compiler register limit bug where an Ecmas cript function with
* Fix compiler register limit bug where an ECMAS cript function with
[65536,262143] VM registers would be compiled into incorrect bytecode
instead of being rejected with an internal error (GH-111)
@ -873,7 +873,7 @@ Released
body was not checked and Duktape would accept e.g. "function () [}"
(GH-106)
* Fix compiler register limit bug where an Ecmas cript function with
* Fix compiler register limit bug where an ECMAS cript function with
[65536,262143] VM registers would be compiled into incorrect bytecode
instead of being rejected with an internal error (GH-111)
@ -1477,7 +1477,7 @@ Released
notifications (AppNotify) (GH-596, GH-563)
* Add duk_debugger_pause() API which allows the target to quickly pause
Ecmas cript execution and break into the debugger (GH-615)
ECMAS cript execution and break into the debugger (GH-615)
* Add sizeof void pointer to the BasicInfo debugger command (GH-611)
@ -1873,18 +1873,18 @@ Configuration:
Buffers:
* Incompatible change: rework buffer types and their Ecmas cript and C API
* Incompatible change: rework buffer types and their ECMAS cript and C API
behavior: remove Duktape.Buffer; provide Uint8Array.allocPlain() and
Uint8Array.plainOf() to replace Duktape.Buffer; plain buffers now behave
like Uint8Arrays and inherit from Uint8Array.prototype; plain buffers now
test false in duk_is_primitive() which is more consistent with their
Ecmas cript coercion behavior; many small changes in how built-in functions
ECMAS cript coercion behavior; many small changes in how built-in functions
behave for plain buffer arguments e.g. in enumeration, JSON serialization,
and Object.prototype.toString() output (GH-875, GH-1005, GH-864, GH-1197)
* Incompatible change: remove the ability to do a 1:1 buffer-to-string
coercion (using buffer data directly as the internal string representation)
from the default Ecmas cript bindings, an encoding (usually UTF-8) is now
from the default ECMAS cript bindings, an encoding (usually UTF-8) is now
always applied (GH-875, GH-1005)
* Incompatible change: remove non-standard properties from ArrayBuffer
@ -1947,7 +1947,7 @@ Other type changes:
(plainPointer instanceof Duktape.Pointer === true) (GH-864)
* Incompatible change: lightfunc values now test false in duk_is_primitive()
which is more consistent with how they behave in Ecmas cript coercions
which is more consistent with how they behave in ECMAS cript coercions
(GH-864)
* Incompatible change: lightfunc value as a "this" binding is ToObject()
@ -1984,7 +1984,7 @@ Debugger:
* Rename debugger protocol artificial property "bound" to "boundfunc" for
consistency with an internal flag rename (GH-703)
Ecmas cript 2015+ and real world compatibility:
ECMAS cript 2015+ and real world compatibility:
* Change Object constructor argument coercion policy to match ES2015
requirements for .keys(), .getOwnPropertyNames(),
@ -2015,7 +2015,7 @@ Ecmascript 2015+ and real world compatibility:
* Add support for ES2016 exponentiation and exponentiation assignment
operators, e.g. "2 \*\* 10" evaluates to 1024, avoiding the cost of an
Ecmas cript call to Math.pow() while also being more readable (GH-987,
ECMAS cript call to Math.pow() while also being more readable (GH-987,
GH-997)
* Add a Reflect built-in, provides Reflect.construct() etc. from ES2015; some
@ -2118,7 +2118,7 @@ Ecmascript 2015+ and real world compatibility:
WHATWG Encoding API:
* Add TextEncoder and TextDecoder built-ins (the Encoding API) which allow
Ecmas cript code to convert between buffers and strings using the UTF-8
ECMAS cript code to convert between buffers and strings using the UTF-8
encoding (GH-975)
Other C API changes:
@ -2154,8 +2154,8 @@ Other C API changes:
DUK_ERR_UNSUPPORTED_ERROR; use standard error types instead (GH-827)
* Incompatible change: map API related errors (which previously used
DUK_ERR_API_ERROR and a plain Error for Ecmas cript representation) into
TypeErrors and RangeErrors to match common Ecmas cript conventions (GH-827)
DUK_ERR_API_ERROR and a plain Error for ECMAS cript representation) into
TypeErrors and RangeErrors to match common ECMAS cript conventions (GH-827)
* Incompatible change: remove duk_to_defaultvalue() which invoked the
[[DefaultValue]] specification algorithm removed in ES2015 (it was folded
@ -2193,7 +2193,7 @@ Other C API changes:
* Add time functions to the C API (duk_get_now(), duk_time_to_components(),
duk_components_to_time()) to allow C code to conveniently work with the
same time provider as seen by Ecmas cript code (GH-771, GH-1209, GH-1211,
same time provider as seen by ECMAS cript code (GH-771, GH-1209, GH-1211,
GH-1226)
* Add duk_push_bare_object() API call which pushes an object without an
@ -2214,7 +2214,7 @@ Other C API changes:
* Remove duk_{get,put,has,del}_var() calls from API header; they were not
fully implemented and not part of the documented public API (GH-762)
Other Ecmas cript binding changes:
Other ECMAS cript binding changes:
* Incompatible change: remove built-in print() and alert() bindings which,
being dependent on stdout/stderr, are often a portability issue (GH-745)
@ -2229,7 +2229,7 @@ Other Ecmascript binding changes:
(which is difficult to version and work with) to an object with named
properties; the properties are not under versioning guarantees (GH-1125)
* Allow a bound Ecmas cript function as an argument to new Duktape.Thread()
* Allow a bound ECMAS cript function as an argument to new Duktape.Thread()
(GH-1134, GH-1157)
Extras:
@ -2338,7 +2338,7 @@ Footprint:
lexenv/varenv fields in duk_hcompfunc struct (GH-1132); omit duk_hcompfunc
_Formals array when it is safe to do so (GH-1141); omit duk_hcompfunc
_Varmap in more cases when it is safe to do so (GH-1146); reduce initial
bytecode allocation in Ecmas cript compiler for low memory targets (GH-1146);
bytecode allocation in ECMAS cript compiler for low memory targets (GH-1146);
packed arguments for some internal helper calls (GH-1158, GH-1172); misc
internal helpers to reduce call site size (GH-1166, GH-1173); config options
for function .name and .fileName control (GH-1153); internal helper
@ -2436,7 +2436,7 @@ Other bug fixes:
Miscellaneous:
* Incompatible change: bytecode opcode format reworks drop maximum function
and constructor call argument count from 511 to 255, and maximum Ecmas cript
and constructor call argument count from 511 to 255, and maximum ECMAS cript
function constant count from 262144 to 65536 (GH-903)
* Add a human readable summary of 'new MyConstructor()' constructor call
@ -2939,11 +2939,11 @@ Miscellaneous:
* Function.prototype.call(), Function.prototype.apply(), Reflect.apply(),
and Reflect.construct() can now be used in tailcalls (e.g.
'return func.call(null, 123);'), don't grow the native C stack when doing an
Ecmascript-to-Ecmas cript call, and no longer prevent coroutine yielding
ECMAScript-to-ECMAS cript call, and no longer prevent coroutine yielding
(GH-1421, GH-1545, GH-1557)
* Constructor calls (new Func()) can be used in tailcalls, don't grow
the native C stack when doing an Ecmascript-to-Ecmas cript call, and no
the native C stack when doing an ECMAScript-to-ECMAS cript call, and no
longer prevent coroutine yielding (GH-1523)
* Increase maximum call argument count from 255 to ~64k (GH-1292, GH-1586)
@ -3050,11 +3050,11 @@ Miscellaneous:
* Use monotonic time (if available) for debugger transport peeking, so that
the peek callback is called with the same realtime rate even if the
Ecmas cript time source jumps or doesn't advance in realtime (GH-1659)
ECMAS cript time source jumps or doesn't advance in realtime (GH-1659)
* Allow sub-millisecond resolution for DUK_USE_DATE_GET_NOW() Date provider;
the extra resolution is visible through duk_get_now() but not through Date
instances because Ecmas cript requires Date instances to have integer
instances because ECMAS cript requires Date instances to have integer
millisecond timestamps (GH-773, GH-1660, GH-1669)
* Add sub-millisecond resolution to the default POSIX and Windows Date
@ -3253,7 +3253,7 @@ Planned
internal algorithm and duk_to_primitive() API call (GH-1825)
* Add duk_random() to allow C code access to the same random number source
as Ecmas cript code (GH-1815)
as ECMAS cript code (GH-1815)
* Add duk_push_new_target() to allow C code to access new.target; at present
this is for completeness because without actual class support it's only
@ -3326,7 +3326,7 @@ Planned
* Add Makefile.jsoncbor to the distributable (GH-1885)
* Change spelling from Ecmas cript to ECMAScript throughout the internal source
* Change spelling from ECMAS cript to ECMAScript throughout the internal source
code; as far as external behavior is concerned this only affects a few
debug prints (GH-1894)