Duktape 2.1 release notes
Release overview
Main changes in this release (see RELEASES.rst for full details):
- Performance, footprint, and portability improvements.
- API additions for more convenient handling of optional arguments: duk_opt_xxx() and duk_get_xxx_default().
- Allow duk_push_heapptr() for objects which have become unreachable and are pending finalization. In such a case a duk_push_heapptr() cancels the pending finalizer call and automatically rescues the object.
- ES2015 additions like String.prototype.{startsWith,endsWith,includes}() and HTML comment syntax. Non-standard shebang ("#!...") comment support.
- Finalizer handling rework for reference counting and mark-and-sweep to fix a few "side effect" bugs. Also improved torture test coverage for ensuring side effects are handled correctly in Duktape internals.
- DUK_VERSION is now visible to duk_config.h so it's possible for duk_config.h to support multiple Duktape versions. For example, some config options may be disabled prior to a certain patch level.
Upgrading from Duktape 2.0
No action (other than recompiling) should be needed for most users to upgrade from Duktape v2.0.x. Note the following:
The Duktape thread used for finalizer calls is now always the initial thread (heap_thread), for both reference counting and mark-and-sweep triggered finalization. This should be taken into account in finalizer functions; in particular, if there are multiple global environments, finalizers will execute in the first global environment created for the heap.
Prior to 2.1 the finalizer thread could also be heap_thread but usually the current thread would be used.