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