Kompilering til forskellige målplatforme er implementeret ved hjælp af LLVM, og biblioteker, der bruges i hovedværktøjssættet fra Go-projektet, bruges til at understøtte sproget. Det kompilerede program kan køres direkte på mikrocontrollere, hvilket gør det muligt at bruge Go som et sprog til at skrive automatiseringsscripts.
Motivationen for at lave et nyt projekt var ønsket om at bruge det velkendte Go-sprog på kompakte enheder - udviklerne ræsonnerede, at hvis der var en Python-version til mikrocontrollere, hvorfor så ikke lave en lignende til Go-sproget. Gå
I sin nuværende form understøttes 15 mikrocontroller-modeller, herunder forskellige boards fra Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary og Phytec. Programmer kan også kompileres til at køre i en browser i WebAssembly-format og som eksekverbare filer til Linux. Understøtter ESP8266/ESP32 controllere
Hovedprojektmål:
Støtte til multi-core systemer er ikke blandt hovedmålene,
effektiv lancering af et stort antal coroutiner (lanceringen af coroutines i sig selv er fuldt understøttet), opnåelse af ydeevneniveauet for referencekompileren gc (optimering overlades til LLVM, og i nogle applikationer kan Tinygo være hurtigere end gc) og komplet
Den største forskel fra en lignende compiler
Blandt ændringerne i udgivelse 0.7 er implementeringen af "tinygo test"-kommandoen, leveringen af affaldsopsamlingsunderstøttelse for de fleste måltavler (baseret på ARM Cortex-M) og WebAssembly, understøttelse af HiFive1 rev B-kortet baseret på RISC- V-arkitektur og Arduino nano33-kortet,
forbedret sprogunderstøttelse (understøttelse af bitfelter ved hjælp af gettere og sættere, understøttelse af anonyme strukturer).
Kilde: opennet.ru