PackageTrack
Sign in Get early access

zbus-lockstep-macros

Macros to keep types in lockstep with DBus XML definitions

0.7.0 8.2M downloads/mo #3465 most downloaded on crates.io luukvanderduim/zbus-lockstep

What this package is like to depend on

Last release 27 days ago

27 Jul 2026

Release timing varies

gaps range from 1 weeks to 9 months

Nearly every release is documented

notes for 16 of 16 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

16 releases · first in 2023

3 releases in the last 12 months

see the full history below

Release timeline

16 releases · Aug 2023 to Jul 2026
2024 2025 2026
Release Pre-release

Releases

latest 16
  1. 0.7.0 27 Jul 2026
    Release notes

    -## [0.7.0] - 2026-07-27

    Most notable and breaking change is the Result<T> type alias returns a concrete LockstepError instead of a rype erased, boxed object.
    For the base retrieval functions this means users can now conveniently match on LockstepError variants to handle an error.

    Also zbus-lockstep does a better job distinguishing between In and Out-ward arguments if users lookup the type of an argument by name.
    Before, if In and Out arguments had the same name users would receive the signature for first argument encountered with that name, which might be the wrong one.

    Lastly, the lookup functions have been sped up, for what it is worth.

    🔒️ Security / Secrets

    • 🔒️ ci: harden github actions security (d60dd9e)

    🐛 Fixes

    • 🐛 fix: Colliding args names distinguishable by direction (8306c5a)

    📝 Documentation

    • 📝 docs: update release instructions (9235c45)
    • 📝 docs: fix intra-doc links (8da2335)
    • 📝 docs: update CHANGELOG.md (c2b3166)

    ♻️ Refactor / Move files

    • ♻️ refactor: Adjust resolve_xml_path to concrete erros (0d12452)
    • ♻️ refactor!: Result alias contains concrete Error type (27d1a54)
    • ♻️ refactor: Always return concrete LockstepError from functions. (2ca38af)
    • ♻️ refactor!: Name arg_name argument equally across fns (ff05116)
    • ♻️ refactor: Avoid allocations / double conversions (75eb77b)

    💄 Art and Style

    • 🎨 Clippy: Alphabetic order in imports (65ac228)

    ✅ Testing and validation

    • ✅ test: Add tests to demonstrate equal name args bug (2d78faf)

    Full Changelog: v0.6.0...v0.7.0

    Open source →
    Release notes

    🐛 Fixes

    • 🐛 fix: Colliding args names distinguishable by direction (8306c5a)

    📝 Documentation

    • 📝 docs: fix intra-doc links (8da2335)

    ♻️ Refactor / Move files

    • ♻️ refactor: Adjust resolve_xml_path to concrete erros (0d12452)
    • ♻️ refactor!: Result alias contains concrete Error type (27d1a54)
    • ♻️ refactor: Always return concrete LockstepError from functions. (2ca38af)
    • ♻️ refactor!: Name arg_name argument equally across fns (ff05116)
    • ♻️ refactor: Avoid allocations / double conversions (75eb77b)

    ✅ Testing and validation

    • ✅ test: Add tests to demonstrate equal name args bug (2d78faf)
    Open source →
  2. 0.6.0 07 Jul 2026
    Release notes

    What's Changed

    • Improve README: show how crate is used as [dev-dependency].

    • All macros, including [validate] try to do less when resolving xml path..

    • Introduces macros feature which re-exports the validate proc-macro,
      allowing users to omit the zbus-lockstep-macros from dependencies.

    • Upgrade to zbus-xml v5.2.0, fxing RUSTSEC-2026-0194

    • Various small improvements.

    Full Changelog: https://github.com/luukvanderduim/zbus-lockstep/commits/v0.6.0

    Open source →
    Release notes

    This release documents how to use the crate as [dev-dependency]. The validate macro will return early when env variable LOCKSTEP_XML_PATH is found. Introduces macros feature which re-exports the validate proc-macro, allowing users to omit the zbus-lockstep-macros dependency.

    ✨ Features

    • Feat (main)✨: Introduce macros feature (40a3aa9)

    ♻️ Refactor / Move files

    • Refactor (main)♻️: No more panics inside resolve_xml_path (09e1e67)
    • Refactor (macros) ➖: Do not depend on zbus-locstep (0cdebf6)

    Build

    • (⬆️) Keep dev-dependencies latest (955a5ce)

    ✅ Testing and validation

    • Tests (macros) ✅: Raise doc ignore blocks to tests (9440a61)
    Open source →
  3. 0.5.2 29 Nov 2025
    Release notes

    chore: Release zbus-lockstep-macros version 0.5.2

    Open source →
    Release notes

    chore: Clippy fixes (#8 Tait Hoyem)

    Open source →
  4. 0.5.1 24 Jun 2025
    Release notes

    chore: Release zbus-lockstep-macros version 0.5.1

    Open source →
    Release notes

    feat: make [validate] attribute more flexible (#6) Tait Hoyem * Add support for any type - no longer restrict to structs.

    build: Support bazel - (#5) by Nils Andre use CARGO_MANIFEST_DIR instead of current dir.

    Open source →
  5. 0.5.0 02 Dec 2024
    Release notes

    Update dependencies

    • Move to zbus 5.0 (by TTWNO)
    Open source →
  6. 0.4.4 18 Mar 2024
    Release notes

    chore: Release zbus-lockstep-macros version 0.4.4

    Open source →
    Release notes

    🧑‍💻 Improve DX

    • 🧑‍💻 Also look in the directory with the crate name. This is useful if build is invoked from the workspace.
    Open source →
  7. 0.4.3 18 Mar 2024
    Release notes

    chore: Release zbus-lockstep-macros version 0.4.3

    Open source →
    Release notes

    🐛 Fixes

    • 🩹 validate now requires a comma separated argument list if multiple arguments are supplied.
    • 🩹 In macros prefer relative paths to absolute paths.

    📝 Documentation

    • 📝 Mention resolve_xml_path can now find ..xml/ or ..XML/ too.

    🧑‍💻 Improve DX

    • 🧑‍💻 Be more lenient by adding parent to defaults for resolve_xml_path
    Open source →
  8. 0.4.2 09 Mar 2024
    Release notes

    🚸 Improve UX

    • 🚸 Remove requirement zbus_xml to be in scope at macro call site.
    • Add Copy, Clone, Hash, to public MshType.
    Open source →
  9. 0.4.1 05 Mar 2024
    Release notes

    📝 Documentation

    • 📝 Update Readme to zbus-xml instead of zbus

    ✅ Testing and validation

    • ✅ [lockstep] Remove unnecessary references.
    • ✅ [macros] validate generated test now decorated with #[cfg(test)]
    Open source →
  10. 0.4.0 19 Feb 2024
    Release notes

    ⚙️ Miscellaneous Tasks

    • ➖ Swap zbus for zbus_xml

    • ➖ Remove signatures_are_eq, assert_signatures_eq! and assert_signatures_ne!.

    • ➖ Remove tests for signatures_are_eq, assert_signatures_eq! and assert_signatures_ne!.

    Open source →
  11. 0.3.1 02 Oct 2023
    Release notes

    ⏪️ Revert / Remove

    • 🔥 Cargo.lock
    • ➖ Do not add changed Cargo.lock
    Open source →
  12. 0.3.0 28 Sep 2023
    Release notes

    ✨ Features

    • property_type_signature macro accepts identifying args.
    property_type_signature!(member: "Frequency", interface: "org.noise.Kazoo")
    
    • signal_body_type_signature macro accepts identifying args.
    signal_body_type_signature!(member: "Telegram", interface: "org.mail.Man")
    
    • method_args_signature macro accepts identifying args.
     method_args_signature!(member: "Frequency", interface: "org.noise.Kazoo")
    
    • ✨ Add argument parameter to method_return_signature macro.
    • ✨ Add argument parameter to method_args_signature macro.
    • ✨ Add argument parameter to signal_body_type_signature macro.

    🐛 Fixes

    • 🐛 Cannot disambiguate between multiple 2-arg macro invocations

    Remove second 2-arg macro invocations.

    📝 Documentation

    • 📝 property_type_signature macro doc examples.
    • 📝 signal_body_type_signature macro doc examples.
    • 📝 method_return_signature macro doc examples.
    • 📝 Update docs to accompany added argument feature New examples to show how the macros may be called.

    ✅ Testing and validation

    • ✅ Add property_type_signature macro identifier unit tests.
    • ✅ Add signal_body_signature macro identifier unit tests.
    • ✅ Add method_args_signature macro identifier unit tests.
    • ✅ Add method_return_signature macro identifier unit tests.
    • ✅ Add six unit tests to cover 'happy path' in macros.
    Open source →
  13. 0.2.3 24 Sep 2023
    Release notes

    🐛 Fixes

    • 🐛 In macros with 'interface' arms, pass String instead of &str
    • 🐛 'get_property_type' expects three args, not four.

    ✅ Testing and validation

    • ✅ Add tests for macros with 'interface' arms.
    Open source →
  14. 0.2.2 23 Sep 2023
    Release notes

    🐛 Fixes

    • 🩹 Fully qualify signatures_are_eq in macros.
    Open source →
  15. 0.2.1 22 Sep 2023
    Release notes

    🐛 Fixes

    • 🩹 Fully qualify find_definition_in_dbus_xml! in macros.

    ✅ Testing and validation

    • ✅ Ignore examples from test

    • ✅ Adds tests for XML path retrieval macros:

    • method_return_signature

    • method_args_signature

    • signal_body_type_signature

    • property_type_signature

    Open source →
  16. 0.2.0 31 Aug 2023
    Release notes

    ✨ Features

    ✨ Add signature retrieval macros for each msg-type

    • resolve_xml_path function
    • find_definition_in_dbus_xml Is used in macros:
    • method_return_signature
    • method_args_signature
    • property_type_signature
    • signal_body_type_signature

    🐛 Fixes

    • 🐛 Fix falsely identified previously found signal.
    • Remove senseless checks.
    • 🐛 [macros] Do not treat subdirectories as files.
    • 🐛 Skip subdirectories in the xml-definitions path.
    • 🐛 [macros] Cannot read contents from Cursor<str>, read from a File.
    • 🐛 Canonicalize env and argument provided paths alike.
    • 🐛 Fix: call the generated test after it is generated.
    • 🩹 Replace hard coded directory paths with consts

    📝 Documentation

    • 📝 [macro] Improve README.md
    • 📝 [macros] Improve validate macro documentation
    • 📝 [macros] Document order of attribute macros
      • Remove mention of irrelevant Cache.xml
    • 📝 Synchronize the three README's

    ♻️ Refactor / Move files

    • ♻️ [macros] Remove function that resolves xml
    • 🚚 Remove module marshall from public API

    ✅ Testing and validation

    • ✅ [macros] CI test for path as argument
    • ✅ [macros] Ads tests for RemoveNode with an xml-path as env-variable or as argument.
    • ✅ Failing test in GH

    ⚙️ Miscellaneous Tasks

    • Remove dependency on self in dev-dependencies
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive