Wydanie wbudowanego silnika JavaScript Duktape 2.4.0

opublikowany Wydanie silnika JavaScript Duktape 2.4.0, mający na celu osadzenie w bazie kodu projektów w języku C/C++. Silnik ma niewielkie rozmiary, jest wysoce przenośny i zużywa mało zasobów. Kod źródłowy silnika jest napisany w języku C i rozpowszechnianie się na licencji MIT.

Kod Duktape zajmuje około 160 kB i zużywa tylko 70 kB pamięci RAM, a w trybie niskiego zużycia pamięci 27 kB pamięci RAM. Aby zintegrować Duktape z kodem C/C++ jest wystarczający dodaj do projektu pliki duktape.c i duktape.h i użyj API Duktape'a do wywoływania funkcji JavaScript z kodu C/C++ i odwrotnie. Aby zwolnić nieużywane obiekty z pamięci, stosuje się moduł zbierający elementy bezużyteczne z finalizatorem, zbudowany na podstawie kombinacji algorytm zliczanie linków za pomocą algorytmu znakowania (Mark and Sweep). Silnik służy do przetwarzania JavaScript w przeglądarce NetSurf.

Zapewnia pełną zgodność ze specyfikacjami Ecmascript 5.1 i częściową wsparcie Ecmascript 2015 i 2016 (E6 i E7), w tym obsługa obiektów proxy do wirtualizacji właściwości, Typed Arrays, ArrayBuffer, Node.js Buffer, Encoding API, obiekt symboli itp. Zawiera wbudowany debugger, silnik wyrażeń regularnych i podsystem obsługujący Unicode. Dostępne są również określone rozszerzenia, takie jak obsługa współprogramów, wbudowana struktura rejestrowania, mechanizm ładowania modułów oparty na CommonJS oraz system buforowania kodu bajtowego, który umożliwia zapisywanie i ładowanie skompilowanych funkcji.

W nowej wersji wdrożony nowe wywołania duk_to_stacktrace() i duk_safe_to_stacktrace() w celu uzyskania śladów stosu, duk_push_bare_array() w celu dodania niezależnych instancji tablic. Funkcje duk_require_constructable() i duk_require_constructor_call() zostały upublicznione. Poprawiona kompatybilność ze specyfikacją ES2017. Praca z tablicami i obiektami została zoptymalizowana. Dodano opcję „--no-auto-complete” do interfejsu duk CLI, aby wyłączyć uzupełnianie danych wejściowych.

Źródło: opennet.ru

Dodaj komentarz