0.2.0 — 2026-08-22
Changelog
Features
- (dynamic) Add derive macro for message schema (#139) (
445b6c0) - (go) Implement Go bindings Phase 2 — services, actions, interop tests (#147) (
866bbbd) - (graph) Add EndpointKind::ActionServer and typed wait_for_action_server (#194) (
df02222) - (graph) Add graph-based availability wait helpers (#137) (
a5932b4) - (hiroz) Embed the bundled message definitions (#314) (
07aba92) - (hiroz) Let the examples advertise their message types (#320) (
179198e) - (hiroz) Debug-time barrier against callbacks under a lock (#255) (
27128d0) - (hiroz) Graph-settle wait + service-schema discovery (hu stack 3/9) (#234) (
4c428ca) - (hiroz-union) Wasm plugin host, rename hiroz-console to hiroz-union (hu stack 5/9) (#236) (
8cc8681) - (hu) Ship the plugins a release needs to be usable (#312) (
803705c) - (hu-meter) Restore pub and delay subcommands (#263) (
48f77ec) - (hu-meter) Introspection plugin + 48-test suite (hu stack 7/9) (#238) (
951781b) - (hu-monitor) Live graph/log monitoring plugin + 10-test suite (hu stack 8/9) (#239) (
ffcc459) - (hu-plugin-template) Standalone WASM plugin authoring workspace (hu stack 6/9) (#245) (
a3ac77e) - (msgs) Rcl_interfaces logger-level messages (hu stack 2/9) (#233) (
1a3ee63) - (msgs) Vendor 11 standard ROS 2 packages for Jazzy coverage (#215) (
5fd3208) - (node) Expose keyexpr_format() and next_entity_id() for bridge use (#205) (
2a44231) - (node) Add context-level default namespace inheritance for nodes (#138) (
ad73cb3) - (protocol) Expose DynKeyExprFormatter for runtime format extension (#207) (
b664957) - (pubsub-use-advanced) Use AdvancedPublisher/AdvancedSubscriber to interoperate with rmw_zenoh_cpp transient_local topics (#183) (
9bb6305) - (ros-z) Add method to ZContextBuilder to set listen endpoints (#158) (
9e68445) - Add ROS 2 Lyrical Luth (LTS) distro support (#190) (
3dbe87c) - Add release workflow and Python/binary/Go distribution (#156) (
207ccf5)
Bug Fixes
- (action) Insert goal into manager before sending accept reply (#202) (
9060cde) - (ci) Rustfmt hook silently ran stable, ignoring rustfmt.toml (#286) (
86f4778) - (ci) Lint hiroz-tests under interop features (#230) (
e7317b1) - (ci) Unblock external PRs — Codecov token + pyo3 stale cache (
59b43a5) - (ci) Exclude file:// URLs from lychee link check (#181) (
e13f3a3) - (ci) Skip maturin build on Python venv cache hit (#173) (
a3fd6c4) - (codegen) Stable ordering for generated python stubs (#268) (
fcee905) - (codegen) Use BTreeMap for deterministic Python stub ordering (#218) (
bbc1252) - (codegen) Implement correct CDR serialisation for messages with variable-length fields (#177) (
650459b) - (codegen) Auto-load bundled assets in generate_user_messages for correct RIHS01 hashes (#169) (
cf6e133) - (docs) Resolve broken intra-doc link to create_publisher (#196) (
c2ab58a) - (docs) Fix two broken links reported by lychee CI (#180) (
dc695ed) - (error) Structured Timeout error variant for core, FFI, and Python bindings (#221) (
6d80aa8) - (event,graph) Run event callbacks outside the locks they live under (#260) (
ae4f0f8) - (flake) Guard pre-commit install against wrong git root (#210) (
3884f5f) - (graph) Make graph format explicit (#146) (
9d5be5c) - (graph) Normalize DDS type names from liveliness tokens (#174) (
c6bebc9) - (hiroz) Give each FFI service call its own reply channel (#242) (
4adbefb) - (hu) Resolve the message schema before subscribe returns (#311) (
ac112c0) - (hu) Stop charging host I/O waits to the guest's epoch budget (#319) (
9b10746) - (hu) Use axum 0.8 wildcard route syntax in hu web (#318) (
5337c38) - (hu) Name the hu target in the default log filter (#317) (
a4bd44c) - (ignore) Only ignore
coredirectories top level (#160) (6ff1745) - (lifecycle) Run transition callbacks outside the state-machine lock (#253) (
b0efcbe) - (parameter) Stop deadlocking on re-entry from an on_set callback (#257) (
af00f1e) - (shm) Enable transport SHM when SHM provider is configured (#209) (
89e1eab) - Structured timeout detection in hiroz-py subscriber recv (#224) (#225) (
4f4b625)
Refactor
- (dynamic) Align dynamic subscriptions with builder APIs (#163) (
4a594b8) - (protocol) Separate endpoint kind from entity kind (#161) (
ebfd1c4) - (schema) Make topic schema discovery snapshot-based (#164) (
ff28ced) - (service) Make clients call-based (#162) (
f3177df) - Rename ros-z → hiroz (High-performance Interoperable Robotics on Zenoh) (#186) (
c78e8e2)
Testing
- (codegen-go) Add runtime CDR roundtrip integration test (#185) (
2c5cbbb) - (hiroz-go) Make reply-correlation test deterministic (gate, not stall) (#258) (
906acbb) - (hiroz-go) Deterministic reply-correlation flaky test (#244) (
4640fa6) - (hiroz-tests) Signal-based producer guard + graph-poll waits (hu stack 4/9) (#235) (
8c7920e) - (hu) Pin the WIT world to its contract (#315) (
29d2688) - (hu) Verify the release against its own documentation (#313) (
53bdcf5) - (interop) Stop passing when the C++ node fails (#306) (
7138961) - (interop) Report why a spawned ros2 process failed (#304) (
6b9a966) - (ros) Fail the interop job when it runs no tests (#271) (
71d1cf5)
Documentation
- (error) Qualify three intra-doc links so cargo doc passes on main (#248) (
de8adf5) - (hu) Correct four false hu behaviour claims and one dead link (#281) (
d2a58f9) - Link the Go interop tests page from the nav (#228) (
caab824) - Remove floating SVG animations (#219) (
3f289c9) - Replace architecture iframe with SVG for README and mobile (#189) (
ce30982) - Migrate from mdBook to Material for MkDocs (#159) (
937fe1d)
New Contributors
- @mattmacleod made their first contribution in #183
- @lukerob01 made their first contribution in #158