À propos du projet

TinyGo fournit une chaîne de compilation alternative pour les programmes écrits en Go. Il combine les bibliothèques des outils du langage Go avec LLVM, ciblant des cas d'utilisation où la taille du binaire, l'environnement de déploiement ou les contraintes matérielles rendent le compilateur standard moins adapté. Pour le développement embarqué, TinyGo inclut un package `machine` pour l'accès au matériel et peut compiler et flasher le même programme sur des cartes microcontrôleur supportées en sélectionnant une cible, comme Arduino Uno, Adafruit Circuit Playground Express ou Seeed Studio XIAO-ESP32S3. Le projet liste la prise en charge de plus de 150 cartes microcontrôleur. Pour WebAssembly, TinyGo peut construire des modules WASM orientés navigateur et des programmes WASI pour les serveurs, les environnements périphériques et les hôtes tels que Fastly Compute, Fermyon Spin et wazero. Il prend en charge les cibles WASI Preview 1 et les fonctions WASM exportées. Il peut également construire des programmes en ligne de commande pour Linux, macOS et Windows. Les options d'installation incluent une configuration native et un conteneur Docker, avec une documentation et des guides de démarrage publiés sur le site Web de TinyGo. Les objectifs déclarés du projet incluent de petits binaires, une large prise en charge des microcontrôleurs, la convivialité de WebAssembly, une interopérabilité CGo efficace et la compatibilité avec les packages de bibliothèque standard courants, de sorte que de nombreux programmes Go se compilent sans modification. Il ne vise pas à compiler tous les programmes Go, à égaler le compilateur standard `gc` dans tous les scénarios de performance, ou à optimiser principalement pour un nombre extrêmement élevé de goroutines. TinyGo est principalement sous licence BSD 3 clauses. Certains codes LLVM importés utilisent une variante Apache 2.0, et les codes dérivés des bibliothèques Teensy utilisent la licence PJRC, comme indiqué dans les en-têtes de fichiers correspondants. Le support communautaire est disponible via le canal Gophers Slack #TinyGo, et les contributions sont documentées sur le site Web du projet.