Μια νέα έκδοση της μηχανής JavaScript elk, έκδοση 2.0.9, είναι διαθέσιμη. Στοχεύει σε συστήματα με περιορισμένους πόρους, όπως μικροελεγκτές, συμπεριλαμβανομένων των πλακετών ESP32 και Arduino Nano με 2 KB RAM και 30 KB μνήμης Flash. Η παρεχόμενη εικονική μηχανή απαιτεί μόνο 100 byte μνήμης και 20 KB χώρου αποθήκευσης. Ο κώδικας του έργου είναι γραμμένος σε C και διανέμεται με την άδεια GPLv2. Ένας μεταγλωττιστής C επαρκεί για την κατασκευή του έργου. Δεν απαιτούνται πρόσθετες εξαρτήσεις. Το έργο αναπτύσσεται από τους προγραμματιστές του λειτουργικού συστήματος Mongoose OS για συσκευές IoT, της μηχανής JavaScript mJS και του ενσωματωμένου... διακομιστές ιστού Μανγκούστα (χρησιμοποιείται σε προϊόντα εταιρειών όπως η Siemens, η Schneider Electric, η Broadcom, η Bosch, η Google, η Samsung και η Qualcomm).
Ο κύριος σκοπός του Elk είναι να δημιουργήσει υλικολογισμικό για μικροελεγκτές σε JavaScript που εκτελούν διάφορες εργασίες αυτοματισμού. Ο κινητήρας είναι επίσης κατάλληλος για την ενσωμάτωση χειριστών JavaScript σε εφαρμογές C/C++. Για να χρησιμοποιήσετε τη μηχανή στον κώδικά σας, απλώς τοποθετήστε το αρχείο elk.c στο δέντρο προέλευσης, συμπεριλάβετε το αρχείο κεφαλίδας elk.h και χρησιμοποιήστε την κλήση js_eval. Επιτρέπεται η κλήση συναρτήσεων που ορίζονται σε κώδικα C/C++ από σενάρια JavaScript και αντίστροφα. Ο κώδικας JavaScript εκτελείται σε ένα προστατευμένο περιβάλλον που απομονώνεται από τον κύριο κώδικα χρησιμοποιώντας έναν διερμηνέα που δεν δημιουργεί bytecode και δεν χρησιμοποιεί δυναμική εκχώρηση μνήμης.
Το Elk υλοποιεί ένα μικρό υποσύνολο της προδιαγραφής Ecmascript 6, αλλά επαρκές για τη δημιουργία σεναρίων εργασίας. Συγκεκριμένα, υποστηρίζει ένα βασικό σύνολο τελεστών και τύπων, αλλά δεν υποστηρίζει πίνακες, πρωτότυπα, αυτό, νέες εκφράσεις και εκφράσεις διαγραφής. Προτείνεται η χρήση let αντί για var και const και ενώ αντί για do, switch και for. Δεν παρέχεται τυπική βιβλιοθήκη, π.χ. δεν υπάρχουν τέτοια αντικείμενα Date, Regexp, Function, String και Number.
Πηγή: opennet.ru
