* Finalize debug log support for pointer compressed builds. Pointer
compressed builds can now debug log.
* Fix refcount leak in Uint8Array 'get'.
* Fix assertion failure (and underlying bug) for chained Proxy.
* Fix build failure when using assertions and no refcounts.
* Add stack top entry/exit assertions to duk_prop_get.c and
duk_prop_getown.c.
* Add duktape-clang-format Docker image with clang-format-12.
* Add Makefile target docker-image-clang-format to build the image,
and clang-format-source to format src-input sources in-place.
* No CI integration or automation yet, .clang-format is also a
placeholder.
* Add a placeholder package.json for the repo toplevel.
* Add private: true flags to some existing package.json files.
* Add a dummy @duktape scope to private package.json files, just to ensure
their name won't conflict with anything else.
* Remove Makefile dependency on 'bc', replace with Node.js dependency.
* Use $(PYTHON2) in the Makefile explicitly when Python tools require python2.
* Minimal fix to allow 'make apitest' to run on macOS.
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.
Update Node.js in Docker base images to 14.x from 10.x.
Also add duktape-make-xxx to simplify docker setup. Arbitrary make
commands can be executed with the duktape-make-xxx image. Results
written to build/, dist/, and tmp/ are unpacked to the host work directory.
Also fix async load handling in dukweb: delay dukwebSetup() until
the emcc-compiled Duktape code is fully initialized. This matters
with wasm compilation because loading is actually asynchronous.
Remove the old 'make checksetup' target and the related script. The
script is a bit out-of-date, and awkward to maintain for multiple Linux
targets.
Dependencies for util/dist.py are now simple (Python 2 + Python
YAML binding) and explained in the README. There are also Docker images
for easy development setup which mostly removes the need to document
all the dependencies on all potential Linux distributions for Makefile
targets like building the site.
Direct comparison may have portability concerns because a constant may
have more precision than its counterpart. Even a direct cast before
a comparison may not work (e.g. Math.atan2() assert with gcc -m32 still
fails even when both sides have an explicit double cast). So use an
internal always-inline helper for float/double comparisons, which also
allows -Wfloat-equal warning to be suppressed in a single helper; add
a clang pragma option so that both gcc and clang suppress the warning.
Other changes:
* Add -Wfloat-equal warning back to the Makefile.
* Fix all internal float comparison call sites to use the helper.
* Add code policy check for probable floating point comparison
(not very important with -Wfloat-equal enabled).
* 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.
* Rename hobject helper functions for property entry access.
* Add helpers for looking up _Formals and _Varmap without inheritance.
* Add duk_xget_owndataprop() + variants for internal property lookups
without inheritance or side effects.
* Date built-in fix for .setTime(), .setYear(), etc on a frozen Date
instance. These should be allowed because they operate on an internal
slot which is not under normal property access control. Previously
the operations were incorrectly rejected with a TypeError.
* Changes to internal property definition and lookup here and there.
Mostly the changes should be no-op because e.g. inheritance only
matters if the internal property might be missing (which is not
usually the case).
* 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.
* Use /work instead of /build inside Docker image.
* If /work/duktape exists, use it as is. This is useful if docker
call site mounts /work/duktape manually.
* Add GCC and Clang versions to docker base image, and some small
useful packages.
* Add a 'shell' image for testing stuff in a container.
* Run as non-root in Docker containers.
* Colorized prompts to distinguish in-docker vs. out-of-docker easily.
* Gitignore and Makefile updates. Add 'docker-clean' Makefile target
to delete images. Add 'docker-shell-master' and
'docker-shell-wdmount' targets to use the shell container.
* Short README entry on Docker images.
* Add Makefile target 'docker-images' to build the images, in the
desired order.
* Add Makefile targets and Docker images for source and website dist
from (public) master.
* Trivial .gitignore update.
* Use lodash snapshot, fixes lodashtest.
* Fix underscore test shim.
* Emscripten option updates to make dukweb.js and Emscripten tests
work again.
* Update emscripten-status.rst.