Wydanie silnika JavaScript , zaprojektowanego z myślą o integracji w kodzie projektów w języku C/C++. Silnik wyróżnia się kompaktowymi rozmiarami, wysoką przenośnością i niskim zużyciem zasobów. Kod źródłowy silnika napisany jest w języku C i na licencji MIT.
Kod Duktape zajmuje około 160 kB i zużywa zaledwie 70 kB RAM, a w trybie niskiego zużycia pamięci 27 kB RAM. Aby zintegrować Duktape z kodem w C/C++ należy dodać do projektu pliki duktape.c oraz duktape.h i używać do wywoływania funkcji JavaScript z kodu C/C++ lub odwrotnie. Aby zwolnić nieużywane obiekty z pamięci, stosuje się zbieracz śmieci z finizatorem, oparty na kombinacji liczenia referencji z algorytmem znaczników (Mark and Sweep). Silnik jest stosowany do przetwarzania JavaScript w przeglądarce .
Zapewnia pełną zgodność ze specyfikacjami Ecmascript 5.1 oraz częściową Ecmascript 2015 i 2016 (E6 i E7), w tym wsparcie dla obiektu Proxy do wirtualizacji właściwości, typizowane tablice, ArrayBuffer, Node.js Buffer, Encoding API, obiekt Symbol itp. Zawiera wbudowany debugger, silnik do wykonywania wyrażeń regularnych oraz podsystem wsparcia Unicode. Oferuje również specyficzne rozszerzenia, takie jak wsparcie dla korutyn, wbudowany framework do logowania, mechanizm ładowania modułów oparty na CommonJS oraz system cache'owania kodu bajtowego, pozwalający na zapis i ładowanie skompilowanych funkcji.
W nowym wydaniu nowe wywołania duk_to_stacktrace() i duk_safe_to_stacktrace() do uzyskiwania śladów stosu, duk_push_bare_array() do dodawania niezależnych instancji tablic. Do funkcji publicznych przetłumaczone zostały duk_require_constructable() i duk_require_constructor_call(). Zwiększona kompatybilność ze specyfikacją ES2017. Zoptymalizowano pracę z tablicami i obiektami. W interfejsie CLI duk dodano opcję „—no-auto-complete” do wyłączenia autouzupełniania wejścia.
Źródło: opennet.ru
