A compilación para varias plataformas de destino implétase mediante LLVM e as bibliotecas utilizadas no conxunto de ferramentas principal do proxecto Go úsanse para soportar a linguaxe. O programa compilado pódese executar directamente en microcontroladores, o que permite que Go se use como linguaxe para escribir scripts de automatización.
A motivación para crear un novo proxecto foi o desexo de usar a linguaxe familiar Go en dispositivos compactos: os desenvolvedores pensaron que se había unha versión de Python para microcontroladores, entón por que non crear unha similar para a linguaxe Go. Vaia
Na súa forma actual, son compatibles 15 modelos de microcontroladores, incluíndo varias placas de Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary e Phytec. Tamén se poden compilar programas para executalos nun navegador en formato WebAssembly e como ficheiros executables para Linux. Admite controladores ESP8266/ESP32
Obxectivos clave do proxecto:
O soporte para sistemas multinúcleo non está entre os obxectivos principais,
lanzamento eficiente dun gran número de corrutinas (o lanzamento de corrutinas en si é totalmente compatible), logro do nivel de rendemento do compilador de referencia gc (a optimización déixase a LLVM e nalgunhas aplicacións Tinygo pode ser máis rápido que gc) e completo
A principal diferenza dun compilador semellante
Entre os cambios na versión 0.7 están a implementación do comando "tinygo test", a prestación de soporte de recollida de lixo para a maioría das placas de destino (baseadas en ARM Cortex-M) e WebAssembly, soporte para a placa HiFive1 rev B baseada no RISC- Arquitectura V e a placa Arduino nano33,
soporte de linguaxe mellorado (soporte para campos de bits usando getters e setters, soporte para estruturas anónimas).
Fonte: opennet.ru