TinyGo is a compiler for the Go programming language that targets small, resource-constrained environments, primarily microcontrollers (tiny computers embedded in physical devices like sensors and gadgets) and WebAssembly (a format that lets code run in browsers or lightweight server runtimes). The standard Go compiler is designed for full-sized computers with plenty of memory and processing power. TinyGo takes the same Go language you know and compiles it into much smaller, leaner binaries suitable for chips with very limited resources. It supports over 150 different microcontroller boards, including Arduino and ESP32-based boards. The code example in the README shows a Go program that blinks an LED, compiled and flashed directly onto an Arduino board with a single command: "tinygo flash -target arduino-uno examples/blinky1". Beyond microcontrollers, TinyGo also compiles Go programs to WebAssembly (WASM) for use in browsers, and to WASI (a standard interface for running WebAssembly on servers and edge computing platforms). The README shows a simple Go function exported to WebAssembly and the command to compile it for any WASI-compatible runtime. TinyGo is built on top of LLVM (a widely-used compiler infrastructure toolkit), which gives it strong optimization capabilities. Goals include very small binary sizes, broad microcontroller support, and WebAssembly usability. It is not intended to compile every possible Go program. The project is licensed under the BSD 3-clause license.
Generated 2026-05-21 · Model: sonnet-4-6 · Verify against the repo before relying on details.