Het elk-project ontwikkelt een compacte JavaScript-engine voor microcontrollers

Er is een nieuwe release van de elk 2.0.9 JavaScript-engine beschikbaar, gericht op gebruik op systemen met beperkte bronnen, zoals microcontrollers, waaronder ESP32 en Arduino Nano-kaarten met 2 KB RAM en 30 KB Flash. Om de meegeleverde virtuele machine te laten werken, zijn 100 bytes geheugen en 20 KB opslagruimte voldoende. De projectcode is geschreven in C-taal en gedistribueerd onder de GPLv2-licentie. Om het project te bouwen is een C-compiler voldoende - er worden geen extra afhankelijkheden gebruikt. Het project wordt ontwikkeld door de ontwikkelaars van het besturingssysteem voor IoT-apparaten Mongoose OS, de mJS JavaScript-engine en de embedded Mongoose-webserver (gebruikt in producten van bedrijven als Siemens, Schneider Electric, Broadcom, Bosch, Google, Samsung en Qualcomm ).

Het belangrijkste doel van Elk is het maken van firmware voor microcontrollers in JavaScript die verschillende automatiseringstaken uitvoeren. De engine is ook geschikt voor het inbedden van JavaScript-handlers in C/C++-applicaties. Om de engine in uw code te gebruiken, plaatst u gewoon het elk.c-bestand in de bronboom, neemt u het elk.h-headerbestand op en gebruikt u de js_eval-aanroep. Het is toegestaan ​​om functies die zijn gedefinieerd in C/C++-code aan te roepen vanuit JavaScript-scripts, en omgekeerd. JavaScript-code wordt uitgevoerd in een beschermde omgeving, geΓ―soleerd van de hoofdcode, met behulp van een tolk die geen bytecode genereert en geen gebruik maakt van dynamische geheugentoewijzing.

Elk implementeert een kleine subset van de Ecmascript 6-specificatie, maar voldoende voor het maken van werkende scripts. In het bijzonder ondersteunt het een basisset van operators en typen, maar ondersteunt het geen arrays, prototypes, this, new en delete-expressies. Er wordt voorgesteld om let te gebruiken in plaats van var en const, en while in plaats van do, switch en for. Er is geen standaardbibliotheek beschikbaar, d.w.z. er zijn geen dergelijke objecten Date, Regexp, Function, String en Number.

Bron: opennet.ru

Voeg een reactie