NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
Go modules · #173 by repository stars
Last release 6 days ago
02 Oct 2026
Ships on a steady schedule
a new release about every 9 days
Nearly every release is documented
notes for 48 of 50 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
245 releases · first in 2019
Nothing published for this version
Nothing published for this version
Nothing published for this version
One column per quarter.
This release has over 240 commits to our main repo, with important features such as Go 1.27 and LLVM 22 support to keep you current with the latest an
This release has over 240 commits to our main repo, with important features such as Go 1.27 and LLVM 22 support to keep you current with the latest and greatest. Panics are now recoverable for runtime errors like divide-by-zero, nil dereference, and map and channel failures, which makes recover() work the way you expect. The compiler now generates type-specific hash and equal functions, and there are many GC, scheduler, and timer fixes to make concurrent code more solid. USB gets dynamic endpoint registration on RP2, SAMD21/51, and nRF52840. And there is a lot of new hardware support, with a big step forward for ESP32 (interrupts, ADC, flash XIP, and the new ESP32-C6), plus STM32H7, the Puya PY32F family, a new UEFI target, and boards like the ESP32-S3-BOX-3, M5Stack Stamp-S3A, and Pimoroni Badger 2350.
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
This point release has a few very important fixes for you all that could not wait.
This point release has a few very important fixes for you all that could not wait.
This release is the most feature packed yet with over 150 commits to our main repo alone. We added Go 1.26 support to keep you up to date with the lat
This release is the most feature packed yet with over 150 commits to our main repo alone. We added Go 1.26 support to keep you up to date with the latest work from the mothership. We also have many improvements to our developer tooling and compatibility. And some big additions when it comes to hardware support, with ESP32 wireless, and the new Arduino UNO Q board too.
AssignableTo and Implements (#5304)createObjectLayoutsliceAppendcrypto/internal/constanttime.boolToUint8SyscallN handling for Windows on Go 1.26+TypeAssertTypeAssert for structsWaitGroup.GoUserCacheDir and UserConfigDirLchown function for changing file ownership (#5161)b.ReportMetric()EscapeNonString, EscapeToResultNonStringGetRandom for WASI targetsptrtoint size mismatch a recoverable error//go:embed patternshiBits overflow on 16-bit AVR targetsfindPackagePath when using -size shortSIGSEGV when stripping duplicate function definitions-print-allocs flag to match the go coverage tool formatshort-enums flagBlockDevice for esp32c3 flashGPIO STATUS before dispatching pin callbacksUSBDevice using interruptsEnable stub for QEMU test targetMCAUSE after handling interruptIRAM sections in linker scriptPROVIDE() for WiFi/BLE ROM function addresses to allow blob overridesTIMG0 alarm interrupt for sleepTicks instead of busy-waitingPin.SetInterrupt for GPIO pin change interruptsTIMG0 alarm interrupt for sleepTicksprocPin/procUnpin, and linker wrap flagscall4 in task switchingtxStalled flag to skip USB serial spin when no hostNoPin when unsettinygo_scanCurrentStack to spill register windowsClose function to UART to allow for removing all system resources/power usageblockReset() and unresetBlockWait() helper functions for peripheral reset/unresetfminimum/fmaximumtimeoffset atomicMemStats.HeapObjectsGODEBUG on wasip2 (#5312)syscall return value truncation and lost argumentssyscall.runtimeClearenv for Go 1.26syscall functions for darwin changes for 1.26context and expvar to stdlib testsencoding/xml to stdlib tests on Linuxmipsle test if the emulator is missingNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
An important point release with some critical fixes and improvements that just could not wait. Thank you very much to our global team of humans who jo
An important point release with some critical fixes and improvements that just could not wait. Thank you very much to our global team of humans who joined together so quickly to get this out for all of us!
Our final release for 2025 includes a number of really excellent improvements to close out the year. We have plenty of bugfixes and stability enhancem
Our final release for 2025 includes a number of really excellent improvements to close out the year. We have plenty of bugfixes and stability enhancements to make your life better and easier. For example, new updates to the GC that are up to 10% faster! Not to mention fixing some very tricky race conditions. Of course we have new hardware support, like the Xiao ESP32-S3 board.
Nothing published for this version
This release has what you need the most right now, which is Go 1.25 support! Of course it has other new features, such as adding multicore support for
This release has what you need the most right now, which is Go 1.25 support! Of course it has other new features, such as adding multicore support for the RP2350 family of processors as well as for macOS. We've also got fixes, and as always further improvements for reflect support and stdlib packages. Plus a couple of new boards too!
tinygo test -crp2: use the correct channel mask for rp2350 ADC; hold lock during read (#4938)rp2: disable digital input for analog inputsinternal/task: use -stack-size flag when starting a new threadinternal/task: add SA_RESTART flag to GC interruptsinternal/task: a few small correctness fixesinternal/gclayout: make gclayout values constantssync: implement sync.Swapreflect: implement Method.IsExportedstm32: add support for the STM32L031G6U6rp2040/rp2350: set the default stack size to 8k for rp2040/rp2350 based boards where this was not already the caseThis release includes some very exciting new features, in particular our first multicore support! Initially available on the RP2040 microcontrollers,
This release includes some very exciting new features, in particular our first multicore support! Initially available on the RP2040 microcontrollers, now TinyGo can use both cores at the same time for true concurrency in hardware. Another very powerful new capability added in this release is USB Mass Storage Device (MSD) support on the RP2040/RP2350, SAMD21, and SAMD51 series of processors. We have also added experimental Boehm garbage collector for WebAssembly to speed up your production code.
go.*: upgrade golang.org/x/tools to v0.30.0all: add support for LLVM 20flake.*: upgrade to nixpkgs 25.05, LLVM 20Makefile: only detect ccache command when neededMakefile: create random filename inside ruleMakefile: don't set GOROOTMakefile: call uname at most onceMakefile: only read NodeJS version when it is neededGODEBUG=gotypesalias=1interp: fix copy() from/to external buffers-nobounds (similar to -gcflags=-B)compileopts: add library version to cached library pathbuilder: build wasi-libc inside TinyGobuilder: simplify bdwgc libc dependencybuilder: don't use precompiled librariescompileopts: enable support for GOARCH=wasm in tinygo testrp2350: Fix DMA to SPI transmits on RP2350 (#4903)microbit v2: use OpenOCD flash method on microbit v2 when using Nordic Semi SoftDevicemain: display all of the current GC options for the -gc flagsync: fix TestMutexConcurrent testtestdata/goroutines.gousb: add USB mass storage class supportsamd21: implement watchdogsamd51: write to flash memory in 512 byte long chunkssamd21: write to flash memory in 64 byte long chunksWriteByte everywhererp2: unexport machine-specific errorsrp2: discount scheduling delays in I2C timeouts (#4876)rp2: expose usb endpoint stall handlingarm: clear pending interrupts before enabling themrp2: merge common usb code (#4856)StartPos and EndPos to -json build output-json flag to match upstream GoNumCPU for the multicore schedulerinterrupt: add Checkpoint typeexportedFuncPtr(*time.Timer).Resetos/signal on wasip1timeUnit to a single placeNumCPU for -scheduler=threadsmainExited booleaninternal/task: rename tinygo_pause to tinygo_task_exittimerQueueinternal/task: implement atomic primitives for preemptive schedulingnet: update submodule to latest commitsruntime/debug: add GC related stubsmetrics: flesh out some of the metric typesreflect: Chan related stubsos: handle relative and abs paths in Executable()os: add os.Executable() for Darwinsync: implement RWMutex using futexesreflect: Add SliceOf, ArrayOf, StructOf, MapOf, FuncOfrp2040: add multicore supportriscv32: use gdb binary as a fallbackwindows: use MSVCRT.DLL instead of UCRT on i386windows: add windows/386 supportarm64: remove unnecessary .section directiveriscv-qemu: actually sleep in time.Sleep()riscv: define CSR constants and use them where possibledarwin: support Boehm GC (and use by default)windows: add support for the Boehm-Demers-Weiser GCwindows: fix wrong register for first parameter//go:wasmexport because of running goroutinesint64 instead of float64 for the timeUnitNothing published for this version
Nothing published for this version
Nothing published for this version
This is probably our fastest time in-between full releases, especially given all of the excellent work that has made it in. A few highlights are updat
This is probably our fastest time in-between full releases, especially given all of the excellent work that has made it in. A few highlights are updated compatibility with the latest WASI work from the Bytecode Alliance, faster speed and PIO support for the RP2350, and a new garbage collector option for Linux. Plus a bunch of critical fixes to make your life better!
Nothing published for this version
update to use Get-CimInstance as wmic is being deprecated on WIndows
Get-CimInstance as wmic is being deprecated on WIndowsgoenv: update to new v0.36.0 development versionbuilder: fix parsing of external ld.lld error messagescgo: mangle identifier namesinterp: correctly mark functions as modifying memorycrypto/tls: add Dialer.DialContext() to fix websocket clientcrypto/tls: add VersionTLS constants and VersionName(version uint16) method that turns it into a string, copied from big gointernal/syscall/unix: use our own version of this packagemachine: replace hard-coded cpu frequencies on rp2xxxmachine: bump rp2350 CPUFrequency to 150 MHzmachine: compute rp2 clock dividers from crystal and target frequencymachine: remove bytes package dependency in flash codemachine/usb/descriptor: avoid bytes packagenet: update to latest submodule with httptest subpackage and ResolveIPAddress implementationos: add File.Chdir supportos: implement stub Chdir for non-OS systemsos/file: add file.Chmodreflect: implement Value.Equalruntime: add FIPS helper functionsruntime: manually initialize xorshift statesync: move Mutex to internal/tasksyscall: add wasip1 RandomGettesting: add Chdirwasip2: add stubs to get internal/syscall/unix to workwasm: correctly handle id lookup for finalizeRef callwasm: avoid total failure on wasm finalizer callwasm: convert offset as signed int into unsigned int in syscall/js.stringVal in wasm_exec.jsNothing published for this version
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 a
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.
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 messagebuilder: 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=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 noescape linescompiler: fix bug in interrupt loweringcompiler: allow panic directly in defercompiler: fix wasmimport -> wasmexport in error messagecompiler: support //go:noescape pragmacompiler: report error instead of crashing when instantiating a generic function without bodyinterp: align created globalsmachine: modify i2s interface/implementation to better match specificationos: implement StartProcessreflect: add Value.Clearreflect: add interface support to NumMethodsreflect: fix AssignableTo for named + non-named typesreflect: implement CanConvertreflect: handle more cases in Convertreflect: 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: add runtime.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: use SA_RESTART when registering a signal for os/signalruntime: implement race-free signals using futexesruntime: run deferred functions in Goexitruntime: remove Cond which seems to be unusedruntime: properly handle unix read on directoryruntime/trace: stub all public methodssync: don't use volatile in Mutexsync: implement WaitGroup using a (pseudo)futexsync: make Cond parallelism-safesyscall: use wasi-libc tables for wasm/js targetmips: 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 to time.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 bufferNothing published for this version
This release adds support for //go:wasmexport that is a standardized way to export WebAssembly functions to the host, improves garbage collection perf
This release adds support for //go:wasmexport that is a standardized way to export WebAssembly functions to the host, improves garbage collection performance (especially on wasm), adds big-endian MIPS support (GOOS=mips), and adds two new boards! It also contains a number of smaller improvements and bug fixes.
GOOS=wasip1 for tinygo test-C DIR flag-ldflags='-extldflags=...' supporttinygo help and when passing invalid parametersbuilder: remove environment variables when invoking Clang, to avoid the environment changing the behaviorbuilder: check for the Go toolchain version used to compile TinyGocgo: add C.CBytes implementationcompiler: fix passing weirdly-padded structs as parameters to new goroutinescompiler: support pragmas on generic functionscompiler: do not let the slice buffer escape when casting a []byte or []rune to a string, to help escape analysiscompiler: conform to the latest iteration of the wasm types proposalloader: don't panic when main package is not named 'main'loader: make sure we always return type checker errors even without type errorstransform: optimize range over []byte(string)crypto/x509: add package stub to build crypto/x509 on macOSmachine/usb/adc/midi: fix PitchBendos: add Truncate stub for baremetalos: add stubs for os.File deadlinesos: add internal net.newUnixFile for the net packageruntime: stub runtime_{Before,After}Exec for linkageruntime: randomize map accessesruntime: support maps.Cloneruntime: add more fields to MemStatsruntime: implement newcoro, coroswitch to support package iterruntime: disallow defer in interruptsruntime: add support for os/signal on Linux and MacOSruntime: add gc layout info for some basic types to help the precise GCruntime: bump GC mark stack size to avoid excessive heap rescansdarwin: use Go standard library syscall package instead of a custom onefe310: support GPIO PinInputmips: fix compiler crash with GOMIPS=softfloat and defermips: add big-endian (GOARCH=mips) supportmips: use MIPS32 (instead of MIPS32R2) as the instruction set for wider compatibilitywasi: add relative and absolute --dir options to wasmtime argswasip2: add wasmtime -S args to support network interfaceswasm: add //go:wasmexport support (for all WebAssembly targets)wasm: use precise instead of conservative GC for WebAssembly (including WASI)wasm-unknown: add bulk memory flags since basically every runtime has it nowadd chromeos 9p support for flashing
tinygo runtest: support GOOS/GOARCH pairs in the -target flagtest: remove message after test binary builtgolang.org/x/sys/unix syscallsbuilder: remove workaround for generics race conditionbuilder: add package ID to compiler and optimization error messagesbuilder: show better error messages for some common linker errorscgo: support preprocessor macros passed on the command linecgo: use absolute paths for error messagescgo: add support for printfloader: handle go list errors inside TinyGo (for better error messages)transform: fix incorrect alignment of heap-to-stack transformtransform: use thinlto-pre-link passes (instead of the full pipeline) to speed up compilation speed slightlycrypto/tls: add CipherSuiteName and some extra fields to ConnectionSTateinternal/abi: implement initial version of this packagemachine: use new internal/binary packagemachine: rewrite Reply() to fix sending long replies in I2C Target Modemachine/usb/descriptor: Reset joystick physicalmachine/usb/descriptor: Drop second joystick hatmachine/usb/descriptor: Add more HID... functionsmachine/usb/descriptor: Fix encoding of valuesmachine/usb/hid/joystick: Allow more hat switchesos: add Chown, Truncateos/user: use stdlib version of this packagereflect: return correct name for the unsafe.Pointer typereflect: implement Type.Overflow* functionsruntime: implement dummy getAuxv to satisfy golang.org/x/sys/runtime: don't zero out new allocations for -gc=leaking when they are already zeroedruntime: simplify slice growing/appending coderuntime: print a message when a fatal signal like SIGSEGV happensruntime/debug: add GoVersion to debug.BuildInfosync: add Map.Clear()sync/atomic: add And* and Or* compiler intrinsics needed for Go 1.23syscall: add Fork and Execvesyscall: add all MacOS errno valuestesting: stub out T.Deadlineunique: implement custom (naive) version of the unique packagearm: support GOARM=*,softfloat (softfloat support for ARM v5, v6, and v7)mips: add linux/mipsle (and experimental linux/mips) supportmips: add GOMIPS=softfloat supportwasip2: add WASI preview 2 supportwasm/js: add node: prefix in require() call of wasm_exec.jswasm-unknown: make sure the os package can be importedwasm-unknown: remove import-memory flagNothing published for this version
fix wasi-libc include headers on Nix
general
compiler
-panic=trap support to the compiler/runtimebuilder: keep un-wasm-opt'd .wasm if -work was passedbuilder: make sure wasm-opt command line is printed if askedcgo: implement shift operations in preprocessor macrosinterp: checking for methodset existencestandard library
machine: add __tinygo_spi_tx function to simulatormachine: fix simulator I2C supportmachine: add GetRNG support to simulatormachine: add TxFifoFreeLevel for CANos: add Linkos: add FindProcess for posixos: add Process.Release for unixos: add SetReadDeadline stubos, os/signal: add signal stubsos/user: add stubs for Lookup{,Group} and Groupreflect: use int in StringHeader and SliceHeader on non-AVR platformsreflect: fix NumMethods for Interface typeruntime: skip negative sleep durations in sleepTickstargets
esp32: add I2C supportrp2040: move UART0 and UART1 to common filerp2040: make all RP2040 boards available for simulationrp2040: fix timeUnit typestm32: add i2c Frequency and SetBaudRate function for chips that were missing implementationwasm-unknown: add math and memory builtins that LLVM needswasip1: replace existing -target=wasi support with wasip1 as supported in Go 1.21+boards
adafruit-esp32-feather-v2: add the Adafruit ESP32 Feather V2badger2040-w: add support for the Badger2040 Wfeather-nrf52840-sense: fix lack of LXFOm5paper: add support for the M5 Papermksnanov3: limit programming speed to 1800 kHznucleol476rg: add stm32 nucleol476rg supportpico-w: add the Pico W (which is near-idential to the pico target)thingplus-rp2040, waveshare-rp2040-zero: add WS2812 definitionpca10059-s140v7: add this variant to the PCA10059 boardNothing published for this version
Nothing published for this version
update the net submodule to updated version with Buffers implementation
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 fieldfix Binaryen build in make task
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 rangeadd LLVM 17 support, and use it by default
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 FuncOfreflect: add TypeFor[T]reflect: update IsZero to Go 1.22 semanticsreflect: move indirect values into interface when setting interfacesruntime: stub Breakpointsync: 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.PinTogglerp2040: 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 UART4Nothing published for this version
add LLVM 16 support, use it by default
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 M0use https for renesas submodule #3856
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 unnecessary 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)Nothing published for this version
Nothing published for this version
fix parallelism in the compiler on Windows by building LLVM with thread support
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 CPUResetmachine/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).Closeos: add (*File).Syncos: implement (*File).ReadDir for wasios: implement (*File).WriteAtreflect: make sure null bytes are supported in tagsreflect: refactor this package to enable many new featuresreflect: add map type methods: Elem and Keyreflect: add map methods: MapIndex, MapRange/MapIter, SetMapIndex, MakeMap, MapKeysreflect: add slice methods: Append, MakeSlice, Slice, Slice3, Copy, Bytes, SetLenreflect: add misc methods: Zero, Addr, UnsafeAddr, OverflowFloat, OverflowInt, OverflowUint, SetBytes, Convert, CanInt, CanFloat, CanComplex, Comparablereflect: add type methods: String, PkgPath, FieldByName, FieldByIndex, NumMethodreflect: add stubs for Type.Method, CanConvert, ArrayOf, StructOf, MapOfreflect: 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.Fieldreflect: Type.AssignableTo: you can assign anything to interface{}reflect: add type check to Value.Fieldreflect: 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 VisibleFieldsreflect: 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.Settingsruntime/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.AsmFullcortexm: 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: 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 performancesamd51: 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 DefaultUARTNothing published for this version
Nothing published for this version
machine/usb: add Port() and deprecate New() to have the API better match the singleton that is actually being returned
-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.doublecgo: 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 Pipeos: add stub for os.Chtimesreflect: stub out Type.FieldByIndexreflect: 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 PrintStacksync: implement simple pooling in sync.Poolsyscall: stubbed Setuid, Exec and friendssyscall: add more stubs as needed for Go 1.20 supporttesting: implement t.Setenvunsafe: 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 lldbesp: 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=nonewasm: 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 definitionsNothing published for this version
Nothing published for this version
remove calls to deprecated ioutil package
os.IsFoo to errors.Is(err, ErrFoo)tinygo infocgo: implement support for static functionscgo: fix panic when FuncType.Results is nilcompiler: add aliases for edwards25519/field.feMul and field.feSquarecompiler: 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=androidinterp: fix reading from external globalloader: fix link error for crypto/internal/boring/sig.StandardCryptomachine: add PWM peripheral comments to pinsmachine: improve UARTParity slightlymachine: do not export DFU_MAGIC_* constants on nrf52840machine: rename PinInputPullUp/PinInputPullDownmachine: add KHz, MHz, GHz constants, deprecate TWI_FREQ_* constantsmachine: remove level triggered pin interruptsmachine: do not expose RESET_MAGIC_VALUEmachine: use NoPin constant where appropriate (instead of 0 for example)net: sync net.go with Go 1.18 stdlibos: add SyscallError.Timeoutos: add ErrProcessDone errorreflect: implement CanInterface and fix string Indexruntime: make MemStats available to leaking collectorruntime: add MemStats.TotalAllocruntime: add MemStats.Mallocs and Freesruntime: add support for time.NewTimer and time.NewTickerruntime: implement resetTimerruntime: ensure some headroom for the GC to runruntime: make gc and scheduler asserts settable with build tagsruntime/pprof: add WriteHeapProfileruntime/pprof: runtime/trace: stub some additional functionssync: implement Map.LoadAndDeletesyscall: 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.ReadTemperaturenrf52: 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 usbpidNothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →