Najnowsza wersja silnika JavaScript elk 2.0.9 jest dostępna, skierowana do systemów o ograniczonych zasobach, takich jak mikrokontrolery, w tym płytki ESP32 i Arduino Nano z 2 KB RAM i 30 KB Flash. Do działania dostarczonej wirtualnej maszyny wystarczy 100 bajtów pamięci i 20 KB miejsca na dysku. Kod projektu napisany jest w języku C i udostępniany na licencji GPLv2. Do skompilowania projektu wystarczy kompilator C — nie są wymagane dodatkowe zależności. Projekt rozwijany jest przez programistów systemu operacyjnego dla urządzeń IoT Mongoose OS, silnika JavaScript mJS oraz wbudowanego. serwera www Mongoose (używany w produktach takich firm jak Siemens, Schneider Electric, Broadcom, Bosch, Google, Samsung i Qualcomm).
Głównym celem elk jest tworzenie firmware'u dla mikrokontrolerów w języku JavaScript, wykonujących różne zadania automatyzacji. Silnik nadaje się również do wbudowywania procesorów JavaScript w aplikacje napisane w C/C++. Aby korzystać z silnika w swoim kodzie, wystarczy umieścić w drzewie źródeł plik elk.c, dołączyć nagłówek elk.h i używać wywołania js_eval. Możliwe jest wywoływanie w skryptach JavaScript funkcji zdefiniowanych w kodzie C/C++, i odwrotnie. Kod JavaScript wykonuje się w chronionym i izolowanym od głównego kodu środowisku za pomocą interpretera, który nie generuje kodu bajtowego i nie używa dynamicznego przydzielania pamięci.
W Elk zaimplementowano niewielką, ale wystarczającą do tworzenia roboczych skryptów, podzbiór specyfikacji Ecmascript 6. W szczególności wspierany jest podstawowy zestaw operatorów i typów, ale brak wsparcia dla tablic, prototypów, wyrażeń this, new oraz delete. Zamiast var i const zaleca się użycie let, a zamiast do, switch i for – while. Nie zapewniono standardowej biblioteki, tzn. nie ma takich obiektów jak Date, Regexp, Function, String i Number.
Źródło: opennet.ru
