Skip to content

Commit bdc4a21

Browse files
committed
Release 0.42.0
Signed-off-by: deadprogram <ron@hybridgroup.com>
1 parent 2761414 commit bdc4a21

2 files changed

Lines changed: 161 additions & 1 deletion

File tree

CHANGELOG.md

Lines changed: 160 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,163 @@
1+
0.42.0
2+
---
3+
* **general**
4+
- all: add LLVM 22 support, and support LLVM 19 and LLVM 20 on Fedora 43
5+
- all: build and test using Go 1.27, and raise the max supported Go version to 1.27
6+
- all: modernize and clean up code with Go 1.24+ in mind (#5489, #5498)
7+
- all: use unsafe.SliceData where appropriate
8+
- all: update golang.org/x/tools and go-llvm
9+
- cli: add basic probe-rs support
10+
- cli: clarify the runtime.alloc linker error with -gc=none
11+
- main: allow the -o flag to point to a directory
12+
- main: make the -monitor flag on flash respect the port
13+
- main: update to espflasher 0.8.0 with fixes for esp32c3 and esp32s3
14+
- cgo: add CGO_CFLAGS support (#5453)
15+
- version: update to 0.42.0 for the new dev cycle
16+
- docs: add agents.md guideline for use of ASD-STE100 (#5566)
17+
* **compiler**
18+
- compiler, runtime: make runtime, map, and channel panics recoverable
19+
- compiler, runtime: support recover on riscv64
20+
- compiler, runtime, reflect: generate type-specific hash/equal (#5359)
21+
- support Go 1.27 generic methods via the x/tools upgrade
22+
- canonicalize generic instance and method signature identities
23+
- disambiguate function-local named types and generic instance link names (#5336)
24+
- exclude generic methods from runtime method sets
25+
- support file-level //go:linkname directives and the //go:linknamestd pragma
26+
- add the //go:noheap pragma
27+
- pass large aggregates by pointer
28+
- use LLVM intrinsics for math trig operations
29+
- optimize zero-sized allocations
30+
- consistently pass layout and alignment to createAlloc
31+
- handle nested unsigned shift being untyped after type resolution (#5497)
32+
- store the defer list head in the defer frame and centralize deferred call records
33+
- centralize SSA loads, stores, result handling, and LLVM function type construction
34+
- transform, compiler: support the captures(none) attribute of LLVM 21
35+
- compiler: make composite map hashes order dependent
36+
* **core**
37+
- reflect: add Type.ConvertibleTo and complex, rune, and integer string conversions
38+
- reflect: implement MakeChan
39+
- reflect: add missing iterator methods
40+
- reflect, reflectlite: make IsRO and MakeRO package methods
41+
- sync: add Map.CompareAndSwap and Map.CompareAndDelete
42+
- sync: fix deadlock in the Map.Range callback
43+
- os, syscall: add Statfs and Fstatfs stubs and Getpagesize for non-hosted targets
44+
- os: add File.Chown on the unix path
45+
- runtime, syscall, internal/poll, os: wasip1 poll_oneoff scheduler integration and net.FileListener (#5386)
46+
- runtime, testing: support Goexit, SkipNow, and FailNow
47+
- syscall: remove sliceHeader, use unsafe.SliceData more
48+
- builder, cgo, syscall: replace fixed-size array casts with unsafe.Slice
49+
- builder, loader: fix -ldflags -X not overriding variables with default values
50+
- builder: build SSA before compiling packages
51+
- builder: increase the stack size margin for automatic stack allocation
52+
- builder: do not count non-writable SHT_NOBITS sections as RAM or bss
53+
- builder: link stack probes on Windows amd64 and arm64, and add chkstk2.S for windows/386
54+
- builder: add strlen to the wasm builtins
55+
- builder: retry cached archive renames on Windows (#5462)
56+
- loader: avoid a race condition when loading the package list, and skip object resolution
57+
- interp: bail out of loops that iterate too many times (#5395)
58+
- interp: fix partial store aliasing and avoid repeated object clones
59+
- interp: defer out-of-bounds loads to runtime instead of crashing
60+
- interp: mark pointers in aggregate call operands as external
61+
- interp: fix switch-instruction handling for the new case-value API of LLVM 22
62+
- transform: follow returned pointer and aggregate alloc aliases
63+
- transform: add -print-allocs-cover and restore the -print-allocs reason output
64+
- device: add device/uefi and device/amd64
65+
- wasm: patch wasm_exec.js and wasm_exec_node.js from Go 1.18+ (#5483)
66+
* **net**
67+
- update the net module with a roundtrip fix for js/wasm
68+
* **runtime**
69+
- make divide-by-zero and nil dereference panics recoverable
70+
- add a Windows vectored exception handler for recoverable panics
71+
- make Goexit exit host threads, and encode a pending Goexit in the panic state
72+
- make out-of-memory and fatal failures unrecoverable
73+
- improve the hardfault handler and stack reporting on Cortex-M
74+
- prevent timer starvation in the cores scheduler
75+
- do not access the timer queue outside of the lock
76+
- fix ticker not stopping when Stop races with its callback (#5487)
77+
- wake channel waiters after releasing locks (#5513)
78+
- implement SetFinalizer and run syscall/js finalizers without a manual GC (#5545)
79+
- implement MemStats.NumGC
80+
- add runtime.fastrandn (#5502)
81+
- make arrays and struct field hashes order dependent
82+
- add critical-section fallbacks for atomic And and Or
83+
- gc: pause all cores before scanning the stack and globals
84+
- gc: correct the old size calculation in block realloc
85+
- gc: correct the leaking allocator bounds and overflow checks
86+
- gc: move objHeader to the end of the block header
87+
- fix the leaking GC build with the cores scheduler
88+
- rp2040: fix -gc=leaking and -gc=none
89+
- rp2: handle the RP2350 shared FIFO IRQ for GC (#5482)
90+
- esp32c6: select the 80MHz PLL as the TIMG0 timer clock source
91+
- split baremetal memory setup and the Windows PE globals scan for UEFI (#5360, #5361)
92+
* **machine**
93+
- usb: support bidirectional endpoints by dynamic registration on RP2, SAMD21/51, and nRF52840 (#5447)
94+
- usb: generate endpoint descriptors dynamically
95+
- usb: implement endpoint stall for nRF52840
96+
- usb: fix a truncated string descriptor when the host requests a short maxLen (#5449)
97+
- usb: add USBDevice.Attach and USBDevice.Detach (#5563)
98+
- usb/cdc: fix the RP2 USB CDC TX race with the cores scheduler (#5391)
99+
- add UART line inversion support (#5522)
100+
- optimize RTT initialization
101+
- device/arm: add ARM v7-M MPU support
102+
- esp32: add interrupt support with vector table, timer alarm, and GPIO SetInterrupt
103+
- esp32: add interrupt-based UART RX and fix the init order
104+
- esp32: implement flash XIP (execute-in-place) support
105+
- esp32: add ADC driver (#5595)
106+
- esp32: fix pullup and pulldown on RTC GPIO pins
107+
- esp32: remove dead code and fix GC root scanning
108+
- esp32: configure UARTs to the specified pins and yield while waiting for the buffer
109+
- esp32, esp32s3: fix the boot crash caused by the LLVM 22 lld l32r relocation bug
110+
- esp32s3: fix register-window corruption under interrupt load
111+
- esp32s3: add temperature reading
112+
- esp32c6: add a minimal implementation with I2C and ADC support
113+
- stm32: fix UART transmission, baud rate, and interrupt handling
114+
- stm32: add an OTG FS USB driver for F4 and F7
115+
- stm32: add STM32H7 and NUCLEO-H753ZI support
116+
- stm32: add support for the STM32U031 chip
117+
- stm32: make the HSE crystal frequency selectable
118+
- stm32u5: configure the system clock to 160 MHz
119+
- nrf: avoid a too high priority interrupt on SoftDevice
120+
- rp2: allow SPI transmit-only without SDI (#5437)
121+
- rp2: clear the USB buffer status before the endpoint handlers
122+
- rp2350: fix the ROM CS control for the RP2350 ROM code
123+
- add GP aliases for waveshare-rp2040-zero
124+
- gba: add support for mGBA debugging
125+
- gba: add bios interrupt flags and sound register constants (#5445)
126+
* **targets**
127+
- add minimal uefi target support with the LinkerFlavor option (#5452, #5465)
128+
- uefi: add support for UEFI time and events, fix STOP newline conversion (#5549)
129+
- uefi: add support for the tasks scheduler and make it the default (#5553)
130+
- add Puya PY32F MCU support (#5106)
131+
- add esp32s3-box-3 (#5388)
132+
- add M5Stack Stamp-S3A (#5524)
133+
- add Pimoroni Blinky 2350 and Badger 2350 (#5434)
134+
- add the 'Plus' board variant of SeeedStudio XIAO nrf52840 (#5479)
135+
- esp32: adjust memory usage, add DRAM1 sections, and export the symbols needed for wifi
136+
- esp32c3: add the BT ROM functions to the linker
137+
- esp32: add the espradio tag for convenience
138+
- builder: fix esp32 XIP so large programs flash correctly, including QEMU image offsets
139+
- wasm_exec.js: add runtime.getRandomData to the gojs imports, coerce memory offsets to unsigned, and reset _pendingEvent
140+
* **libs**
141+
- update macos-minimal-sdk to v0.1.0
142+
* **build/test**
143+
- ci: run the full smoke test once, and split the GNUmakefile (#5616)
144+
- ci: publish a draft release from the artifacts that CI already built
145+
- ci: stop the LLVM caches from being evicted
146+
- ci: modify builds to use LLVM 22
147+
- ci: add a check for compatibility with older Go and LLVM versions
148+
- ci: add a job to make sure go.sum stays in sync with go.mod
149+
- ci: re-add fmt-check, and remove the CircleCI configuration
150+
- ci: adjust runner sizes for Linux, Windows, and macOS
151+
- build: statically link the MinGW runtime in the LLVM tools on Windows
152+
- Makefile: use ${LLVM_PROJECTDIR} during the copy phase
153+
- GNUmakefile: disable DWARF compression for CGo objects, and update the stdlib test lists
154+
- test: run ESP32 programs in QEMU
155+
- test: support simavr 1.8+
156+
- test: normalize LLVM IR when updating goldens
157+
- test: convert TestBinarySize to a golden file test
158+
- testdata: add regression tests for generic instances, generic aliases, and large aggregates
159+
- test: skip flaky and Go 1.27 affected tests for now
160+
1161
0.41.1
2162
---
3163
* **machine**

goenv/version.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import (
1010

1111
// Version of TinyGo.
1212
// Update this value before release of new version of software.
13-
const version = "0.42.0-dev"
13+
const version = "0.42.0"
1414

1515
// Return TinyGo version, either in the form 0.30.0 or as a development version
1616
// (like 0.30.0-dev-abcd012).

0 commit comments

Comments
 (0)