You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: CHANGELOG.md
+45Lines changed: 45 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -6,6 +6,51 @@ The revived semantic-versioning baseline starts at `v5.0.0`.
6
6
Historical releases that predate this file remain available in Git tags such as
7
7
`v1.0.0`, `v3.0.0`, `v4.0.0-beta`, and `h10`.
8
8
9
+
## v6.0.0 - 2026-05-06
10
+
11
+
### Breaking Changes
12
+
13
+
- Redesign fault handling, protections, and Board bootstrap around explicit fault policies
14
+
This PR changes the public integration contract for applications built on ST-LIB.
15
+
16
+
Breaking changes:
17
+
18
+
-`Board` now takes the fault policy type as its first template parameter.
19
+
- The global `FAULT` runtime is owned exclusively by `FaultController`.
20
+
- User state machines are now nested under the global `OPERATIONAL` state through `FaultPolicy` or `FaultPolicyNoMachine`.
21
+
- Protections are now compile-time `Board` request objects evaluated through `Board::ProtectionEngine`; the previous `ProtectionManager` and boundary split is no longer the active model.
22
+
- Runtime reporting is unified under `PANIC(...)`, `FAULT(...)`, `WARNING(...)`, and `INFO(...)`.
23
+
- The real bootstrap path is `Board::init()`. Legacy `STLIB::start()`, `STLIB::update()`, `STLIB_LOW::start()`, and `STLIB_HIGH::start()` must not be used as the integration path.
24
+
25
+
Migration notes:
26
+
27
+
- Declare the board as `Board<YourFaultPolicy, ...>`.
28
+
- Use `FaultPolicy<app_machine, on_fault_enter>` when you want an operational state machine nested under the global runtime.
29
+
- Use `FaultPolicyNoMachine<on_fault_enter>` when you only need a fault-entry callback.
30
+
- Use `DefaultFaultPolicy` when you want neither an operational machine nor a fault-entry callback.
31
+
- Declare protections with `Protections::protection<"name", source>(...)` and pass the resulting request objects to `Board`.
32
+
- In the main loop, drive the runtime through `FaultController::check_transitions()`, `Board::evaluate_protections()`, and `Diagnostics::Hub::flush()`.
33
+
34
+
### Features
35
+
36
+
- add an ethernet connected check
37
+
- move initialization outside constructor in PWM, DualPWM, Encoder and InputCapture
38
+
- Small refactor of some spi and timerwrapper functionality
39
+
timerwrapper:
40
+
- Add `set_callback(void (*callback)(void*), void* callback_data)` to set the callback and its data instead of needing to call `configurexxbit()` and set the period.
41
+
-`set_limit_value(uint32_t arr)` to set the arr, this will likely be changed to use a `uint32_t` type only when using a 32 bit timer, for now it is just an alias to `instance->tim->ARR = arr;`. Was not added in this pr but also wasn't mentioned before.
42
+
43
+
spi:
44
+
- Add `transceive` with ptr + data explicitly instead of using a span since it's sometimes a pain in the ass to use.
45
+
46
+
### Fixes
47
+
48
+
- Fix incorrect usage of non-volatile buffers in peripherals. This wrong usage was causing undefined behaviour, since the compiler could optimize out reads and writes that should have been going directly to memory.
49
+
There's a minor API change: now the MPU macros for memory regions include the volatile keyword for the non-cached variants.
50
+
- MPUDomain dynamic regions were configured using the linker symbol values instead of their addresses (that is the correct way of using linker symbols). That made non-cached regions cached, and caused harware undefined behaviour.
0 commit comments