Опубликован (https://github.com/svaarala/duktape/releases/tag/v2.4.0) выпуск JavaScript-движка Duktape 2.4.0 (https://duktape.org/), ориентированного на встраивание в кодовую базу проектов на языке C/C++. Движок отличается компактным размером, высокой переносимостью и низким потреблением ресурсов. Исходные тексты движка написаны на языке Си и распространяются (https://github.com/svaarala/duktape) под лицензией MIT. Код Duktape занимает около 160 kB и потребляет всего 70kB ОЗУ, а в режиме низкого потребления памяти 27kB ОЗУ. Для интеграции Duktape в код на C/C++ достаточно (http://duktape.org/guide.html#gettingstarted) добавить в проект файлы duktape.c и duktape.h, и использовать Duktape API (http://duktape.org/api.html) для вызова функций на JavaScript из кода на C/C++ или наоборот. Для освобождения неиспользуемых объектов из памяти применяется сборщик мусора с финализатором, построенный на основе комбинации алгоритма (https://ru.wikipedia.org/wiki/%D0%A1%D0%... подсчёта ссылок с алгоритмом пометок (Mark and Sweep). Движок применяется для обработки JavaScript в браузере NetSurf (https://www.netsurf-browser.org/).
Обеспечивается полная совместимость со спецификациями Ecmascript 5.1 и частичная поддержка (http://wiki.duktape.org/PostEs5Features.html) Ecmascript 2015 и 2016 (E6 и E7), в том числе поддержка объекта Proxy для виртуализации свойств, типизированные массивы, ArrayBuffer, Node.js Buffer, Encoding API, объект Symbol и т.п. В состав входит встроенный отладчик, движок для выполнения регулярных выражений и подсистема для поддержки Unicode. Также предоставляются специфичные расширения, такие как поддержка сопрограмм, встроенный фреймворк для журналирования, механизм загрузки модулей на основе CommonJS, система кэширования байткода, позволяющая сохранять и загружать скомпилированные функции.
В новом выпуске реализованы (https://github.com/svaarala/duktape/blob/master/RELEASES.rst... новые вызовы duk_to_stacktrace() и duk_safe_to_stacktrace() для получения трассировок стека, duk_push_bare_array() для добавления независимых экземпляров массивов. В число публичных переведены функции duk_require_constructable() и duk_require_constructor_call(). Улучшена совместимость со спецификацией ES2017. Оптимизирована работа с массивами и объектами. В CLI-интерфейс duk добавлена опция "--no-auto-complete" для отключения аводополнения ввода.
URL: https://github.com/svaarala/duktape/releases/tag/v
Новость: https://www.opennet.ru/opennews/art.shtml?num=51220