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 2026Releases
latest 16-
0.7.027 Jul 2026Release notes
Open source →-## [0.7.0] - 2026-07-27
Most notable and breaking change is the
Result<T>type alias returns a concreteLockstepErrorinstead of a rype erased, boxed object.
For the base retrieval functions this means users can now conveniently match onLockstepErrorvariants to handle an error.Also
zbus-lockstepdoes a better job distinguishing betweenInandOut-ward arguments if users lookup the type of an argument by name.
Before, ifInandOutarguments had the samenameusers 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_pathto concrete erros (0d12452) - ♻️ refactor!:
Resultalias contains concreteErrortype (27d1a54) - ♻️ refactor: Always return concrete
LockstepErrorfrom functions. (2ca38af) - ♻️ refactor!: Name
arg_nameargument equally acrossfns (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
Release notes
Open source →🐛 Fixes
- 🐛 fix: Colliding args names distinguishable by direction (8306c5a)
📝 Documentation
- 📝 docs: fix intra-doc links (8da2335)
♻️ Refactor / Move files
- ♻️ refactor: Adjust
resolve_xml_pathto concrete erros (0d12452) - ♻️ refactor!:
Resultalias contains concreteErrortype (27d1a54) - ♻️ refactor: Always return concrete
LockstepErrorfrom functions. (2ca38af) - ♻️ refactor!: Name
arg_nameargument equally acrossfns (ff05116) - ♻️ refactor: Avoid allocations / double conversions (75eb77b)
✅ Testing and validation
- ✅ test: Add tests to demonstrate equal name args bug (2d78faf)
-
0.6.007 Jul 2026Release notes
Open source →What's Changed
-
Improve README: show how crate is used as
[dev-dependency]. -
All macros, including
[validate]try to do less when resolvingxmlpath.. -
Introduces
macrosfeature which re-exports thevalidateproc-macro,
allowing users to omit thezbus-lockstep-macrosfrom dependencies. -
Upgrade to
zbus-xmlv5.2.0, fxing RUSTSEC-2026-0194 -
Various small improvements.
Full Changelog: https://github.com/luukvanderduim/zbus-lockstep/commits/v0.6.0
Release notes
Open source →This release documents how to use the crate as
[dev-dependency]. Thevalidatemacro will return early when env variableLOCKSTEP_XML_PATHis found. Introducesmacrosfeature which re-exports thevalidateproc-macro, allowing users to omit thezbus-lockstep-macrosdependency.✨ Features
- Feat (main)✨: Introduce
macrosfeature (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-dependencieslatest (955a5ce)
✅ Testing and validation
- Tests (macros) ✅: Raise doc
ignoreblocks to tests (9440a61)
-
-
0.5.229 Nov 2025 -
0.5.124 Jun 2025Release notes
Open source →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.
-
0.5.002 Dec 2024 -
0.4.418 Mar 2024Release notes
Open source →🧑💻 Improve DX
- 🧑💻 Also look in the directory with the crate name. This is useful if build is invoked from the workspace.
-
0.4.318 Mar 2024Release notes
Open source →🐛 Fixes
- 🩹
validatenow requires a comma separated argument list if multiple arguments are supplied. - 🩹 In macros prefer relative paths to absolute paths.
📝 Documentation
- 📝 Mention
resolve_xml_pathcan now find..xml/or..XML/too.
🧑💻 Improve DX
- 🧑💻 Be more lenient by adding parent to defaults for
resolve_xml_path
- 🩹
-
0.4.209 Mar 2024Release notes
Open source →🚸 Improve UX
- 🚸 Remove requirement
zbus_xmlto be in scope at macro call site. - Add
Copy,Clone,Hash, to publicMshType.
- 🚸 Remove requirement
-
0.4.105 Mar 2024Release notes
Open source →📝 Documentation
- 📝 Update Readme to
zbus-xmlinstead ofzbus
✅ Testing and validation
- ✅ [lockstep] Remove unnecessary references.
- ✅ [macros] validate generated test now decorated with
#[cfg(test)]
- 📝 Update Readme to
-
0.4.019 Feb 2024Release notes
Open source →⚙️ Miscellaneous Tasks
-
➖ Swap zbus for zbus_xml
-
➖ Remove
signatures_are_eq,assert_signatures_eq!andassert_signatures_ne!. -
➖ Remove tests for
signatures_are_eq,assert_signatures_eq!andassert_signatures_ne!.
-
-
0.3.102 Oct 2023 -
0.3.028 Sep 2023Release notes
Open source →✨ Features
- ✨
property_type_signaturemacro accepts identifying args.
property_type_signature!(member: "Frequency", interface: "org.noise.Kazoo")- ✨
signal_body_type_signaturemacro accepts identifying args.
signal_body_type_signature!(member: "Telegram", interface: "org.mail.Man")- ✨
method_args_signaturemacro accepts identifying args.
method_args_signature!(member: "Frequency", interface: "org.noise.Kazoo")- ✨ Add
argumentparameter tomethod_return_signaturemacro. - ✨ Add
argumentparameter tomethod_args_signaturemacro. - ✨ Add
argumentparameter tosignal_body_type_signaturemacro.
🐛 Fixes
- 🐛 Cannot disambiguate between multiple 2-arg macro invocations
Remove second 2-arg macro invocations.
📝 Documentation
- 📝
property_type_signaturemacro doc examples. - 📝
signal_body_type_signaturemacro doc examples. - 📝
method_return_signaturemacro doc examples. - 📝 Update docs to accompany added
argumentfeature New examples to show how the macros may be called.
✅ Testing and validation
- ✅ Add
property_type_signaturemacro identifier unit tests. - ✅ Add
signal_body_signaturemacro identifier unit tests. - ✅ Add
method_args_signaturemacro identifier unit tests. - ✅ Add
method_return_signaturemacro identifier unit tests. - ✅ Add six unit tests to cover 'happy path' in macros.
- ✨
-
0.2.324 Sep 2023Release notes
Open source →🐛 Fixes
- 🐛 In macros with 'interface' arms, pass
Stringinstead of&str - 🐛 'get_property_type' expects three args, not four.
✅ Testing and validation
- ✅ Add tests for macros with 'interface' arms.
- 🐛 In macros with 'interface' arms, pass
-
0.2.223 Sep 2023 -
0.2.122 Sep 2023Release notes
Open source →🐛 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
- 🩹 Fully qualify
-
0.2.031 Aug 2023Release notes
Open source →✨ Features
✨ Add signature retrieval macros for each msg-type
resolve_xml_pathfunctionfind_definition_in_dbus_xmlIs used in macros:method_return_signaturemethod_args_signatureproperty_type_signaturesignal_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 aFile. - 🐛 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
validatemacro documentation - 📝 [macros] Document order of attribute macros
-
- Remove mention of irrelevant
Cache.xml
- Remove mention of irrelevant
- 📝 Synchronize the three README's
♻️ Refactor / Move files
- ♻️ [macros] Remove function that resolves xml
- 🚚 Remove module
marshallfrom public API
✅ Testing and validation
- ✅ [macros] CI test for path as argument
- ✅ [macros] Ads tests for
RemoveNodewith an xml-path as env-variable or as argument. - ✅ Failing test in GH
⚙️ Miscellaneous Tasks
- Remove dependency on self in dev-dependencies