Kompilacija za različite ciljne platforme implementirana je pomoću LLVM-a, a biblioteke koje se koriste u glavnom alatu iz projekta Go koriste se za podršku jeziku. Prevedeni program može se izravno pokrenuti na mikrokontrolerima, omogućujući Go da se koristi kao jezik za pisanje skripti za automatizaciju.
Motivacija za stvaranje novog projekta bila je želja za korištenjem poznatog Go jezika na kompaktnim uređajima - programeri su smatrali da ako postoji Python verzija za mikrokontrolere, zašto onda ne stvoriti sličnu za Go jezik. Ići
U trenutnom obliku podržano je 15 modela mikrokontrolera, uključujući različite ploče iz Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary i Phytec. Programi se također mogu kompajlirati za izvođenje u pregledniku u formatu WebAssembly i kao izvršne datoteke za Linux. Podržava ESP8266/ESP32 kontrolere
Ključni ciljevi projekta:
Podrška za višejezgrene sustave nije među glavnim ciljevima,
učinkovito pokretanje velikog broja korutina (samo pokretanje korutina je u potpunosti podržano), postizanje razine performansi referentnog prevoditelja gc (optimizacija je prepuštena LLVM-u, au nekim aplikacijama Tinygo može biti brži od gc) i potpuna
Glavna razlika od sličnog prevoditelja
Među promjenama u izdanju 0.7 su implementacija naredbe "tinygo test", pružanje podrške za sakupljanje smeća za većinu ciljnih ploča (temeljenih na ARM Cortex-M) i WebAssembly, podrška za HiFive1 rev B ploču temeljenu na RISC- V arhitektura i Arduino nano33 ploča,
poboljšana jezična podrška (podrška za bitna polja pomoću gettera i postavljača, podrška za anonimne strukture).
Izvor: opennet.ru