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=full
outputbuilder
: work around incorrectly escaped DWARF paths on Windows (Clang bug)builder
: fix wasi-libc path names on Windows with-size=full
builder
: 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 noescape
linescompiler
: fix bug in interrupt loweringcompiler
: allow panic directly indefer
compiler
: fix wasmimport -> wasmexport in error messagecompiler
: support//go:noescape
pragmacompiler
: 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
: implementStartProcess
reflect
: addValue.Clear
reflect
: add interface support toNumMethods
reflect
: fixAssignableTo
for named + non-named typesreflect
: implementCanConvert
reflect
: handle more cases inConvert
reflect
: 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.fcntl
function 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_RESTART
when registering a signal for os/signalruntime
: implement race-free signals using futexesruntime
: run deferred functions inGoexit
runtime
: removeCond
which seems to be unusedruntime
: properly handle unix read on directoryruntime/trace
: stub all public methodssync
: don't use volatile inMutex
sync
: implementWaitGroup
using a (pseudo)futexsync
: makeCond
parallelism-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:wasmexport
functions after a call totime.Sleep
wasm
: 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