All notable changes to Remoc will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- remote trait calling (RTC): generate ReqReceiver type for handling requests from clients as messages
- codec: added Postcard codec by Firaenix
- chmux: forward channel closing
- make forward a function of Receiver
- chmux: allow specification of custom id (u32) when connecting a new channel
- chmux: recursive port data forwarding
- rch::bin: allow forwarding of binary channel
- chmux: protocol version is now 3; fully backward compatible, but custom id and forwarding requires endpoint of same or higher version
- remote trait calling (RTC): default method in remote traits
- remote trait calling (RTC): allow specification of supertraits in remote traits
- broadcast channel: method on sender to subscribe with specific maximum item size
- remote channels: convenience methods for setting maximum item size on (sender, receiver)-tuple
- watch channel: check() method on sender to check that no item-specific send errors have occurred
- allow querying whether error is due to item being sent on all send error types
- watch channel: fail sender if send error is caused by item being sent; this results in subsequent send calls to fail, making the error visible to the caller
- docs: clarify that mpsc and watch channel error reporting may be delayed
- build with no enabled features
- re-export serde for remoc_macro
- unrecoverable error condition in remote channel receiver when deserialization fails
- methods to adjust the maximum item size in serialized form of a remote channel
- methods to adjust the maximum request and reply size for remote trait calling (RTC)
- update minimum supported Rust version to 1.72
- limit serialized item size of remote channels to 16 MB by default to prevent denial-of-service attacks by a malicious remote endpoint that sends arbitrarily large items to cause an out-of-memory condition on the receiving endpoint
- make RTC value trait server require that target is Send + Sync
- RTC method not accepting any arguments if self was taken by value
- serde_cbor codec
- do not panic when observable list task terminates
- Add argument
clone
tortc::remote
attribute. When present, this forces the generated client to be clonable, even if the trait contains methods taking the receiver by mutable reference.
- clarify Send+Sync requirements in RTC docs
- configuration option
flush_delay
to configure flush delay when no data to send is available
- move remotely observable collections from remoc-obs crate into
robs
module rch::watch::Receiver::send_modify
methodchmux
errors can now be converted intostd::io::Error
- minimum supported Rust version (MSRV) is 1.59
- remove
rch::buffer
types and use const generics directly to specify buffer sizes of received channel halves - update
uuid
to 1.0
- fix infinite recursion in
std::fmt::Debug
implementation on some types
- reference to remoc-obs crate for remotely observable collections
- optimize default configuration for higher throughput
- configuration defaults optimized for low memory usage or high throughput
- enhanced configuration documentation
- fix build when no default codec was selected
- ConnectExt trait that allows for replacement of the base channel by another object, such as an RTC client or remote broadcast channel
- RTC example in examples/rtc
- optimized CI by baptiste0928
- updated rmp-serde to 1.0
- export rch::watch::ChangedError
- conversions between remote channel receive errors
- error message when trying to use lifetimes or function generics in a remote trait
- Cbor codec using ciborium, contributed by baptiste0928
- legacy Cbor codec using serde_cbor
- rch::mpsc::Receiver implements the Stream trait
- ReceiverStream for rch::broadcast::Receiver and rch::watch::Receiver
- rch::watch::Sender::send_replace
- rch::SendErrorExt and rch::SendResultExt for quick querying if a send error was due to disconnection
- rch::mpsc::Receiver::try_recv, error and take_error
- rch::mpsc::Sender::closed_reason
full-codecs
crate feature to activate all codecs
- An mpsc channel receiver will hold back a receive error due to connection failure if other senders are still active. The error will be returned after all other senders have been disconnected.
- Fixes premature drop of RwLock owners.
- add rtc::Client to prelude
- rtc::Client trait implemented by all generated clients. This allows to receive notifications when the server has been dropped or disconnected.
- configuration options for transport queue lengths
- fix mpsc channel close notifications not being delivered sometimes
- fix build when no default codec is set
- fix premature chmux termination with outstanding remote port requests
- fix build with Rust 1.51
- fix send error being missed during threaded serialization
- fix panic during threaded deserialization
- propagate panics from serializers and deserializers spawned into threads
is_final()
on channel error types
- terminate providers and RTC servers when a final receive error occurs
chmux::Cfg::trace_id
because using tracing spans makes it redundant
- blocking send and receive functions for rch::mpsc
- switch to
tracing
crate for logging
- remove
default-codec-json
fromfull
feature
- initial release