# 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`. - [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`. - [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` 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.