Η μεταγλώττιση για διάφορες πλατφόρμες-στόχους υλοποιείται με χρήση LLVM και οι βιβλιοθήκες που χρησιμοποιούνται στην κύρια εργαλειοθήκη από το έργο Go χρησιμοποιούνται για την υποστήριξη της γλώσσας. Το μεταγλωττισμένο πρόγραμμα μπορεί να εκτελεστεί απευθείας σε μικροελεγκτές, επιτρέποντας στο Go να χρησιμοποιηθεί ως γλώσσα για τη σύνταξη σεναρίων αυτοματισμού.
Το κίνητρο για τη δημιουργία ενός νέου έργου ήταν η επιθυμία να χρησιμοποιηθεί η γνωστή γλώσσα Go σε συμπαγείς συσκευές - οι προγραμματιστές σκέφτηκαν ότι εάν υπήρχε μια έκδοση Python για μικροελεγκτές, τότε γιατί να μην δημιουργήσετε μια παρόμοια για τη γλώσσα Go. Πηγαίνω
Στην τρέχουσα μορφή του, υποστηρίζονται 15 μοντέλα μικροελεγκτών, συμπεριλαμβανομένων διαφόρων πλακών από Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary και Phytec. Τα προγράμματα μπορούν επίσης να μεταγλωττιστούν για να εκτελούνται σε πρόγραμμα περιήγησης σε μορφή WebAssembly και ως εκτελέσιμα αρχεία για Linux. Υποστηρίζει ελεγκτές ESP8266/ESP32
Βασικοί στόχοι του έργου:
Η υποστήριξη για συστήματα πολλαπλών πυρήνων δεν είναι μεταξύ των κύριων στόχων,
αποτελεσματική εκκίνηση ενός τεράστιου αριθμού κορουτινών (υποστηρίζεται πλήρως η εκκίνηση των κορουτινών), επίτευξη του επιπέδου απόδοσης του μεταγλωττιστή αναφοράς gc (η βελτιστοποίηση επαφίεται στο LLVM και σε ορισμένες εφαρμογές το Tinygo μπορεί να είναι ταχύτερο από το gc) και πλήρης
Η κύρια διαφορά από έναν παρόμοιο μεταγλωττιστή
Μεταξύ των αλλαγών στην έκδοση 0.7 είναι η εφαρμογή της εντολής "tinygo test", η παροχή υποστήριξης συλλογής απορριμμάτων για τις περισσότερες πλακέτες στόχων (με βάση το ARM Cortex-M) και το WebAssembly, η υποστήριξη για την πλακέτα HiFive1 rev B με βάση το RISC- αρχιτεκτονική V και η πλακέτα Arduino nano33,
βελτιωμένη υποστήριξη γλώσσας (υποστήριξη για πεδία bit με χρήση ληκτών και ρυθμιστών, υποστήριξη για ανώνυμες δομές).
Πηγή: opennet.ru