The TinyGo project released TinyGo 0.43.0 on GitHub on October 9, 2026, and it is marked as the latest release. TinyGo is a Go compiler for microcontrollers and WebAssembly. The maintainers say the release contains over 160 commits to the main repository, "with a major focus on Go compatibility and correctness." It adds support for Espressif's ESP32-H2 and three more boards, and brings I2S audio to ESP32 and nRF52 parts. The garbage collector now uses precise layouts on all platforms, and a new -trimpath flag gives reproducible builds.
New chips and boards
The release notes list four new targets:
- ESP32-H2, with the ESP32-H2-DevKitM-1 board
- Waveshare RP2040-PiZero
- Waveshare RP2350-PiZero
- Pimoroni Tufty 2350
All four boards now appear in TinyGo's supported microcontrollers list.
Support for the ESP32-H2 is still limited. The ESP32-H2-DevKitM-1 board page lists GPIO, UART and ADC as supported in TinyGo, and SPI, I2C, PWM and Bluetooth as "Not yet", although the hardware supports all seven. The flashing example is tinygo flash -target=esp32h2-devkitm-1 examples/serial. The board's addressable RGB LED, named WS2812, is on GPIO8, the button is on GPIO9, and the UART pins are GPIO24 (TX) and GPIO23 (RX). The page warns: "It has no plain LED, so examples/blinky1 does not work on this board."
Peripheral changes in the machine package
I2S support arrives for both nRF52xxx and ESP32xx parts, along with a new i2s-tone example that includes ESP32xx pin assignments. The other hardware changes in the release notes:
- ESP32: PWM support using the LEDC peripheral. Across the ESP32xx family, LEDC channels are now shared,
SetInvertingis fixed, and PWM above 78 kHz and lost duty updates are fixed. - ESP32xx I2C: fixes to I2C commands, FIFO reset and the last byte read, plus a fix for I2C timeouts on larger transfers on the ESP32.
- ESP32-C6: default UART0 pins, and the UART interrupt moves off CPU interrupt 7.
- nRF52840: USB mass storage (MSC) support and an 8 KB default stack.
- Teensy 4.x: USB device (CDC) support on the MIMXRT1062.
- RP2040/RP2350: with
scheduler=cores, the RP2040 avoids XIP hangs during flash operations, and the RP2350 pauses the other core during flash operations.
The new ESP32 PWM and the I2C fixes ship in the same release as the ESP32-H2, but the H2 board still lists PWM and I2C as "Not yet", so H2 designs should not count on them.
Runtime and garbage collector
The runtime now implements synctest and NumGoroutine, and supports panic recovery on Xtensa and on WebAssembly without exceptions. On WebAssembly, the compiler reuses Asyncify panic catchers and reduces Asyncify catcher stack usage. Binaryen is updated to version 133, and tinygo run now gives the program access to stdin.
The garbage collector now requires explicit GC layouts and scans globals precisely on all platforms. With the Boehm GC, it uses precise layouts and eagerly marks global roots. The release also fixes GC synchronisation on multicore RISC-V.
On the standard library side, the testing package gains parallel tests, AllocsPerRun and B.SetParallelism. The reflect package adds NewAt, Slice3, SetCap and FieldByIndexErr, runtime/debug now populates BuildInfo so ReadBuildInfo works, and crypto/rand implements Text.
Compiler: -trimpath and cgo_import_dynamic
The builder adds -trimpath support and makes trimmed builds reproducible. The compiler now implements the go:cgo_import_dynamic directive and lowers Darwin cgo import trampolines. Other compiler changes optimise non-blocking single-case selects, large array comparisons and string comparisons, and fix 64-bit sin and cos on AVR. The project also dropped its handling of the "devel " version prefix because Go 1.25 changed how versions are reported.
What It Means for Makers
The Waveshare RP2040-PiZero, Waveshare RP2350-PiZero and Pimoroni Tufty 2350 now have their own TinyGo targets. RP2040 and RP2350 users who run scheduler=cores and write to flash get the flash-operation fixes.
On nRF52 and ESP32 parts, the i2s-tone example is the place to start with the new I2S support. The nRF52840 can now act as a USB mass-storage device, and Teensy 4.x boards can now use USB CDC.
On the ESP32-H2-DevKitM-1, test with examples/serial rather than examples/blinky1, and check the board page for interface status before relying on SPI, I2C, PWM or Bluetooth.
The -trimpath flag and the GC changes apply across targets, including WebAssembly, so anyone who checks firmware images byte-for-byte or ships WebAssembly modules should rebuild and test with 0.43.0. The release is available from the project's GitHub releases page, and per-board details are in the TinyGo documentation.