All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
into_raw
and from_raw
methods on both Sender
and Receiver
. Allows passing oneshot
channels over FFI without an extra layer of heap allocation.try_recv
will now not panic if used on a Receiver
that is being unparked from an async wait. The other recv
methods will still panic (as they should), but with a better error message.Sender
, Receiver
and SendError
. This reduces the call stack size of Sender::send and it makes Option<Sender>
and Option<Receiver>
pointer sized (#18).SeqCst
to the most appropriate lower ordering (#17 + #20).Receiver
(#17 + #20).Waker
in Future::poll
, not the first one. Stops breaking the contract on how futures should work.Receiver
of an empty but open channel was polled and then dropped.Initial implementation. Supports basically all the (for now) intended functionality. Sender is as lock-free as I think it can get and the receiver can both do thread blocking and be awaited asynchronously. The receiver also has a wait-free try_recv
method.
The crate has two features. They are activated by default, but the user can opt out of async support as well as usage of libstd (making the crate no_std
but still requiring liballoc)
Name reserved on crate.io by someone other than the author of this crate.