Το έργο elk αναπτύσσει μια συμπαγή μηχανή JavaScript για μικροελεγκτές

Μια νέα έκδοση της μηχανής JavaScript elk 2.0.9 είναι διαθέσιμη, η οποία στοχεύει στη χρήση σε συστήματα περιορισμένων πόρων, όπως μικροελεγκτές, συμπεριλαμβανομένων των πλακών ESP32 και Arduino Nano με 2KB RAM και 30KB Flash. Για τη λειτουργία της παρεχόμενης εικονικής μηχανής, αρκούν 100 byte μνήμης και 20 KB αποθηκευτικού χώρου. Ο κώδικας του έργου είναι γραμμένος σε γλώσσα C και διανέμεται με την άδεια GPLv2. Για τη δημιουργία του έργου, αρκεί ένας μεταγλωττιστής C - δεν χρησιμοποιούνται πρόσθετες εξαρτήσεις. Το έργο αναπτύσσεται από τους προγραμματιστές του λειτουργικού συστήματος για συσκευές IoT Mongoose OS, τη μηχανή JavaScript mJS και τον ενσωματωμένο διακομιστή ιστού Mongoose (που χρησιμοποιείται σε προϊόντα από εταιρείες όπως η 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

Προσθέστε ένα σχόλιο