Releases: austinjones/postage-rs
Releases · austinjones/postage-rs
v0.5.0
v0.4.1
v0.4.0
Enhancements
- Add a
dispatch
channel. A multi-producer, multi-consumer queue #33 - Add
.borrow()
and.borrow_mut()
to the watch sender #32 - Add
.blocking_send()
and.blocking_recv()
to the Sink/Stream traits #31 - Remove the beta tag, as cross-platform tests have been implemented #29
Misc
- Refactor logic when channel internals return Pending, improving performance in this case #34
v0.3.3
- Readme and documentation improvements.
v0.3.2
Fixes
- Fix a concurrency bug in the barrier and mpsc channels that could occur if a channel is closed while another thread is going to return PollRecv::Pending. #18
- Significantly improve the performance of the broadcast channel by removing/minimizing locks. #18
- Strengthen static assertions on Send and Sync bounds for channel endpoints.
Tests
- Add benchmarks covering all channels #17
v0.3.1
v0.3.0
Breaking Changes
- Create a
Context
type (similar to std::task::Context) that contains anOption<&'a Waker>
. This allowsSink::try_send
andStream::try_recv
to be zero cost if the try returns pending. #9 - Move
postage::Stream
topostage::stream::Stream
. #11 - Move
postage::Sink
topostage::Sink::Sink
. #11
Changes
- Add the
postage::prelude
module with the Sink and Stream traits. - Significantly improve documentation coverage and add several doctests. #12
- Log type names in the Stream/Sink logging combinators. The format is now:
[postage::stream::stream_log] <my::Message> Message(1)
#13 - Use a lock-free notifier queue. #6
Bugfixes/Tests
- Fix a bug that caused very rare 'clone monster' broadcast test failures.
- Add test coverage of the combinator APIs. #11
v0.2.2
- Completely rewrite the broadcast channel, and significantly improve test coverage.
- Test broadcast and mpsc channels at multiple channel sizes, ranging from 2 to 64.
- Add 'clone monster' tests that repeatedly clone senders and receivers, attempting to interfere with the flow of messages between an established pair.
- Fix 'blocking bugs' in the mpsc and watch channels, where occasionally both ends would return Pending and never resolve.
v0.2.1
- Fix a torrent of bugs in the broadcast channel
- Dramatically improve unit test and integration test coverage
- Add rustdocs, and more readme content.
v0.2.0
General
- Improve the SendFuture / RecvFuture design. Require Unpin, and use PhantomPin.
- Remove the Sized bound for Sink and Stream.
- Add a barrier channel, which transmits a value when the sender is dropped.
- Add tokio and async-std tests covering each channel impl
- Implement std::error::Error for all error types
Combinators
- Add logging combinators
- Fix a merge stream bug, where the receiver would block (even though the second stream had an available item).
Broadcast
- Extract a multi-producer, multi-consumer circular buffer utility, and fix many bugs with the broadcast channel
- Require Send, and add unsafe Sync impls for a few types (that are safe due to atomics + unsafecell)
Watch
- Add watch::Receiver::borrow