All notable changes to whisk
will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Switched out
pasts
forevent_iterator
- Renamed
futures-core
feature tofutures_core_3
- Bumped MSRV to 1.70
- Weirdness with
Cargo.toml
's[[example]]
section and no-std example in CI.
- Default features being pulled in for
pasts
andfutures-core
optional dependencies when enabled
- Update pasts to 0.14.x
- Update pasts to 0.13.x
- Use after free bug (drop order)
- Implement
From
convertingArc<Queue>
toChannel
- Implement
From
convertingChannel
toArc<Queue>
- Separate
Queue
andChannel
types Channel::with()
for storing additional data within the internalArc
Queue::with()
for storing additional data withinDeref
implementation for accessing additional use data withinChannel
Deref
implementation for accessing additional use data withinQueue
- Changed to lockless implementation (no more spinlocks)
- Old
Channel
type is now calledQueue
Future
,Notifier
andStream
are now implemented directly onChannel
rather than on a shared reference.- Bump MSRV to Rust 1.65
Chan
,Stream
,WeakChan
andWeakStream
type aliases
Chan
,Stream
,WeakChan
,WeakStream
type aliases
Weak
, no longer necessary
- MSRV bumped to 1.64.0
Channel::new()
no longer contains anArc
, so it's no longerClone
. The usage ofArc
is now up to the user of the library.Channel::new()
is now aconst fn
Weak<T>
andChannel<T>
now have a default for generics:T = ()
Weak::try_send()
Weak::try_recv()
Channel::send()
back toasync fn
Channel::recv()
back toasync fn
Weak
reference to aChannel
- Implement
Future
for&Channel
- Implement
Notifier
for&Channel
- Implement
Stream
for&Channel
- Updated pasts to 0.12
Channel::recv()
from anasync fn
to afn() -> impl Future
Channel::send()
from returningMessage
to returningimpl Future
Channel::recv()
no longer requires a mutable referenceChannel<T>
now supportsT: !Unpin
Message
- Const generic arguments on
Channel
- Panic on uncompleted message send
- Bug with wakers when using MPMC functionality that could possibly trigger UB
- Error in documentation
pasts
feature forChannel<T>
to implementNotifier
futures-core
feature forChannel<Option<T>>
to implementStream
Message
future typeChannel::new()
for creating a channelChannel::send()
for sending a message on a channelChannel::recv()
for receiving a message from a channel
- Channels are now MPMC instead of SPSC
- Less unsafe code, simpler implementation
- Channels are now symmetrical
Sender
- Functionality built intoChannel
nowReceiver
- Functionality built intoMessage
nowWorker
- Functionality built intoMessage
nowTasker
- Functionality built intoChannel
nowstd
featureChannel::to_pair()
- UseChannel::new()
insteadChannel::pair()
- UseChannel::new()
instead
Channel
struct, andChannel::to_pair()
for reusing oneshot channelsSender
andReceiver
oneshot-rendezvous channelsWorker::stop()
to close a spsc channel
- Replaced
channel()
, withChannel::pair()
- Renamed
Commander
toWorker
, andMessenger
toTasker
Command
,Message
typesCommander::start()
andMessenger::start()
, useWorker::send()
andCommander::recv_next()
instead
- Small optimizations
start()
async methods on bothCommander
andMessenger
for initiating the connection.
Commander
andMessenger
changed fromFuture
s toIterator
s.
close()
methods on bothCommander
andMessenger
, now you can just rely on dropping to close channels.
- Incorrect assumptions about wakers
- Deadlock condition caused by wrong drop order
Command
Commander
Message
Messenger
channel()