Skip to content

Commit 5c2753e

Browse files
aykevldeadprogram
authored andcommitted
all: release 0.28.0
These are some major or breaking changes: - Reflect support got improved a lot. - Interrupts became more strict: heap allocations an blocking operations, which have always been undefined behavior, now result in a panic. - `//go:wasmimport` was added - various new flags were added to `tinygo test` - the source location for panics is printed in the `-monitor` output
1 parent 0212f0c commit 5c2753e

File tree

1 file changed

+137
-0
lines changed

1 file changed

+137
-0
lines changed

CHANGELOG.md

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,140 @@
1+
0.28.0
2+
---
3+
4+
* **general**
5+
- fix parallelism in the compiler on Windows by building LLVM with thread support
6+
- support qemu-user debugging
7+
- make target JSON msd-volume-name an array
8+
- print source location when a panic happens in -monitor
9+
- `test`: don't print `ok` for a successful compile-only
10+
* **compiler**
11+
- `builder`: remove non-ThinLTO build mode
12+
- `builder`: fail earlier if Go is not available
13+
- `builder`: improve `-size=full` in a number of ways
14+
- `builder`: implement Nordic DFU file writer in Go
15+
- `cgo`: allow `LDFLAGS: --export=...`
16+
- `compiler`: support recursive slice types
17+
- `compiler`: zero struct padding during map operations
18+
- `compiler`: add llvm.ident metadata
19+
- `compiler`: remove `unsafe.Pointer(uintptr(v) + idx)` optimization (use `unsafe.Add` instead)
20+
- `compiler`: add debug info to `//go:embed` data structures for better `-size` output
21+
- `compiler`: add debug info to string constants
22+
- `compiler`: fix a minor race condition
23+
- `compiler`: emit correct alignment in debug info for global variables
24+
- `compiler`: correctly generate reflect data for local named types
25+
- `compiler`: add alloc attributes to `runtime.alloc`, reducing flash usage slightly
26+
- `compiler`: for interface maps, use the original named type if available
27+
- `compiler`: implement most math/bits functions as LLVM intrinsics
28+
- `compiler`: ensure all defers have been seen before creating rundefers
29+
* **standard library**
30+
- `internal/task`: disallow blocking inside an interrupt
31+
- `machine`: add `CPUReset`
32+
- `machine/usb/hid`: add MediaKey support
33+
- `machine/usb/hid/joystick`: move joystick under HID
34+
- `machine/usb/hid/joystick`: allow joystick settings override
35+
- `machine/usb/hid/joystick`: handle case where we cannot find the correct HID descriptor
36+
- `machine/usb/hid/mouse`: add support for mouse back and forward
37+
- `machine/usb`: add ability to override default VID, PID, manufacturer name, and product name
38+
- `net`: added missing `TCPAddr` and `UDPAddr` implementations
39+
- `os`: add IsTimeout function
40+
- `os`: fix resource leak in `(*File).Close`
41+
- `os`: add `(*File).Sync`
42+
- `os`: implement `(*File).ReadDir` for wasi
43+
- `os`: implement `(*File).WriteAt`
44+
- `reflect`: make sure null bytes are supported in tags
45+
- `reflect`: refactor this package to enable many new features
46+
- `reflect`: add map type methods: `Elem` and `Key`
47+
- `reflect`: add map methods: `MapIndex`, `MapRange`/`MapIter`, `SetMapIndex`, `MakeMap`, `MapKeys`
48+
- `reflect`: add slice methods: `Append`, `MakeSlice`, `Slice`, `Slice3`, `Copy`, `Bytes`, `SetLen`
49+
- `reflect`: add misc methods: `Zero`, `Addr`, `UnsafeAddr`, `OverflowFloat`, `OverflowInt`, `OverflowUint`, `SetBytes`, `Convert`, `CanInt`, `CanFloat`, `CanComplex`, `Comparable`
50+
- `reflect`: add type methods: `String`, `PkgPath`, `FieldByName`, `FieldByIndex`, `NumMethod`
51+
- `reflect`: add stubs for `Type.Method`, `CanConvert`, `ArrayOf`, `StructOf`, `MapOf`
52+
- `reflect`: add stubs for channel select routines/types
53+
- `reflect`: allow nil rawType to call Kind()
54+
- `reflect`: ensure all ValueError panics have Kind fields
55+
- `reflect`: add support for named types
56+
- `reflect`: improve `Value.String()`
57+
- `reflect`: set `Index` and `PkgPath` field in `Type.Field`
58+
- `reflect`: `Type.AssignableTo`: you can assign anything to `interface{}`
59+
- `reflect`: add type check to `Value.Field`
60+
- `reflect`: let `TypeOf(nil)` return nil
61+
- `reflect`: move `StructField.Anonymous` field to match upstream location
62+
- `reflect`: add `UnsafePointer` for Func types
63+
- `reflect`: `MapIter.Next` needs to allocate new keys/values every time
64+
- `reflect`: fix `IsNil` for interfaces
65+
- `reflect`: fix `Type.Name` to return an empty string for non-named types
66+
- `reflect`: add `VisibleFields`
67+
- `reflect`: properly handle embedded structs
68+
- `reflect`: make sure `PointerTo` works for named types
69+
- `reflect`: `Set`: convert non-interface to interface
70+
- `reflect`: `Set`: fix direction of assignment check
71+
- `reflect`: support channel directions
72+
- `reflect`: print struct tags in Type.String()
73+
- `reflect`: properly handle read-only values
74+
- `runtime`: allow custom-gc SetFinalizer and clarify KeepAlive
75+
- `runtime`: implement KeepAlive using inline assembly
76+
- `runtime`: check for heap allocations inside interrupts
77+
- `runtime`: properly turn pointer into empty interface when hashing
78+
- `runtime`: improve map size hint usage
79+
- `runtime`: zero map key/value on deletion to so GC doesn't see them
80+
- `runtime`: print the address where a panic happened
81+
- `runtime/debug`: stub `SetGCPercent`, `BuildInfo.Settings`
82+
- `runtime/metrics`: add this package as a stub
83+
- `syscall`: `Stat_t` timespec fields are Atimespec on darwin
84+
- `syscall`: add `Timespec.Unix()` for wasi
85+
- `syscall`: add fsync using libc
86+
- `testing`: support -test.count
87+
- `testing`: make test output unbuffered when verbose
88+
- `testing`: add -test.skip
89+
- `testing`: move runtime.GC() call to runN to match upstream
90+
- `testing`: add -test.shuffle to order randomize test and benchmark order
91+
* **targets**
92+
- `arm64`: fix register save/restore to include vector registers
93+
- `attiny1616`: add support for this chip
94+
- `cortexm`: refactor EnableInterrupts and DisableInterrupts to avoid `arm.AsmFull`
95+
- `cortexm`: enable functions in RAM for go & cgo
96+
- `cortexm`: convert SystemStack from `AsmFull` to C inline assembly
97+
- `cortexm`: fix crash due to wrong stack size offset
98+
- `nrf`: samd21, stm32: add flash API
99+
- `nrf`: fix memory issue in ADC read
100+
- `nrf`: new peripheral type for nrf528xx chips
101+
- `nrf`: implement target mode
102+
- `nrf`: improve ADC and add oversampling, longer sample time, and reference voltage
103+
- `rp2040`: change calling order for device enumeration fix to do first
104+
- `rp2040`: rtc delayed interrupt
105+
- `rp2040`: provide better errors for invalid pins on I2C and SPI
106+
- `rp2040`: change uart to allow for a single pin
107+
- `rp2040`: implement Flash interface
108+
- `rp2040`: remove SPI `DataBits` property
109+
- `rp2040`: unify all linker scripts using LDFLAGS
110+
- `rp2040`: remove SPI deadline for improved performance
111+
- `rp2040`: use 4MHz as default frequency for SPI
112+
- `rp2040`: implement target mode
113+
- `rp2040`: use DMA for send-only SPI transfers
114+
- `samd21`: rearrange switch case for get pin cfg
115+
- `samd21`: fix issue with WS2812 driver by making pin accesses faster
116+
- `samd51`: enable CMCC cache for greatly improved performance
117+
- `samd51`: remove extra BK0RDY clear
118+
- `samd51`: implement Flash interface
119+
- `samd51`: use correct SPI frequency
120+
- `samd51`: remove extra BK0RDY clear
121+
- `samd51`: fix ADC multisampling
122+
- `wasi`: allow users to set the `runtime_memhash_tsip` or `runtime_memhash_fnv` build tags
123+
- `wasi`: set `WASMTIME_BACKTRACE_DETAILS` when running in wasmtime.
124+
- `wasm`: implement the `//go:wasmimport` directive
125+
* **boards**
126+
- `gameboy-advance`: switch to use register definitions in device/gba
127+
- `gameboy-advance`: rename display and make pointer receivers
128+
- `gopher-badge`: Added Gopher Badge support
129+
- `lorae5`: add needed definition for UART2
130+
- `lorae5`: correct mapping for I2C bus, add pin mapping to enable power
131+
- `pinetime`: update the target file (rename from pinetime-devkit0)
132+
- `qtpy`: fix bad pin assignment
133+
- `wioterminal`: fix pin definition of BCM13
134+
- `xiao`: Pins D4 & D5 are I2C1. Use pins D2 & D3 for I2C0.
135+
- `xiao`: add DefaultUART
136+
137+
1138
0.27.0
2139
---
3140

0 commit comments

Comments
 (0)