Changelog
View SourceAll notable changes to this project are documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.3.0 - 2026-09-06
Rebus 0.3 expands the client API for method calls, signal subscriptions, descriptor passing, and authenticated bus or peer connections. It includes several breaking corrections to public results and wire handling.
Added
- Added
Rebus.call/3,Rebus.send/2,Rebus.send/3, andRebus.close/1for client operations and explicit connection lifetime management. Connections are supervised, outlive their creator by default, and can instead follow anowner: pid. - Added structured signal subscriptions with
Rebus.MatchRule,Rebus.add_match/3, andRebus.remove_match/3, including recovery when a timed-out bus operation leaves the rule's state uncertain. - Added Unix file descriptor passing on Linux and macOS local sockets. Senders
retain ownership of outbound descriptors; callers own received reply
descriptors and close them with
Rebus.UnixFD.close/1. - Added
DBUS_COOKIE_SHA1authentication, opt-inANONYMOUSauthentication, ordered D-Bus address lists, Unix and TCP addresses, and server-GUID checks.
Changed
- Bare version tags now publish the corresponding package and documentation to Hex after the test suite passes.
- Breaking: calls now return the complete reply as
{:ok, message}or a complete D-Bus error reply as{:error, message}; operation errors and signal-handler registration results also use the new documented shapes. - Breaking: message construction and validation now use structured atom or tuple reasons and reject invalid bodies, signatures, headers, and D-Bus names that earlier versions accepted.
- Breaking: decoding rejects invalid Boolean values and non-zero alignment
padding, and special doubles are represented as
:infinity,:negative_infinity, and:nan. - Breaking:
Rebus.connect/2is now the supported connection constructor, waits for bus registration before returning, and reports authentication and registered-name failures with the new documented results;connect!/2now raisesArgumentErroron failure. - Breaking: Rebus now requires Elixir 1.18 or later.
- Connections now answer
org.freedesktop.DBus.Peercalls and reject other inbound method calls withUnknownMethod.
Removed
- Breaking: removed Windows support. Rebus supports Linux and macOS.
Fixed
- Corrected array lengths, fragmented-message handling, connection failure paths, body-encoding failures, timed-out reply cleanup, well-known names containing hyphens, and standard system/session bus address fallbacks.
0.2.0 - 2025-11-21
Added
Rebus.connect/2accepts the:systemand:sessionbus aliases, resolving the system bus from the:rebus, :system_bus_addressapplication setting and the session bus fromDBUS_SESSION_BUS_ADDRESS.Rebus.connect!/2, which raises instead of returning{:error, reason}.Rebus.Message.signature/1for reading a message's body signature.
Changed
Rebus.Messageno longer carries a separate:signaturestruct field; the signature is stored inheader_fieldsand set automatically when a body is present.
0.1.1 - 2025-11-04
Fixed
- Corrected errors in the public API documentation.
0.1.0 - 2025-11-04
Added
- Initial release: D-Bus message encoder, decoder and wire-format types, message construction and validation, and a supervised bus connection with signal handlers.