Refactor tools/configure.py and util/dist.py to be just wrappers to
executing the Node.js based tooling. The wrapper .py files are both
Py2 and Py3 compatible. Node.js version must be >= 14.x.
* 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.
* 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.
All Reflect functions specified in ECMAScript 2016 are implemented, and
most share Duktape/C helpers with their ES5 twins from Object.
* Reflect.apply()
* Reflect.construct()
* Reflect.defineProperty()
* Reflect.deleteProperty()
* Reflect.get()
* Reflect.getOwnPropertyDescriptor()
* Reflect.getPrototypeOf()
* Reflect.has()
* Reflect.isExtensible()
* Reflect.ownKeys()
* Reflect.preventExtensions()
* Reflect.set()
* Reflect.setPrototypeOf()
Presence of the Reflect object is controlled by DUK_USE_REFLECT_BUILTIN
and enabled by default in the standard configuration.
note: Reflect.enumerate() was retroactively removed in ES7, so it will
not be implemented in Duktape.
Add TextEncoder and TextDecoder built-ins, which allow Ecmascript code
to read and write text stored in ArrayBuffers. Based on the WHATWG
Encoding Living Standard:
https://encoding.spec.whatwg.org/#api
This avoids the need for a function call and up to two property lookups
for a `Math.pow()` invocation, as well as allowing expressions like
`2 ** 16` to be inlined at compile time.
Exponentiation uses the same internal handler as `Math.pow()`, per the
ES7 specification.
Usage:
x = base ** exp;
x **= 2;
* 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.