Das Elk-Projekt entwickelt eine kompakte JavaScript-Engine für Mikrocontroller

Es ist eine neue Version der JavaScript-Engine elk 2.0.9 verfügbar, die auf den Einsatz auf ressourcenbeschränkten Systemen wie Mikrocontrollern, einschließlich ESP32- und Arduino Nano-Boards mit 2 KB RAM und 30 KB Flash, ausgerichtet ist. Zum Betrieb der bereitgestellten virtuellen Maschine genügen 100 Byte Arbeitsspeicher und 20 KB Speicherplatz. Der Projektcode ist in der Sprache C geschrieben und wird unter der GPLv2-Lizenz vertrieben. Zum Erstellen des Projekts reicht ein C-Compiler aus – es werden keine zusätzlichen Abhängigkeiten verwendet. Das Projekt wird von den Entwicklern des Betriebssystems für IoT-Geräte Mongoose OS, der mJS-JavaScript-Engine und des eingebetteten Mongoose-Webservers (verwendet in Produkten von Unternehmen wie Siemens, Schneider Electric, Broadcom, Bosch, Google, Samsung und Qualcomm) entwickelt ).

Der Hauptzweck von Elk besteht darin, Firmware für Mikrocontroller in JavaScript zu erstellen, die verschiedene Automatisierungsaufgaben ausführen. Die Engine eignet sich auch zum Einbetten von JavaScript-Handlern in C/C++-Anwendungen. Um die Engine in Ihrem Code zu verwenden, platzieren Sie einfach die Datei elk.c im Quellbaum, schließen Sie die Header-Datei elk.h ein und verwenden Sie den Aufruf js_eval. Es ist erlaubt, in C/C++-Code definierte Funktionen aus JavaScript-Skripten aufzurufen und umgekehrt. JavaScript-Code wird in einer geschützten, vom Hauptcode isolierten Umgebung mithilfe eines Interpreters ausgeführt, der keinen Bytecode generiert und keine dynamische Speicherzuweisung verwendet.

Elk implementiert eine kleine Teilmenge der Ecmascript 6-Spezifikation, die jedoch zum Erstellen funktionierender Skripte ausreicht. Insbesondere unterstützt es einen grundlegenden Satz von Operatoren und Typen, unterstützt jedoch keine Arrays, Prototypen oder Ausdrücke wie this, new und delete. Es wird vorgeschlagen, let anstelle von var und const und while anstelle von do, switch und for zu verwenden. Keine Standardbibliothek vorhanden, d.h. Es gibt keine solchen Date-, Regexp-, Function-, String- und Number-Objekte.

Source: opennet.ru

Kommentar hinzufügen