Выпуск встраиваемого JavaScript-движка Duktape 2.2.0
Доступен выпуск JavaScript-движка Duktape 2.2.0, ориентированного на встраивание в кодовую базу проектов на языке C/C++. Движок отличается компактным размером, высокой переносимостью и низким потреблением ресурсов. Исходные тексты движка написаны на языке Си и распространяются под лицензией MIT.
Код Duktape занимает около 160 Кб и потребляет всего 48kB ОЗУ, а в режиме низкого потребления памяти 26kB ОЗУ. Для интеграции Duktape в код на C/C++ достаточно добавить в проект файлы duktape.c и duktape.h, и использовать Duktape API для вызова функций на JavaScript из кода на C/C++ или наоборот. Для освобождения неиспользуемых объектов из памяти применяется сборщик мусора с финализатором, построенный на основе комбинации алгоритма подсчета ссылок с алгоритмом пометок (Mark and Sweep).
Обеспечивается полная совместимость со спецификациями Ecmascript 5.1 и частичная поддержка Ecmascript 2015 и 2016 (E6 и E7), в том числе поддержка объекта Proxy для виртуализации свойств, типизированные массивы, ArrayBuffer, Node.js Buffer, Encoding API, объект Symbol и т. п. В состав входит встроенный отладчик, движок для выполнения регулярных выражений и подсистема для поддержки Unicode. Также предоставляются специфичные расширения, такие как поддержка сопрограмм, встроенный фреймворк для журналирования, механизм загрузки модулей на основе CommonJS, система кэширования байткода, позволяющая сохранять и загружать скомпилированные функции.
В новой версии появилась поддержка функций Math.clz32(), Math.imul() и Math.sign() из ES2015, существенно расширена поддержка элементов Object.prototype из стандарта ES2017, добавлены обработчики 'apply' и 'construct' для объекта Proxy, расширен внутренний API, проведена оптимизация производительности RegExp.