1# 0.6.23 (Dec 01, 2020)
2
3### Changed
4- **MSRV**: Increased the MSRV from 1.18.0 (Jun 8, 2017) to 1.31.0 (Dec 6,
5  2018)
6  (https://github.com/tokio-rs/mio/commit/4879e0d32ddfd98e762fc87240e594a3ad8fca30).
7
8### Fixed
9- Work around Linux kernel < 2.6.37 bug on 32-bits making timeouts longer then
10  ~30 minutes effectively infinite
11  (https://github.com/tokio-rs/mio/commit/e7cba59950e9c9fa6194e29b5b1e72029e3df455).
12- Update miow and net2 depedencies to get rid of invalid memory layout assumption
13  (https://github.com/tokio-rs/mio/commit/13f02ac0a86d7c0c0001e5ff8960a0b4340d075c).
14
15# 0.6.22 (May 01, 2020)
16
17### Added
18- Add support for illumos target (#1294)
19
20# 0.6.21 (November 27, 2019)
21
22### Fixed
23- remove `=` dependency on `cfg-if`.
24
25# 0.6.20 (November 21, 2019)
26
27### Fixed
28- Use default IOCP concurrency value (#1161).
29- setting FD_CLOEXEC in pipe (#1095).
30
31# 0.6.19 (May 28, 2018)
32
33### Fixed
34- Do not trigger HUP events on kqueue platforms (#958).
35
36# 0.6.18 (May 24, 2018)
37
38### Fixed
39- Fix compilation on kqueue platforms with 32bit C long (#948).
40
41# 0.6.17 (May 15, 2018)
42
43### Fixed
44- Don't report `RDHUP` as `HUP` (#939)
45- Fix lazycell related compilation issues.
46- Fix EPOLLPRI conflicting with READABLE
47- Abort process on ref count overflows
48
49### Added
50- Define PRI on all targets
51
52# 0.6.16 (September 5, 2018)
53
54* Add EPOLLPRI readiness to UnixReady on supported platforms (#867)
55* Reduce spurious awaken calls (#875)
56
57# 0.6.15 (July 3, 2018)
58
59* Implement `Evented` for containers (#840).
60* Fix android-aarch64 build (#850).
61
62# 0.6.14 (March 8, 2018)
63
64* Add `Poll::poll_interruptible` (#811)
65* Add `Ready::all` and `usize` conversions (#825)
66
67# 0.6.13 (February 5, 2018)
68
69* Fix build on DragonFlyBSD.
70* Add `TcpListener::from_std` that does not require the socket addr.
71* Deprecate `TcpListener::from_listener` in favor of from_std.
72
73# 0.6.12 (January 5, 2018)
74
75* Add `TcpStream::peek` function (#773).
76* Raise minimum Rust version to 1.18.0.
77* `Poll`: retry select() when interrupted by a signal (#742).
78* Deprecate `Events` index access (#713).
79* Add `Events::clear` (#782).
80* Add support for `lio_listio` (#780).
81
82# 0.6.11 (October 25, 2017)
83
84* Allow register to take empty interest (#640).
85* Fix bug with TCP errors on windows (#725).
86* Add TcpListener::accept_std (#733).
87* Update IoVec to fix soundness bug -- includes behavior change. (#747).
88* Minimum Rust version is now 1.14.0.
89* Fix Android x86_64 build.
90* Misc API & doc polish.
91
92# 0.6.10 (July 27, 2017)
93
94* Experimental support for Fuchsia
95* Add `only_v6` option for UDP sockets
96* Fix build on NetBSD
97* Minimum Rust version is now 1.13.0
98* Assignment operators (e.g. `|=`) are now implemented for `Ready`
99
100# 0.6.9 (June 7, 2017)
101
102* More socket options are exposed through the TCP types, brought in through the
103  `net2` crate.
104
105# 0.6.8 (May 26, 2017)
106
107* Support Fuchia
108* POSIX AIO support
109* Fix memory leak caused by Register::new2
110* Windows: fix handling failed TCP connections
111* Fix build on aarch64-linux-android
112* Fix usage of `O_CLOEXEC` with `SETFL`
113
114# 0.6.7 (April 27, 2017)
115
116* Ignore EPIPE coming out of `kevent`
117* Timer thread should exit when timer is dropped.
118
119# 0.6.6 (March 22, 2017)
120
121* Add send(), recv() and connect() to UDPSocket.
122* Fix bug in custom readiness queue
123* Move net types into `net` module
124
125# 0.6.5 (March 14, 2017)
126
127* Misc improvements to kqueue bindings
128* Add official support for iOS, Android, BSD
129* Reimplement custom readiness queue
130* `Poll` is now `Sync`
131* Officially deprecate non-core functionality (timers, channel, etc...)
132* `Registration` now implements `Evented`
133* Fix bug around error conditions with `connect` on windows.
134* Use iovec crate for scatter / gather operations
135* Only support readable and writable readiness on all platforms
136* Expose additional readiness in a platform specific capacity
137
138# 0.6.4 (January 24, 2017)
139
140* Fix compilation on musl
141* Add `TcpStream::from_stream` which converts a std TCP stream to Mio.
142
143# 0.6.3 (January 22, 2017)
144
145* Implement readv/writev for `TcpStream`, allowing vectored reads/writes to
146  work across platforms
147* Remove `nix` dependency
148* Implement `Display` and `Error` for some channel error types.
149* Optimize TCP on Windows through `SetFileCompletionNotificationModes`
150
151# 0.6.2 (December 18, 2016)
152
153* Allow registration of custom handles on Windows (like `EventedFd` on Unix)
154* Send only one byte for the awakener on Unix instead of four
155* Fix a bug in the timer implementation which caused an infinite loop
156
157# 0.6.1 (October 30, 2016)
158
159* Update dependency of `libc` to 0.2.16
160* Fix channel `dec` logic
161* Fix a timer bug around timeout cancellation
162* Don't allocate buffers for TCP reads on Windows
163* Touched up documentation in a few places
164* Fix an infinite looping timer thread on OSX
165* Fix compile on 32-bit OSX
166* Fix compile on FreeBSD
167
168# 0.6.0 (September 2, 2016)
169
170* Shift primary API towards `Poll`
171* `EventLoop` and types to `deprecated` mod. All contents of the
172  `deprecated` mod will be removed by Mio 1.0.
173* Increase minimum supported Rust version to 1.9.0
174* Deprecate unix domain socket implementation in favor of using a
175  version external to Mio. For example: https://github.com/alexcrichton/mio-uds.
176* Remove various types now included in `std`
177* Updated TCP & UDP APIs to match the versions in `std`
178* Enable implementing `Evented` for any type via `Registration`
179* Rename `IoEvent` -> `Event`
180* Access `Event` data via functions vs. public fields.
181* Expose `Events` as a public type that is passed into `Poll`
182* Use `std::time::Duration` for all APIs that require a time duration.
183* Polled events are now retrieved via `Events` type.
184* Implement `std::error::Error` for `TimerError`
185* Relax `Send` bound on notify messages.
186* Remove `Clone` impl for `Timeout` (future proof)
187* Remove `mio::prelude`
188* Remove `mio::util`
189* Remove dependency on bytes
190
191# 0.5.0 (December 3, 2015)
192
193* Windows support (#239)
194* NetBSD support (#306)
195* Android support (#295)
196* Don't re-export bytes types
197* Renamed `EventLoop::register_opt` to `EventLoop::register` (#257)
198* `EventLoopConfig` is now a builder instead of having public struct fields. It
199  is also no longer `Copy`. (#259)
200* `TcpSocket` is no longer exported in the public API (#262)
201* Integrate with net2. (#262)
202* `TcpListener` now returns the remote peer address from `accept` as well (#275)
203* The `UdpSocket::{send_to, recv_from}` methods are no longer generic over `Buf`
204  or `MutBuf` but instead take slices directly. The return types have also been
205  updated to return the number of bytes transferred. (#260)
206* Fix bug with kqueue where an error on registration prevented the
207  changelist from getting flushed (#276)
208* Support sending/receiving FDs over UNIX sockets (#291)
209* Mio's socket types are permanently associated with an EventLoop (#308)
210* Reduce unnecessary poll wakeups (#314)
211
212
213# 0.4.1 (July 21, 2015)
214
215* [BUGFIX] Fix notify channel concurrency bug (#216)
216
217# 0.4.0 (July 16, 2015)
218
219* [BUGFIX] EventLoop::register requests all events, not just readable.
220* [BUGFIX] Attempting to send a message to a shutdown event loop fails correctly.
221* [FEATURE] Expose TCP shutdown
222* [IMPROVEMENT] Coalesce readable & writable into `ready` event (#184)
223* [IMPROVEMENT] Rename TryRead & TryWrite function names to avoid conflict with std.
224* [IMPROVEMENT] Provide TCP and UDP types in Mio (path to windows #155)
225* [IMPROVEMENT] Use clock_ticks crate instead of time (path to windows #155)
226* [IMPROVEMENT] Move unix specific features into mio::unix module
227* [IMPROVEMENT] TcpListener sets SO_REUSEADDR by default
228