This is the highly anticipated first release of 2024! Some of the most requested features:
- Go 1.22 support
- macOS arm64 native binary release build
- Nix flake support
- LLVM 17
There are many improvements and fixes to the compiler and runtime. We also have a new net
package for greatly improved network support on bare metal devices. We have a new wasm-unknown
target for WebAssembly early adopters. And of course several new boards supported, such as the Adafruit QT Py ESP32-C, and the Thumby.
- 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
ports
subcommand that lists available serial ports for-port
and-monitor
- support wasmtime version 14
- add
-serial=rtt
for 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._Bool
typecgo
: fix calling CGo callback inside generic functioncompileopts
: setpurego
build 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.SetBaudRate
consistently across chipsmachine
: implementSPI.Configure
consistently across chipsmachine
: addDeviceID
for 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
: stubCallSlice
andFuncOf
reflect
: addTypeFor[T]
reflect
: updateIsZero
to Go 1.22 semanticsreflect
: move indirect values into interface when setting interfacesruntime
: stubBreakpoint
sync
: 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.PinToggle
rp2040
: 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-unknown
target that doesn't depend on WASI or a browser
- boards
arduino-mkrwifi1010
,arduino-nano33
,nano-rp2040
,matrixportal-m4
,metro-m4-airlift
,pybadge
,pyportal
: addninafw
build 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