A compilação para várias plataformas de destino é implementada usando LLVM, e as bibliotecas usadas no kit de ferramentas principal do projeto Go são usadas para suportar a linguagem. O programa compilado pode ser executado diretamente em microcontroladores, permitindo que Go seja usado como linguagem para escrever scripts de automação.
A motivação para criar um novo projeto foi o desejo de usar a linguagem Go familiar em dispositivos compactos - os desenvolvedores raciocinaram que se houvesse uma versão Python para microcontroladores, por que não criar uma semelhante para a linguagem Go. Ir
Em sua forma atual, são suportados 15 modelos de microcontroladores, incluindo várias placas da Adafruit, Arduino, BBC micro:bit, ST Micro, Digispark, Nordic Semiconductor, Makerdiary e Phytec. Os programas também podem ser compilados para rodar em um navegador no formato WebAssembly e como arquivos executáveis para Linux. Suporta controladores ESP8266/ESP32
Principais objetivos do projeto:
O suporte para sistemas multi-core não está entre os objetivos principais,
lançamento eficiente de um grande número de corrotinas (o lançamento de corrotinas em si é totalmente suportado), obtenção do nível de desempenho do compilador de referência gc (a otimização é deixada para LLVM e em algumas aplicações o Tinygo pode ser mais rápido que gc) e completo
A principal diferença de um compilador semelhante
Entre as mudanças na versão 0.7 estão a implementação do comando “tinygo test”, o fornecimento de suporte à coleta de lixo para a maioria das placas alvo (baseadas em ARM Cortex-M) e WebAssembly, suporte para a placa HiFive1 rev B baseada no RISC- Arquitetura V e a placa Arduino nano33,
suporte de linguagem aprimorado (suporte para campos de bits usando getters e setters, suporte para estruturas anônimas).
Fonte: opennet.ru