- initial release
- Fixes closing behavior of
Semaphore
: AcquiredPermit
s were not (always) returned to theSemaphore
. - Fixes closing behavior of
mpsc
Senders: Closing or dropping the last sender would not wake up a waiting receiver.
- Includes
Semaphore
API to acquire multiple permits in a single call - Introduces
alloc
feature and enablessemaphore
without it, i.e.,Semaphore
now requires zero allocations. - Enables non-allocating
oneshot
channel uses withoutalloc
feature. - Document panic behavior when creating bounded channels with zero capacity.
- Adds
from_iter
APIs forbounded
andunbounded
channels - Adds
bounded::[Channel|Sender|SenderRef]::unbounded_send
API. - Adds
Semaphore::outstanding_permits
for accounting handed out permits
- Renames
Semaphore::[try_]acquire_one
to[try]_acquire
- Introduces split
alloc
andstd
features,bounded
andunbounded
no longer exist without thealloc
feature enabled,oneshot::Channel::into_split
likewise requiresalloc
.
- Fixes a bug
Semaphore
that would not wake waiters on close. - Change
Semaphore::acquire[_many]
to return a namedFuture
type.
- Fixes a bug where a
Waker
registered by aSemaphore
would not be dropped, causing memory leaks.
- Performance improvements to
Semaphore
.
- Removes
bound::[Channel|Sender|SenderRef]::unbounded_send
- Removes
Semaphore::outstanding_permits
andSemaphore::return_permits
- Alters the behaviour of
bounded::Channel::from_iter
to use the maximum of the iterator's length and the given capacity as the channel's capacity.