Ang proyekto ng elk ay bumuo ng isang compact JavaScript engine para sa mga microcontroller

Available ang isang bagong release ng elk 2.0.9 JavaScript engine, na naglalayong gamitin sa mga system na pinaghihigpitan ng mapagkukunan tulad ng mga microcontroller, kabilang ang ESP32 at Arduino Nano board na may 2KB RAM at 30KB Flash. Upang patakbuhin ang ibinigay na virtual machine, sapat na ang 100 bytes ng memorya at 20 KB ng storage space. Ang code ng proyekto ay nakasulat sa wikang C at ipinamahagi sa ilalim ng lisensya ng GPLv2. Upang mabuo ang proyekto, sapat na ang isang C compiler - walang karagdagang dependencies ang ginagamit. Ang proyekto ay binuo ng mga developer ng operating system para sa mga IoT device na Mongoose OS, ang mJS JavaScript engine at ang naka-embed na Mongoose web server (ginagamit sa mga produkto mula sa mga kumpanya tulad ng Siemens, Schneider Electric, Broadcom, Bosch, Google, Samsung at Qualcomm ).

Ang pangunahing layunin ng Elk ay lumikha ng firmware para sa mga microcontroller sa JavaScript na nagsasagawa ng iba't ibang mga gawain sa automation. Ang makina ay angkop din para sa pag-embed ng mga tagapangasiwa ng JavaScript sa mga C/C++ na application. Para magamit ang engine sa iyong code, ilagay lang ang elk.c file sa source tree, isama ang elk.h header file at gamitin ang js_eval call. Pinapayagan na tawagan ang mga function na tinukoy sa C/C++ code mula sa mga script ng JavaScript, at vice versa. Ang JavaScript code ay isinasagawa sa isang protektadong kapaligiran na nakahiwalay sa pangunahing code gamit ang isang interpreter na hindi bumubuo ng bytecode at hindi gumagamit ng dynamic na paglalaan ng memorya.

Nagpapatupad ang Elk ng maliit na subset ng detalye ng Ecmascript 6, ngunit sapat para sa paggawa ng gumaganang mga script. Sa partikular, sinusuportahan nito ang isang pangunahing hanay ng mga operator at uri, ngunit hindi sinusuportahan ang mga array, prototype, ito, bago, at tanggalin ang mga expression. Iminumungkahi na gamitin ang let sa halip na var at const, at habang sa halip na gawin, lumipat at para sa. Walang karaniwang library na ibinigay, i.e. walang ganoong mga bagay na Petsa, Regexp, Function, String at Number.

Pinagmulan: opennet.ru

Magdagdag ng komento