rilascio del motore JavaScript , progettato per l'integrazione nel codice sorgente di progetti in C/C++. Il motore si distingue per le sue dimensioni compatte, alta portabilità e basso consumo di risorse. I file sorgente del motore sono scritti in C e sotto licenza MIT.
Il codice di Duktape occupa circa 160 kB e consuma solo 70 kB di RAM, e in modalità a basso consumo di memoria 27 kB di RAM. Per integrare Duktape nel codice in C/C++ aggiungere al progetto i file duktape.c e duktape.h, e usare per chiamare funzioni JavaScript dal codice in C/C++ o viceversa. Per liberare oggetti non utilizzati dalla memoria viene utilizzato un garbage collector con finalizzatore, basato su una combinazione di di conteggio dei riferimenti con un algoritmo di marcaggio (Mark and Sweep). Il motore è utilizzato per elaborare JavaScript nel browser .
Assicura la piena compatibilità con le specifiche Ecmascript 5.1 e parziale Ecmascript 2015 e 2016 (E6 ed E7), inclusa la supporto per l'oggetto Proxy per la virtualizzazione delle proprietà, array tipizzati, ArrayBuffer, Node.js Buffer, Encoding API, oggetto Symbol e altro. Include un debugger integrato, un motore per l'esecuzione di espressioni regolari e un sottosistema per il supporto Unicode. Vengono inoltre forniti estensioni specifiche, come il supporto per coroutine, un framework integrato per la registrazione, un meccanismo di caricamento dei moduli basato su CommonJS e un sistema di caching del bytecode che permette di salvare e caricare funzioni compilate.
Nel nuovo rilascio nuove funzioni duk_to_stacktrace() e duk_safe_to_stacktrace() per ottenere le tracce dello stack, duk_push_bare_array() per aggiungere istanze indipendenti di array. Sono state rese pubbliche le funzioni duk_require_constructable() e duk_require_constructor_call(). Migliorata la compatibilità con le specifiche ES2017. Ottimizzato il lavoro con array e oggetti. Nell'interfaccia CLI di duk è stata aggiunta l'opzione "—no-auto-complete" per disabilitare il completamento automatico dell'input.
Fonte: opennet.ru
