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