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