Uma toolchain de compilação que transforma código C e C++ em WebAssembly para execução em navegadores, Node.js e outros runtimes Wasm.
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
Instale o TinyGo seguindo as instruções de introdução
- 2
Compile e grave o exemplo blinky em um Arduino Uno
tinygo flash -target arduino-uno examples/blinky1 - 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
Uma implementação enxuta de Python 3 que roda em microcontroladores e outros dispositivos com recursos limitados, com módulos para acesso ao hardware.
Um compilador experimental de TypeScript e JavaScript que transforma programas em executáveis nativos ou WebAssembly, sem exigir Node.js em tempo de execução.
Um emulador open source de ESP32 em Rust que executa firmware real no computador ou no navegador, sem precisar de hardware.
Uma biblioteca de UI em C, gratuita e com licença MIT, para criar interfaces gráficas em dispositivos embarcados, de MCUs pequenos a MPUs com Linux.
Runtime independente de WebAssembly baseado no gerador de código Cranelift, com suporte a WASI e integração com aplicações em várias linguagens.