- Fix stack overflow when sending large value to unbounded channel. (#1146, #1147)
- Add
Select::new_biased
function. (#1150) - Remove inefficient spinning. (#1154)
- Suppress buggy
clippy::zero_repeat_side_effects
lint in macro generated code. (#1123)
- Add
select_biased!
macro. (#1040)
- Fix memory leak in unbounded channel. (#1084)
- Remove dependency on
cfg-if
. (#1072)
- Relax the minimum supported Rust version to 1.60. (#1056)
- Optimize
Drop
implementation of bounded channel. (#1057)
- Bump the minimum supported Rust version to 1.61. (#1037)
- Fix race condition in unbounded channel. (#972)
Note: This release has been yanked due to bug fixed in 0.5.8.
- Improve handling of very large timeout. (#953)
Note: This release has been yanked due to bug fixed in 0.5.8.
- Bump the minimum supported Rust version to 1.38. (#877)
Note: This release has been yanked due to bug fixed in 0.5.8.
- Replace Spinlock with Mutex. (#835)
Note: This release has been yanked due to bug fixed in 0.5.8.
- Workaround a bug in upstream related to TLS access on AArch64 Linux. (#802)
Note: This release has been yanked. See #802 for details.
- Fix panic on very large timeout. (#798)
Note: This release has been yanked. See #802 for details.
- Fix stacked borrows violations when
-Zmiri-tag-raw-pointers
is enabled. (#763, #764)
Note: This release has been yanked due to bug fixed in 0.5.8.
- Fix memory leak in unbounded channel. (#669)
- Bump the minimum supported Rust version to 1.36.
- Add
at()
function. - Add
Sender::send_deadline()
andReceiver::recv_deadline()
methods. - Add
Select::select_deadline()
andSelect::ready_deadline()
methods. - Add
std
(enabled by default) feature for forward compatibility. - Allow
select!
macro compile withforbid(unsafe_code)
.
- Fix bug in release (yanking 0.4.3)
- Fix UB and breaking change introduced in 0.4.3
Note: This release has been yanked. See GHSA-v5m7-53cv-f3hx for details.
- Change license to "MIT OR Apache-2.0".
- Fix bug in release (yanking 0.4.1)
- Avoid time drift in
channel::tick
. (#456) - Fix unsoundness issues by adopting
MaybeUninit
. (#458)
- Bump the minimum required version to 1.28.
- Bump
crossbeam-utils
to0.7
.
- Fix a bug in reference counting.
- Optimize
recv_timeout()
. - Add
Select::remove()
. - Various small improvements, code cleanup, more tests.
- Bump the minimum required version of
crossbeam-utils
.
- Remove
parking_lot
andrand
dependencies. - Expand documentation.
- Implement
Default
forSelect
. - Make
size_of::<Receiver<T>>()
smaller. - Several minor optimizations.
- Add more tests.
- Fix a bug in initialization of unbounded channels.
- New implementation for unbounded channels.
- A number of small performance improvements.
- Remove
crossbeam-epoch
dependency.
- Bump
crossbeam-epoch
to0.7
. - Improve documentation.
- Relax the lifetime in
SelectedOperation<'_>
. - Add
Select::try_ready()
,Select::ready()
, andSelect::ready_timeout()
. - Update licensing notices.
- Improve documentation.
- Add methods
is_disconnected()
,is_timeout()
,is_empty()
, andis_full()
on error types.
- More elaborate licensing notices.
- Update
crossbeam-utils
to0.6
.
- Add a special
never
channel type. - Dropping all receivers now closes the channel.
- The interface of sending and receiving methods is now very similar to those in v0.1.
- The syntax for
send
inselect!
is nowsend(sender, msg) -> res => body
. - The syntax for
recv
inselect!
is nowrecv(receiver) -> res => body
. - New, more efficient interface for
Select
without callbacks. - Timeouts can be specified in
select!
.
Select
struct that can add cases dynamically.- More documentation (in particular, the FAQ section).
- Optimize contended sends/receives in unbounded channels.
- Use
LocalKey::try_with
instead ofLocalKey::with
. - Remove helper macros
__crossbeam_channel*
.
- Make
select!
linearizable with other channel operations. - Update
crossbeam-utils
to0.5.0
. - Update
parking_lot
to0.6.3
. - Remove Mac OS X tests.
- Add Mac OS X tests.
- Lower some memory orderings.
- Eliminate calls to
mem::unitialized
, which caused bugs with ZST.
- Add more tests.
- Update
crossbeam-epoch
to 0.5.0 - Initialize the RNG seed to a random value.
- Replace
libc::abort
withstd::process::abort
. - Ignore clippy warnings in
select!
. - Better interaction of
select!
with the NLL borrow checker.
- Fix compilation errors when using
select!
with#[deny(unsafe_code)]
.
- Implement
IntoIterator<Item = T>
forReceiver<T>
. - Add a new
select!
macro. - Add special channels
after
andtick
. - Dropping receivers doesn't close the channel anymore.
- Change the signature of
recv
,send
, andtry_recv
. - Remove
Sender::is_closed
andReceiver::is_closed
. - Remove
Sender::close
andReceiver::close
. - Remove
Sender::send_timeout
andReceiver::recv_timeout
. - Remove
Sender::try_send
. - Remove
Select
andselect_loop!
. - Remove all error types.
- Remove
Iter
,TryIter
, andIntoIter
. - Remove the
nightly
feature. - Remove ordering operators for
Sender
andReceiver
.
- Add
Sender::disconnect
andReceiver::disconnect
. - Implement comparison operators for
Sender
andReceiver
. - Allow arbitrary patterns in place of
msg
inrecv(r, msg)
. - Add a few conversion impls between error types.
- Add benchmarks for
atomicring
andmpmc
. - Add benchmarks for different message sizes.
- Documentation improvements.
- Update
crossbeam-epoch
to 0.4.0 - Update
crossbeam-utils
to 0.3.0 - Update
parking_lot
to 0.5 - Update
rand
to 0.4
- Allow conditional cases in
select_loop!
macro. - Fix typos in documentation.
- Fix deadlock in selection when all channels are disconnected and a timeout is specified.
- Implement
Debug
forSender
,Receiver
,Iter
,TryIter
,IntoIter
, andSelect
. - Implement
Default
forSelect
.
- First implementation of the channels.
- Add
select_loop!
macro by @TimNN.