1# Version 0.5.0 2 3- Bump the minimum supported Rust version to 1.36. 4- Add `at()` function. 5- Add `Sender::send_deadline()` and `Receiver::recv_deadline()` methods. 6- Add `Select::select_deadline()` and `Select::ready_deadline()` methods. 7- Add `std` (enabled by default) feature for forward compatibility. 8- Allow `select!` macro compile with `forbid(unsafe_code)`. 9 10# Version 0.4.4 11 12- Fix bug in release (yanking 0.4.3) 13- Fix UB and breaking change introduced in 0.4.3 14 15# Version 0.4.3 16 17- Change license to "MIT OR Apache-2.0". 18 19# Version 0.4.2 20 21- Fix bug in release (yanking 0.4.1) 22 23# Version 0.4.1 24 25- Avoid time drift in `channel::tick`. (#456) 26- Fix unsoundness issues by adopting `MaybeUninit`. (#458) 27 28# Version 0.4.0 29 30- Bump the minimum required version to 1.28. 31- Bump `crossbeam-utils` to `0.7`. 32 33# Version 0.3.9 34 35- Fix a bug in reference counting. 36- Optimize `recv_timeout()`. 37- Add `Select::remove()`. 38- Various small improvements, code cleanup, more tests. 39 40# Version 0.3.8 41 42- Bump the minimum required version of `crossbeam-utils`. 43 44# Version 0.3.7 45 46- Remove `parking_lot` and `rand` dependencies. 47- Expand documentation. 48- Implement `Default` for `Select`. 49- Make `size_of::<Receiver<T>>()` smaller. 50- Several minor optimizations. 51- Add more tests. 52 53# Version 0.3.6 54 55- Fix a bug in initialization of unbounded channels. 56 57# Version 0.3.5 58 59- New implementation for unbounded channels. 60- A number of small performance improvements. 61- Remove `crossbeam-epoch` dependency. 62 63# Version 0.3.4 64 65- Bump `crossbeam-epoch` to `0.7`. 66- Improve documentation. 67 68# Version 0.3.3 69 70- Relax the lifetime in `SelectedOperation<'_>`. 71- Add `Select::try_ready()`, `Select::ready()`, and `Select::ready_timeout()`. 72- Update licensing notices. 73- Improve documentation. 74- Add methods `is_disconnected()`, `is_timeout()`, `is_empty()`, and `is_full()` on error types. 75 76# Version 0.3.2 77 78- More elaborate licensing notices. 79 80# Version 0.3.1 81 82- Update `crossbeam-utils` to `0.6`. 83 84# Version 0.3.0 85 86- Add a special `never` channel type. 87- Dropping all receivers now closes the channel. 88- The interface of sending and receiving methods is now very similar to those in v0.1. 89- The syntax for `send` in `select!` is now `send(sender, msg) -> res => body`. 90- The syntax for `recv` in `select!` is now `recv(receiver) -> res => body`. 91- New, more efficient interface for `Select` without callbacks. 92- Timeouts can be specified in `select!`. 93 94# Version 0.2.6 95 96- `Select` struct that can add cases dynamically. 97- More documentation (in particular, the FAQ section). 98- Optimize contended sends/receives in unbounded channels. 99 100# Version 0.2.5 101 102- Use `LocalKey::try_with` instead of `LocalKey::with`. 103- Remove helper macros `__crossbeam_channel*`. 104 105# Version 0.2.4 106 107- Make `select!` linearizable with other channel operations. 108- Update `crossbeam-utils` to `0.5.0`. 109- Update `parking_lot` to `0.6.3`. 110- Remove Mac OS X tests. 111 112# Version 0.2.3 113 114- Add Mac OS X tests. 115- Lower some memory orderings. 116- Eliminate calls to `mem::unitialized`, which caused bugs with ZST. 117 118# Version 0.2.2 119 120- Add more tests. 121- Update `crossbeam-epoch` to 0.5.0 122- Initialize the RNG seed to a random value. 123- Replace `libc::abort` with `std::process::abort`. 124- Ignore clippy warnings in `select!`. 125- Better interaction of `select!` with the NLL borrow checker. 126 127# Version 0.2.1 128 129- Fix compilation errors when using `select!` with `#[deny(unsafe_code)]`. 130 131# Version 0.2.0 132 133- Implement `IntoIterator<Item = T>` for `Receiver<T>`. 134- Add a new `select!` macro. 135- Add special channels `after` and `tick`. 136- Dropping receivers doesn't close the channel anymore. 137- Change the signature of `recv`, `send`, and `try_recv`. 138- Remove `Sender::is_closed` and `Receiver::is_closed`. 139- Remove `Sender::close` and `Receiver::close`. 140- Remove `Sender::send_timeout` and `Receiver::recv_timeout`. 141- Remove `Sender::try_send`. 142- Remove `Select` and `select_loop!`. 143- Remove all error types. 144- Remove `Iter`, `TryIter`, and `IntoIter`. 145- Remove the `nightly` feature. 146- Remove ordering operators for `Sender` and `Receiver`. 147 148# Version 0.1.3 149 150- Add `Sender::disconnect` and `Receiver::disconnect`. 151- Implement comparison operators for `Sender` and `Receiver`. 152- Allow arbitrary patterns in place of `msg` in `recv(r, msg)`. 153- Add a few conversion impls between error types. 154- Add benchmarks for `atomicring` and `mpmc`. 155- Add benchmarks for different message sizes. 156- Documentation improvements. 157- Update `crossbeam-epoch` to 0.4.0 158- Update `crossbeam-utils` to 0.3.0 159- Update `parking_lot` to 0.5 160- Update `rand` to 0.4 161 162# Version 0.1.2 163 164- Allow conditional cases in `select_loop!` macro. 165- Fix typos in documentation. 166- Fix deadlock in selection when all channels are disconnected and a timeout is specified. 167 168# Version 0.1.1 169 170- Implement `Debug` for `Sender`, `Receiver`, `Iter`, `TryIter`, `IntoIter`, and `Select`. 171- Implement `Default` for `Select`. 172 173# Version 0.1.0 174 175- First implementation of the channels. 176- Add `select_loop!` macro by @TimNN. 177