La compilation pour diverses plates-formes cibles est implémentée à l'aide de LLVM, et les bibliothèques utilisées dans la boîte à outils principale du projet Go sont utilisées pour prendre en charge le langage. Le programme compilé peut être exécuté directement sur des microcontrôleurs, permettant à Go d'être utilisé comme langage d'écriture de scripts d'automatisation.
La motivation pour créer un nouveau projet était le désir d'utiliser le langage Go familier sur des appareils compacts - les développeurs ont estimé que s'il existait une version Python pour les microcontrôleurs, alors pourquoi ne pas en créer une similaire pour le langage Go. Aller
Dans sa forme actuelle, 15 modèles de microcontrôleurs sont pris en charge, dont diverses cartes d'Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary et Phytec. Les programmes peuvent également être compilés pour s'exécuter dans un navigateur au format WebAssembly et sous forme de fichiers exécutables pour Linux. Prend en charge les contrôleurs ESP8266/ESP32
Principaux objectifs du projet :
La prise en charge des systèmes multicœurs ne fait pas partie des objectifs principaux,
lancement efficace d'un grand nombre de coroutines (le lancement des coroutines lui-même est entièrement pris en charge), atteinte du niveau de performances du compilateur de référence gc (l'optimisation est laissée à LLVM et dans certaines applications Tinygo peut être plus rapide que gc) et complet
La principale différence avec un compilateur similaire
Parmi les changements de la version 0.7 figurent l'implémentation de la commande « tinygo test », la prise en charge du garbage collection pour la plupart des cartes cibles (basées sur ARM Cortex-M) et WebAssembly, la prise en charge de la carte HiFive1 rev B basée sur le RISC- l'architecture V et la carte Arduino nano33,
prise en charge linguistique améliorée (prise en charge des champs de bits utilisant des getters et des setters, prise en charge des structures anonymes).
Source: opennet.ru