La compilazione per varie piattaforme di destinazione viene implementata utilizzando LLVM e le librerie utilizzate nel toolkit principale del progetto Go vengono utilizzate per supportare il linguaggio. Il programma compilato può essere eseguito direttamente sui microcontrollori, consentendo di utilizzare Go come linguaggio per scrivere script di automazione.
La motivazione per la creazione di un nuovo progetto era il desiderio di utilizzare il familiare linguaggio Go su dispositivi compatti: gli sviluppatori hanno pensato che se esistesse una versione Python per microcontrollori, perché non crearne una simile per il linguaggio Go. Andare
Nella sua forma attuale, sono supportati 15 modelli di microcontrollori, comprese varie schede di Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary e Phytec. I programmi possono anche essere compilati per essere eseguiti in un browser in formato WebAssembly e come file eseguibili per Linux. Supporta i controller ESP8266/ESP32
Obiettivi chiave del progetto:
Il supporto ai sistemi multi-core non rientra tra gli obiettivi principali,
lancio efficiente di un numero enorme di coroutine (il lancio delle coroutine stesso è completamente supportato), raggiungimento del livello di prestazioni del compilatore di riferimento gc (l'ottimizzazione è lasciata a LLVM e in alcune applicazioni Tinygo potrebbe essere più veloce di gc) e completamento
La differenza principale rispetto a un compilatore simile
Tra le modifiche nella versione 0.7 ci sono l'implementazione del comando "tinygo test", la fornitura del supporto per la garbage collection per la maggior parte delle schede target (basate su ARM Cortex-M) e WebAssembly, il supporto per la scheda HiFive1 rev B basata su RISC- Architettura V e scheda Arduino nano33,
supporto linguistico migliorato (supporto per campi di bit che utilizzano getter e setter, supporto per strutture anonime).
Fonte: opennet.ru