# What changed in zbus

> 18 changes in zbus 6 from its official release notes, upgrade guides and advisories: 4 breaking, 5 new APIs and options. Each one cited. Sources checked 2026-11-12. HTML: https://unstale.sh/cargo/zbus/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## zbus 6

### Breaking changes

- Headers with an unended string or a repeated field are rejected. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Received messages whose path field is not an object path are rejected. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Connections check each received message's body, and received messages are checked as a whole rather than only by fields. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- The interfaces of fdo::ManagedObjects use HashMap again, matching the InterfacesAdded signal and PropertiesProxy::get_all. (6.1.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.1.0)

### New APIs and options

- Adds a method for a bus to check message bodies. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Adds Connection::send_all for sending messages. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Adds a method for a bus to set message senders. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Adds WriteHalf::send_messages for sending messages. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Match rules now support the eavesdrop key. (6.1.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.1.0)

### Performance

- Sockets driven by zbus read ahead of each message. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Deserializing an OwnedMatchRule no longer copies its string. (6.1.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.1.0)

### Fixes and other changes

- Checks message bodies without an if let guard. (6.2.1) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.1)
- Dictionary entries are counted when checking signatures. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- References to unsized types are accepted as interface arguments again. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Nesting is limited for each signature. (6.2.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.2.0)
- Arguments that fail deserialization now receive an InvalidArgs reply. (6.1.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.1.0)
- Apostrophes in match rule strings are now escaped. (6.1.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.1.0)
- Match rule strings are now parsed according to the specification. (6.1.0) — [release notes](https://github.com/z-galaxy/zbus/releases/tag/zbus-6.1.0)
