github.com/tinygo-org/tinygo
v0.41.1
#162 most downloaded on Go modules
tinygo-org/tinygo
What this package is like to depend on
Last release 3 days ago
21 Aug 2026
Ships fairly regularly
a new release about every 1 weeks
Nearly every release is documented
notes for 47 of 49 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
162 releases · first in 2019
76 releases in the last 12 months
see the full history below
Release timeline
162 releases · Feb 2019 to Aug 2026Releases
latest 60 of 162-
v0.41.2-0.20260821001124-f71b63053cf121 Aug 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260812190852-c4219439eb9312 Aug 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260809191159-7a9c649268ff09 Aug 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260730000313-c2346570fbda30 Jul 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260725154201-b0298c6a690325 Jul 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260720144534-babdfc9e10da20 Jul 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260718064246-b8adb803c46218 Jul 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260716123147-f1c39e8356d016 Jul 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260701102640-30355cec9f3501 Jul 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260619185532-6f686d12afb519 Jun 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260518113127-18033ebc363b18 May 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260428100648-1a1506ef79a628 Apr 2026 pre-releaseNothing published for this version
-
v0.41.2-0.20260424164848-e9d78a78ea7424 Apr 2026 pre-releaseNothing published for this version
-
v0.41.122 Apr 2026Release notes
Open source →This point release has a few very important fixes for you all that could not wait.
Release notes
Open source →- 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
- machine
-
v0.41.021 Apr 2026Release notes
Open source →This release is the most feature packed yet with over 150 commits to our main repo alone. We added Go 1.26 support to keep you up to date with the latest work from the mothership. We also have many improvements to our developer tooling and compatibility. And some big additions when it comes to hardware support, with ESP32 wireless, and the new Arduino UNO Q board too.
- 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
- espflasher: update to espflasher 0.6.0
- compiler
- implement method-set based
AssignableToandImplements(#5304) - simplify
createObjectLayout - implement copy directly
- fix min/max on floats by using intrinsics
- add element layout to
sliceAppend - add intrinsic for
crypto/internal/constanttime.boolToUint8 - fix
SyscallNhandling for Windows on Go 1.26+
- implement method-set based
- core
- reflect: add
TypeAssert - reflect: fix
TypeAssertfor structs - sync: add
WaitGroup.Go - os: add
UserCacheDirandUserConfigDir - os: implement
Lchownfunction for changing file ownership (#5161) - testing: add
b.ReportMetric() - errors: add errors package to passing list
- internal/gclayout: use correct lengths
- internal/abi: add
EscapeNonString,EscapeToResultNonString - internal, runtime: add internal fips bool
- internal/itoa: resurrect from Go stdlib
- internal/syscall/unix: implement
GetRandomfor WASI targets - interp: make
ptrtointsize mismatch a recoverable error - loader: support "all:" prefix in
//go:embedpatterns - loader, crypto/internal/entropy: fix 32 MiB RAM overflow on microcontrollers
- loader, unicode/utf8: fix
hiBitsoverflow on 16-bit AVR targets - builder: order embedded files deterministically
- builder: fix panic in
findPackagePathwhen using -size short - builder: fix
SIGSEGVwhen stripping duplicate function definitions - builder, runtime: fix duplicate symbol error with Go 1.26+ on Windows
- builder: use target-specific -march for RISC-V library compilation
- transform: modify output format from the
-print-allocsflag to match the go coverage tool format - cgo: allow for changes to
short-enumsflag - wasm: add more stubbed file operations
- reflect: add
- machine
- esp32c3: implement
BlockDevicefor esp32c3 flash - esp32c3: clear
GPIO STATUSbefore dispatching pin callbacks - esp32c3: implement
USBDeviceusing interrupts - esp32c3: add
Enablestub for QEMU test target - esp32c3: fix interrupt disable handling
- esp32c3: clear
MCAUSEafter handling interrupt - esp32c3: map missing
IRAMsections in linker script - esp32c3: fix to use
PROVIDE()for WiFi/BLE ROM function addresses to allow blob overrides - esp32c3: add WiFi/BLE ROM linker support
- esp32c3: use
TIMG0alarm interrupt forsleepTicksinstead of busy-waiting - esp32s3: implement
Pin.SetInterruptfor GPIO pin change interrupts - esp32s3: use edge-triggered CPU interrupt for GPIO pin interrupts
- esp32s3: add interrupt support (#5244)
- esp32s3: switch USB implementation to use interrupts instead of polling
- esp32s3: replace inline ISR with full interrupt vector handler
- esp32s3: use
TIMG0alarm interrupt forsleepTicks - esp32s3: improve exception handlers, add
procPin/procUnpin, and linker wrap flags - esp32s3: fix Xtensa register window spill using recursive
call4in task switching - esp32s3: update linker script and boot assembly for multi-page flash XIP mapping
- esp32s3: add flash XIP boot assembly with cache/MMU init
- esp32s3: implement SPI (#5169)
- esp32s3: implement I2C interface (#5210)
- esp32s3: implement RNG based on onboard hardware random number generator
- esp32s3,esp32c3: add USB serial support
- esp32s3,esp32c3: add
txStalledflag to skip USB serial spin when no host - esp32s3,esp32c3: make USB Serial/JTAG writes non-blocking when FIFO is full
- esp32c3/esp32s3: refactor ADC implementation to reduce code duplication
- esp32s3,esp32c3: add ADC support (#5231)
- esp32s3,esp32c3: add PWM support (#5215)
- esp32c3/esp32s3: refactoring and corrections for SPI implementation
- esp32xx: add WASM simulator support for ESP32-C3/ESP32-S3 targets
- esp32: default SPI CS pin to
NoPinwhen unset - esp: fix
tinygo_scanCurrentStackto spill register windows - stm32: fix UART interrupt storm caused by uncleared overrun error
- stm32: fix PWM problem due to register shifting
- stm32: add STM32U585 target definition and runtime
- stm32: add STM32U5 GPIO, pin interrupts, and UART support
- stm32: add STM32U5 I2C support
- stm32: add STM32U5 SPI support
- stm32u585: implement ADC
- stm32g0b1: add support (#5150)
- stm32g0b1: add Watchdog + ADC support (#5158)
- stm32l0: add flash support
- stm32l0x1,l0x2: TIM: adapt to 32-bit register access
- stm32g0: sync with updated stm32 device files
- attiny85: add USI-based SPI support (#5181)
- attiny85: add PWM support (#5171)
- rp: add
Closefunction to UART to allow for removing all system resources/power usage - rp: use
blockReset()andunresetBlockWait()helper functions for peripheral reset/unreset - rp2: prevent PWM Period method overflow
- rp2: add per-byte timeout budget for I2C (#5189)
- feather-m0: export UART0 and pins
- usb/cdc: better ring buffer implementation (#5209)
- fix: replace ! with ~ for register mask
- atmega328p_simulator: add correct build tag for arduino_uno after renaming
- esp32c3: implement
- net
- update to Go 1.26.2 net package with UDP and JS improvements
- runtime
- implement
fminimum/fmaximum - make
timeoffsetatomic - add
MemStats.HeapObjects - handle
GODEBUGonwasip2(#5312) - fix Darwin
syscallreturn value truncation and lost arguments - add
syscall.runtimeClearenvfor Go 1.26 - split
syscallfunctions for darwin changes for 1.26 - fix: init heap before random number seed on wasm platforms
- implement
- targets
- add esp32s3-supermini board target
- add support for Seeedstudio Xiao-RP2350 board
- add Shrike Lite board (#5170)
- rename arduino target to arduino-uno
- add pins/setup for Arduino UNO Q board QWIIC connector
- correct pin mapping for Arduino UNO Q STM32 MCU
- add stm32u585 openocd commands for flashing on Arduino UNO Q
- correct name/tag use for esp32s3-wroom1 board
- modify esp32, esp32s3, esp32c3, & esp8266 targets to use built-in esp32flash
- switch rp2040/rp2350 to default to tasks scheduler
- change default stack size for esp32c3 and esp32s3 to 8196
- swan: rename group build tag stm32l4x5 => stm32l4y5 to avoid clash with stm32 device name
- nucleo-f722ze: add build-tag stm32f722
- fix: set stm32u5x clock rate to default
- create generic targets for esp32 boards
- libs
- stm32-svd: update submodule
- update tools/gen-device-svd for recent changes to stm32-svd file structure (#5212)
- build/test
- build: use Golang 1.26 for all builds
- build: actually use the version of llvm we are supposed to be testing by using brew link command
- build: let scoop run updates to resolve binaryen install failures on Windows
- ci: don't double zip release artifacts
- test: increase default timeout from 1 to 2 minutes to prevent spurious CI fails
- testdata: fix flaky timers test by draining ticker channel after Stop
- testdata: more corpus entries (#5182)
- add soypat/lneto to corpus
- GNUmakefile: add
contextandexpvarto stdlib tests - GNUmakefile: add
encoding/xmlto stdlib tests on Linux - main (test): skip
mipsletest if the emulator is missing - make: remove machine without board from smoketest
- stm32: add Arduino UNO Q to smoketests
- flake: bump to nixpkgs 25.11
- chore: update all github actions to latest versions
- fix: use external 7zip for scoop installs on Windows
Release notes
Open source →- 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
- espflasher: update to espflasher 0.6.0
- compiler
- implement method-set based AssignableTo and Implements (#5304)
- simplify createObjectLayout
- implement copy directly
- fix min/max on floats by using intrinsics
- add element layout to sliceAppend
- add intrinsic for crypto/internal/constanttime.boolToUint8
- fix SyscallN handling for Windows on Go 1.26+
- core
- reflect: add TypeAssert
- reflect: fix TypeAssert for structs
- sync: add WaitGroup.Go
- os: add UserCacheDir and UserConfigDir
- os: implement Lchown function for changing file ownership (#5161)
- testing: add b.ReportMetric()
- errors: add errors package to passing list
- internal/gclayout: use correct lengths
- internal/abi: add EscapeNonString, EscapeToResultNonString
- internal, runtime: add internal fips bool
- internal/itoa: resurrect from Go stdlib
- internal/syscall/unix: implement GetRandom for WASI targets
- interp: make ptrtoint size mismatch a recoverable error
- loader: support "all:" prefix in //go:embed patterns
- loader, crypto/internal/entropy: fix 32 MiB RAM overflow on microcontrollers
- loader, unicode/utf8: fix hiBits overflow on 16-bit AVR targets
- builder: order embedded files deterministically
- builder: fix panic in findPackagePath when using -size short
- builder: fix SIGSEGV when stripping duplicate function definitions
- builder, runtime: fix duplicate symbol error with Go 1.26+ on Windows
- builder: use target-specific -march for RISC-V library compilation
- transform: modify output format from the -print-allocs flag to match the go coverage tool format
- cgo: allow for changes to 'short-enums' flag
- wasm: add more stubbed file operations
- machine
- esp32c3: implement BlockDevice for esp32c3 flash
- esp32c3: clear GPIO STATUS before dispatching pin callbacks
- esp32c3: implement USBDevice using interrupts
- esp32c3: add Enable stub for QEMU test target
- esp32c3: fix interrupt disable handling
- esp32c3: clear MCAUSE after handling interrupt
- esp32c3: map missing IRAM sections in linker script
- esp32c3: fix to use PROVIDE() for WiFi/BLE ROM function addresses to allow blob overrides
- esp32c3: add WiFi/BLE ROM linker support
- esp32c3: use TIMG0 alarm interrupt for sleepTicks instead of busy-waiting
- esp32s3: implement Pin.SetInterrupt for GPIO pin change interrupts
- esp32s3: use edge-triggered CPU interrupt for GPIO pin interrupts
- esp32s3: add interrupt support (#5244)
- esp32s3: switch USB implementation to use interrupts instead of polling
- esp32s3: replace inline ISR with full interrupt vector handler
- esp32s3: use TIMG0 alarm interrupt for sleepTicks
- esp32s3: improve exception handlers, add procPin/procUnpin, and linker wrap flags
- esp32s3: fix Xtensa register window spill using recursive call4 in task switching
- esp32s3: update linker script and boot assembly for multi-page flash XIP mapping
- esp32s3: add flash XIP boot assembly with cache/MMU init
- esp32s3: implement SPI (#5169)
- esp32s3: implement I2C interface (#5210)
- esp32s3: implement RNG based on onboard hardware random number generator
- esp32s3,esp32c3: add USB serial support
- esp32s3,esp32c3: add txStalled flag to skip USB serial spin when no host
- esp32s3,esp32c3: make USB Serial/JTAG writes non-blocking when FIFO is full
- esp32c3/esp32s3: refactor ADC implementation to reduce code duplication
- esp32s3,esp32c3: add ADC support (#5231)
- esp32s3,esp32c3: add PWM support (#5215)
- esp32c3/esp32s3: refactoring and corrections for SPI implementation
- esp32xx: add WASM simulator support for ESP32-C3/ESP32-S3 targets
- esp32: default SPI CS pin to NoPin when unset
- esp: fix tinygo_scanCurrentStack to spill register windows
- stm32: fix UART interrupt storm caused by uncleared overrun error
- stm32: fix PWM problem due to register shifting
- stm32: add STM32U585 target definition and runtime
- stm32: add STM32U5 GPIO, pin interrupts, and UART support
- stm32: add STM32U5 I2C support
- stm32: add STM32U5 SPI support
- stm32u585: implement ADC
- stm32g0b1: add support (#5150)
- stm32g0b1: add Watchdog + ADC support (#5158)
- stm32l0: add flash support
- stm32l0x1,l0x2: TIM: adapt to 32-bit register access
- stm32g0: sync with updated stm32 device files
- attiny85: add USI-based SPI support (#5181)
- attiny85: add PWM support (#5171)
- rp: add Close function to UART to allow for removing all system resources/power usage
- rp: use blockReset() and unresetBlockWait() helper functions for peripheral reset/unreset
- rp2: prevent PWM Period method overflow
- rp2: add per-byte timeout budget for I2C (#5189)
- feather-m0: export UART0 and pins
- usb/cdc: better ring buffer implementation (#5209)
- fix: replace ! with ~ for register mask
- atmega328p_simulator: add correct build tag for arduino_uno after renaming
- net
- update to Go 1.26.2 net package with UDP and JS improvements
- runtime
- implement fminimum/fmaximum
- make timeoffset atomic
- add MemStats.HeapObjects
- handle GODEBUG on wasip2 (#5312)
- fix Darwin syscall return value truncation and lost arguments
- add syscall.runtimeClearenv for Go 1.26
- split syscall functions for darwin changes for 1.26
- fix: init heap before random number seed on wasm platforms
- targets
- add esp32s3-supermini board target
- add support for Seeedstudio Xiao-RP2350 board
- add Shrike Lite board (#5170)
- rename arduino target to arduino-uno
- add pins/setup for Arduino UNO Q board QWIIC connector
- correct pin mapping for Arduino UNO Q STM32 MCU
- add stm32u585 openocd commands for flashing on Arduino UNO Q
- correct name/tag use for esp32s3-wroom1 board
- modify esp32, esp32s3, esp32c3, & esp8266 targets to use built-in esp32flash
- switch rp2040/rp2350 to default to tasks scheduler
- change default stack size for esp32c3 and esp32s3 to 8196
- swan: rename group build tag stm32l4x5 => stm32l4y5 to avoid clash with stm32 device name
- nucleo-f722ze: add build-tag stm32f722
- fix: set stm32u5x clock rate to default
- create generic targets for esp32 boards
- libs
- stm32-svd: update submodule
- update tools/gen-device-svd for recent changes to stm32-svd file structure (#5212)
- build/test
- build: use Golang 1.26 for all builds
- build: actually use the version of llvm we are supposed to be testing by using brew link command
- build: let scoop run updates to resolve binaryen install failures on Windows
- ci: don't double zip release artifacts
- test: increase default timeout from 1 to 2 minutes to prevent spurious CI fails
- testdata: fix flaky timers test by draining ticker channel after Stop
- testdata: more corpus entries (#5182)
- add soypat/lneto to corpus
- GNUmakefile: add context and expvar to stdlib tests
- GNUmakefile: add encoding/xml to stdlib tests on Linux
- main (test): skip mipsle test if the emulator is missing
- make: remove machine without board from smoketest
- stm32: add Arduino UNO Q to smoketests
- flake: bump to nixpkgs 25.11
- chore: update all github actions to latest versions
- fix: use external 7zip for scoop installs on Windows
- general
-
v0.40.2-0.20260420054154-94ebddbdfeb320 Apr 2026 pre-releaseNothing published for this version
-
v0.40.2-0.20260419094804-aa1ca277891119 Apr 2026 pre-releaseNothing published for this version
-
v0.40.2-0.20260414065709-894839484c2614 Apr 2026 pre-releaseNothing published for this version
-
v0.40.2-0.20260409151933-8161b766d34f09 Apr 2026 pre-releaseNothing published for this version
-
v0.40.118 Dec 2025Release notes
Open source →An important point release with some critical fixes and improvements that just could not wait. Thank you very much to our global team of humans who joined together so quickly to get this out for all of us!
- machine
- nrf: fix flash writes when SoftDevice is enabled
- runtime
- libs
- picolibc: use updated location for git repo
Release notes
Open source →- 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
- picolibc: use updated location for git repo
- machine
-
v0.40.015 Dec 2025Release notes
Open source →Our final release for 2025 includes a number of really excellent improvements to close out the year. We have plenty of bugfixes and stability enhancements to make your life better and easier. For example, new updates to the GC that are up to 10% faster! Not to mention fixing some very tricky race conditions. Of course we have new hardware support, like the Xiao ESP32-S3 board.
- 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
- lower "large stack" limit to 16kb
- core
- shrink bdwgc library
- Fix linker errors for runtime.vgetrandom and crypto/internal/sysrand.fatal
- fix: add TryLock to sync.RWMutex
- fix: correct linter issues exposed by the fix in #4679
- fix: don't hardcode success return state
- fix: expand RTT debugger compatibility
- internal/task (threads): save stack bounds instead of scanning under a lock
- internal/task: create detached threads and fix error handling
- interp: better errors when debugging interp
- transform (gc): create stack slots in callers of external functions
- internal/task: prevent semaphore resource leak for threads scheduler
- machine
- cortexm: optimize code size for the HardFault_Handler
- fe310: add I2C pins for the HiFive1b
- clarify WriteAt semantics of BlockDevice
- fix deprecated AsmFull comment (#5005)
- make sure DMA buffers do not escape unnecessarily
- only enable USB-CDC when needed
- use larger SPI MAXCNT on nrf52833 and nrf52840
- fix: update m.queuedBytes when clamping output to avoid corrupting sentBytes
- fix: use int64 in ReadTemperature to avoid overflow
- fix(rp2): disable DBGPAUSE on startup
- fix(rp2): possible integer overflow while computing factors for SPI baudrate
- fix(rp2): reset spinlocks at startup
- fix(rp2): switch spinlock busy loop to wfe
- fix(rp2): use side-effect-free spinlocks
- nrf: add ADC_VDDH which is an ADC pin for VDDH
- nrf: don't block SPI transfer
- nrf: don't set PSELN, it's ignored in single ended mode anyway
- nrf: fix typo in ADC configuration
- nrf: refactor SoftDevice enabled check
- nrf: rename pwmPin to adcPin
- nrf: support flash operations while the SoftDevice is enabled
- rp2040: allow writing to the UART inside interrupts
- machine,nrf528: stop the bus only once on I2C bus error and ensures the first error is returned
- net
- update submodule to latest commits
- runtime
- (avr): fix infinite longjmp loop if stack is aligned to 256 bytes
- (gc_blocks.go): clear full size of allocation
- (gc_blocks.go): make sweep branchless
- (gc_blocks.go): simplify scanning logic
- (gc_blocks.go): use a linked stack to scan marked objects
- (gc_blocks.go): use best-fit allocation
- (gc_boehm.go): fix world already stopped check
- (wasm): scan the system stack
- fix sleep duration for long sleeps
- remove copied code for nrf52840
- src/syscall: update src buffer after write
- wasm: fix C realloc and optimize it a bit
- targets
- build/test
- Add testing.T.Context() and testing.B.Context()
- create separate go.mod file for testing dependencies for wasm tests that use Chromium headless browser to avoid use of older incompatible version.
- go back to normal scheduler instead of tasks scheduler for macos CI
- update CI to use Go 1.25.5
- update macOS GH actions builds to handle sunset of macOS 13
- use task scheduler on macOS builds to avoid test race condition lockups
- update all CI builds to use latest stable Go release. Also update some of the actions to their latest releases.
- update GH actions builds to use Go 1.25.4
- uninstall cmake before install
- fix: point the submodule for musl-lib to a mirror in the TinyGo GitHub org
- fix: remove macOS 15 from CI build matrix (conflicts with macOS 14 build)
- fix: separate host expected bytes from device intended bytes
- fix/typo: makeESPFirmwareImage
- make: GNUmakefile: shrink TinyGo binaries on Linux
- move the directory list into a variable
- several improvements to the macOS GH actions build
- Fix for #4678: top-level 'make lint' wasn't working
- fix: increase the timeout for chromedp to connect to the headless browser used for running the wasm tests.
- testdata: some more packages for the test corpus
Release notes
Open source →- 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)
- chore: update version for 0.40 development cycle
- 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
- lower "large stack" limit to 16kb
- core
- shrink bdwgc library
- Fix linker errors for runtime.vgetrandom and crypto/internal/sysrand.fatal
- fix: add TryLock to sync.RWMutex
- fix: correct linter issues exposed by the fix in #4679
- fix: don't hardcode success return state
- fix: expand RTT debugger compatibility
- internal/task (threads): save stack bounds instead of scanning under a lock
- internal/task: create detached threads and fix error handling
- interp: better errors when debugging interp
- transform (gc): create stack slots in callers of external functions
- internal/task: prevent semaphore resource leak for threads scheduler
- machine
- cortexm: optimize code size for the HardFault_Handler
- fe310: add I2C pins for the HiFive1b
- clarify WriteAt semantics of BlockDevice
- fix deprecated AsmFull comment (#5005)
- make sure DMA buffers do not escape unnecessarily
- only enable USB-CDC when needed
- use larger SPI MAXCNT on nrf52833 and nrf52840
- fix: update m.queuedBytes when clamping output to avoid corrupting sentBytes
- fix: use int64 in ReadTemperature to avoid overflow
- fix(rp2): disable DBGPAUSE on startup
- fix(rp2): possible integer overflow while computing factors for SPI baudrate
- fix(rp2): reset spinlocks at startup
- fix(rp2): switch spinlock busy loop to wfe
- fix(rp2): use side-effect-free spinlocks
- nrf: add ADC_VDDH which is an ADC pin for VDDH
- nrf: don't block SPI transfer
- nrf: don't set PSELN, it's ignored in single ended mode anyway
- nrf: fix typo in ADC configuration
- nrf: refactor SoftDevice enabled check
- nrf: rename pwmPin to adcPin
- nrf: support flash operations while the SoftDevice is enabled
- rp2040: allow writing to the UART inside interrupts
- machine,nrf528: stop the bus only once on I2C bus error and ensures the first error is returned
- net
- update submodule to latest commits
- runtime
- (avr): fix infinite longjmp loop if stack is aligned to 256 bytes
- (gc_blocks.go): clear full size of allocation
- (gc_blocks.go): make sweep branchless
- (gc_blocks.go): simplify scanning logic
- (gc_blocks.go): use a linked stack to scan marked objects
- (gc_blocks.go): use best-fit allocation
- (gc_boehm.go): fix world already stopped check
- (wasm): scan the system stack
- fix sleep duration for long sleeps
- remove copied code for nrf52840
- src/syscall: update src buffer after write
- wasm: fix C realloc and optimize it a bit
- targets
- add xiao-esp32s3 board target
- Add ESP32-S3 support (#5091)
- Added Gopher ARCADE board
- Create "pico2-ice" target board (#5062)
- build/test
- Add testing.T.Context() and testing.B.Context()
- create separate go.mod file for testing dependencies for wasm tests that use Chromium headless browser to avoid use of older incompatible version.
- go back to normal scheduler instead of tasks scheduler for macos CI
- update CI to use Go 1.25.5
- update macOS GH actions builds to handle sunset of macOS 13
- use task scheduler on macOS builds to avoid test race condition lockups
- update all CI builds to use latest stable Go release. Also update some of the actions to their latest releases.
- update GH actions builds to use Go 1.25.4
- uninstall cmake before install
- fix: point the submodule for musl-lib to a mirror in the TinyGo GitHub org
- fix: remove macOS 15 from CI build matrix (conflicts with macOS 14 build)
- fix: separate host expected bytes from device intended bytes
- fix/typo: makeESPFirmwareImage
- make: GNUmakefile: shrink TinyGo binaries on Linux
- move the directory list into a variable
- several improvements to the macOS GH actions build
- Fix for #4678: top-level 'make lint' wasn't working
- fix: increase the timeout for chromedp to connect to the headless browser used for running the wasm tests.
- testdata: some more packages for the test corpus
- general
-
v0.39.1-0.20251004091901-aedaf7d9252504 Oct 2025 pre-releaseNothing published for this version
-
v0.39.019 Aug 2025Release notes
Open source →This release has what you need the most right now, which is Go 1.25 support! Of course it has other new features, such as adding multicore support for the RP2350 family of processors as well as for macOS. We've also got fixes, and as always further improvements for
reflectsupport andstdlibpackages. Plus a couple of new boards too!- 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
- ci
- chore: update all CI builds to test Go 1.25 release
- fix: disable test-newest since CircleCI seems unable to download due to rate-limits on Dockerhub
- ci: rename some jobs to avoid churn on every Go/LLVM version bump
- ci: make the goroutines test less racy
- tests: de-flake goroutines test
- compiler
- compiler: implement internal/abi.Escape
- main
- main: show the compiler error (if any) for
tinygo test -c - chore: correct GOOS=js name in error messages for WASM
- main: show the compiler error (if any) for
- machine
- machine: add international keys
- machine: remove some unnecessary "// peripherals:" comments
- machine: add I2C pin comments
- machine: standardize I2C errors with "i2c:" prefix
- machine: make I2C usable in the simulator
- fix: add SPI and I2C to teensy 4.1 (#4943)
rp2: use the correct channel mask for rp2350 ADC; hold lock during read (#4938)rp2: disable digital input for analog inputs
- runtime
- runtime: ensure time.Sleep(d) sleeps at least d
- runtime: stub out weak pointer support
- runtime: implement dummy AddCleanup
- runtime: enable multi-core scheduler for rp2350
internal/task: use -stack-size flag when starting a new threadinternal/task: add SA_RESTART flag to GC interruptsinternal/task: a few small correctness fixesinternal/gclayout: make gclayout values constants- darwin: add threading support and use it by default
- standard library
sync: implement sync.Swapreflect: implement Method.IsExported
- testing
- testing: stub out testing.B.Loop
- targets
stm32: add support for the STM32L031G6U6- add metro-rp2350 board definition (#4989)
rp2040/rp2350: set the default stack size to 8k for rp2040/rp2350 based boards where this was not already the case
Release notes
Open source →- 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)
- fix: update version of clang to 17 to accommodate latest Go 1.25 docker base image
- ci
- chore: update all CI builds to test Go 1.25 release
- fix: disable test-newest since CircleCI seems unable to download due to rate-limits on Dockerhub
- ci: rename some jobs to avoid churn on every Go/LLVM version bump
- ci: make the goroutines test less racy
- tests: de-flake goroutines test
- compiler
- compiler: implement internal/abi.Escape
- main
- main: show the compiler error (if any) for
tinygo test -c - chore: correct GOOS=js name in error messages for WASM
- main: show the compiler error (if any) for
- machine
- machine: add international keys
- machine: remove some unnecessary "// peripherals:" comments
- machine: add I2C pin comments
- machine: standardize I2C errors with "i2c:" prefix
- machine: make I2C usable in the simulator
- fix: add SPI and I2C to teensy 4.1 (#4943)
rp2: use the correct channel mask for rp2350 ADC; hold lock during read (#4938)rp2: disable digital input for analog inputs
- runtime
- runtime: ensure time.Sleep(d) sleeps at least d
- runtime: stub out weak pointer support
- runtime: implement dummy AddCleanup
- runtime: enable multi-core scheduler for rp2350
internal/task: use -stack-size flag when starting a new threadinternal/task: add SA_RESTART flag to GC interruptsinternal/task: a few small correctness fixesinternal/gclayout: make gclayout values constants- darwin: add threading support and use it by default
- standard library
sync: implement sync.Swapreflect: implement Method.IsExported
- testing
- testing: stub out testing.B.Loop
- targets
stm32: add support for the STM32L031G6U6- add metro-rp2350 board definition (#4989)
rp2040/rp2350: set the default stack size to 8k for rp2040/rp2350 based boards where this was not already the case
- general
-
v0.38.014 Jun 2025Release notes
Open source →This release includes some very exciting new features, in particular our first multicore support! Initially available on the RP2040 microcontrollers, now TinyGo can use both cores at the same time for true concurrency in hardware. Another very powerful new capability added in this release is USB Mass Storage Device (MSD) support on the RP2040/RP2350, SAMD21, and SAMD51 series of processors. We have also added experimental Boehm garbage collector for WebAssembly to speed up your production code.
- general
go.*: upgradegolang.org/x/toolsto v0.30.0all: add support for LLVM 20
- build
- go back to using MinoruSekine/setup-scoop for Windows CI builds
flake.*: upgrade to nixpkgs 25.05, LLVM 20Makefile: only detect ccache command when neededMakefile: create random filename inside ruleMakefile: don't set GOROOTMakefile: call uname at most onceMakefile: only read NodeJS version when it is needed
- compiler
- add support for
GODEBUG=gotypesalias=1 interp: fixcopy()from/to external buffers- add
-nobounds(similar to-gcflags=-B) compileopts: add library version to cached library pathbuilder: build wasi-libc inside TinyGobuilder: simplify bdwgc libc dependencybuilder: don't use precompiled librariescompileopts: enable support forGOARCH=wasmintinygo test
- add support for
- fixes
rp2350: Fix DMA to SPI transmits on RP2350 (#4903)microbit v2: use OpenOCD flash method on microbit v2 when using Nordic Semi SoftDevicemain: display all of the current GC options for the-gcflag- Remove duplicated error handling
sync: fixTestMutexConcurrenttest- fix race condition in
testdata/goroutines.go - fix build warnings on Windows ARM
- machine
usb: add USB mass storage class support- implement usb receive message throttling
- declare usb endpoints per-platform
samd21: implement watchdogsamd51: write to flash memory in 512 byte long chunkssamd21: write to flash memory in 64 byte long chunks- don't inline RTT
WriteByteeverywhere rp2: unexport machine-specific errorsrp2: discount scheduling delays in I2C timeouts (#4876)- use pointer receiver in simulated PWM peripherals
- add simulated PWM/timer peripherals
rp2: expose usb endpoint stall handlingarm: clear pending interrupts before enabling themrp2: merge common usb code (#4856)
- main
- add "cores" and "threads" schedulers to help text
- add
StartPosandEndPosto-jsonbuild output - change
-jsonflag to match upstream Go
- runtime
- don't lock the print output inside interrupts
- don't try to interrupt other cores before they are started
- implement
NumCPUfor the multicore scheduler - add support for multicore scheduler
- refactor obtaining the system stack
interrupt: addCheckpointtype- add
exportedFuncPtr - avoid an allocation in
(*time.Timer).Reset - stub runtime signal functions for
os/signalon wasip1 - move
timeUnitto a single place - implement
NumCPUfor-scheduler=threads - move
mainExitedboolean internal/task: renametinygo_pausetotinygo_task_exit- map every goroutine to a new OS thread
- refactor
timerQueue - make conservative and precise GC MT-safe
internal/task: implement atomic primitives for preemptive scheduling- Use diskutil on macOS to extract volume name and path for FAT mounts #4928
- standard library
net: update submodule to latest commitsruntime/debug: add GC related stubsmetrics: flesh out some of the metric typesreflect: Chan related stubsos: handle relative and abs paths inExecutable()os: addos.Executable()for Darwinsync: implementRWMutexusing futexesreflect: AddSliceOf,ArrayOf,StructOf,MapOf,FuncOf
- targets
rp2040: add multicore supportriscv32: usegdbbinary as a fallback- add target for Microbit v2 with SoftDevice S140 support for both peripheral and central
windows: use MSVCRT.DLL instead of UCRT on i386windows: add windows/386 supportarm64: remove unnecessary.sectiondirectiveriscv-qemu: actually sleep intime.Sleep()riscv: define CSR constants and use them where possibledarwin: support Boehm GC (and use by default)windows: add support for the Boehm-Demers-Weiser GCwindows: fix wrong register for first parameter
- wasm
- add Boehm GC support
- refactor/modify stub signal handling
- don't block
//go:wasmexportbecause of running goroutines - use
int64instead offloat64for thetimeUnit
- boards
- Add board support for BigTreeTech SKR Pico (#4842)
Release notes
Open source →- general
go.*: upgradegolang.org/x/toolsto v0.30.0all: add support for LLVM 20
- build
- go back to using MinoruSekine/setup-scoop for Windows CI builds
flake.*: upgrade to nixpkgs 25.05, LLVM 20Makefile: only detect ccache command when neededMakefile: create random filename inside ruleMakefile: don't set GOROOTMakefile: call uname at most onceMakefile: only read NodeJS version when it is needed
- compiler
- add support for
GODEBUG=gotypesalias=1 interp: fixcopy()from/to external buffers- add
-nobounds(similar to-gcflags=-B) compileopts: add library version to cached library pathbuilder: build wasi-libc inside TinyGobuilder: simplify bdwgc libc dependencybuilder: don't use precompiled librariescompileopts: enable support forGOARCH=wasmintinygo test
- add support for
- fixes
rp2350: Fix DMA to SPI transmits on RP2350 (#4903)microbit v2: use OpenOCD flash method on microbit v2 when using Nordic Semi SoftDevicemain: display all of the current GC options for the-gcflag- Remove duplicated error handling
sync: fixTestMutexConcurrenttest- fix race condition in
testdata/goroutines.go - fix build warnings on Windows ARM
- machine
usb: add USB mass storage class support- implement usb receive message throttling
- declare usb endpoints per-platform
samd21: implement watchdogsamd51: write to flash memory in 512 byte long chunkssamd21: write to flash memory in 64 byte long chunks- don't inline RTT
WriteByteeverywhere rp2: unexport machine-specific errorsrp2: discount scheduling delays in I2C timeouts (#4876)- use pointer receiver in simulated PWM peripherals
- add simulated PWM/timer peripherals
rp2: expose usb endpoint stall handlingarm: clear pending interrupts before enabling themrp2: merge common usb code (#4856)
- main
- add "cores" and "threads" schedulers to help text
- add
StartPosandEndPosto-jsonbuild output - change
-jsonflag to match upstream Go
- runtime
- don't lock the print output inside interrupts
- don't try to interrupt other cores before they are started
- implement
NumCPUfor the multicore scheduler - add support for multicore scheduler
- refactor obtaining the system stack
interrupt: addCheckpointtype- add
exportedFuncPtr - avoid an allocation in
(*time.Timer).Reset - stub runtime signal functions for
os/signalon wasip1 - move
timeUnitto a single place - implement
NumCPUfor-scheduler=threads - move
mainExitedboolean internal/task: renametinygo_pausetotinygo_task_exit- map every goroutine to a new OS thread
- refactor
timerQueue - make conservative and precise GC MT-safe
internal/task: implement atomic primitives for preemptive scheduling- Use diskutil on macOS to extract volume name and path for FAT mounts #4928
- standard library
net: update submodule to latest commitsruntime/debug: add GC related stubsmetrics: flesh out some of the metric typesreflect: Chan related stubsos: handle relative and abs paths inExecutable()os: addos.Executable()for Darwinsync: implementRWMutexusing futexesreflect: AddSliceOf,ArrayOf,StructOf,MapOf,FuncOf
- targets
rp2040: add multicore supportriscv32: usegdbbinary as a fallback- add target for Microbit v2 with SoftDevice S140 support for both peripheral and central
windows: use MSVCRT.DLL instead of UCRT on i386windows: add windows/386 supportarm64: remove unnecessary.sectiondirectiveriscv-qemu: actually sleep intime.Sleep()riscv: define CSR constants and use them where possibledarwin: support Boehm GC (and use by default)windows: add support for the Boehm-Demers-Weiser GCwindows: fix wrong register for first parameter
- wasm
- add Boehm GC support
- refactor/modify stub signal handling
- don't block
//go:wasmexportbecause of running goroutines - use
int64instead offloat64for thetimeUnit
- boards
- Add board support for BigTreeTech SKR Pico (#4842)
- general
-
v0.37.1-0.20250501130808-edaf8770561101 May 2025 pre-releaseNothing published for this version
-
v0.37.1-0.20250424072452-de532643b1cf24 Apr 2025 pre-releaseNothing published for this version
-
v0.37.1-0.20250422143119-922ba6a4a34622 Apr 2025 pre-releaseNothing published for this version
-
v0.37.019 Mar 2025Release notes
Open source →This is probably our fastest time in-between full releases, especially given all of the excellent work that has made it in. A few highlights are updated compatibility with the latest WASI work from the Bytecode Alliance, faster speed and PIO support for the RP2350, and a new garbage collector option for Linux. Plus a bunch of critical fixes to make your life better!
- 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
- fixes
- internal
- update to [email protected] in GNUmakefile and internal/wasm-tools
- exclude certain files when copying package in internal/cm
- update to go.bytecodealliance.org/[email protected] in internal/cm
- remove old reflect.go in internal/reflectlite
- loader
- use build tags for package iter and iter methods on reflect.Value in loader, iter, reflect
- add shim for go1.22 and earlier in loader, iter
- machine
- os
- add stub Symlink for wasm
- refactor
- use *SPI everywhere to make consistent for implementations. Fixes #4663 "in reverse" by making SPI a pointer everywhere, as discussed in the comments.
- reflect
- add Value.SetIter{Key,Value} and MapIter.Reset in reflect, internal/reflectlite
- embed reflectlite types into reflect types in reflect, internal/reflectlite
- add Go 1.24 iter.Seq[2] methods
- copy reflect iter tests from upstream Go
- panic on Type.CanSeq[2] instead of returning false
- remove strconv.go
- remove unused go:linkname functions
- riscv-qemu
- add VirtIO RNG device
- increase stack size
- runtime
- only allocate heap memory when needed
- remove unused file func.go
- use package reflectlite
- transform
- cherry-pick from #4774
Release notes
Open source →- 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
- fixes
- ensure use of pointers for SPI interface on atsam21/atsam51 and other machines/boards that were missing implementation (#4798)
- replace loop counter with hw timer for USB SetAddressReq on rp2040 (#4796)
- internal
- update to [email protected] in GNUmakefile and internal/wasm-tools
- exclude certain files when copying package in internal/cm
- update to go.bytecodealliance.org/[email protected] in internal/cm
- remove old reflect.go in internal/reflectlite
- loader
- use build tags for package iter and iter methods on reflect.Value in loader, iter, reflect
- add shim for go1.22 and earlier in loader, iter
- machine
- bump rp2040 to 200MHz (#4768)
- correct register address for Pin.SetInterrupt for rp2350 (#4782)
- don't block the rp2xxx UART interrupt handler
- fix RP2040 Pico board on the playground
- add flash support for rp2350 (#4803)
- os
- add stub Symlink for wasm
- refactor
- use *SPI everywhere to make consistent for implementations. Fixes #4663 "in reverse" by making SPI a pointer everywhere, as discussed in the comments.
- reflect
- add Value.SetIter{Key,Value} and MapIter.Reset in reflect, internal/reflectlite
- embed reflectlite types into reflect types in reflect, internal/reflectlite
- add Go 1.24 iter.Seq[2] methods
- copy reflect iter tests from upstream Go
- panic on Type.CanSeq[2] instead of returning false
- remove strconv.go
- remove unused go:linkname functions
- riscv-qemu
- add VirtIO RNG device
- increase stack size
- runtime
- only allocate heap memory when needed
- remove unused file func.go
- use package reflectlite
- transform
- cherry-pick from #4774
- general
-
v0.36.1-0.20250313153943-4f7c64cb248513 Mar 2025 pre-releaseNothing published for this version
-
v0.36.003 Mar 2025Release notes
Open source →- 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
- use older image for cross-compiling builds
- update Linux builds to run on ubuntu-latest since 20.04 is being retired
- ensure build output directory is created
- add NoSandbox flag to chrome headless that is run during WASM tests, since this is now required for Ubuntu 23+ and we are using Ubuntu 24+ when running Github Actions
- update wasmtime used for CI to 29.0.1 to fix issue with install during CI tests
- update to use
Get-CimInstanceaswmicis being deprecated on WIndows - remove unnecessary executable permissions
goenv: update to new v0.36.0 development version
- compiler
builder: fix parsing of external ld.lld error messagescgo: mangle identifier namesinterp: correctly mark functions as modifying memory- add buildmode=wasi-legacy to support existing base of users who expected the older behavior for wasi modules to not return an exit code as if they were reactors
- standard library
crypto/tls: add Dialer.DialContext() to fix websocket clientcrypto/tls: add VersionTLS constants and VersionName(version uint16) method that turns it into a string, copied from big gointernal/syscall/unix: use our own version of this packagemachine: replace hard-coded cpu frequencies on rp2xxxmachine: bump rp2350 CPUFrequency to 150 MHzmachine: compute rp2 clock dividers from crystal and target frequencymachine: remove bytes package dependency in flash codemachine/usb/descriptor: avoid bytes packagenet: update to latest submodule with httptest subpackage and ResolveIPAddress implementationos: add File.Chdir supportos: implement stub Chdir for non-OS systemsos/file: add file.Chmodreflect: implement Value.Equalruntime: add FIPS helper functionsruntime: manually initialize xorshift statesync: move Mutex to internal/tasksyscall: add wasip1 RandomGettesting: add Chdirwasip2: add stubs to get internal/syscall/unix to work
- fixes
- correctly handle calls for GetRNG() when being made from nrf devices with SoftDevice enabled
- fix stm32f103 ADC
wasm: correctly handle id lookup for finalizeRef callwasm: avoid total failure on wasm finalizer callwasm: convert offset as signed int into unsigned int in syscall/js.stringVal in wasm_exec.js
- targets
- rp2350: add pll generalized solution; fix ADC handles; pwm period fix
- rp2350: extending support to include the rp2350b
- rp2350: cleanup: unexport internal USB and clock package variable, consts and types
- nrf: make ADC resolution changeable
- turn on GC for TKey1 device, since it does in fact work
- match Pico2 stack size to Pico
- boards
- add support for Pimoroni Pico Plus2
- add target for pico2-w board
- add comboat_fw tag for elecrow W5 boards with Combo-AT Wifi firmware
- add support for Elecrow Pico rp2350 W5 boards
- add support for Elecrow Pico rp2040 W5 boards
- add support for NRF51 HW-651
- add support for esp32c3-supermini
- add support for waveshare-rp2040-tiny
- examples
- add naive debouncing for pininterrupt example
Release notes
Open source →- 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
- use older image for cross-compiling builds
- update Linux builds to run on ubuntu-latest since 20.04 is being retired
- ensure build output directory is created
- add NoSandbox flag to chrome headless that is run during WASM tests, since this is now required for Ubuntu 23+ and we are using Ubuntu 24+ when running Github Actions
- update wasmtime used for CI to 29.0.1 to fix issue with install during CI tests
- update to use
Get-CimInstanceaswmicis being deprecated on WIndows - remove unnecessary executable permissions
goenv: update to new v0.36.0 development version
- compiler
builder: fix parsing of external ld.lld error messagescgo: mangle identifier namesinterp: correctly mark functions as modifying memory- add buildmode=wasi-legacy to support existing base of users who expected the older behavior for wasi modules to not return an exit code as if they were reactors
- standard library
crypto/tls: add Dialer.DialContext() to fix websocket clientcrypto/tls: add VersionTLS constants and VersionName(version uint16) method that turns it into a string, copied from big gointernal/syscall/unix: use our own version of this packagemachine: replace hard-coded cpu frequencies on rp2xxxmachine: bump rp2350 CPUFrequency to 150 MHzmachine: compute rp2 clock dividers from crystal and target frequencymachine: remove bytes package dependency in flash codemachine/usb/descriptor: avoid bytes packagenet: update to latest submodule with httptest subpackage and ResolveIPAddress implementationos: add File.Chdir supportos: implement stub Chdir for non-OS systemsos/file: add file.Chmodreflect: implement Value.Equalruntime: add FIPS helper functionsruntime: manually initialize xorshift statesync: move Mutex to internal/tasksyscall: add wasip1 RandomGettesting: add Chdirwasip2: add stubs to get internal/syscall/unix to work
- fixes
- correctly handle calls for GetRNG() when being made from nrf devices with SoftDevice enabled
- fix stm32f103 ADC
wasm: correctly handle id lookup for finalizeRef callwasm: avoid total failure on wasm finalizer callwasm: convert offset as signed int into unsigned int in syscall/js.stringVal in wasm_exec.js
- targets
- rp2350: add pll generalized solution; fix ADC handles; pwm period fix
- rp2350: extending support to include the rp2350b
- rp2350: cleanup: unexport internal USB and clock package variable, consts and types
- nrf: make ADC resolution changeable
- turn on GC for TKey1 device, since it does in fact work
- match Pico2 stack size to Pico
- boards
- add support for Pimoroni Pico Plus2
- add target for pico2-w board
- add comboat_fw tag for elecrow W5 boards with Combo-AT Wifi firmware
- add support for Elecrow Pico rp2350 W5 boards
- add support for Elecrow Pico rp2040 W5 boards
- add support for NRF51 HW-651
- add support for esp32c3-supermini
- add support for waveshare-rp2040-tiny
- examples
- add naive debouncing for pininterrupt example
- general
-
v0.35.020 Dec 2024Release notes
Open source →This is our last release of the year, and we've got plenty of presents for all of us tiny gophers!
We are happy to show improved error messages, and also a new HTML size report to help figure out what exactly is ending up in that binary.
There are several CGo improvements, such as support for function-like macros.
We've got a whole slew of improvements for reflection and runtime support, alongside several fixes and improvements for WASM.
New hardware! Support for the new RP2350 microcontroller, with the Raspberry Pi Pico2 and Pimoroni Tiny2350 boards.
And we are excited to bring our first software RISC-V running on FPGA to TinyGo with the newly added Tillitis TKey hardware device.- general
- update cmsis-svd library
- use default UART settings in the echo example
goenv: also show git hash with custom build of TinyGogoenv: support parsing development versions of Gomain: parse extldflags early so we can report the error message
- compiler
builder: whitelist temporary directory env var for Clang invocation to fix Windows bugbuilder: fix cache paths in-size=fulloutputbuilder: work around incorrectly escaped DWARF paths on Windows (Clang bug)builder: fix wasi-libc path names on Windows with-size=fullbuilder: write HTML size reportcgo: support C identifiers only referred to from within macroscgo: support function-like macroscgo: support errno value as second return parametercgo: add support for#cgo noescapelinescompiler: fix bug in interrupt loweringcompiler: allow panic directly indefercompiler: fix wasmimport -> wasmexport in error messagecompiler: support//go:noescapepragmacompiler: report error instead of crashing when instantiating a generic function without bodyinterp: align created globals
- standard library
machine: modify i2s interface/implementation to better match specificationos: implementStartProcessreflect: addValue.Clearreflect: add interface support toNumMethodsreflect: fixAssignableTofor named + non-named typesreflect: implementCanConvertreflect: handle more cases inConvertreflect: fix Copy of non-pointer array with size > 64bitsruntime: don't call sleepTicks with a negative durationruntime: optimize GC scanning (findHead)runtime: move constants into shared packageruntime: addruntime.fcntlfunction for internal/syscall/unixruntime: heapptr only needs to be initialized onceruntime: refactor scheduler (this fixes a few bugs with-scheduler=none)runtime: rewrite channel implementation to be smaller and more flexibleruntime: useSA_RESTARTwhen registering a signal for os/signalruntime: implement race-free signals using futexesruntime: run deferred functions inGoexitruntime: removeCondwhich seems to be unusedruntime: properly handle unix read on directoryruntime/trace: stub all public methodssync: don't use volatile inMutexsync: implementWaitGroupusing a (pseudo)futexsync: makeCondparallelism-safesyscall: use wasi-libc tables for wasm/js target
- targets
mips: fix a bug when scanning the stacknintendoswitch: get this target to compile againrp2350: add support for the new RP2350rp2040/rp2350: make I2C implementation shared for rp2040/rp2350rp2040/rp2350: make SPI implementation shared for rp2040/rp2350rp2040/rp2350: make RNG implementation shared for rp2040/rp2350wasm: revise and simplify wasmtime argument handlingwasm: support//go:wasmexportfunctions after a call totime.Sleepwasm: correctly return from run() in wasm_exec.jswasm: call process.exit() when go.run() returnswindows: don't return, exit via exit(0) instead to flush stdout buffer
- boards
- add support for the Tillitis TKey
- add support for the Raspberry Pi Pico2 (based on the RP2040)
- add support for Pimoroni Tiny2350
Release notes
Open source →- general
- update cmsis-svd library
- use default UART settings in the echo example
goenv: also show git hash with custom build of TinyGogoenv: support parsing development versions of Gomain: parse extldflags early so we can report the error message
- compiler
builder: whitelist temporary directory env var for Clang invocation to fix Windows bugbuilder: fix cache paths in-size=fulloutputbuilder: work around incorrectly escaped DWARF paths on Windows (Clang bug)builder: fix wasi-libc path names on Windows with-size=fullbuilder: write HTML size reportcgo: support C identifiers only referred to from within macroscgo: support function-like macroscgo: support errno value as second return parametercgo: add support for#cgo noescapelinescompiler: fix bug in interrupt loweringcompiler: allow panic directly indefercompiler: fix wasmimport -> wasmexport in error messagecompiler: support//go:noescapepragmacompiler: report error instead of crashing when instantiating a generic function without bodyinterp: align created globals
- standard library
machine: modify i2s interface/implementation to better match specificationos: implementStartProcessreflect: addValue.Clearreflect: add interface support toNumMethodsreflect: fixAssignableTofor named + non-named typesreflect: implementCanConvertreflect: handle more cases inConvertreflect: fix Copy of non-pointer array with size > 64bitsruntime: don't call sleepTicks with a negative durationruntime: optimize GC scanning (findHead)runtime: move constants into shared packageruntime: addruntime.fcntlfunction for internal/syscall/unixruntime: heapptr only needs to be initialized onceruntime: refactor scheduler (this fixes a few bugs with-scheduler=none)runtime: rewrite channel implementation to be smaller and more flexibleruntime: useSA_RESTARTwhen registering a signal for os/signalruntime: implement race-free signals using futexesruntime: run deferred functions inGoexitruntime: removeCondwhich seems to be unusedruntime: properly handle unix read on directoryruntime/trace: stub all public methodssync: don't use volatile inMutexsync: implementWaitGroupusing a (pseudo)futexsync: makeCondparallelism-safesyscall: use wasi-libc tables for wasm/js target
- targets
mips: fix a bug when scanning the stacknintendoswitch: get this target to compile againrp2350: add support for the new RP2350rp2040/rp2350: make I2C implementation shared for rp2040/rp2350rp2040/rp2350: make SPI implementation shared for rp2040/rp2350rp2040/rp2350: make RNG implementation shared for rp2040/rp2350wasm: revise and simplify wasmtime argument handlingwasm: support//go:wasmexportfunctions after a call totime.Sleepwasm: correctly return from run() in wasm_exec.jswasm: call process.exit() when go.run() returnswindows: don't return, exit via exit(0) instead to flush stdout buffer
- boards
- add support for the Tillitis TKey
- add support for the Raspberry Pi Pico2 (based on the RP2040)
- add support for Pimoroni Tiny2350
- general
-
v0.34.1-0.20241119065158-0087d4c6bf1319 Nov 2024 pre-releaseNothing published for this version
-
v0.34.025 Oct 2024Release notes
Open source →This release adds support for
//go:wasmexportthat is a standardized way to export WebAssembly functions to the host, improves garbage collection performance (especially on wasm), adds big-endian MIPS support (GOOS=mips), and adds two new boards! It also contains a number of smaller improvements and bug fixes.- general
- fix
GOOS=wasip1fortinygo test - add
-C DIRflag - add initial documentation for project governance
- add
-ldflags='-extldflags=...'support - improve usage message with
tinygo helpand when passing invalid parameters
- fix
- compiler
builder: remove environment variables when invoking Clang, to avoid the environment changing the behaviorbuilder: check for the Go toolchain version used to compile TinyGocgo: addC.CBytesimplementationcompiler: fix passing weirdly-padded structs as parameters to new goroutinescompiler: support pragmas on generic functionscompiler: do not let the slice buffer escape when casting a[]byteor[]runeto a string, to help escape analysiscompiler: conform to the latest iteration of the wasm types proposalloader: don't panic when main package is not named 'main'loader: make sure we always return type checker errors even without type errorstransform: optimize range over[]byte(string)
- standard library
crypto/x509: add package stub to build crypto/x509 on macOSmachine/usb/adc/midi: fixPitchBendos: addTruncatestub for baremetalos: add stubs foros.Filedeadlinesos: add internalnet.newUnixFilefor the net packageruntime: stub runtime_{Before,After}Exec for linkageruntime: randomize map accessesruntime: supportmaps.Cloneruntime: add more fields toMemStatsruntime: implement newcoro, coroswitch to support package iterruntime: disallow defer in interruptsruntime: add support for os/signal on Linux and MacOSruntime: add gc layout info for some basic types to help the precise GCruntime: bump GC mark stack size to avoid excessive heap rescans
- targets
darwin: use Go standard library syscall package instead of a custom onefe310: support GPIOPinInputmips: fix compiler crash with GOMIPS=softfloat and defermips: add big-endian (GOARCH=mips) supportmips: use MIPS32 (instead of MIPS32R2) as the instruction set for wider compatibilitywasi: add relative and absolute --dir options to wasmtime argswasip2: add wasmtime -S args to support network interfaceswasm: add//go:wasmexportsupport (for all WebAssembly targets)wasm: use precise instead of conservative GC for WebAssembly (including WASI)wasm-unknown: add bulk memory flags since basically every runtime has it now
- boards
Release notes
Open source →- general
- fix
GOOS=wasip1fortinygo test - add
-C DIRflag - add initial documentation for project governance
- add
-ldflags='-extldflags=...'support - improve usage message with
tinygo helpand when passing invalid parameters
- fix
- compiler
builder: remove environment variables when invoking Clang, to avoid the environment changing the behaviorbuilder: check for the Go toolchain version used to compile TinyGocgo: addC.CBytesimplementationcompiler: fix passing weirdly-padded structs as parameters to new goroutinescompiler: support pragmas on generic functionscompiler: do not let the slice buffer escape when casting a[]byteor[]runeto a string, to help escape analysiscompiler: conform to the latest iteration of the wasm types proposalloader: don't panic when main package is not named 'main'loader: make sure we always return type checker errors even without type errorstransform: optimize range over[]byte(string)
- standard library
crypto/x509: add package stub to build crypto/x509 on macOSmachine/usb/adc/midi: fixPitchBendos: addTruncatestub for baremetalos: add stubs foros.Filedeadlinesos: add internalnet.newUnixFilefor the net packageruntime: stub runtime_{Before,After}Exec for linkageruntime: randomize map accessesruntime: supportmaps.Cloneruntime: add more fields toMemStatsruntime: implement newcoro, coroswitch to support package iterruntime: disallow defer in interruptsruntime: add support for os/signal on Linux and MacOSruntime: add gc layout info for some basic types to help the precise GCruntime: bump GC mark stack size to avoid excessive heap rescans
- targets
darwin: use Go standard library syscall package instead of a custom onefe310: support GPIOPinInputmips: fix compiler crash with GOMIPS=softfloat and defermips: add big-endian (GOARCH=mips) supportmips: use MIPS32 (instead of MIPS32R2) as the instruction set for wider compatibilitywasi: add relative and absolute --dir options to wasmtime argswasip2: add wasmtime -S args to support network interfaceswasm: add//go:wasmexportsupport (for all WebAssembly targets)wasm: use precise instead of conservative GC for WebAssembly (including WASI)wasm-unknown: add bulk memory flags since basically every runtime has it now
- boards
- add RAKwireless RAK4631
- add WaveShare ESP-C3-32S-Kit
- general
-
v0.33.020 Aug 2024Release notes
Open source →- general
- use latest version of x/tools
- add chromeos 9p support for flashing
- sort compiler error messages by source position in a package
- don't include prebuilt libraries in the release to simplify packaging and reduce the release tarball size
- show runtime panic addresses for
tinygo run - support Go 1.23 (including all new language features)
test: support GOOS/GOARCH pairs in the-targetflagtest: remove message after test binary built
- compiler
- remove unused registers for x86_64 linux syscalls
- remove old atomics workaround for AVR (not necessary in modern LLVM versions)
- support
golang.org/x/sys/unixsyscalls builder: remove workaround for generics race conditionbuilder: add package ID to compiler and optimization error messagesbuilder: show better error messages for some common linker errorscgo: support preprocessor macros passed on the command linecgo: use absolute paths for error messagescgo: add support for printfloader: handlego listerrors inside TinyGo (for better error messages)transform: fix incorrect alignment of heap-to-stack transformtransform: use thinlto-pre-link passes (instead of the full pipeline) to speed up compilation speed slightly
- standard library
crypto/tls: add CipherSuiteName and some extra fields to ConnectionSTateinternal/abi: implement initial version of this packagemachine: use newinternal/binarypackagemachine: rewrite Reply() to fix sending long replies in I2C Target Modemachine/usb/descriptor: Reset joystick physicalmachine/usb/descriptor: Drop second joystick hatmachine/usb/descriptor: Add more HID... functionsmachine/usb/descriptor: Fix encoding of valuesmachine/usb/hid/joystick: Allow more hat switchesos: addChown,Truncateos/user: use stdlib version of this packagereflect: return correct name for theunsafe.Pointertypereflect: implementType.Overflow*functionsruntime: implement dummygetAuxvto satisfy golang.org/x/sys/runtime: don't zero out new allocations for-gc=leakingwhen they are already zeroedruntime: simplify slice growing/appending coderuntime: print a message when a fatal signal like SIGSEGV happensruntime/debug: addGoVersiontodebug.BuildInfosync: addMap.Clear()sync/atomic: add And* and Or* compiler intrinsics needed for Go 1.23syscall: addForkandExecvesyscall: add all MacOS errno valuestesting: stub outT.Deadlineunique: implement custom (naive) version of the unique package
- targets
arm: supportGOARM=*,softfloat(softfloat support for ARM v5, v6, and v7)mips: add linux/mipsle (and experimental linux/mips) supportmips: addGOMIPS=softfloatsupportwasip2: add WASI preview 2 supportwasm/js: addnode:prefix inrequire()call of wasm_exec.jswasm-unknown: make sure theospackage can be importedwasm-unknown: remove import-memory flag
- general
-
v0.32.1-0.20240817161639-16950780d38917 Aug 2024 pre-releaseNothing published for this version
-
v0.32.016 Jun 2024Release notes
Open source →-
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
- move
-panic=trapsupport to the compiler/runtime - fix symbol table index for WebAssembly archives
- fix ed25519 build errors by adjusting the alias names
- add aliases to generic AES functions
- fix race condition by temporarily applying a proposed patch
builder: keep un-wasm-opt'd .wasm if -work was passedbuilder: make sure wasm-opt command line is printed if askedcgo: implement shift operations in preprocessor macrosinterp: checking for methodset existence
- move
-
standard library
machine: add__tinygo_spi_txfunction to simulatormachine: fix simulator I2C supportmachine: add GetRNG support to simulatormachine: addTxFifoFreeLevelfor CANos: addLinkos: addFindProcessfor posixos: addProcess.Releasefor unixos: addSetReadDeadlinestubos,os/signal: add signal stubsos/user: add stubs forLookup{,Group}andGroupreflect: use int inStringHeaderandSliceHeaderon non-AVR platformsreflect: fixNumMethodsfor Interface typeruntime: skip negative sleep durations in sleepTicks
-
targets
esp32: add I2C supportrp2040: move UART0 and UART1 to common filerp2040: make all RP2040 boards available for simulationrp2040: fix timeUnit typestm32: add i2cFrequencyandSetBaudRatefunction for chips that were missing implementationwasm-unknown: add math and memory builtins that LLVM needswasip1: replace existing-target=wasisupport with wasip1 as supported in Go 1.21+
-
boards
adafruit-esp32-feather-v2: add the Adafruit ESP32 Feather V2badger2040-w: add support for the Badger2040 Wfeather-nrf52840-sense: fix lack of LXFOm5paper: add support for the M5 Papermksnanov3: limit programming speed to 1800 kHznucleol476rg: add stm32 nucleol476rg supportpico-w: add the Pico W (which is near-idential to the pico target)thingplus-rp2040,waveshare-rp2040-zero: add WS2812 definitionpca10059-s140v7: add this variant to the PCA10059 board
-
-
v0.31.3-0.20240404173401-90b0bf646c2704 Apr 2024 pre-releaseNothing published for this version
-
v0.31.3-0.20240319061222-78775007fa4719 Mar 2024 pre-releaseNothing published for this version
-
v0.31.210 Mar 2024Release notes
Open source →-
general
- update the
netsubmodule to updated version withBuffersimplementation
- update the
-
compiler
syscall: add wasm_unknown tag to some additional files so it can compile more code
-
standard library
runtime: add Frame.Entry field
-
-
v0.31.128 Feb 2024Release notes
Open source →-
general
- fix Binaryen build in make task
- update final build stage of Docker
devimage to go1.22 - only use GHA cache for building Docker
devimage - update the
netsubmodule to latest version
-
compiler
interp: make getelementptr offsets signedinterp: return a proper error message when indexing out of range
-
-
v0.31.026 Feb 2024Release notes
Open source →- general
- remove LLVM 14 support
- add LLVM 17 support, and use it by default
- add Nix flake support
- update bundled Binaryen to version 116
- add
portssubcommand that lists available serial ports for-portand-monitor - support wasmtime version 14
- add
-serial=rttfor serial output over SWD - add Go 1.22 support and use it by default
- change minimum Node.js version from 16 to 18
- compiler
- use the new LLVM pass manager
- allow systems with more stack space to allocate larger values on the stack
build: fix a crash due to sharing GlobalValues between build instancescgo: addC._Booltypecgo: fix calling CGo callback inside generic functioncompileopts: setpuregobuild tag by default so that more packages can be builtcompileopts: force-enable CGo to avoid build issuescompiler: fix crash on type assert on interfaces with no methodsinterp: print LLVM instruction in tracebackinterp: support runtime times by running them at runtimeloader: enforce Go language version in the type checker (this may break existing programs with an incorrect Go version in go.mod)transform: fix bug in StringToBytes optimization pass
- standard library
crypto/tls: stub out a lot of functionsinternal/task,machine: make TinyGo code usable with "big Go" CGomachine: implementI2C.SetBaudRateconsistently across chipsmachine: implementSPI.Configureconsistently across chipsmachine: addDeviceIDfor nrf, rp2040, sam, stm32machine: use smaller UART buffer size on atmega chipsmachine/usb: allow setting a serial number using a linker flagmath: support more math functions on baremetal (picolibc) systemsnet: replace entire net package with a new one based on the netdev driveros/user: add bare-bones implementation of this packagereflect: stubCallSliceandFuncOfreflect: addTypeFor[T]reflect: updateIsZeroto Go 1.22 semanticsreflect: move indirect values into interface when setting interfacesruntime: stubBreakpointsync: implement trylock
- targets
atmega: use UART double speed mode for fewer errors and higher throughputatmega328pb: refactor to enable extra uartavr: don't compile large parts of picolibc (math, stdio) for LLVM 17 supportesp32: switch over to the official SVD fileesp32c3: implement USB_SERIAL for USBCDC communicationesp32c3: implement I2Cesp32c3: implement RNGesp32c3: add more ROM functions and update linker script for the in-progress wifi supportesp32c3: update to newer SVD filesrp2040: add support for UART hardware flow controlrp2040: add definition formachine.PinTogglerp2040: set XOSC startup delay multipliersamd21: add support for UART hardware flow controlsamd51: add support for UART hardware flow controlwasm: increase default stack size to 64k for wasi/wasm targetswasm: bump wasi-libc version to SDK 20wasm: remove line of dead code in wasm_exec.js
- new targets/boards
qtpy-esp32c3: add Adafruit QT Py ESP32-C3 boardmksnanov3: add support for the MKS Robin Nano V3.xnrf52840-generic: add generic nrf52840 chip supportthumby: add support for Thumbywasm: add newwasm-unknowntarget that doesn't depend on WASI or a browser
- boards
arduino-mkrwifi1010,arduino-nano33,nano-rp2040,matrixportal-m4,metro-m4-airlift,pybadge,pyportal: addninafwbuild tag and some constants for BLE supportgopher-badge: fix typo in USB product namenano-rp2040: add UART1 and correct mappings for NINA via UARTpico: bump default stack size from 2kB to 8kBwioterminal: expose UART4
- general
-
v0.30.1-0.20231219071640-534b3b0c0be219 Dec 2023 pre-releaseNothing published for this version
-
v0.30.021 Sep 2023Release notes
Open source →- general
- add LLVM 16 support, use it by default
- compiler
build: work around a race condition by building Go SSA seriallycompiler: fix a crash by not using the LLVM global context typesinterp: don't copy unknown values inruntime.sliceCopyto fix miscompileinterp: fix crash in error report by not returning raw LLVM values
- standard library
machine/usb/adc/midi: various improvements and API changesreflect: add support for[...]T→[]Tin reflect
- targets
atsamd21,atsamd51: add support for USB INTERRUPT OUTrp2040: always use the USB device enumeration fix, even in chips that supposedly have the HW fixwasm: increase default stack size to 32k for wasi/wasm
- boards
gobadge: add GoBadge target as alias for PyBadge :)gemma-m0: add support for the Adafruit Gemma M0
- general
-
v0.29.025 Aug 2023Release notes
Open source →- 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
main: add target JSON file intinygo infooutputmain: improve detection of filesystemsmain: usego envinstead of doing all detection manually- make: add make task to generate Renesas device wrappers
- make: add task to check NodeJS version before running tests
- add submodule for Renesas SVD file mirror repo
- update to go-serial package v1.6.0
testing: add Testing functiontools/gen-device-svd: small changes needed for Renesas MCUs
- compiler
builder: update message for max supported Go versioncompiler,reflect: NumMethods reports exported methods onlycompiler: add compiler-rt and wasm symbols to tablecompiler: add compiler-rt to wasm.jsoncompiler: add min and max builtin supportcompiler: implement clear builtin for mapscompiler: implement clear builtin for slicescompiler: improve panic message when a runtime call is unavailablecompiler: update .ll test outputloader: merge go.env file which is now required starting in Go 1.21 to correctly get required packages
- standard library
os: define ErrNoDeadlinereflect: Add FieldByNameFuncreflect: add SetZeroreflect: fix iterating over maps with interface{} keysreflect: implement Value.Growreflect: remove unnecessary heap allocationsreflect: use .key() instead of a type assertsync: add implementation from upstream Go for OnceFunc, OnceValue, and OnceValues
- targets
machine: UART refactor (#3832)machine/avr: pin change interruptmachine/macropad_rp2040: add machine.BUTTONmachine/nrf: add I2C timeoutmachine/nrf: wait for stop condition after reading from the I2C busmachine/nRF52: set SPI TX/RX lengths even data is empty. Fixes #3868 (#3877)machine/rp2040: add missing suffix to CMD_READ_STATUSmachine/rp2040: add NoPin supportmachine/rp2040: move flash related functions into separate file from C imports for correct - LSP. Fixes #3852machine/rp2040: wait for 1000 us after flash reset to avoid issues with busy USB busmachine/samd51,rp2040,nrf528xx,stm32: implement watchdogmachine/samd51: fix i2cTimeout was decreasing due to cache activationmachine/usb: Add support for HID Keyboard LEDsmachine/usb: allow USB Endpoint settings to be changed externallymachine/usb: refactor endpoint configurationmachine/usb: remove usbDescriptorConfigmachine/usb/hid,joystick: fix hidreport (3) (#3802)machine/usb/hid: add RxHandler interfacemachine/usb/hid: rename Handler() to TxHandler()wasi: allow zero inodes when reading directorieswasm: add support for GOOS=wasip1wasm: fix functions exported through //exportwasm: remove i64 workaround, use BigInt insteadexample: adjust time offsetexample: simplify pininterrupt
- boards
targets: add AKIZUKI DENSHI AE-RP2040targets: adding new uf2 target for PCA10056 (#3765)
- general
-
v0.28.2-0.20230819180410-e3bc6da9e4d319 Aug 2023 pre-releaseNothing published for this version
-
v0.28.111 Jun 2023Nothing published for this version
-
v0.28.010 Jun 2023Release notes
Open source →- 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 printokfor a successful compile-only
- compiler
builder: remove non-ThinLTO build modebuilder: fail earlier if Go is not availablebuilder: improve-size=fullin a number of waysbuilder: implement Nordic DFU file writer in Gocgo: allowLDFLAGS: --export=...compiler: support recursive slice typescompiler: zero struct padding during map operationscompiler: add llvm.ident metadatacompiler: removeunsafe.Pointer(uintptr(v) + idx)optimization (useunsafe.Addinstead)compiler: add debug info to//go:embeddata structures for better-sizeoutputcompiler: add debug info to string constantscompiler: fix a minor race conditioncompiler: emit correct alignment in debug info for global variablescompiler: correctly generate reflect data for local named typescompiler: add alloc attributes toruntime.alloc, reducing flash usage slightlycompiler: for interface maps, use the original named type if availablecompiler: implement most math/bits functions as LLVM intrinsicscompiler: ensure all defers have been seen before creating rundefers
- standard library
internal/task: disallow blocking inside an interruptmachine: addCPUResetmachine/usb/hid: add MediaKey supportmachine/usb/hid/joystick: move joystick under HIDmachine/usb/hid/joystick: allow joystick settings overridemachine/usb/hid/joystick: handle case where we cannot find the correct HID descriptormachine/usb/hid/mouse: add support for mouse back and forwardmachine/usb: add ability to override default VID, PID, manufacturer name, and product namenet: added missingTCPAddrandUDPAddrimplementationsos: add IsTimeout functionos: fix resource leak in(*File).Closeos: add(*File).Syncos: implement(*File).ReadDirfor wasios: implement(*File).WriteAtreflect: make sure null bytes are supported in tagsreflect: refactor this package to enable many new featuresreflect: add map type methods:ElemandKeyreflect: add map methods:MapIndex,MapRange/MapIter,SetMapIndex,MakeMap,MapKeysreflect: add slice methods:Append,MakeSlice,Slice,Slice3,Copy,Bytes,SetLenreflect: add misc methods:Zero,Addr,UnsafeAddr,OverflowFloat,OverflowInt,OverflowUint,SetBytes,Convert,CanInt,CanFloat,CanComplex,Comparablereflect: add type methods:String,PkgPath,FieldByName,FieldByIndex,NumMethodreflect: add stubs forType.Method,CanConvert,ArrayOf,StructOf,MapOfreflect: add stubs for channel select routines/typesreflect: allow nil rawType to call Kind()reflect: ensure all ValueError panics have Kind fieldsreflect: add support for named typesreflect: improveValue.String()reflect: setIndexandPkgPathfield inType.Fieldreflect:Type.AssignableTo: you can assign anything tointerface{}reflect: add type check toValue.Fieldreflect: letTypeOf(nil)return nilreflect: moveStructField.Anonymousfield to match upstream locationreflect: addUnsafePointerfor Func typesreflect:MapIter.Nextneeds to allocate new keys/values every timereflect: fixIsNilfor interfacesreflect: fixType.Nameto return an empty string for non-named typesreflect: addVisibleFieldsreflect: properly handle embedded structsreflect: make surePointerToworks for named typesreflect:Set: convert non-interface to interfacereflect:Set: fix direction of assignment checkreflect: support channel directionsreflect: print struct tags in Type.String()reflect: properly handle read-only valuesruntime: allow custom-gc SetFinalizer and clarify KeepAliveruntime: implement KeepAlive using inline assemblyruntime: check for heap allocations inside interruptsruntime: properly turn pointer into empty interface when hashingruntime: improve map size hint usageruntime: zero map key/value on deletion to so GC doesn't see themruntime: print the address where a panic happenedruntime/debug: stubSetGCPercent,BuildInfo.Settingsruntime/metrics: add this package as a stubsyscall:Stat_ttimespec fields are Atimespec on darwinsyscall: addTimespec.Unix()for wasisyscall: add fsync using libctesting: support -test.counttesting: make test output unbuffered when verbosetesting: add -test.skiptesting: move runtime.GC() call to runN to match upstreamtesting: add -test.shuffle to order randomize test and benchmark order
- targets
arm64: fix register save/restore to include vector registersattiny1616: add support for this chipcortexm: refactor EnableInterrupts and DisableInterrupts to avoidarm.AsmFullcortexm: enable functions in RAM for go & cgocortexm: convert SystemStack fromAsmFullto C inline assemblycortexm: fix crash due to wrong stack size offsetnrf: samd21, stm32: add flash APInrf: fix memory issue in ADC readnrf: new peripheral type for nrf528xx chipsnrf: implement target modenrf: improve ADC and add oversampling, longer sample time, and reference voltagerp2040: change calling order for device enumeration fix to do firstrp2040: rtc delayed interruptrp2040: provide better errors for invalid pins on I2C and SPIrp2040: change uart to allow for a single pinrp2040: implement Flash interfacerp2040: remove SPIDataBitspropertyrp2040: unify all linker scripts using LDFLAGSrp2040: remove SPI deadline for improved performancerp2040: use 4MHz as default frequency for SPIrp2040: implement target moderp2040: use DMA for send-only SPI transferssamd21: rearrange switch case for get pin cfgsamd21: fix issue with WS2812 driver by making pin accesses fastersamd51: enable CMCC cache for greatly improved performancesamd51: remove extra BK0RDY clearsamd51: implement Flash interfacesamd51: use correct SPI frequencysamd51: remove extra BK0RDY clearsamd51: fix ADC multisamplingwasi: allow users to set theruntime_memhash_tsiporruntime_memhash_fnvbuild tagswasi: setWASMTIME_BACKTRACE_DETAILSwhen running in wasmtime.wasm: implement the//go:wasmimportdirective
- boards
gameboy-advance: switch to use register definitions in device/gbagameboy-advance: rename display and make pointer receiversgopher-badge: Added Gopher Badge supportlorae5: add needed definition for UART2lorae5: correct mapping for I2C bus, add pin mapping to enable powerpinetime: update the target file (rename from pinetime-devkit0)qtpy: fix bad pin assignmentwioterminal: fix pin definition of BCM13xiao: Pins D4 & D5 are I2C1. Use pins D2 & D3 for I2C0.xiao: add DefaultUART
- general
-
v0.27.1-0.20230531192450-ee90bdebfff431 May 2023 pre-releaseNothing published for this version
-
v0.27.1-0.20230403174020-19e4db45db8603 Apr 2023 pre-releaseNothing published for this version
-
v0.27.011 Feb 2023Release notes
Open source →- 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=customoption main: print ldflags including ThinLTO flags with -xmain: fix error message when a serial port can't be accessedmain: add-timeoutflag to allow setting how long TinyGo will try looking for a MSD volume for flashingtest: print PASS on pass when running standalone test binariestest: fix printing of benchmark outputtest: print package name when compilation failed (not just when the test failed)
- compiler
- refactor to support LLVM 15
builder: print compiler commands while building a librarycompiler: fix stack overflow when creating recursive pointer types (fix for LLVM 15+ only)compiler: allow map keys and values of ≥256 bytescgo: add support forC.floatandC.doublecgo: support anonymous enums included in multiple Go filescgo: add support for bitwise operatorsinterp: add support for constant icmp instructionstransform: fix memory corruption issues
- standard library
machine/usb: remove allocs in USB ISRmachine/usb: addPort()and deprecateNew()to have the API better match the singleton that is actually being returnedmachine/usb: change HID usage-maximum to 0xFFmachine/usb: add USB HID joystick supportmachine/usb: change to not send before endpoint initializationnet: implementPipeos: add stub foros.Chtimesreflect: stub outType.FieldByIndexreflect: addValue.IsZeromethodreflect: fix bug in.Fieldmethod when the field fits in a pointer but the parent doesn'truntime: switch somepanic()calls in the gc toruntimePanic()for consistencyruntime: add xorshift-based fastrand64runtime: fix alignment for arm64, arm, xtensa, riscvruntime: implement precise GCruntime/debug: stubPrintStacksync: implement simple pooling insync.Poolsyscall: stubbedSetuid, Exec and friendssyscall: add more stubs as needed for Go 1.20 supporttesting: implementt.Setenvunsafe: add support for Go 1.20 slice/string functions
- targets
all: do not set stack size per boardall: update picolibc to v1.7.9atsame5x: fix CAN extendedID handlingatsame5x: reduce heap allocationavr: drop GNU toolchain dependencyavr: fix .data initialization for binaries over 64kBavr: support ThinLTObaremetal: implements callocdarwin: fixsyscall.Openon darwin/arm64darwin: fix error withtinygo lldbesp: use LLVM Xtensa linker instead of Espressif toolchainesp: use ThinLTO for Xtensaesp32c3: add SPI supportlinux: include muslgetpagesizefunction in releasenrf51: add ADC implementationnrf52840: add PDM supportriscv: add "target-abi" metadata flagrp2040: remove mem allocation in GPIO ISRrp2040: avoid allocating clock on heaprp2040: add basic GPIO support for PIOrp2040: fix USB interrupt issuerp2040: fix RP2040-E5 USB erratastm32: always set ADC pins to pullups floatingstm32f1,stm32f4: fix ADC by clearing the correct bit for rank after each readstm32wl: Fix incomplete RNG initialisationstm32wlx: change order for init so clock speeds are set before peripheral startwasi: makes wasmtime "run" explicitwasm: fix GC scanning of allocaswasm: allow custom malloc implementationwasm: remove-wasm-abi=flag (use-targetinstead)wasm: fix scanning of the stackwasm: fix panic when allocating 0 bytes using mallocwasm: always run wasm-opt even with-scheduler=nonewasm: avoid miscompile with ThinLTOwasm: allow the emulator to expand{tmpDir}wasm: support ThinLTOwindows: update mingw-w64 version to avoid linker warningwindows: add ARM64 support
- boards
- Add Waveshare RP2040 Zero
- Add Arduino Leonardo support
- Add Adafruit KB2040
- Add Adafruit Feather M0 Express
- Add Makerfabs ESP32C3SPI35 TFT Touchscreen board
- Add Espressif ESP32-C3-DevKit-RUST-1 board
lgt92: fix OpenOCD configurationxiao-rp2040: fix D9 and D10 constantsxiao-rp2040: add pin definitions
- general
-
v0.26.1-0.20230203153840-9027c50405b103 Feb 2023 pre-releaseNothing published for this version
-
v0.26.1-0.20221021071646-42e4a75319ce21 Oct 2022 pre-releaseNothing published for this version
-
v0.26.029 Sep 2022Release notes
Open source →- general
- remove support for LLVM 13
- remove calls to deprecated ioutil package
- move from
os.IsFootoerrors.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
- update serial package to v1.3.5 for latest bugfixes
- remove GOARM from
tinygo info - add flag for setting the goroutine stack size
- add serial port monitoring functionality
- compiler
cgo: implement support for static functionscgo: fix panic when FuncType.Results is nilcompiler: add aliases foredwards25519/field.feMulandfield.feSquarecompiler: fix incorrect DWARF type in some generic parameterscompiler: use LLVM math builtins everywherecompiler: replace some math operation bodies with LLVM intrinsicscompiler: replace math aliases with intrinsicscompiler: fixunsafe.Sizeoffor chan and map valuescompileopts: use tags parser from buildutilcompileopts: use backticks for regexp to avoid extra escapescompileopts: fail fast on duplicate values in target field slicescompileopts: fix windows/arm target triplecompileopts: improve error handling when loading target/*.jsoncompileopts: add support for stlink-dap programmercompileopts: do not complain about-no-debugon MacOSgoenv: supportGOOS=androidinterp: fix reading from external globalloader: fix link error forcrypto/internal/boring/sig.StandardCrypto
- standard library
- rename assembly files to .S extension
machine: add PWM peripheral comments to pinsmachine: improve UARTParity slightlymachine: do not export DFU_MAGIC_* constants on nrf52840machine: renamePinInputPullUp/PinInputPullDownmachine: addKHz,MHz,GHzconstants, deprecateTWI_FREQ_*constantsmachine: remove level triggered pin interruptsmachine: do not exposeRESET_MAGIC_VALUEmachine: useNoPinconstant where appropriate (instead of0for example)net: sync net.go with Go 1.18 stdlibos: addSyscallError.Timeoutos: addErrProcessDoneerrorreflect: implementCanInterfaceand fix stringIndexruntime: makeMemStatsavailable to leaking collectorruntime: addMemStats.TotalAllocruntime: addMemStats.MallocsandFreesruntime: add support fortime.NewTimerandtime.NewTickerruntime: implementresetTimerruntime: ensure some headroom for the GC to runruntime: make gc and scheduler asserts settable with build tagsruntime/pprof: addWriteHeapProfileruntime/pprof:runtime/trace: stub some additional functionssync: implementMap.LoadAndDeletesyscall: group WASI consts by purposesyscall: add WASI{D,R}SYNC,NONBLOCKFD flagssyscall: add ENOTCONN on darwintesting: add support for -benchmem
- targets
- remove USB vid/pid pair of bootloader
esp32c3: remove unusedUARTStopBitsconstantsnrf: implementGetRNGfunctionnrf:rp2040: addmachine.ReadTemperaturenrf52: cleanup s140v6 and s140v7 uf2 targetsrp2040: implement semi-random RNG based on ROSC based on pico-sdkwasm: add summary of wasm examples and fix callback bugwasm: do not allow undefined symbols (--allow-undefined)wasm: make sure buffers returned bymallocare kept untilfreeis calledwindows: save and restore xmm registers when switching goroutines
- boards
- add Pimoroni's Tufty2040
- add XIAO ESP32C3
- add Adafruit QT2040
- add Adafruit QT Py RP2040
esp32c3-12f:matrixportal-m4:p1am-100: remove duplicate build tagshifive1-qemu: remove this emulated boardwioterminal: add UART3 for RTL8720DNxiao-ble: fix usbpid
- general
-
v0.25.1-0.20220915170704-9e4e182615cd15 Sep 2022 pre-releaseNothing published for this version
-
v0.25.002 Aug 2022Release notes
Open source →- command line
- change to ignore PortReset failures
- compiler
compiler: darwin/arm64 is aarch64, not armcompiler: don't clobber X18 and FP registers on darwin/arm64compiler: fix issue with methods on generic structscompiler: do not try to build generic functionscompiler: fix type names for generic named structscompiler: fix multiple defined function issue for generic functionscompiler: implementunsafe.Alignofandunsafe.Sizeoffor generic code
- standard library
machine: add DTR and RTS to Serialer interfacemachine: reorder pin definitions to improve pin list on tinygo.orgmachine/usb: add support for MIDImachine/usb: adjust buffer alignment (samd21, samd51, nrf52840)machine/usb/midi: addNoteOn,NoteOff, andSendCCmethodsmachine/usb/midi: add definition of MIDI note numberruntime: add benchmarks for memhashruntime: add support for printing slices via print/println
- targets
avr: fix some apparent mistake in atmega1280/atmega2560 pin constantsesp32: provide hardware pin constantsesp32: fix WDT reset on the MCH2022 badgeesp32: optimize SPI transmitesp32c3: provide hardware pin constantsesp8266: provide hardware pin constants likeGPIO2nrf51: define and useP0_xxconstantsnrf52840,samd21,samd51: unify bootloader entry processnrf52840,samd21,samd51: change usbSetup and sendZlp to publicnrf52840,samd21,samd51: refactor handleStandardSetup and initEndpointnrf52840,samd21,samd51: improve usb-device initializationnrf52840,samd21,samd51: move usbcdc to machine/usb/cdcrp2040: add usb serial vendor/product IDrp2040: add support for usbrp2040: change default for serial to usbrp2040: add support formachine.EnterBootloaderrp2040: turn off pullup/down when input type is not specifiedrp2040: make picoprobe default openocd interfacesamd51: add support forDAC1samd51: improve TRNGwasm: stubruntime.buffered,runtime.getcharwasi: make leveldb runtime hash the default
- boards
- add Challenger RP2040 LoRa
- add MCH2022 badge
- add XIAO RP2040
clue: remove pinsD21..D28feather-rp2040,macropad-rp2040: fix qspi-flash settingsxiao-ble: add support for flash-1200-bps-resetgopherbot,gopherbot2: add these aliases to simplify for newer users
- command line
-
v0.25.0-beta128 Jul 2022 pre-releaseNothing published for this version
-
v0.24.030 Jun 2022Release notes
Open source →- 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"builder: add support for ThinLTO on MacOS and Windowsbuilder: free LLVM objects after use, to reduce memory leakingbuilder: improve-no-debugerror messagescgo: be more strict: CGo now requires every Go file to import the headers it needscompiler: alignof(func) is 1 pointer, not 2compiler: add support for type parameters (aka generics)compiler: implementrecover()built-in functioncompiler: support atomic, volatile, and LLVM memcpy-like functions in defercompiler: drop support for macos syscalls via inline assemblyinterp: do not try to interpret past task.Pause()interp: fix some buggy localValue handlinginterp: do not unroll loopstransform: fix MakeGCStackSlots that caused a possible GC bug on WebAssembly
- standard library
os: enable os.Stdin for baremetal targetreflect: addValue.UnsafePointermethodruntime: scan GC globals conservatively on Windows, MacOS, Linux and Nintendo Switchruntime: add per-map hash seedsruntime: handle nil map write panicsruntime: add stronger hash functionssyscall: implementGetpagesize
- targets
atmega2560: support UART1-3 + example for uartavr: use compiler-rt for improved float64 supportavr: simplify timer-based timeavr: fix race condition in stack writedarwin: add support forGOARCH=arm64(aka Apple Silicon)darwin: support-size=shortand-size=fullflagrp2040: replace sleep 'busy loop' with timer alarmrp2040: align api forPortMaskSet,PortMaskClearrp2040: fix GPIO interruptssamd21,samd51,nrf52840: add support for USBHID (keyboard / mouse)wasm: update wasi-libc versionwasm: use newer WebAssembly features
- boards
- add Badger 2040
matrixportal-m4: attach USB DP to the correct pinteensy40: add I2C supportwioterminal: fix I2C definition
- command line
-
v0.23.028 Apr 2022Release notes
Open source →- command line
- add
-workflag - add Go 1.18 support
- add LLVM 14 support
run: add support for command-line parametersbuild: calculate default output path if-ois not specifiedbuild: add JSON outputtest: support multiple test binaries with-ctest: support flags like-von all targets (including emulated firmware)
- add
- compiler
- add support for ThinLTO
- use compiler-rt from LLVM
builder: prefer GNU build ID over Go build ID for cachingbuilder: add support for cross compiling to Darwinbuilder: support machine outlining pass in stacksize calculationbuilder: disable asynchronous unwind tablescompileopts: fix emulator configuration on non-amd64 Linux architecturescompiler: move allocations > 256 bytes to the heapcompiler: fix incorrectunsafe.Alignofon some 32-bit architecturescompiler: accept alias for slicecapbuiltincompiler: allow slices of empty structscompiler: fix difference in aliases in interface methodscompiler: makeRawSyscallan alias forSyscallcompiler: remove support for memory references inAsmFullloader: only add Clang header path for CGotransform: fix poison value in heap-to-stack transform
- standard library
internal/fuzz: add this package as a shimos: implement readdir for darwin and linuxos: addDirFS, which is used by many programs to access readdir.os: isWine: be compatible with older versions of wine, tooos: implementRemoveAllos: Use auintptrforNewFileos: add stubs forexec.ExitErrorandProcessState.ExitCodeos: export correct values forDevNullfor each OSos: improve support forSignalby fixing various bugsos: implementFile.Fdmethodos: implementUserHomeDiros: addexec.ProcessStatestubos: implementPipefor darwinos: define stubErrDeadlineExceededreflect: add stubs for more missing methodsreflect: renamereflect.Ptrtoreflect.Pointerreflect: addValue.FieldByIndexErrstubruntime: fix various small GC bugsruntime: use memzero for leaking collector instead of manually zeroing objectsruntime: implementmemhashruntime: implementfastrandruntime: add stub fordebug.ReadBuildInforuntime: add stub forNumCPUruntime: don't inlineruntime.allocwith-gc=leakingruntime: addVersionruntime: add stubs forNumCgoCallandNumGoroutineruntime: stub {Lock,Unlock}OSThread on Windowsruntime: be able to deal with a very small heapsyscall: makeEnvironreturn a copy of the environmentsyscall: implement getpagesize and munmapsyscall:wasi: defineMAP_SHAREDandPROT_READsyscall: stub mmap(), munmap(), MAP_SHARED, PROT_READ, SIGBUS, etc. on nonhosted targetssyscall: darwin: more complete list of signalssyscall:wasi: more complete list of signalssyscall: stubWaitStatussyscall/js: allow copyBytesTo(Go|JS) to useUint8ClampedArraytesting: implementTempDirtesting: nudge type TB closer to upstream; should be a no-op change.testing: on baremetal platforms, use simpler test matcher
- targets
atsamd: fix usbcdc initialization when-serial=uartatsamd51: allow higher frequency when using SPIesp: support CGoesp32c3: add support for input pinesp32c3: add support for GPIO interruptsesp32c3: add support to receive UART datarp2040: fix PWM bug at high frequencyrp2040: fix some minor I2C bugsrp2040: fix incorrect inline assemblyrp2040: fix spurious i2c STOP during write+read transactionrp2040: improve ADC supportwasi: remove--export-dynamiclinker flagwasm: remove heap allocator from wasi-libc
- boards
circuitplay-bluefruit: move pin mappings so board can be compiled for WASM use in Playgroundesp32-c3-12f: add the ESP32-C3-12f Kitm5stamp-c3: add pin setting of UARTmacropad-rp2040: add the Adafruit MacroPad RP2040 boardnano-33-ble: typo in LPS22HB peripheral definition and documentation (#2579)teensy41: add the Teensy 4.1 boardteensy40: add ADC supportteensy40: add SPI supportthingplus-rp2040: add the SparkFun Thing Plus RP2040 boardwioterminal: add DefaultUARTwioterminal: verify written data when flashing through OpenOCDxiao-ble: add XIAO BLE nRF52840 support
- command line
-
v0.22.025 Jan 2022Release notes
Open source →- command line
- add asyncify to scheduler flag help
- support -run for tests
- remove FreeBSD target support
- add LLVM 12 and LLVM 13 support, use LLVM 13 by default
- add support for ARM64 MacOS
- improve help
- check /run/media as well as /media on Linux for non-debian-based distros
test: set cmd.Dir even when running emulatorsinfo: add JSON output using the-jsonflag
- compiler
builder: fix off-by-one in size calculationbuilder: handle concurrent library header renamebuilder: use flock to avoid double-compilesbuilder: use build ID as cache keybuilder: add -fno-stack-protector to musl buildbuilder: update clang header search path to look in /usr/libbuilder: explicitly disable unwind tables for ARMcgo: add support forC.CStringand related functionscompiler: fix ranging over maps with particular map typescompiler: add correct debug location to init instructionscompiler: fix emission of large object layoutscompiler: work around AVR atomics bugscompiler: predeclare runtime.trackPointerinterp: work around AVR function pointers in globalsinterp: run goroutine starts and checks at runtimeinterp: always run atomic and volatile loads/stores at runtimeinterp: bump timeout to 180 secondsinterp: handle type assertions on nil interfacesloader: eliminate goroot cache inconsistencyloader: respect $GOROOT when runninggo listtransform: allocate the correct amount of bytes in an allocatransform: remove switched func lowering
- standard library
crypto/rand: show error if platform has no rngdevice/*: add*_Mskfield for each bit field and avoid duplicatesdevice/*: provide Set/Get for each register field described in the SVD filesinternal/task: swap stack chain when switching goroutinesinternal/task: remove-scheduler=coroutinesmachine: addDevicestring constantnet: add bare Interface implementationnet: add net.Buffersos: stub out support for some featuresos: obey TMPDIR on unix, TMP on Windows, etcos: implementReadAt,Mkdir,Remove,Stat,Lstat,CreateTemp,MkdirAll,Chdir,Chmod,Clearenv,Unsetenv,Setenv,MkdirTemp,Rename,Seek,ExpandEnv,Symlink,Readlinkos: implementFile.Statos: fixIsNotExiston nonexistent pathos: fix opening files on WASI in read-only modeos: work around lack ofsyscall.seekon 386 and armreflect: make sure indirect pointers are handled correctlyruntime: allow comparing interfacesruntime: use LLVM intrinsic to read the stack pointerruntime: strengthen hashmap hash function for structs and arraysruntime: fix float/complex hashingruntime: fix nil map dereferenceruntime: add realloc implementation to GCsruntime: handle negative sleep timesruntime: correct GC scan boundsruntime: remove extalloc GCrumtime: implement__synclibcalls as critical sections for most microcontrollersruntime: add stubs forFunc.FileLineandFrame.PCsync: fix concurrent read-lock on write-locked RWMutexsync: add a package docsync: add testssyscall: add support forMmapandMprotectsyscall: fix array size for mmap slice creationsyscall: enableGetwdin wasitesting: add a stub forCoverModetesting: support -bench option to run benchmarks matching the given pattern.testing: support b.SetBytes(); implement sub-benchmarks.testing: replace spaces with underscores in test/benchmark names, as upstream doestesting: implement testing.Cleanuptesting: allow filtering subbenchmarks with the-benchflagtesting: implement-benchtimeflagtesting: print durationtesting: allow filtering of subtests using-run
- targets
all: change LLVM features to match vanilla Clangavr: use interrupt-based timer which is much more accuratenrf: fix races in I2Csamd51: implement TRNG for randomnessstm32: pull-up on I2C linesstm32: fix timeout for i2c commsstm32f4,stm32f103: initial implementation for ADCstm32f4,stm32f7,stm32l0x2,stm32l4,stm32l5,stm32wl: TRNG implementation in crypto/randstm32wl: add I2C supportwindows: add support for the-size=flagwasm: add support fortinygo testwasi,wasm: raise default stack size to 16 KiB
- boards
- add M5Stack
- add lorae5 (stm32wle) support
- add Generic Node Sensor Edition
- add STM32F469 Discovery
- add M5Stamp C3
- add Blues Wireless Swan
bluepill: add definitions for ADC pinsstm32f4disco: add definitions for ADC pinsstm32l552ze: use supported stlink interfacemicrobit-v2: add some pin definitions
- command line
-
v0.21.1-0.20220124172340-a29e1d43f15124 Jan 2022 pre-releaseNothing published for this version