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.