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