Repolode
tinygo-org

tinygo-org/tinygo

Un compilador de Go basado en LLVM que genera código para microcontroladores, WebAssembly (WASM/WASI) y herramientas de línea de comandos.

Estrellas
17,828
Forks
1,093
Issues abiertos
601
Último commit
hace 10 horas

¿Qué es?

TinyGo es un compilador alternativo de Go pensado para entornos con recursos limitados. Reutiliza partes de las bibliotecas de la cadena de herramientas estándar de Go y usa LLVM como backend, por lo que el mismo código fuente de Go puede compilarse para placas de microcontroladores, entornos de ejecución de WebAssembly y sistemas operativos de escritorio.

En sistemas embebidos, los programas usan un paquete machine para controlar pines GPIO y periféricos, y el compilador es compatible con una amplia variedad de placas, incluidos modelos de Arduino, Adafruit y Seeed Studio. Los programas se pueden cargar directamente con el comando tinygo flash, seleccionando un target. Para WebAssembly, TinyGo genera módulos para navegadores (WASM) y entornos de ejecución de WASI, y se puede usar con plataformas como Fastly Compute, Fermyon Spin y wazero.

Los objetivos declarados del proyecto son generar binarios muy pequeños, ofrecer una amplia compatibilidad con placas comunes y compilar la mayoría de los paquetes de la biblioteca estándar y del código Go sin modificaciones. El proyecto no pretende igualar el rendimiento del compilador estándar gc ni compilar todos los programas de Go.

Funciones clave

  • 01Compila programas de Go para más de 150 placas de microcontroladores.
  • 02Genera módulos de WebAssembly tanto para navegadores (WASM) como para entornos de ejecución de WASI.
  • 03Usa LLVM como backend de generación de código, en lugar de generar C.
  • 04Permite compilar para Linux, macOS y Windows.
  • 05Incluye una herramienta de línea de comandos, tinygo, con los subcomandos flash y build.

Casos de uso

  • Escribir firmware en Go para Arduino, micro:bit u otras placas pequeñas.
  • Compilar código Go que se ejecute en el navegador o en plataformas edge mediante WebAssembly.
  • Crear componentes WASI para entornos de ejecución como Fermyon Spin o wazero.
  • Mantener pequeños los binarios compilados para dispositivos con recursos limitados.

Inicio rápido

  1. 1

    Instala TinyGo siguiendo las instrucciones de primeros pasos

  2. 2

    Compila y carga el ejemplo blinky en un Arduino Uno

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

    Compila un programa WASI como módulo WebAssembly

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

Antes de usarlo

  • No todos los programas de Go se pueden compilar; el proyecto no pretende explícitamente ofrecer compatibilidad con todo el código Go.
  • Parte del código incluido procede de LLVM y de bibliotecas de Teensy con licencias distintas, por lo que se aplican varias licencias.

Temas

Preguntas frecuentes

¿Qué es tinygo?
Un compilador de Go basado en LLVM que genera código para microcontroladores, WebAssembly (WASM/WASI) y herramientas de línea de comandos. TinyGo es un compilador alternativo de Go pensado para entornos con recursos limitados. Reutiliza partes de las bibliotecas de la cadena de herramientas estándar de Go y usa LLVM como backend, por lo que el mismo código fuente de Go puede compilarse para placas de microcontroladores, entornos de ejecución de WebAssembly y sistemas operativos de escritorio.
¿tinygo es gratuito? ¿Qué licencia tiene?
tinygo es open source bajo la licencia Other. Revisa los términos de la licencia antes de usarlo en productos comerciales.
¿tinygo sigue mantenido?
Mantenimiento activo. El último commit de tinygo fue el 21 oct 2026.
¿Para qué puedo usar tinygo?
Escribir firmware en Go para Arduino, micro:bit u otras placas pequeñas. Compilar código Go que se ejecute en el navegador o en plataformas edge mediante WebAssembly. Crear componentes WASI para entornos de ejecución como Fermyon Spin o wazero. Mantener pequeños los binarios compilados para dispositivos con recursos limitados.
¿Cómo se instala tinygo?
Instala TinyGo siguiendo las instrucciones de primeros pasos Compila y carga el ejemplo blinky en un Arduino Uno: tinygo flash -target arduino-uno examples/blinky1 Compila un programa WASI como módulo WebAssembly: tinygo build -buildmode=c-shared -o add.wasm -target=wasip1 add.go
¿Dónde consigo tinygo?
El código fuente y las instrucciones de instalación están en GitHub: https://github.com/tinygo-org/tinygo

Resumen generado por IA a partir del README del proyecto. Las estadísticas de GitHub se actualizan a diario.

Proyectos relacionados