Kompilácia pre rôzne cieľové platformy sa implementuje pomocou LLVM a na podporu jazyka sa používajú knižnice použité v hlavnom súbore nástrojov z projektu Go. Kompilovaný program je možné priamo spustiť na mikrokontroléroch, čo umožňuje používať Go ako jazyk na písanie automatizačných skriptov.
Motiváciou pre vytvorenie nového projektu bola túžba používať známy jazyk Go na kompaktných zariadeniach - vývojári usúdili, že ak existuje verzia Python pre mikrokontroléry, prečo nevytvoriť podobnú pre jazyk Go. Choď
V súčasnej podobe je podporovaných 15 modelov mikrokontrolérov, vrátane rôznych dosiek od spoločností Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary a Phytec. Programy je tiež možné skompilovať na spustenie v prehliadači vo formáte WebAssembly a ako spustiteľné súbory pre Linux. Podporuje ovládače ESP8266/ESP32
Hlavné ciele projektu:
Podpora viacjadrových systémov nepatrí medzi hlavné ciele,
efektívne spustenie veľkého množstva korutín (samotné spustenie korutín je plne podporované), dosiahnutie výkonnostnej úrovne referenčného kompilátora gc (optimalizácia je ponechaná na LLVM a v niektorých aplikáciách môže byť Tinygo rýchlejší ako gc) a kompletný
Hlavný rozdiel od podobného kompilátora
Medzi zmeny vo verzii 0.7 patrí implementácia príkazu „tinygo test“, poskytovanie podpory zberu odpadu pre väčšinu cieľových dosiek (založené na ARM Cortex-M) a WebAssembly, podpora dosky HiFive1 rev B založenej na RISC- Architektúra V a doska Arduino nano33,
vylepšená podpora jazykov (podpora bitových polí pomocou getterov a nastavovačov, podpora anonymných štruktúr).
Zdroj: opennet.ru