vydání JavaScript motoru , určeného pro integraci do projektů v jazyce C/C++. Tento motor se vyznačuje kompaktní velikostí, vysokou přenositelností a nízkou spotřebou zdrojů. Zdrojové kódy motoru jsou napsány v jazyce C a je licencován pod MIT licencí.
kód Duktape zabírá přibližně 160 kB a spotřebovává pouze 70 kB RAM, zatímco v režimu nízké spotřeby paměti 27 kB RAM. Pro integraci Duktape do kódu v C/C++ je nutné přidat do projektu soubory duktape.c a duktape.h a používat pro volání funkcí v JavaScriptu z kódu v C/C++ nebo naopak. Pro uvolnění nepoužívaných objektů z paměti se používá garbage collector s finalizátorem, založený na kombinaci počítání referencí s algoritmem značkování (Mark and Sweep). Motor se používá pro zpracování JavaScriptu v prohlížeči .
Zajišťuje plnou kompatibilitu se specifikacemi Ecmascript 5.1 a částečnou Ecmascript 2015 a 2016 (E6 a E7), včetně podpory objektu Proxy pro virtualizaci vlastností, typovaných polí, ArrayBuffer, Node.js Buffer, Encoding API, objektu Symbol atd. Obsahuje vestavěný debugger, motor pro vykonávání regulárních výrazů a subsystém pro podporu Unicode. Jsou také poskytována specifická rozšíření, jako podpora kooperativních funkcí, vestavěný framework pro logování, mechanismus načítání modulů založený na CommonJS, systém ukládání bajtkódu, který umožňuje ukládat a načítat zkompilované funkce.
V nové verzi nové výzvy duk_to_stacktrace() a duk_safe_to_stacktrace() pro získání zásobníkových stop, duk_push_bare_array() pro přidání nezávislých instancí polí. Mezi veřejné funkce byly převedeny duk_require_constructable() a duk_require_constructor_call(). Zlepšena kompatibilita se specifikací ES2017. Optimalizována práce s poli a objekty. Do CLI rozhraní duk byla přidána volba „—no-auto-complete“ pro vypnutí automatického doplňování vstupu.
Zdroj: opennet.ru
