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