Die neue Version des JavaScript-Engines elk 2.0.9 ist jetzt verfügbar und zielt auf den Einsatz in ressourcenbeschränkten Systemen ab, wie Mikrocontrollern, einschließlich ESP32- und Arduino Nano-Boards mit 2 KB RAM und 30 KB Flash. Für den Betrieb der bereitgestellten virtuellen Maschine sind lediglich 100 Byte Speicher und 20 KB Speicherplatz erforderlich. Der Code des Projekts ist in C geschrieben und unter der GPLv2-Lizenz veröffentlicht. Zur Kompilierung des Projekts wird lediglich ein C-Compiler benötigt - zusätzliche Abhängigkeiten sind nicht erforderlich. Das Projekt wird von den Entwicklern des Betriebssystems für IoT-Geräte Mongoose OS, des JavaScript-Engines mJS und eingebetteter Anwendungen entwickelt. Webserver Mongoose (verwendet in Produkten von Unternehmen wie Siemens, Schneider Electric, Broadcom, Bosch, Google, Samsung und Qualcomm).
Die Hauptfunktion von Elk besteht darin, Firmware für Mikrocontroller in JavaScript zu erstellen, die verschiedene Automatisierungsaufgaben ausführen. Die Engine eignet sich auch für das Einbetten von JavaScript-Handlern in Anwendungen in C/C++. Um die Engine in Ihrem Code zu verwenden, genügt es, die Datei elk.c in das Quellverzeichnis einzufügen, die Header-Datei elk.h einzubinden und den Aufruf js_eval zu verwenden. Es ist zulässig, Funktionen, die im C/C++-Code definiert sind, aus JavaScript-Skripten aufzurufen und umgekehrt. JavaScript-Code wird in einer geschützten und vom Hauptcode isolierten Umgebung mit einem Interpreter ausgeführt, der keinen Bytecode generiert und keine dynamische Speicherzuweisung verwendet.
In Elk ist eine kleine, aber ausreichende Teilmenge der Ecmascript-6-Spezifikation implementiert. Insbesondere wird eine grundlegende Sammlung von Operatoren und Typen unterstützt, jedoch keine Arrays, Prototypen, Ausdrücke this, new und delete. Anstelle von var und const wird empfohlen, let zu verwenden, und anstelle von do, switch und for - while. Es wird keine Standardbibliothek bereitgestellt, d.h. es gibt keine Objekte wie Date, Regexp, Function, String und Number.
Quelle: opennet.ru
