fizyr-rpc 0.8.0

Native Rust implementation of the Fizyr RPC protocol
Documentation
# Version 0.8.0 - 2023-12-11
- [change][major] Mark `StreamConfig` and `UnixConfig` as non-exhaustive structs.
- [change][major] Make the `MessageHeader::encode/decode()` functions take an `endian` parameter.
- [add][major] Add an `endian` field to `StreamConfig` and `UnixConfig`.

# Version 0.7.1 - 2023-11-26
- [change][patch] Remove dependency on `byteorder` crate.

# Version 0.7.0 - 2023-09-20
- [change][major] Add `hidden` field to items in interface introspection types.
- [add][minor] Add `#[hidden]` attribute for interfaces, services, streams and updates in `interface! { ... }` macro.
- [add][minor] Add documentation about the protocol itself.
- [add][minor] Add `same_peer` function to `PeerWriteHandle` to check if they belong to the same peer.
- [fix][patch] Fix clippy warnings for unnecessary casting.

# Version 0.6.0 - 2023-03-03
- [change][major] Update `filedesc` to `v0.6.0`.
- [change][minor] Update `tokio-seqpacket` to `v0.7.0`.
- [change][minor] Replace `WriteHalfType` and `ReadHalfType` with generic associated types.
- [change][minor] Bump minimum Rust version to 1.65.

# Version 0.5.1 - 2022-05-24
- [fix][patch] Fix version of macro crate dependency.

# Version 0.5.0 - 2022-05-23
- [rename][major] Rename `Server` to `Listener` to avoid confusion with generated interfaces.
- [change][major] Switch to a single opaque error type.
- [rename][major] Rename `Incoming` to `ReceivedMessage`.
- [remove][major] Remove unused `Outgoing` type.
- [rename][major] Rename `PeerHandle::next_message()` to `recv_message()`.
- [change][major] Move message body out of `ReceivedRequest`.
- [change][major] Change `SentRequest/ReceivedRequest::recv_update()` to return an `Option<Message>`.
- [rename][major] Rename `SentRequest` and `ReceivedRequest` to `SentRequestHandle` and `ReceivedRequestHandle`.
- [add][major] Have `Transport` implementations decide which I/O errors are fatal.
- [add][major] Provide transport info when spawning peers without giving access to the transport.
- [add][minor] Add utility functions for working with `RecvMessageError`.
- [add][minor] Add `Transport::info()` function to get information about a transport.
- [add][minor] Allow direct access to the underlying `Transport` of a `Peer`.
- [add][minor] Allow direct access to the underlying stream or socket of a `Transport`.
- [fix][minor] Fix unintended infinite recursion in generic trait implementations.
- [add][minor] Add `interface!()` macro to generate client/server structs with typed interfaces.
- [change][minor] Try unlinking Unix sockets before binding them.
- [add][minor] Add `SentRequestWriteHandle` and `ReceivedRequestWriteHandle` to support parallel reading and writing.
- [add][minor] Add `Body::as_error()` and `Body::into_error()` as required functions on the `Body` trait.
- [fix][patch] Fixed accepting connections with Unix stream sockets.
- [impl][patch] Use `poll_write_vectored` in the TCP transport to write the header and body with a single syscall.
- [add][patch] Add Wireshark dissector for TCP and UDP transports for easier debugging.

# Version 0.5.0-alpha10 - 2022-05-23
- [add][major] Have `Transport` implementations decide which I/O errors are fatal.
- [add][major] Provide transport info when spawning peers without giving access to the transport.
- [add][minor] Add utility functions for working with `RecvMessageError`.
- [add][minor] Add `Transport::info()` function to get information about a transport.
- [add][minor] Allow direct access to the underlying `Transport` of a `Peer`.
- [add][minor] Allow direct access to the underlying stream or socket of a `Transport`.

# Version 0.5.0-alpha9 - 2022-04-26
- [fix][minor] Fix unintended infinite recursion in generic trait implementations.
- [fix][patch] Fix `needless_question_mark` clippy warnings in generated code.
- [change][patch] Switch to `clap` v3 in the examples.

# Version 0.5.0-alpha8 - 2022-01-25
- [rename][major] Rename `crate::util::format` module to `crate::format`.
- [add][minor] Add runtime interface introspection.
- [fix][minor] Remove the `Sized` restriction for the `EncodeBody` trait.
- [impl][patch] Use `poll_write_vectored` in the TCP transport to write the header and body with a single syscall.
- [add][patch] Add Wireshark dissector for TCP and UDP transports for easier debugging.

# Version 0.5.0-alpha7 - 2022-01-10
- [add][minor] Add a specific `Format` trait for generated interaces to avoid writing overly long trait bounds.

# Version 0.5.0-alpha6 - 2021-11-30
- [fix][minor] Make sure that decode errors are `Send` in all cases.

# Version 0.5.0-alpha5 - 2021-11-30
- [add][minor] `interface!(...)` now generates an `Interface` struct for introspection.
- [change][major] `interface!(...)` no longer generates a module for the created items.
- [change][major] Allow access to unknown and invalid messages in generated interfaces.
- [change][minor] Try unlinking Unix sockets before binding them.
- [impl][patch] The code generated by `interface!(...)` now suppresses some clippy warnings.

# Version 0.5.0-alpha4 - 2021-09-27
- [add][minor] Add missing `write_handle()` functions for `ReceivedRequest` and `SentRequest` in generated interfaces.

# Version 0.5.0-alpha3 - 2021-09-23
- [fix][minor] Make write handles cloneable regardless of their generic parameters.

# Version 0.5.0-alpha2 - 2021-09-22
- [add][minor] Implement `Clone` for the write handles of generated interfaces.

# Version 0.5.0-alpha1 - 2021-08-31
- [change][major] Renamed `PeerHandle::next_message()` to `recv_message()`.
- [change][major] Moved message body out of `ReceivedRequest`.
- [change][major] Changed `SentRequest/ReceivedRequest::recv_update()` to return an `Option<Message>`.
- [change][major] Renamed `Incoming` to `ReceivedMessage`.
- [change][major] Renamed `SentRequest` and `ReceivedRequest` to `SentRequestHandle` and `ReceivedRequestHandle`.
- [change][major] Switched to a single opaque error type.
- [change][major] Renamed `Server` to `Listener` to avoid confusion with generated interfaces.
- [remove][major] Removed unused `Outgoing` type.
- [remove][major] Removed all old error types and the `error` module.
- [add][minor] Add `SentRequestWriteHandle` and `ReceivedRequestWriteHandle` to support parallel reading and writing.
- [add][minor] Add `Body::as_error()` and `Body::into_error()` as required functions on the `Body` trait.
- [fix][patch] Fixed accepting connections with Unix stream sockets.

# Version v0.4.2 - 2021-05-20
- [fix][patch] Fixed bug where a sent request was untracked once a response to a received request was sent.

# Version v0.4.1 - 2021-04-25
- [fix][patch] Fixed reading messages with empty body with the `StreamTransport`.
- [fix][patch] Fixed documentation on how to receive messages on a `SentRequest`.

# Version v0.4.0 - 2021-02-09
- [change][major] Renamed `ReceivedRequest::next_message()` to `recv_update()`.
- [change][major] Split `SentRequest::next_message()` in `recv_update()` and `recv_response()`.
- [change][major] Renamed `NextMessageError` to `RecvMessageError`.
- [remove][major] Removed `error::ProcessIncomingMessageError` from public the API.

# Version v0.3.1 - 2021-01-27
- [change][minor] Updated to tokio-seqpacket 0.5.

# Version v0.3.0 - 2020-12-25
- [change][major] Updated to tokio 1.0 and tokio-seqpacket 0.4.
- [change][major] Removed meaningless addresses from Accept implementation for Unix sockets.

# Version v0.2.1 - 2020-09-03
- [fix][patch] Fixed link in README.

# Version v0.2.0 - 2020-09-03
- [change][major] Changed body date to use `Vec<u8>` instead of `Box<[u8]>`.
- [change][major] Moved transport traits and implementations to `transport` module.
- [change][major] Moved some traits to `util` module.
- [change][major] Renamed `into_transport_default()` to `into_default_transport()`.
- [remove][major] Made `RequestTracker` a private implementation detail.
- [add][minor] Added `Peer::connect` function.
- [add][minor] Added `Server::bind` function.

# Version v0.1.4 - 2020-10-04
- [fix][patch] Regenerate `README.md` from library documentation.

# Version v0.1.3 - 2020-10-13
- [fix][patch] Fixed link of `docs.rs` badge in README.

# Version v0.1.2 - 2020-10-13
- [fix][patch] Fixed links to documentation in README.

# Version v0.1.1 - 2020-10-13
- [fix][patch] Build `docs.rs` documentation with all transports enabled.

# Version v0.1.0 - 2020-10-13
- [add][major] Initial release.