0.27.0
This release adds support for Go 1.20 and LLVM 15. In addition, it drops a dependency on the AVR and Xtensa toolchains, so you don't need to install avr-gcc
or xtensa-esp32-elf-ld
making TinyGo much easier to install. Instead, it uses the built-in LLVM linker instead.
Newly supported targets are windows/arm64 (or "Windows on ARM64"), Waveshare RP2040 Zero, Arduino Leonardo, Adafruit KB2040, Adafruit Feather M0 Express, Makerfabs ESP32C3SPI35, and Espressif ESP32-C3-DevKit-RUST-1. As usual, there are also a ton of smaller fixes and improvements.
Here is a detailed changelog for this release:
- general
- all: update musl
- all: remove "acm:"` prefix for USB vid/pid pair
- all: add support for LLVM 15
- all: use DWARF version 4
- all: add initial (incomplete) support for Go 1.20
- all: add
-gc=custom
option main
: print ldflags including ThinLTO flags with -xmain
: fix error message when a serial port can't be accessedmain
: add-timeout
flag 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.float
andC.double
cgo
: 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
: implementPipe
os
: add stub foros.Chtimes
reflect
: stub outType.FieldByIndex
reflect
: addValue.IsZero
methodreflect
: fix bug in.Field
method 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
: stubPrintStack
sync
: implement simple pooling insync.Pool
syscall
: stubbedSetuid
, Exec and friendssyscall
: add more stubs as needed for Go 1.20 supporttesting
: implementt.Setenv
unsafe
: 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.Open
on darwin/arm64darwin
: fix error withtinygo lldb
esp
: use LLVM Xtensa linker instead of Espressif toolchainesp
: use ThinLTO for Xtensaesp32c3
: add SPI supportlinux
: include muslgetpagesize
function 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-target
instead)wasm
: fix scanning of the stackwasm
: fix panic when allocating 0 bytes using mallocwasm
: always run wasm-opt even with-scheduler=none
wasm
: 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