Випуск вбудованого JavaScript-движка Duktape 2.4.0

Опубліковано випуск JavaScript-движка Duktape 2.4.0, орієнтованого на вбудовування кодову базу проектів мовою C/C++. Двигун відрізняється компактним розміром, високою переносимістю та низьким споживанням ресурсів. Вихідні тексти движка написані мовою Сі і поширюються під ліцензією MIT.

Код Duktape займає близько 160 kB та споживає всього 70kB ОЗУ, а в режимі низького споживання пам'яті 27kB ОЗУ. Для інтеграції Duktape в код C/C++ досить додати до проекту файли duktape.c та duktape.h, та використовувати Duktape API для виклику функцій JavaScript з коду на C/C++ або навпаки. Для звільнення об'єктів, що не використовуються, з пам'яті застосовується збирач сміття з фіналізатором, побудований на основі комбінації алгоритму підрахунку посилань з алгоритмом позначок (Mark and Sweep). Двигун застосовується для обробки JavaScript у браузері NetSurf.

Забезпечується повна сумісність із специфікаціями Ecmascript 5.1 та часткова підтримка Ecmascript 2015 та 2016 (E6 та E7), у тому числі підтримка об'єкта Proxy для віртуалізації властивостей, типізовані масиви, ArrayBuffer, Node.js Buffer, Encoding API, об'єкт Symbol тощо. До складу входить вбудований відладчик, двигун для виконання регулярних виразів та підсистема для підтримки Unicode. Також надаються специфічні розширення, такі як підтримка співпрограм, вбудований фреймворк для журналування, механізм завантаження модулів на основі CommonJS, система кешування байткоду, що дозволяє зберігати та завантажувати скомпіловані функції.

У новому випуску реалізовані нові виклики duk_to_stacktrace() та duk_safe_to_stacktrace() для отримання трасування стека, duk_push_bare_array() для додавання незалежних екземплярів масивів. До публічних переведені функції duk_require_constructable() та duk_require_constructor_call(). Поліпшено сумісність зі специфікацією ES2017. Оптимізовано роботу з масивами та об'єктами. У CLI-інтерфейс duk додано опцію «—no-auto-complete» для відключення аводополнения вводу.

Джерело: opennet.ru

Додати коментар або відгук