Go compiler for small places. Microcontrollers, WebAssembly (WASM/WASI), and command-line tools. Based on LLVM.
This is a patch release to address a few important items that were needed quickly by the community, and that have been addressed since the last full release.
general
net
submodule to updated version with Buffers
implementationcompiler
syscall
: add wasm_unknown tag to some additional files so it can compile more codestandard library
runtime
: add Frame.Entry fieldThis is a quick patch release to fix some critical issues that were noticed right after v0.31.0
. Thank you to our team for the fast response!
general
dev
image to go1.22dev
imagenet
submodule to latest versioncompiler
interp
: make getelementptr offsets signedinterp
: return a proper error message when indexing out of rangeThis is the highly anticipated first release of 2024! Some of the most requested features:
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.
ports
subcommand that lists available serial ports for -port
and -monitor
-serial=rtt
for serial output over SWDbuild
: fix a crash due to sharing GlobalValues between build instancescgo
: add C._Bool
typecgo
: fix calling CGo callback inside generic functioncompileopts
: set purego
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 passcrypto/tls
: stub out a lot of functionsinternal/task
, machine
: make TinyGo code usable with "big Go" CGomachine
: implement I2C.SetBaudRate
consistently across chipsmachine
: implement SPI.Configure
consistently across chipsmachine
: add DeviceID
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
: stub CallSlice
and FuncOf
reflect
: add TypeFor[T]
reflect
: update IsZero
to Go 1.22 semanticsreflect
: move indirect values into interface when setting interfacesruntime
: stub Breakpoint
sync
: implement trylockatmega
: 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 for machine.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.jsqtpy-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 new wasm-unknown
target that doesn't depend on WASI or a browserarduino-mkrwifi1010
, arduino-nano33
, nano-rp2040
, matrixportal-m4
, metro-m4-airlift
, pybadge
, pyportal
: add ninafw
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 UART4This is a smaller but important release just in time for GopherCon US.
Some of the bigger changes of this release are switching to LLVM 16, fixes for two separate hard-to-reproduce compiler crashes, improvements to USB-MIDI, and added support for the Adafruit Gemma M0.
Here is the full list:
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 in runtime.sliceCopy
to fix miscompileinterp
: fix crash in error report by not returning raw LLVM valuesmachine/usb/adc/midi
: various improvements and API changesreflect
: add support for [...]T
→ []T
in reflectatsamd21
, 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/wasmgobadge
: add GoBadge target as alias for PyBadge :)gemma-m0
: add support for the Adafruit Gemma M0This release adds support for Go 1.21
It also adds compatibility with the new GOOS=wasip1
using the Go built-in WASI support.
There are a number of compiler and standard library improvements, such as even better reflection, and improved map/slice implementations.
We also have a bunch of useful fixes and improvements to various microcontrollers, including new support for hardware based watchdog timers (WDT) so your embedded devices can be more reliable than ever.
Here is the full changelog:
main
: add target JSON file in tinygo info
outputmain
: improve detection of filesystemsmain
: use go env
instead of doing all detection manuallytesting
: add Testing functiontools/gen-device-svd
: small changes needed for Renesas MCUsbuilder
: 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 packagesos
: define ErrNoDeadlinereflect
: Add FieldByNameFuncreflect
: add SetZeroreflect
: fix iterating over maps with interface{} keysreflect
: implement Value.Growreflect
: remove unecessary heap allocationsreflect
: use .key() instead of a type assertsync
: add implementation from upstream Go for OnceFunc, OnceValue, and OnceValuesmachine
: 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 pininterrupttargets
: add AKIZUKI DENSHI AE-RP2040targets
: adding new uf2 target for PCA10056 (#3765)This is a small patch release that fixes two issues:
This release is packed with features! Here are some highlights:
//go:wasmimport
following upstream Go. This is the supported way to import functions, other ways (//export
and the like) may stop working in the future.This release also added support for several new boards, most notably our very own Gopher Badge developed by @conejoninja.
There are also two significant breaking changes for baremetal targets like microcontrollers: the runtime will now panic when an interrupt does a heap allocation inside an interrupt or when an interrupt does a blocking operation like a channel send. These were never correct, but might have accidentally worked in practice. If you hit one of these issues, TinyGo will usually print the source location where the problem originates when you use the -monitor
parameter on tinygo flash
. The fix for heap allocations is to restructure the code to not need them (for example, by using global variables) and the fix for blocking operations is to make them non-blocking, for example for a channel send:
select {
case someChan <- value:
default:
}
Of course, there is a very long list of smaller fixes and improvements, see the full list below:
test
: don't print ok
for a successful compile-onlybuilder
: remove non-ThinLTO build modebuilder
: fail earlier if Go is not availablebuilder
: improve -size=full
in a number of waysbuilder
: implement Nordic DFU file writer in Gocgo
: allow LDFLAGS: --export=...
compiler
: support recursive slice typescompiler
: zero struct padding during map operationscompiler
: add llvm.ident metadatacompiler
: remove unsafe.Pointer(uintptr(v) + idx)
optimization (use unsafe.Add
instead)compiler
: add debug info to //go:embed
data structures for better -size
outputcompiler
: 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 to runtime.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 rundefersinternal/task
: disallow blocking inside an interruptmachine
: add CPUReset
machine/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 missing TCPAddr
and UDPAddr
implementationsos
: add IsTimeout functionos
: fix resource leak in (*File).Close
os
: add (*File).Sync
os
: implement (*File).ReadDir
for wasios
: implement (*File).WriteAt
reflect
: make sure null bytes are supported in tagsreflect
: refactor this package to enable many new featuresreflect
: add map type methods: Elem
and Key
reflect
: add map methods: MapIndex
, MapRange
/MapIter
, SetMapIndex
, MakeMap
, MapKeys
reflect
: add slice methods: Append
, MakeSlice
, Slice
, Slice3
, Copy
, Bytes
, SetLen
reflect
: add misc methods: Zero
, Addr
, UnsafeAddr
, OverflowFloat
, OverflowInt
, OverflowUint
, SetBytes
, Convert
, CanInt
, CanFloat
, CanComplex
, Comparable
reflect
: add type methods: String
, PkgPath
, FieldByName
, FieldByIndex
, NumMethod
reflect
: add stubs for Type.Method
, CanConvert
, ArrayOf
, StructOf
, MapOf
reflect
: 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
: improve Value.String()
reflect
: set Index
and PkgPath
field in Type.Field
reflect
: Type.AssignableTo
: you can assign anything to interface{}
reflect
: add type check to Value.Field
reflect
: let TypeOf(nil)
return nilreflect
: move StructField.Anonymous
field to match upstream locationreflect
: add UnsafePointer
for Func typesreflect
: MapIter.Next
needs to allocate new keys/values every timereflect
: fix IsNil
for interfacesreflect
: fix Type.Name
to return an empty string for non-named typesreflect
: add VisibleFields
reflect
: properly handle embedded structsreflect
: make sure PointerTo
works 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
: stub SetGCPercent
, BuildInfo.Settings
runtime/metrics
: add this package as a stubsyscall
: Stat_t
timespec fields are Atimespec on darwinsyscall
: add Timespec.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 orderarm64
: fix register save/restore to include vector registersattiny1616
: add support for this chipcortexm
: refactor EnableInterrupts and DisableInterrupts to avoid arm.AsmFull
cortexm
: enable functions in RAM for go & cgocortexm
: convert SystemStack from AsmFull
to 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, rp2040
: 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 SPI DataBits
propertyrp2040
: 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 performancesamd21
: remove extra BK0RDY clearsamd51
: implement Flash interfacesamd51
: use correct SPI frequencysamd51
: remove extra BK0RDY clearsamd51
: fix ADC multisamplingwasi
: allow users to set the runtime_memhash_tsip
or runtime_memhash_fnv
build tagswasi
: set WASMTIME_BACKTRACE_DETAILS
when running in wasmtime.wasm
: implement the //go:wasmimport
directivegameboy-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 DefaultUARTThis 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:
-gc=custom
optionmain
: 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)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 for C.float
and C.double
cgo
: support anonymous enums included in multiple Go filescgo
: add support for bitwise operatorsinterp
: add support for constant icmp instructionstransform
: fix memory corruption issuesmachine/usb
: remove allocs in USB ISRmachine/usb
: add Port()
and deprecate New()
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
: implement Pipe
os
: add stub for os.Chtimes
reflect
: stub out Type.FieldByIndex
reflect
: add Value.IsZero
methodreflect
: fix bug in .Field
method when the field fits in a pointer but the parent doesn'truntime
: switch some panic()
calls in the gc to runtimePanic()
for consistencyruntime
: add xorshift-based fastrand64runtime
: fix alignment for arm64, arm, xtensa, riscvruntime
: implement precise GCruntime/debug
: stub PrintStack
sync
: implement simple pooling in sync.Pool
syscall
: stubbed Setuid
, Exec and friendssyscall
: add more stubs as needed for Go 1.20 supporttesting
: implement t.Setenv
unsafe
: add support for Go 1.20 slice/string functionsall
: 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
: fix syscall.Open
on darwin/arm64darwin
: fix error with tinygo lldb
esp
: use LLVM Xtensa linker instead of Espressif toolchainesp
: use ThinLTO for Xtensaesp32c3
: add SPI supportlinux
: include musl getpagesize
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 supportlgt92
: fix OpenOCD configurationxiao-rp2040
: fix D9 and D10 constantsxiao-rp2040
: add pin definitionsThis is another TinyGo release with many small changes, including over 110 commits.
This release introduces two possible breaking changes:
The machine
package has had some changes in the public API, to remove some unintentionally exported constants. It is likely that very little real-world code is affected by this change.
WebAssembly files could previously import functions by leaving a Go function unimplemented, like so:
func add(a, b int) int
This worked by accident. With this release, this is no longer possible. Instead, functions will need to be imported explicitly to avoid a compiler error:
//export add
func add(a, b int) int
(The //export
may be confusing, we intend to add a less-confusing //go:wasm-import
directive in the future).
Here is a detailed changelog for this release:
os.IsFoo
to errors.Is(err, ErrFoo)
tinygo info
cgo
: implement support for static functionscgo
: fix panic when FuncType.Results is nilcompiler
: add aliases for edwards25519/field.feMul
and field.feSquare
compiler
: 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
: fix unsafe.Sizeof
for 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-debug
on MacOSgoenv
: support GOOS=android
interp
: fix reading from external globalloader
: fix link error for crypto/internal/boring/sig.StandardCrypto
machine
: add PWM peripheral comments to pinsmachine
: improve UARTParity slightlymachine
: do not export DFU_MAGIC_* constants on nrf52840machine
: rename PinInputPullUp
/PinInputPullDown
machine
: add KHz
, MHz
, GHz
constants, deprecate TWI_FREQ_*
constantsmachine
: remove level triggered pin interruptsmachine
: do not expose RESET_MAGIC_VALUE
machine
: use NoPin
constant where appropriate (instead of 0
for example)net
: sync net.go with Go 1.18 stdlibos
: add SyscallError.Timeout
os
: add ErrProcessDone
errorreflect
: implement CanInterface
and fix string Index
runtime
: make MemStats
available to leaking collectorruntime
: add MemStats.TotalAlloc
runtime
: add MemStats.Mallocs
and Frees
runtime
: add support for time.NewTimer
and time.NewTicker
runtime
: implement resetTimer
runtime
: ensure some headroom for the GC to runruntime
: make gc and scheduler asserts settable with build tagsruntime/pprof
: add WriteHeapProfile
runtime/pprof
: runtime/trace
: stub some additional functionssync
: implement Map.LoadAndDelete
syscall
: group WASI consts by purposesyscall
: add WASI {D,R}SYNC
, NONBLOCK
FD flagssyscall
: add ENOTCONN on darwintesting
: add support for -benchmemesp32c3
: remove unused UARTStopBits
constantsnrf
: implement GetRNG
functionnrf
: rp2040
: add machine.ReadTemperature
nrf52
: 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 by malloc
are kept until free
is calledwindows
: save and restore xmm registers when switching goroutinesesp32c3-12f
: matrixportal-m4
: p1am-100
: remove duplicate build tagshifive1-qemu
: remove this emulated boardwioterminal
: add UART3 for RTL8720DNxiao-ble
: fix usbpidThis release improves USB support with new support for the RP2040 and MIDI, improves support for generics, fixes some bugs on darwin/arm64, and adds 3 new boards: the Challenger RP2040 LoRa, the MCH2022 badge, and the XIAO RP2040
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
: implement unsafe.Alignof
and unsafe.Sizeof
for generic codemachine
: 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
: add NoteOn
, NoteOff
, and SendCC
methodsmachine/usb/midi
: add definition of MIDI note numberruntime
: add benchmarks for memhashruntime
: add support for printing slices via print/printlnavr
: 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 like GPIO2
nrf51
: define and use P0_xx
constantsnrf52840
, 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 for machine.EnterBootloader
rp2040
: turn off pullup/down when input type is not specifiedrp2040
: make picoprobe default openocd interfacesamd51
: add support for DAC1
samd51
: improve TRNGwasm
: stub runtime.buffered
, runtime.getchar
wasi
: make leveldb runtime hash the defaultclue
: remove pins D21
..D28
feather-rp2040
, macropad-rp2040
: fix qspi-flash settingsxiao-ble
: add support for flash-1200-bps-resetgopherbot
, gopherbot2
: add these aliases to simplify for newer users