Kompilering for ulike målplattformer er implementert ved hjelp av LLVM, og biblioteker som brukes i hovedverktøysettet fra Go-prosjektet brukes til å støtte språket. Det kompilerte programmet kan kjøres direkte på mikrokontrollere, slik at Go kan brukes som et språk for å skrive automatiseringsskript.
Motivasjonen for å lage et nytt prosjekt var ønsket om å bruke det kjente Go-språket på kompakte enheter - utviklerne resonnerte at hvis det fantes en Python-versjon for mikrokontrollere, hvorfor ikke lage en lignende for Go-språket. Gå
I sin nåværende form støttes 15 mikrokontrollermodeller, inkludert ulike brett fra Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary og Phytec. Programmer kan også kompileres for å kjøre i en nettleser i WebAssembly-format og som kjørbare filer for Linux. Støtter ESP8266/ESP32 kontrollere
Sentrale prosjektmål:
Støtte for flerkjernesystemer er ikke blant hovedmålene,
effektiv lansering av et stort antall coroutines (lanseringen av coroutines i seg selv støttes fullt ut), oppnåelse av ytelsesnivået til referansekompilatoren gc (optimalisering er overlatt til LLVM og i noen applikasjoner kan Tinygo være raskere enn gc) og fullstendig
Hovedforskjellen fra en lignende kompilator
Blant endringene i utgivelse 0.7 er implementeringen av «tinygo test»-kommandoen, tilveiebringelsen av søppeloppsamlingsstøtte for de fleste måltavler (basert på ARM Cortex-M) og WebAssembly, støtte for HiFive1 rev B-kortet basert på RISC- V-arkitektur og Arduino nano33-kortet,
forbedret språkstøtte (støtte for bitfelt ved bruk av gettere og settere, støtte for anonyme strukturer).
Kilde: opennet.ru