Add LICENSE-MIT and LICENSE-APACHE at workspace root and in each member package so the dual MIT OR Apache-2.0 license ships in the published .crate. Fill in publish metadata (authors, repository, homepage, readme, keywords, categories) across the workspace and both members. Add CHANGELOG.md with a 0.1.0 initial release entry. Fix clippy lints: unused enumerate index, collapsible if, Default impls for TimerTable, SimRadio, and Ctx, use RangeInclusive::contains. Exclude examples/microwave_tui.rs from the published package. The file stays in-tree but has known unawaited async log futures that need a dedicated pass before it ships. Apply cargo fmt across the workspace.
1.8 KiB
1.8 KiB
Changelog
All notable changes to this workspace are documented here. The format follows Keep a Changelog and this project adheres to Semantic Versioning.
0.1.0 — 2026-04-22
Initial release.
Added
statechart!proc macro: declarative Harel-style hierarchical state machines with nested states,entry:/exit:actions, LCA-aware transitions, default-child descent, andterminatesemantics.- Typed event payload bindings:
on(PacketRx { rssi: i16 }) => handler;expands into a typed handler signature, verified at compile time. - Timer triggers:
on(after Duration::from_secs(5)) => Next;andon(every Duration::from_millis(100)) => tick;, tracked in a fixed-capacityTimerTable. during:activities (v0.2 semantics): async functions that run while a state is on the active path and produce events. Multiple concurrent durings on a single state borrow disjoint&mutslices of the context, enforced by Rust's native split-borrow.- Runtime:
machine.run().awaitraces active durings, the external event channel, and timer deadlines — one future, cooperative on embassy, multi-threaded on tokio. - Feature gates:
tokio(std + tokio runtime),embassy(no_std + embassy-time / embassy-sync). The two features are mutually exclusive and enforced viacompile_error!. no_stdby default;stdpulled in only via thetokiofeature.STATE_CHARTconst anddispatch()helper for introspection.- Workspace:
hsmc(library) andhsmc-macros(proc-macro front-end) both at0.1.0.
Docs
- 320-line
README.mdwith quickstart, semantics, and examples. - Runnable examples:
microwaveandduring_radiounder tokio,embassy_fullunder embassy. - Behavior, hierarchy, during, timer, and payload-binding test suites (13 integration tests).