Le projet elk développe un moteur JavaScript compact pour les microcontrôleurs

Une nouvelle version du moteur JavaScript elk 2.0.9 est disponible, destinée à être utilisée sur des systèmes aux ressources limitées tels que les microcontrôleurs, notamment les cartes ESP32 et Arduino Nano avec 2 Ko de RAM et 30 Ko de Flash. Pour faire fonctionner la machine virtuelle fournie, 100 octets de mémoire et 20 Ko d'espace de stockage suffisent. Le code du projet est écrit en langage C et distribué sous licence GPLv2. Pour construire le projet, un compilateur C suffit - aucune dépendance supplémentaire n'est utilisée. Le projet est développé par les développeurs du système d'exploitation pour appareils IoT Mongoose OS, du moteur JavaScript mJS et du serveur Web intégré Mongoose (utilisé dans les produits d'entreprises telles que Siemens, Schneider Electric, Broadcom, Bosch, Google, Samsung et Qualcomm). ).

L'objectif principal d'Elk est de créer un firmware pour microcontrôleurs en JavaScript qui effectue diverses tâches d'automatisation. Le moteur convient également à l'intégration de gestionnaires JavaScript dans des applications C/C++. Pour utiliser le moteur dans votre code, placez simplement le fichier elk.c dans l'arborescence source, incluez le fichier d'en-tête elk.h et utilisez l'appel js_eval. Il est permis d'appeler des fonctions définies dans du code C/C++ à partir de scripts JavaScript, et vice versa. Le code JavaScript est exécuté dans un environnement protégé isolé du code principal à l'aide d'un interpréteur qui ne génère pas de bytecode et n'utilise pas d'allocation dynamique de mémoire.

Elk implémente un petit sous-ensemble de la spécification Ecmascript 6, mais suffisant pour créer des scripts de travail. En particulier, il prend en charge un ensemble d'opérateurs et de types de base, mais ne prend pas en charge les tableaux, les prototypes, les expressions this, new et delete. Il est proposé d'utiliser let au lieu de var et const, et while au lieu de do, switch et for. Aucune bibliothèque standard fournie, c'est-à-dire il n'existe pas d'objets Date, Regexp, Function, String et Number.

Source: opennet.ru

Ajouter un commentaire