Проект elk развивает компактный JavaScript-движок для микроконтроллеров

Доступен новый выпуск JavaScript-движка elk 2.0.9, нацеленного на использование в системах с ограниченными ресурсами, такими как микроконтроллеры, включая платы ESP32 и Arduino Nano с 2 КБ ОЗУ и 30КБ Flash. Для работы предоставляемой виртуальной машины достаточно 100 байт памяти и 20 КБ места на накопителе. Код проекта написан на языке Си и распространяется под лицензией GPLv2. Для сборки проекта достаточно Си-компилятора – дополнительные зависимости не используются. Проект развивается разработчиками операционной системы для IoT-устройств Mongoose OS, встраиваемого http-сервера Mongoose и JavaScript-движка mJS.

Основным назначением Elk является создание прошивок для микроконтроллеров на языке JavaScript, выполняющих различные задачи автоматизации. Движок также подходит для встраивания обработчиков на языке JavaScript в приложения на C/C++. Для использования движка в своём коде достаточно поместить в дерево исходных текстов файл elk.c, подключить заголовочный файл elk.h и использовать вызов js_eval. Допускается вызов из JavaScript-сценариев функций, определённых в коде на C/C++, и наоборот. JavaScript-код выполняется в защищённом и изолированном от основного кода окружении с использованием интерпретатора, не генерирующего байткод и не использующего динамическое выделение памяти.

В Elk реализовано небольшое, но достаточное для создания рабочих сценариев, подмножество спецификации Ecmascript 6. В частности, поддерживается базовый набор операторов и типов, но нет поддержки массивов, прототипов, выражений this, new и delete. Вместо var и const предлагается использовать let, а вместо do, switch и for – while. Не предоставляется стандартаная библиотека, т.е. нет таких объектов
Date, Regexp, Function, String и Number.

Release. Ссылка here.