Skip to content

Releases: austinjones/postage-rs

v0.5.0

14 Apr 20:35
Compare
Choose a tag to compare

Changes

  • Modified futures::sink::Sink implementations to return the item on error (SendError<T>) #45
  • Added watch::Sender::subscribe which returns a Receiver #46

Documentation

  • Add examples covering all channels, and use in async_std/futures/tokio. #48
  • Update benchmarks, add some rustdoc. #53

Fixes

  • A waiting oneshot receiver was not notified when the sender was dropped #44
  • Use parking_lot for internal synchronization. #47

v0.4.1

08 Feb 04:29
687d740
Compare
Choose a tag to compare
  • If the futures-traits feature is enabled, implementfutures::Sink and futures::Stream for senders and receivers #39
  • Add cargo feature documentation to docs.rs #5

v0.4.0

31 Jan 21:33
Compare
Choose a tag to compare

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

24 Jan 01:02
62c534a
Compare
Choose a tag to compare
  • Readme and documentation improvements.

v0.3.2

20 Jan 15:21
e4caeb0
Compare
Choose a tag to compare

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

18 Jan 23:35
8266a5d
Compare
Choose a tag to compare

Changes

  • Improve the T: Send/Sync trait requirements in the broadcast channel #16

Fixes

  • Fix the docs.rs build #16

v0.3.0

18 Jan 19:02
a66531c
Compare
Choose a tag to compare

Breaking Changes

  • Create a Context type (similar to std::task::Context) that contains an Option<&'a Waker>. This allows Sink::try_send and Stream::try_recv to be zero cost if the try returns pending. #9
  • Move postage::Stream to postage::stream::Stream. #11
  • Move postage::Sink to postage::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

18 Jan 01:07
ed67550
Compare
Choose a tag to compare
  • 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

16 Jan 19:02
Compare
Choose a tag to compare
  • 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

16 Jan 19:01
Compare
Choose a tag to compare

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