0.35.0
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