Kompilacija za različne ciljne platforme se izvaja z uporabo LLVM, knjižnice, ki se uporabljajo v glavnem kompletu orodij iz projekta Go, pa se uporabljajo za podporo jeziku. Prevedeni program je mogoče neposredno zagnati na mikrokontrolerjih, kar omogoča, da se Go uporablja kot jezik za pisanje skriptov za avtomatizacijo.
Motivacija za ustvarjanje novega projekta je bila želja po uporabi znanega jezika Go na kompaktnih napravah - razvijalci so menili, da če obstaja različica Python za mikrokontrolerje, zakaj potem ne bi ustvarili podobne različice za jezik Go. pojdi
V trenutni obliki je podprtih 15 modelov mikrokontrolerjev, vključno z različnimi ploščami Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary in Phytec. Programe je mogoče prevesti tudi za izvajanje v brskalniku v formatu WebAssembly in kot izvršljive datoteke za Linux. Podpira krmilnike ESP8266/ESP32
Ključni cilji projekta:
Podpora za večjedrne sisteme ni med glavnimi cilji,
učinkovit zagon velikega števila korutin (sam zagon korutin je v celoti podprt), doseganje ravni zmogljivosti referenčnega prevajalnika gc (optimizacija je prepuščena LLVM in v nekaterih aplikacijah je lahko Tinygo hitrejši od gc) in popolna
Glavna razlika od podobnega prevajalnika
Med spremembami v izdaji 0.7 so izvedba ukaza »tinygo test«, zagotavljanje podpore za zbiranje smeti za večino ciljnih plošč (na osnovi ARM Cortex-M) in WebAssembly, podpora za ploščo HiFive1 rev B, ki temelji na RISC- V arhitektura in plošča Arduino nano33,
izboljšana jezikovna podpora (podpora za bitna polja z uporabo pridobivalnikov in nastavljalcev, podpora za anonimne strukture).
Vir: opennet.ru