GitPedia
tinygo-org

tinygo-org/tinygo

Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.

30 Releases
Latest: 1mo ago
0.41.1v0.41.1Latest
deadprogramdeadprogram·1mo ago·April 22, 2026
GitHub

📋 Changes

  • machine
  • esp32c3: correct pin interrupt setup call that was overlooked from #5320
  • runtime
  • esp32s3: wait for TIMG0 update register to clear before reading timer registers
  • net
  • update net module to a version that is backwards compatible with Go 1.25.x to fix #5332
0.41.0v0.41.0
deadprogramdeadprogram·1mo ago·April 21, 2026
GitHub

📋 Changes

  • general
  • go.mod, compiler: bump minimum Go version to 1.23
  • builder: support Go 1.26 now
  • feat: add inheritable-only field to filter processor-level targets (#5270)
  • feature: add esp32flash flash method for esp32s3/esp32c3/esp32/esp8266
  • flashing: introduce flash method 'esp32jtag' for esp32c3/esp32s3 targets
  • fashing: add "adb" flash method using Android Debug Bridge
  • main: auto-use best available flashing options on esp32
  • + 137 more
0.40.1v0.40.1
deadprogramdeadprogram·5mo ago·December 19, 2025
GitHub

📋 Changes

  • machine
  • nrf: fix flash writes when SoftDevice is enabled
  • runtime
  • runtime: avoid fixed math/rand sequence on RP2040/RP2350 (#5124)
  • runtime: add calls to initRand() during run() for all schedulers
  • runtime: call initRand() before initHeap() during initialization
  • runtime: use rand_hwrng hardwareRand for RP2040/RP2350 (#5135)
  • libs
  • + 1 more
0.40.0v0.40.0
deadprogramdeadprogram·5mo ago·December 15, 2025
GitHub

📋 Changes

  • general
  • all: add full LLVM 20 support
  • core: feat: enable //go:linkname pragma for globals
  • core: feature: Add flag to ignore go compatibility matrix (#5078)
  • compiler
  • emit an error when the actual arch doesn't match GOARCH
  • mark string parameters as readonly
  • use Tarjan's SCC algorithm to detect loops for defer
  • + 77 more
0.39.0v0.39.0
deadprogramdeadprogram·9mo ago·August 19, 2025
GitHub

📋 Changes

  • general
  • all: add Go 1.25 support
  • net: update to latest tinygo net package
  • docs: clarify build verification step for macOS users
  • Add flag to skip Renesas SVD builds
  • build
  • Makefile: install missing dlmalloc files
  • flash: add -o flag support to save built binary (Fixes #4937) (#4942)
  • + 40 more
0.38.0v0.38.0
deadprogramdeadprogram·12mo ago·June 16, 2025
GitHub

📋 Changes

  • general
  • `go.*`: upgrade `golang.org/x/tools` to v0.30.0
  • `all`: add support for LLVM 20
  • build
  • go back to using MinoruSekine/setup-scoop for Windows CI builds
  • `flake.*`: upgrade to nixpkgs 25.05, LLVM 20
  • `Makefile`: only detect ccache command when needed
  • `Makefile`: create random filename inside rule
  • + 86 more
0.37.0v0.37.0
deadprogramdeadprogram·1y ago·March 19, 2025
GitHub

📋 Changes

  • general
  • add the Boehm-Demers-Weiser GC on Linux
  • ci
  • add more tests for wasm and baremetal
  • compiler
  • crypto/internal/sysrand is allowed to use unsafe signatures
  • examples
  • add goroutine benchmark to examples
  • + 38 more
0.36.0v0.36.0
deadprogramdeadprogram·1y ago·March 4, 2025
GitHub

📋 Changes

  • general
  • add initial Go 1.24 support
  • add support for LLVM 19
  • update license for 2025
  • make small corrections for README regarding wasm
  • use GOOS and GOARCH for building wasm simulated boards
  • only infer target for wasm when GOOS and GOARCH are set correctly, not just based on file extension
  • add test-corpus-wasip2
  • + 57 more
0.35.0v0.35.0
deadprogramdeadprogram·1y ago·December 20, 2024
GitHub

📋 Changes

  • general
  • update cmsis-svd library
  • use default UART settings in the echo example
  • `goenv`: also show git hash with custom build of TinyGo
  • `goenv`: support parsing development versions of Go
  • `main`: parse extldflags early so we can report the error message
  • compiler
  • `builder`: whitelist temporary directory env var for Clang invocation to fix Windows bug
  • + 56 more
0.34.0v0.34.0
deadprogramdeadprogram·1y ago·October 26, 2024
GitHub

📋 Changes

  • general
  • fix `GOOS=wasip1` for `tinygo test`
  • add `-C DIR` flag
  • add initial documentation for project governance
  • add `-ldflags='-extldflags=...'` support
  • improve usage message with `tinygo help` and when passing invalid parameters
  • compiler
  • `builder`: remove environment variables when invoking Clang, to avoid the environment changing the behavior
  • + 38 more
0.33.0v0.33.0
aykevlaykevl·1y ago·August 20, 2024
GitHub

📋 Changes

  • Go 1.23 support (including the new [range-over-func](https://go.dev/wiki/RangefuncExperiment) language feature)
  • WASI preview 2 support
  • MIPS little endian support (big endian support is still experimental), so you can use `GOARCH=mipsle`
  • softfloat support for ARM and MIPS
  • improved error messages
  • general
  • use latest version of x/tools
  • add chromeos 9p support for flashing
  • + 52 more
0.32.0v0.32.0
deadprogramdeadprogram·1y ago·June 18, 2024
GitHub

📋 Changes

  • general
  • fix wasi-libc include headers on Nix
  • apply OpenOCD commands after target configuration
  • fix a minor race condition when determining the build tags
  • support UF2 drives with a space in their name on Linux
  • add LLVM 18 support
  • drop support for Go 1.18 to be able to stay up to date
  • compiler
  • + 41 more
0.31.2v0.31.2
deadprogramdeadprogram·2y ago·March 11, 2024
GitHub

📋 Changes

  • general
  • update the `net` submodule to updated version with `Buffers` implementation
  • compiler
  • `syscall`: add wasm_unknown tag to some additional files so it can compile more code
  • standard library
  • `runtime`: add Frame.Entry field
0.31.1v0.31.1
deadprogramdeadprogram·2y ago·February 28, 2024
GitHub

📋 Changes

  • general
  • fix Binaryen build in make task
  • update final build stage of Docker `dev` image to go1.22
  • only use GHA cache for building Docker `dev` image
  • update the `net` submodule to latest version
  • compiler
  • `interp`: make getelementptr offsets signed
  • `interp`: return a proper error message when indexing out of range
0.31.0v0.31.0
deadprogramdeadprogram·2y ago·February 26, 2024
GitHub

📋 Changes

  • Go 1.22 support
  • macOS arm64 native binary release build
  • Nix flake support
  • LLVM 17
  • general
  • remove LLVM 14 support
  • add LLVM 17 support, and use it by default
  • add Nix flake support
  • + 66 more
0.30.0v0.30.0
deadprogramdeadprogram·2y ago·September 21, 2023
GitHub

📋 Changes

  • general
  • add LLVM 16 support, use it by default
  • compiler
  • `build`: work around a race condition by building Go SSA serially
  • `compiler`: fix a crash by not using the LLVM global context types
  • `interp`: don't copy unknown values in `runtime.sliceCopy` to fix miscompile
  • `interp`: fix crash in error report by not returning raw LLVM values
  • standard library
  • + 9 more
0.29.0v0.29.0
deadprogramdeadprogram·2y ago·August 25, 2023
GitHub

📋 Changes

  • general
  • Go 1.21 support
  • use https for renesas submodule #3856
  • ci: rename release-double-zipped to something more useful
  • ci: update Node.js from version 14 to version 16
  • ci: switch GH actions builds to use Go 1.21 final release
  • docker: update clang to version 15
  • docker: use Go 1.21 for Docker dev container build
  • + 58 more
0.28.1v0.28.1
aykevlaykevl·3y ago·June 11, 2023
GitHub

📋 Changes

  • The version was set to 0.28.0-dev in the v0.28.0 release, while it should not have the -dev prefix. This is fixed in v0.28.1.
  • A small bugfix for SPI on the rp2040 is included.
0.28.0v0.28.0
aykevlaykevl·3y ago·June 11, 2023
GitHub

📋 Changes

  • Much improved reflect support, which means that many packages that previously didn't properly work are now mostly or entirely supported.
  • Added `//go:wasmimport` following [upstream Go](https://github.com/golang/go/issues/59149). This is the supported way to import functions, other ways (`//export` and the like) may stop working in the future.
  • general
  • fix parallelism in the compiler on Windows by building LLVM with thread support
  • support qemu-user debugging
  • make target JSON msd-volume-name an array
  • print source location when a panic happens in -monitor
  • `test`: don't print `ok` for a successful compile-only
  • + 126 more
0.27.0v0.27.0
aykevlaykevl·3y ago·February 12, 2023
GitHub

📋 Changes

  • general
  • all: update musl
  • all: remove "acm:"` prefix for USB vid/pid pair
  • all: add support for LLVM 15
  • all: use DWARF version 4
  • all: add initial (incomplete) support for Go 1.20
  • all: add `-gc=custom` option
  • `main`: print ldflags including ThinLTO flags with -x
  • + 85 more
0.26.0v0.26.0
aykevlaykevl·3y ago·October 4, 2022
GitHub

📋 Changes

  • general
  • remove support for LLVM 13
  • remove calls to deprecated ioutil package
  • move from `os.IsFoo` to `errors.Is(err, ErrFoo)`
  • fix for builds using an Android host
  • make interp timeout configurable from command line
  • ignore ports with VID/PID if there is no candidates
  • drop support for Go 1.16 and Go 1.17
  • + 71 more
0.25.0v0.25.0
aykevlaykevl·3y ago·August 3, 2022
GitHub

📋 Changes

  • command line
  • change to ignore PortReset failures
  • compiler
  • `compiler`: darwin/arm64 is aarch64, not arm
  • `compiler`: don't clobber X18 and FP registers on darwin/arm64
  • `compiler`: fix issue with methods on generic structs
  • `compiler`: do not try to build generic functions
  • `compiler`: fix type names for generic named structs
  • + 42 more
0.25.0-beta1v0.25.0-beta1Pre-release
deadprogramdeadprogram·3y ago·July 29, 2022
GitHub

This is a pre-release of TinyGo v0.25.0 You will need to install manually by downloading files from here. The beta versions are not available on Homebrew for macOS, nor for Scoop on Windows.

0.24.0v0.24.0
aykevlaykevl·3y ago·July 1, 2022
GitHub

📋 Changes

  • command line
  • remove support for go 1.15
  • remove support for LLVM 11 and LLVM 12
  • add initial Go 1.19 beta support
  • `test`: fix package/... syntax
  • compiler
  • add support for the embed package
  • `builder`: improve error message for "command not found"
  • + 39 more
0.23.0v0.23.0
deadprogramdeadprogram·4y ago·April 29, 2022
GitHub

📋 Changes

  • [esp32-c3-12f](https://docs.ai-thinker.com/_media/esp32/docs/esp-c3-12f_specification.pdf)
  • [macropad-rp2040](https://www.adafruit.com/product/5128)
  • [teensy41](https://www.pjrc.com/store/teensy41.html)
  • [thingplus-rp2040](https://www.sparkfun.com/products/17745)
  • [xiao-ble](https://www.seeedstudio.com/Seeed-XIAO-BLE-nRF52840-p-5201.html)
  • command line
  • add `-work` flag
  • add Go 1.18 support
  • + 90 more
0.22.0v0.22.0
aykevlaykevl·4y ago·January 26, 2022
GitHub

📋 Changes

  • [blues wireless Swan](https://blues.io/products/swan/)
  • [M5Stack](https://docs.m5stack.com/en/core/basic)
  • [M5Stamp C3](https://docs.m5stack.com/en/core/stamp_c3)
  • [Seeed LoRa-E5 Development Kit](https://www.seeedstudio.com/LoRa-E5-Dev-Kit-p-4868.html)
  • [ST Micro STM32F469 "Discovery"](https://www.st.com/content/st_com/en/products/evaluation-tools/product-evaluation-tools/mcu-mpu-eval-tools/stm32-mcu-mpu-eval-tools/stm32-discovery-kits/32f469idiscovery.html)
  • [ST Micro "Nucleo" WL55JC](https://www.st.com/en/evaluation-tools/nucleo-wl55jc.html)
  • [The Things Industries Generic Node Sensor Edition](https://www.genericnode.com/docs/sensor-edition/)
  • command line
  • + 99 more
0.21.0v0.21.0
aykevlaykevl·4y ago·November 18, 2021
GitHub

📋 Changes

  • command line
  • drop support for LLVM 10
  • `build`: drop support for LLVM targets in the -target flag
  • `build`: fix paths in error messages on Windows
  • `build`: add -p flag to set parallelism
  • `lldb`: implement `tinygo lldb` subcommand
  • `test`: use emulator exit code instead of parsing test output
  • `test`: pass testing arguments to wasmtime
  • + 81 more
0.20.0v0.20.0
aykevlaykevl·4y ago·September 21, 2021
GitHub

📋 Changes

  • command line
  • add support for Go 1.17
  • improve Go version detection
  • add support for the Black Magic Probe (BMP)
  • add a flag for creating cpu profiles
  • compiler
  • `builder:` list libraries at the end of the linker command
  • `builder:` strip debug information at link time instead of at compile time
  • + 57 more
0.19.0v0.19.0
aykevlaykevl·4y ago·July 1, 2021
GitHub

📋 Changes

  • command line
  • don't consider compile-only tests as failing
  • add -test flag for `tinygo list`
  • escape commands while printing them with the -x flag
  • make flash-command portable and safer to use
  • use `extended-remote` instead of `remote` in GDB
  • detect specific serial port IDs based on USB vid/pid
  • add a flag to the command line to select the serial implementation
  • + 53 more
0.18.0v0.18.0
aykevlaykevl·5y ago·May 12, 2021
GitHub

📋 Changes

  • command line
  • drop support for Go 1.11 and 1.12
  • throw an error when no target is specified on Windows
  • improve error messages in `getDefaultPort()`, support for multiple ports
  • remove `-cflags` and `-ldflags` flags
  • implement `-ldflags="-X ..."`
  • add `-print-allocs` flag that lets you print all heap allocations
  • openocd commands in tinygo command line
  • + 109 more