1# Version 0.5.14 2 3- Fix stack overflow when sending large value to unbounded channel. (#1146, #1147) 4- Add `Select::new_biased` function. (#1150) 5- Remove inefficient spinning. (#1154) 6- Suppress buggy `clippy::zero_repeat_side_effects` lint in macro generated code. (#1123) 7 8# Version 0.5.13 9 10- Add `select_biased!` macro. (#1040) 11 12# Version 0.5.12 13 14- Fix memory leak in unbounded channel. (#1084) 15 16# Version 0.5.11 17 18- Remove dependency on `cfg-if`. (#1072) 19 20# Version 0.5.10 21 22- Relax the minimum supported Rust version to 1.60. (#1056) 23- Optimize `Drop` implementation of bounded channel. (#1057) 24 25# Version 0.5.9 26 27- Bump the minimum supported Rust version to 1.61. (#1037) 28 29# Version 0.5.8 30 31- Fix race condition in unbounded channel. (#972) 32 33# Version 0.5.7 34 35**Note:** This release has been yanked due to bug fixed in 0.5.8. 36 37- Improve handling of very large timeout. (#953) 38 39# Version 0.5.6 40 41**Note:** This release has been yanked due to bug fixed in 0.5.8. 42 43- Bump the minimum supported Rust version to 1.38. (#877) 44 45# Version 0.5.5 46 47**Note:** This release has been yanked due to bug fixed in 0.5.8. 48 49- Replace Spinlock with Mutex. (#835) 50 51# Version 0.5.4 52 53**Note:** This release has been yanked due to bug fixed in 0.5.8. 54 55- Workaround a bug in upstream related to TLS access on AArch64 Linux. (#802) 56 57# Version 0.5.3 58 59**Note:** This release has been yanked. See [#802](https://github.com/crossbeam-rs/crossbeam/issues/802) for details. 60 61- Fix panic on very large timeout. (#798) 62 63# Version 0.5.2 64 65**Note:** This release has been yanked. See [#802](https://github.com/crossbeam-rs/crossbeam/issues/802) for details. 66 67- Fix stacked borrows violations when `-Zmiri-tag-raw-pointers` is enabled. (#763, #764) 68 69# Version 0.5.1 70 71**Note:** This release has been yanked due to bug fixed in 0.5.8. 72 73- Fix memory leak in unbounded channel. (#669) 74 75# Version 0.5.0 76 77- Bump the minimum supported Rust version to 1.36. 78- Add `at()` function. 79- Add `Sender::send_deadline()` and `Receiver::recv_deadline()` methods. 80- Add `Select::select_deadline()` and `Select::ready_deadline()` methods. 81- Add `std` (enabled by default) feature for forward compatibility. 82- Allow `select!` macro compile with `forbid(unsafe_code)`. 83 84# Version 0.4.4 85 86- Fix bug in release (yanking 0.4.3) 87- Fix UB and breaking change introduced in 0.4.3 88 89# Version 0.4.3 90 91**Note:** This release has been yanked. See [GHSA-v5m7-53cv-f3hx](https://github.com/crossbeam-rs/crossbeam/security/advisories/GHSA-v5m7-53cv-f3hx) for details. 92 93- Change license to "MIT OR Apache-2.0". 94 95# Version 0.4.2 96 97- Fix bug in release (yanking 0.4.1) 98 99# Version 0.4.1 100 101- Avoid time drift in `channel::tick`. (#456) 102- Fix unsoundness issues by adopting `MaybeUninit`. (#458) 103 104# Version 0.4.0 105 106- Bump the minimum required version to 1.28. 107- Bump `crossbeam-utils` to `0.7`. 108 109# Version 0.3.9 110 111- Fix a bug in reference counting. 112- Optimize `recv_timeout()`. 113- Add `Select::remove()`. 114- Various small improvements, code cleanup, more tests. 115 116# Version 0.3.8 117 118- Bump the minimum required version of `crossbeam-utils`. 119 120# Version 0.3.7 121 122- Remove `parking_lot` and `rand` dependencies. 123- Expand documentation. 124- Implement `Default` for `Select`. 125- Make `size_of::<Receiver<T>>()` smaller. 126- Several minor optimizations. 127- Add more tests. 128 129# Version 0.3.6 130 131- Fix a bug in initialization of unbounded channels. 132 133# Version 0.3.5 134 135- New implementation for unbounded channels. 136- A number of small performance improvements. 137- Remove `crossbeam-epoch` dependency. 138 139# Version 0.3.4 140 141- Bump `crossbeam-epoch` to `0.7`. 142- Improve documentation. 143 144# Version 0.3.3 145 146- Relax the lifetime in `SelectedOperation<'_>`. 147- Add `Select::try_ready()`, `Select::ready()`, and `Select::ready_timeout()`. 148- Update licensing notices. 149- Improve documentation. 150- Add methods `is_disconnected()`, `is_timeout()`, `is_empty()`, and `is_full()` on error types. 151 152# Version 0.3.2 153 154- More elaborate licensing notices. 155 156# Version 0.3.1 157 158- Update `crossbeam-utils` to `0.6`. 159 160# Version 0.3.0 161 162- Add a special `never` channel type. 163- Dropping all receivers now closes the channel. 164- The interface of sending and receiving methods is now very similar to those in v0.1. 165- The syntax for `send` in `select!` is now `send(sender, msg) -> res => body`. 166- The syntax for `recv` in `select!` is now `recv(receiver) -> res => body`. 167- New, more efficient interface for `Select` without callbacks. 168- Timeouts can be specified in `select!`. 169 170# Version 0.2.6 171 172- `Select` struct that can add cases dynamically. 173- More documentation (in particular, the FAQ section). 174- Optimize contended sends/receives in unbounded channels. 175 176# Version 0.2.5 177 178- Use `LocalKey::try_with` instead of `LocalKey::with`. 179- Remove helper macros `__crossbeam_channel*`. 180 181# Version 0.2.4 182 183- Make `select!` linearizable with other channel operations. 184- Update `crossbeam-utils` to `0.5.0`. 185- Update `parking_lot` to `0.6.3`. 186- Remove Mac OS X tests. 187 188# Version 0.2.3 189 190- Add Mac OS X tests. 191- Lower some memory orderings. 192- Eliminate calls to `mem::unitialized`, which caused bugs with ZST. 193 194# Version 0.2.2 195 196- Add more tests. 197- Update `crossbeam-epoch` to 0.5.0 198- Initialize the RNG seed to a random value. 199- Replace `libc::abort` with `std::process::abort`. 200- Ignore clippy warnings in `select!`. 201- Better interaction of `select!` with the NLL borrow checker. 202 203# Version 0.2.1 204 205- Fix compilation errors when using `select!` with `#[deny(unsafe_code)]`. 206 207# Version 0.2.0 208 209- Implement `IntoIterator<Item = T>` for `Receiver<T>`. 210- Add a new `select!` macro. 211- Add special channels `after` and `tick`. 212- Dropping receivers doesn't close the channel anymore. 213- Change the signature of `recv`, `send`, and `try_recv`. 214- Remove `Sender::is_closed` and `Receiver::is_closed`. 215- Remove `Sender::close` and `Receiver::close`. 216- Remove `Sender::send_timeout` and `Receiver::recv_timeout`. 217- Remove `Sender::try_send`. 218- Remove `Select` and `select_loop!`. 219- Remove all error types. 220- Remove `Iter`, `TryIter`, and `IntoIter`. 221- Remove the `nightly` feature. 222- Remove ordering operators for `Sender` and `Receiver`. 223 224# Version 0.1.3 225 226- Add `Sender::disconnect` and `Receiver::disconnect`. 227- Implement comparison operators for `Sender` and `Receiver`. 228- Allow arbitrary patterns in place of `msg` in `recv(r, msg)`. 229- Add a few conversion impls between error types. 230- Add benchmarks for `atomicring` and `mpmc`. 231- Add benchmarks for different message sizes. 232- Documentation improvements. 233- Update `crossbeam-epoch` to 0.4.0 234- Update `crossbeam-utils` to 0.3.0 235- Update `parking_lot` to 0.5 236- Update `rand` to 0.4 237 238# Version 0.1.2 239 240- Allow conditional cases in `select_loop!` macro. 241- Fix typos in documentation. 242- Fix deadlock in selection when all channels are disconnected and a timeout is specified. 243 244# Version 0.1.1 245 246- Implement `Debug` for `Sender`, `Receiver`, `Iter`, `TryIter`, `IntoIter`, and `Select`. 247- Implement `Default` for `Select`. 248 249# Version 0.1.0 250 251- First implementation of the channels. 252- Add `select_loop!` macro by @TimNN. 253