Repolode
tinygo-org

tinygo-org/tinygo

Um compilador Go baseado em LLVM para microcontroladores, WebAssembly (WASM/WASI) e ferramentas de linha de comando.

Estrelas
17,828
Forks
1,093
Issues abertas
601
Último commit
há 10 horas

O que é?

TinyGo é um compilador Go alternativo voltado a ambientes com recursos limitados. Ele reutiliza partes das bibliotecas da toolchain padrão do Go e usa LLVM como backend, permitindo compilar o mesmo código Go para placas de microcontroladores, runtimes WebAssembly e sistemas operacionais de desktop.

No desenvolvimento embarcado, os programas usam um pacote machine para controlar pinos GPIO e periféricos, e o compilador oferece suporte a uma ampla lista de placas, incluindo modelos da Arduino, Adafruit e Seeed Studio. É possível gravar programas diretamente na placa com o comando tinygo flash, selecionando um target. Para WebAssembly, o TinyGo gera módulos para navegadores (WASM) e runtimes WASI, e pode ser usado com plataformas como Fastly Compute, Fermyon Spin e wazero.

Os objetivos declarados do projeto são gerar binários muito pequenos, oferecer amplo suporte às placas mais comuns e compilar a maioria dos pacotes da biblioteca padrão e do código Go sem modificações. O projeto deixa claro que não pretende igualar o desempenho do compilador gc padrão nem compilar todos os programas Go.

Recursos principais

  • 01Compila programas Go para mais de 150 placas de microcontroladores.
  • 02Gera módulos WebAssembly para navegadores (WASM) e runtimes WASI.
  • 03Usa LLVM como backend de geração de código, em vez de gerar C.
  • 04Oferece suporte à compilação para targets Linux, macOS e Windows.
  • 05Fornece a ferramenta de linha de comando tinygo, com os subcomandos flash e build.

Casos de uso

  • Desenvolver firmware em Go para Arduino, micro:bit ou outras placas pequenas.
  • Compilar código Go para execução em navegadores ou plataformas de edge via WebAssembly.
  • Criar componentes WASI para runtimes como Fermyon Spin ou wazero.
  • Manter pequenos os binários compilados para dispositivos com recursos limitados.

Início rápido

  1. 1

    Instale o TinyGo seguindo as instruções de introdução

  2. 2

    Compile e grave o exemplo blinky em um Arduino Uno

    tinygo flash -target arduino-uno examples/blinky1
  3. 3

    Compile um programa WASI como um módulo WebAssembly

    tinygo build -buildmode=c-shared -o add.wasm -target=wasip1 add.go

Antes de usar

  • Nem todo programa em Go pode ser compilado; o projeto declara explicitamente que não tem como objetivo oferecer suporte a todo o código Go.
  • Parte do código incluído vem do LLVM e de bibliotecas Teensy, que têm licenças separadas; por isso, há uma combinação de licenças.

Tópicos

Perguntas frequentes

O que é tinygo?
Um compilador Go baseado em LLVM para microcontroladores, WebAssembly (WASM/WASI) e ferramentas de linha de comando. TinyGo é um compilador Go alternativo voltado a ambientes com recursos limitados. Ele reutiliza partes das bibliotecas da toolchain padrão do Go e usa LLVM como backend, permitindo compilar o mesmo código Go para placas de microcontroladores, runtimes WebAssembly e sistemas operacionais de desktop.
tinygo é gratuito? Qual é a licença?
tinygo é open source sob a licença Other. Confira os termos da licença antes de usá-lo em produtos comerciais.
tinygo ainda é mantido?
Manutenção ativa. O último commit de tinygo foi em 21 de out. de 2026.
Para que posso usar tinygo?
Desenvolver firmware em Go para Arduino, micro:bit ou outras placas pequenas. Compilar código Go para execução em navegadores ou plataformas de edge via WebAssembly. Criar componentes WASI para runtimes como Fermyon Spin ou wazero. Manter pequenos os binários compilados para dispositivos com recursos limitados.
Como instalar tinygo?
Instale o TinyGo seguindo as instruções de introdução Compile e grave o exemplo blinky em um Arduino Uno: tinygo flash -target arduino-uno examples/blinky1 Compile um programa WASI como um módulo WebAssembly: tinygo build -buildmode=c-shared -o add.wasm -target=wasip1 add.go
Onde consigo tinygo?
O código-fonte e as instruções de instalação estão no GitHub: https://github.com/tinygo-org/tinygo

Resumo gerado por IA a partir do README do projeto. As estatísticas do GitHub são atualizadas diariamente.

Projetos relacionados