* Add minimal CBOR config options.
* Add 'CBOR' built-in YAML metadata.
* Add a public C API for CBOR.
* Remove examples/cmdline support for extras/cbor, use built-in CBOR
instead.
* Makefile, dist/tools changes.
* Rewrite CBOR extra to use Duktape internal helpers, also some related
refactoring.
When array size is limited to 16 bits, some internal operations which
don't support abandoning the array could try to grow it beyond 16 bits
rather than abandoning the array part. This caused an assertion failure
and also potentially memory unsafe behavior.
Changes:
* When growing the property table, sanity check entry and array sizes.
If the new values won't fit in the duk_hobject structure (which may
happen with 16-bit fields), fail the grow attempt with an internal
error. This avoids field truncation and potentially memory unsafe
behavior as a result.
* Rework array part growth vs. abandon code to avoid the GH-2023 issue.
* Add support for keeping array part when possible into
Object.defineProperty().
* Add support for abandoning array part when using internal variants
for defining properties (such as in Array .map()).
* Executor compile warning fix.
* Debug logging trivia, downgrade a noisy log entry.
* Fix compile warning in duk_cmdline.c.
When bytecode files are loaded, there are no memory safety guarantees
for invalid inputs. Reject bytecode files unless -b is given to
explicitly allow automatic bytecode file detection.
* Add DUK_USE_NATIVE_STACK_CHECK config option.
* Add internal duk_native_stack_check() helper which checks and
throws if DUK_USE_NATIVE_STACK_CHECK() indicates we're out of
stack space.
* Add initial call sites for duk_native_stack_check(). These are
in addition to existing recursion limit checks.
* Add stack check example to cmdline example and 'duk' build on
Linux. Disabled by default for now.
* Remove DUK_USE_USER_DECLARE which hasn't been necessary since
Duktape 2.0. Add release note for removal.
* Downgrade or remove FIXMEs in config-options.
* Remove config/other-defines YAML files; they were out of date and
didn't really have a good use case.
* Fix Ecmascript -> ECMAScript spelling in feature and config options.
Also a few instances in debugger and cmdline example.
* Change duk_bool_to to duk_small_uint_t from duk_small_int_t. This may
cause some sign warnings in calling code.
* Reject attempt to unpack an array-like value whose length is 2G or over;
previously was not checked explicitly, and the length was cast to duk_idx_t
with a sign change and the unpack would then later fail. Now it fails with
a clean RangeError.
* Add wrap check for Node.js Buffer.concat().
* API DUK_TYPE_xxx, DUK_TYPE_MASK_xxx, flag constants etc are now unsigned.
* Rename prepare_sources.py to configure.py; the operation is similar to
autoconf ./configure so the association is useful.
* Rename make_dist.py to dist.py.
* Generate only one source set (combined or separate) for one run of
configure.py.
* Change dist.py to run configure.py three times to generate the default
source sets.
* Use an autodeleted temporary directory for preparing sources, which
removes some of the manual temporary file handling.