Releases: KillingSpark/rustbus
Fix compilation after borrow checker bug fix
the borrow checker seems to have had a bug which broke compilation of this crate. It is now fixed.
Fix bug in signature parsing
#82 showed that there was an issue where signatures with arrays of dicts where parsed incorrectly. In essence "a{uu}" and "a...a{uu}" were parsed the same.
Fix session address parsing
@l1na-forever sent a PR that fixes session address parsing for newer dbus versions
Detect closed connections
A new error type has been introduced and the connections check if it has been closed on the other side when trying to read
Some more derives and better errors
This release brings some more derives for enums and better errors
Performance improvements
Benchmarking by cmaves revealed that the signature checking is taking a big chunk of runtime while marshalling messages. This release comprises some commits that improve that situation.
Bug fixes and refactoring
Bugfixes:
- This crate did not accept messages that had an empty signature header field. Those are legal but carry the same meaning as if the header field was missing entirely.
Important changes:
- push_param{2-5} now fail "atomically". If any of the push calls fails, the message body is reset to the state before the pushes started
- make SignatureWrapper more generic over any AsRef and add some TryFrom impls for SignatureWrapper and ObjectPath
- bring ObjectPath UnixFd and SignatureWrapper into their own module under wire and rexport them
- refactoring: separate traits from their impls and the impls into two categories: base and container (this shouldn't have any effect on users, it's just a nice to have)
Other stuff
- The documentation has been cleaned up, updated, and fixed (in hopefully all places)
- The rename to README.md should hopefully result in a rendering of the readme on crates.io
Bump version of the derive crate and the main crate after changes to the lifetimes
This is just necessary because I missed bumping the version of the derive crate last time...
Various performance improvements and a better way to collect signature string
cmaves contributed some more performance optimizations and a better way to collect static signature strings that can potentially avoid allocations for many cases where variants are used to wrap simple types.
Deal with short writes
This release features a revised approach to the low level mechanics of sending a message. Previous assumed that one write to the socket would suffice which is not guaranteed by POSIX. Therefore the progress is tracked in a separate type which allows repeated writes until all data is written.
This is nontrivial because the header and body are stored in two buffers and the filedescriptors may only be sent once per message.