1# 1.0.3
2
3* Implement more I/O safety traits
4  (https://github.com/tokio-rs/mio/pull/1831).
5* Remove hermit-abi dependency, now using libc
6  (https://github.com/tokio-rs/mio/pull/1830).
7* Use `poll(2)` implementation on AIX, removing the need for using
8  `mio_unsupported_force_poll_poll`
9  (https://github.com/tokio-rs/mio/pull/1833).
10
11# 1.0.2
12
13* Work around eventfd bug on illumos
14  (https://github.com/tokio-rs/mio/pull/1826).
15* Fix dead code warning on Hermit when building with `--no-default-features
16  --features os-ext`
17  (https://github.com/tokio-rs/mio/pull/1828).
18
19# 1.0.1
20
21* Added Fuchsia support
22  (https://github.com/tokio-rs/mio/pull/1811).
23* Added GNU/Hurd support
24  (https://github.com/tokio-rs/mio/pull/1816).
25* Fixed an issue where accepting on a UDS socket without sometime pass an address
26  with a NULL byte to SocketAddr::from_pathname
27  (https://github.com/tokio-rs/mio/pull/1817).
28* Internal cleanups that should make the `cfg` sitations easier to follow
29  (https://github.com/tokio-rs/mio/pull/1812,
30  https://github.com/tokio-rs/mio/pull/1813).
31
32# 1.0
33
34With v1 Mio is able to bump its MSRV to 1.70, allowing us to implement I/O
35safety traits (https://github.com/rust-lang/rust/issues/87074) and replace
36`SocketAddr` with the version found in the standard library.
37
38## Added
39
40* Implement `AsFd` for`TcpListener`, `TcpStream`, `UdpSocket`, `UnixDatagram`,
41  `UnixListener`, `UnixStream`, `pipe::Receiver` and `pipe::Sender`
42  (https://github.com/tokio-rs/mio/pull/1749, https://github.com/tokio-rs/mio/pull/1797).
43* Implement `From` for `TcpListener`, `TcpStream`, `UdpSocket`, `UnixDatagram`,
44  `UnixListener`, and `UnixStream` for their standard library counterpart
45  (https://github.com/tokio-rs/mio/pull/1767).
46* Add support for abstract namespaces on Android
47  (https://github.com/tokio-rs/mio/pull/1749).
48* Add support for QNX OS
49  (https://github.com/tokio-rs/mio/pull/1766,
50  https://github.com/tokio-rs/mio/pull/1800).
51* Add support for Apple visionOS
52  (https://github.com/tokio-rs/mio/pull/1795).
53* Support for Haiku
54  (https://github.com/tokio-rs/mio/pull/1807).
55
56## Removed
57
58* The `SocketAddr` type is removed in favour of `std::os::unix::net::SocketAddr`
59  (https://github.com/tokio-rs/mio/pull/1760). All methods on Mio's version
60  should exist on the version in the standard library.
61
62## Changes
63
64* MSRV was updated to 1.74, updating to Rust edition edition
65  (https://github.com/tokio-rs/mio/pull/1733).
66* `UnixDatagram::{local_addr,peer_addr,bind_addr,recv_from}`,
67  `UnixListener::{local_addr,bind_addr,accept}` and
68  `UnixStream::{local_addr,peer_addr,connect_addr}` return and/or use
69  `std::os::unix::net::SocketAddr` instead of Mio's own `SocketAddr` type
70  (https://github.com/tokio-rs/mio/pull/1760).
71* Use `OwnedFd` internally for `Poll` where possible
72  (https://github.com/tokio-rs/mio/pull/1749).
73* Support ESP-IDF and Hermit without cfg flags
74  (https://github.com/tokio-rs/mio/pull/1789,
75  https://github.com/tokio-rs/mio/pull/1802,
76  https://github.com/tokio-rs/mio/pull/1802).
77* Updated windows-sys to v0.52
78  (https://github.com/tokio-rs/mio/pull/1668).
79
80# 0.8.11
81
82* Fix receiving IOCP events after deregistering a Windows named pipe
83  (https://github.com/tokio-rs/mio/pull/1760, backport pr:
84  https://github.com/tokio-rs/mio/pull/1761).
85
86# 0.8.10
87
88## Added
89
90* Solaris support
91  (https://github.com/tokio-rs/mio/pull/1724).
92
93# 0.8.9
94
95## Added
96
97* ESP-IDF framework support
98  (https://github.com/tokio-rs/mio/pull/1692).
99* AIX operating system support
100  (https://github.com/tokio-rs/mio/pull/1704).
101* Vita support
102  (https://github.com/tokio-rs/mio/pull/1721).
103* `{UnixListener,UnixStream}:bind_addr`
104  (https://github.com/tokio-rs/mio/pull/1630).
105* `mio_unsupported_force_poll_poll` and `mio_unsupported_force_waker_pipe`
106  **unsupported** configuration flags to force a specific poll or waker
107  implementation
108  (https://github.com/tokio-rs/mio/pull/1684,
109  https://github.com/tokio-rs/mio/pull/1685,
110  https://github.com/tokio-rs/mio/pull/1692).
111
112## Fixed
113
114* The `pipe(2)` based waker (swapped file descriptors)
115  (https://github.com/tokio-rs/mio/pull/1722).
116* The duplicate waker check to work correctly with cloned `Registry`s.
117  (https://github.com/tokio-rs/mio/pull/1706).
118
119# 0.8.8
120
121## Fixed
122
123* Fix compilation on WASI (https://github.com/tokio-rs/mio/pull/1676).
124
125# 0.8.7
126
127## Added
128
129* Add/fix support for tvOS and watchOS, Mio should now build for tvOS and
130  watchOS, but we don't have a CI setup yet
131  (https://github.com/tokio-rs/mio/pull/1658).
132
133## Changed
134
135* Made the `log` dependency optional behind the `log` feature flag (enabled by
136  default). Users that disabled Mio's default features will now not see any
137  logging from Mio, enabling the `log` feature will fix that. This was done in
138  response to the `log` crate increasing it's MSRV to v1.60, see
139  https://github.com/rust-lang/log/pull/552
140  (https://github.com/tokio-rs/mio/pull/1673).
141* Update windows-sys dependency to v0.48
142  (https://github.com/tokio-rs/mio/pull/1663).
143
144## Fixed
145
146* Fix overflow in `Poll::poll` when using `Duration::MAX` as timeout
147  (https://github.com/tokio-rs/mio/pull/1657).
148
149# 0.8.6
150
151## Added
152
153* `Interest::PRIORITY` on Linux and Android, to trigger `Event::is_priority`
154  (https://github.com/tokio-rs/mio/pull/1647).
155
156## Changed
157
158* Updated windows-sys to 0.45
159  (https://github.com/tokio-rs/mio/pull/1644).
160* We started testing with sanitizers on the CI
161  (https://github.com/tokio-rs/mio/pull/1648).
162
163## Fixed
164
165* A number of potential fd leaks when setup resulted in an error right after
166  creation (https://github.com/tokio-rs/mio/pull/1636).
167* Less truncating for timeout values in `Poll::poll`
168  (https://github.com/tokio-rs/mio/pull/1642).
169
170# 0.8.5
171
172## Changed
173
174* Updated `windows-sys` to 0.42.0
175  (https://github.com/tokio-rs/mio/pull/1624).
176* Officially document Wine as not supported, some people claimed it worked,
177  other claims it doesn't, but nobody stepped up to fix the problem
178  (https://github.com/tokio-rs/mio/pull/1596).
179* Switch to GitHub Actions
180  (https://github.com/tokio-rs/mio/pull/1598, https://github.com/tokio-rs/mio/pull/1601).
181* Documented the current Poll::poll time behaviour
182  (https://github.com/tokio-rs/mio/pull/1603).
183
184## Fixed
185
186* Timeout less than one millisecond becoming zero millsiconds
187  (https://github.com/tokio-rs/mio/pull/1615, https://github.com/tokio-rs/mio/pull/1616)
188* Undefined reference to `epoll\_create1` on Android API level < 21.
189  (https://github.com/tokio-rs/mio/pull/1590).
190
191# 0.8.4
192
193## Added
194
195* Support `Registery::try_clone` on `wasm32-wasi`
196  (https://github.com/tokio-rs/mio/pull/1576).
197* Add docs about polling without registering event sources
198  (https://github.com/tokio-rs/mio/pull/1585).
199
200# 0.8.3
201
202## Changed
203
204* Replace `winapi` dependency with `windows-sys`.
205  (https://github.com/tokio-rs/mio/pull/1556).
206* Future proofed the kevent ABI for FreeBSD
207  (https://github.com/tokio-rs/mio/pull/1572).
208
209## Fixed
210
211* Improved support for Redox, making it possible to run on stable Rust
212  (https://github.com/tokio-rs/mio/pull/1555).
213* Don't ignore EAGAIN in UDS connect call
214  (https://github.com/tokio-rs/mio/pull/1564).
215* Documentation of `TcpStream::connect`
216  (https://github.com/tokio-rs/mio/pull/1565).
217
218# 0.8.2
219
220## Added
221
222* Experimental support for Redox.
223
224# 0.8.1
225
226## Added
227
228* Add `try_io` method to all I/O types (#1551). This execute a user defined I/O
229  closure while updating Mio's internal state ensuring that the I/O type
230  receives more events if it hits a WouldBlock error. This is added to the
231  following types:
232   * `TcpStream`
233   * `UdpSocket`
234   * `UnixDatagram`
235   * `UnixStream`
236   * `unix::pipe::Sender`
237   * `unix::pipe::Receiver`
238* Basic, experimental support for `wasm32-wasi` target (#1549). Note that a lot
239  of time type are still missing, e.g. the `Waker`, and may never be possible to
240  implement.
241
242# 0.8.0
243
244## Removed
245
246* Deprecated features (https://github.com/tokio-rs/mio/commit/105f8f2afb57b01ddea716a0aa9720f226c520e3):
247  * extra-docs (always enabled)
248  * tcp (replaced with "net" feature).
249  * udp (replaced with "net" feature).
250  * uds (replaced with "net" feature).
251  * pipe (replaced with "os-ext" feature).
252  * os-util (replaced with "os-ext" feature).
253* `TcpSocket` type
254  (https://github.com/tokio-rs/mio/commit/02e9be41f27daf822575444fdd2b3067433a5996).
255  The socket2 crate provides all the functionality and more.
256* Support for Solaris, it never really worked anyway
257  (https://github.com/tokio-rs/mio/pull/1528).
258
259## Changes
260
261* Update minimum Rustc version (MSVR) to 1.46.0
262  (https://github.com/tokio-rs/mio/commit/5c577efecd23750a9a3e0f6ad080ab98f14a255d).
263
264## Added
265
266* `UdpSocket::peer_addr`
267  (https://github.com/tokio-rs/mio/commit/5fc104d08e0e74c8a19247f7cba0f058699fc438).
268
269# 0.7.14
270
271## Fixes
272
273* Remove use unsound internal macro (#1519).
274
275## Added
276
277* `sys::unix::SocketAddr::as_abstract_namespace()` (#1520).
278
279# 0.7.13
280
281## Fixes
282
283* Fix `Registry::try_clone` invalid usage of `F_DUPFD_CLOEXEC` (#1497,
284  https://github.com/tokio-rs/mio/commit/2883f5c1f35bf1a59682c5ffc4afe6b97d7d6e68).
285
286# 0.7.12 (yanked)
287
288## Fixes
289
290* Set `FD_CLOEXEC` when calling `Registry::try_clone`
291  (https://github.com/tokio-rs/mio/commit/d1617b567ff6bc669d71e367d22e0e93ff7e2e24 for epoll and
292  (https://github.com/tokio-rs/mio/commit/b367a05e408ca90a26383c3aa16d8a16f019dc59 for kqueue).
293
294# 0.7.11
295
296## Fixes
297
298* Fix missing feature of winapi.
299  (https://github.com/tokio-rs/mio/commit/a7e61db9e3c2b929ef1a33532bfcc22045d163ce).
300
301# 0.7.10
302
303## Fixes
304
305* Fix an instance of not doc(cfg(.*))
306  (https://github.com/tokio-rs/mio/commit/25e8f911357c740034f10a170dfa4ea1b28234ce).
307
308# 0.7.9
309
310## Fixes
311
312* Fix error handling in `NamedPipe::write`
313  (https://github.com/tokio-rs/mio/commit/aec872be9732e5c6685100674278be27f54a271b).
314* Use `accept(2)` on x86 Android instead of `accept4(2)`
315  (https://github.com/tokio-rs/mio/commit/6f86b925d3e48f30905d5cfa54348acf3f1fa036,
316  https://github.com/tokio-rs/mio/commit/8d5414880ab82178305ac1d2c16d715e58633d3e).
317* Improve error message when opening AFD device
318  (https://github.com/tokio-rs/mio/commit/139f7c4422321eb4a17b14ae2c296fddd19a8804).
319
320# 0.7.8
321
322## Fixes
323
324* Fix `TcpStream::set_linger` on macOS
325  (https://github.com/tokio-rs/mio/commit/175773ce02e85977db81224c782c8d140aba8543).
326* Fix compilation on DragonFlyBSD
327  (https://github.com/tokio-rs/mio/commit/b51af46b28871f8dd3233b490ee62237ffed6a26).
328
329# 0.7.7
330
331## Added
332
333* `UdpSocket::only_v6`
334  (https://github.com/tokio-rs/mio/commit/0101e05a800f17fb88f4315d9b9fe0f08cca6e57).
335* `Clone` implementation for `Event`
336  (https://github.com/tokio-rs/mio/commit/26540ebbae89df6d4d08465c56f715d8f2addfc3).
337* `AsRawFd` implementation for `Registry`
338  (https://github.com/tokio-rs/mio/commit/f70daa72da0042b1880256164774c3286d315a02).
339* `Read` and `Write` implementation for `&unix::pipe::Sender` and `Receiver`,
340  that is on the reference to them, an implementation existed on the types
341  themselves already
342  (https://github.com/tokio-rs/mio/commit/1be481dcbbcb6906364008b5d61e7f53cddc3eb3).
343
344## Fixes
345
346* Underflow in `SocketAddr::address`
347  (https://github.com/tokio-rs/mio/commit/6d3fa69240cd4bb95e9d34605c660c30245a18bd).
348* Android build with the net feature enabled, but with os-poll disabled
349  (https://github.com/tokio-rs/mio/commit/49d8fd33e026ad6e2c055d05d6667180ba2af7be).
350* Solaris build with the net feature enabled, but with os-poll disabled
351  (https://github.com/tokio-rs/mio/commit/a6e025e9d9511639ec106ebedc0dd312bdc9be12).
352* Ensure that `Waker::wake` works on illumos systems with poor `pipe(2)` and
353  `epoll(2)` interaction using `EPOLLET`
354  (https://github.com/tokio-rs/mio/commit/943d4249dcc17cd8b4d2250c4fa19116097248fa).
355* Fix `unix::pipe` on illumos
356  (https://github.com/tokio-rs/mio/commit/0db49f6d5caf54b12176821363d154384357e70a).
357
358# 0.7.6
359
360## Added
361
362* `net` feature, replaces `tcp`, `udp` and `uds` features
363  (https://github.com/tokio-rs/mio/commit/a301ba520a8479b459c4acdcefa4a7c5eea818c7).
364* `os-ext` feature, replaces `os-util` and `pipe` features
365  (https://github.com/tokio-rs/mio/commit/f5017fae8a3d3bb4b4cada25b01a2d76a406badc).
366* Added keepalive support to `TcpSocket`
367  (https://github.com/tokio-rs/mio/commit/290c43a96662d54ab7c4b8814e5a9f9a9e523fda).
368* `TcpSocket::set_{send, recv}_buffer_size`
369  (https://github.com/tokio-rs/mio/commit/40c4af79bf5b32b8fbdbf6f2e5c16290e1d3d406).
370* `TcpSocket::get_linger`
371  (https://github.com/tokio-rs/mio/commit/13e82ced655bbb6e2729226e485a7de9f2c2ccd9).
372* Implement `IntoRawFd` for `TcpSocket`
373  (https://github.com/tokio-rs/mio/commit/50548ed45d0b2c98f1f2e003e210d14195284ef4).
374
375## Deprecated
376
377* The `tcp`, `udp` and `uds` features, replaced by a new `net` feature.
378  (https://github.com/tokio-rs/mio/commit/a301ba520a8479b459c4acdcefa4a7c5eea818c7).
379* The `extra-docs` feature, now enabled by default.
380  (https://github.com/tokio-rs/mio/commit/25731e8688a2d91c5c700674a2c2d3841240ece1).
381* The `os-util` and `pipe` features, replaced by a new `os-ext` feature.
382  (https://github.com/tokio-rs/mio/commit/f5017fae8a3d3bb4b4cada25b01a2d76a406badc).
383
384## Fixes
385
386* Incorrect assumption of the layout of `std::net::SocketAddr`. Previously Mio
387  would assume that `SocketAddrV{4,6}` had the same layout as
388  `libc::sockaddr_in(6)`, however this is not guaranteed by the standard
389  library.
390  (https://github.com/tokio-rs/mio/commit/152e0751f0be1c9b0cbd6778645b76bcb0eba93c).
391* Also bumped the miow dependency to version 0.3.6 to solve the same problem as
392  above.
393
394# 0.7.5
395
396## Added
397
398* `TcpSocket::get_localaddr()` retrieves local address
399  (https://github.com/tokio-rs/mio/commit/b41a022b2242eef1969c70c8ba93e04c528dba47).
400* `TcpSocket::set_reuseport()` & `TcpSocket::get_reuseport()` configures and reads `SO_REUSEPORT`
401  (https://github.com/tokio-rs/mio/commit/183bbe409ab69cbf9db41d0263b41ec86202d9a0).
402* `unix:pipe()` a wrapper around pipe(2) sys call
403  (https://github.com/tokio-rs/mio/commit/2b7c0967a7362303946deb3d4ca2ae507af6c72d).
404* Add a check that a single Waker is active per Poll instance (only in debug mode)
405  (https://github.com/tokio-rs/mio/commit/f4874f28b32efcf4841691884c65a89734d96a56).
406* Added `Interest:remove()`
407  (https://github.com/tokio-rs/mio/commit/b8639c3d9ac07bb7e2e27685680c8a6510fa1357).
408
409# 0.7.4
410
411## Fixes
412
413* lost "socket closed" events on windows
414  (https://github.com/tokio-rs/mio/commit/50c299aca56c4a26e5ed20c283007239fbe6a7a7).
415
416## Added
417
418* `TcpSocket::set_linger()` configures SO_LINGER
419  (https://github.com/tokio-rs/mio/commit/3b4096565c1a879f651b8f8282ecdcbdbd5c92d3).
420
421# 0.7.3
422
423## Added
424
425* `TcpSocket` for configuring a TCP socket before connecting or listening
426  (https://github.com/tokio-rs/mio/commit/5b09e60d0f64419b989bda88c86a3147334a03b3).
427
428# 0.7.2
429
430## Added
431
432* Windows named pipe support.
433  (https://github.com/tokio-rs/mio/commit/52e8c2220e87696d20f13561402bcaabba4136ed).
434
435# 0.7.1
436
437## Reduced support for 32-bit Apple targets
438
439In January 2020 Rust reduced its support for 32-bit Apple targets
440(https://blog.rust-lang.org/2020/01/03/reducing-support-for-32-bit-apple-targets.html).
441Starting with v0.7.1 Mio will do the same as we're no longer checking 32 bit
442iOS/macOS on our CI.
443
444## Added
445
446* Support for illumos
447  (https://github.com/tokio-rs/mio/commit/976f2354d0e8fbbb64fba3bf017d7131f9c369a0).
448* Report `epoll(2)`'s `EPOLLERR` event as `Event::is_write_closed` if it's the
449  only event
450  (https://github.com/tokio-rs/mio/commit/0c77b5712d675eeb9bd43928b5dd7d22b2c7ac0c).
451* Optimised event::Iter::{size_hint, count}
452  (https://github.com/tokio-rs/mio/commit/40df934a11b05233a7796c4de19a4ee06bc4e03e).
453
454## Fixed
455
456* Work around Linux kernel < 2.6.37 bug on 32-bits making timeouts longer then
457  ~30 minutes effectively infinite
458  (https://github.com/tokio-rs/mio/commit/d555991f5ee81f6c1eec0fe481557d3d5b8d5ff4).
459* Set `SO_NOSIGPIPE` on all sockets (not just UDP) on for Apple targets
460  (https://github.com/tokio-rs/mio/commit/b8bbdcb0d3236f4c4acb257996d42a88dc9987d9).
461* Properly handle `POLL_ABORT` on Windows
462  (https://github.com/tokio-rs/mio/commit/a98da62b3ed1eeed1770aaca12f46d647e4fa749).
463* Improved error handling around failing `SIO_BASE_HANDLE` calls on Windows
464  (https://github.com/tokio-rs/mio/commit/b15fc18458a79ef8a51f73effa92548650f4e5dc).
465
466## Changed
467
468* On NetBSD we now use `accept4(2)`
469  (https://github.com/tokio-rs/mio/commit/4e306addc7144f2e02a7e8397c220b179a006a19).
470* The package uploaded to crates.io should be slightly smaller
471  (https://github.com/tokio-rs/mio/commit/eef8d3b9500bc0db957cd1ac68ee128ebc68351f).
472
473## Removed
474
475* Dependency on `lazy_static` on Windows
476  (https://github.com/tokio-rs/mio/commit/57e4c2a8ac153bc7bb87829e22cf0a21e3927e8a).
477
478# 0.7.0
479
480Version 0.7 of Mio contains various major changes compared to version 0.6.
481Overall a large number of API changes have been made to reduce the complexity of
482the implementation and remove overhead where possible.
483
484Please refer to the [blog post about
4850.7-alpha.1](https://tokio.rs/blog/2019-12-mio-v0.7-alpha.1/) for additional
486information.
487
488## Added
489
490* `Interest` structure that replaces `Ready` in registering event sources.
491* `Registry` structure that separates the registering and polling functionality.
492* `Waker` structure that allows another thread to wake a thread polling `Poll`.
493* Unix Domain Socket (UDS) types: `UnixDatagram`, `UnixListener` and
494  `UnixStream`.
495
496## Removed
497
498* All code deprecated in 0.6 was removed in 0.7.
499* Support for Fuchsia was removed as the code was unmaintained.
500* Support for Bitrig was removed, rustc dropped support for it also.
501* `UnixReady` was merged into `Ready`.
502* Custom user-space readiness queue was removed, this includes the public
503  `Registration` and `SetReadiness` types.
504* `PollOpt` was removed and all registrations use edge-triggers. See the upgrade
505  guide on how to process event using edge-triggers.
506* The network types (types in the `net` module) now support only the same API as
507  found in the standard library, various methods on the types were removed.
508* `TcpStream` now supports vectored I/O.
509* `Poll::poll_interruptible` was removed. Instead `Poll::poll` will now return
510  an error if one occurs.
511* `From<usize>` is removed from `Token`, the internal field is still public, so
512  `Token(my_token)` can still be used.
513
514## Changed
515
516* Various documentation improvements were made around correct usage of `Poll`
517  and registered event sources. It is recommended to reread the documentation of
518  at least `event::Source` and `Poll`.
519* Mio now uses Rust 2018 and rustfmt for all code.
520* `Event` was changed to be a wrapper around the OS event. This means it can be
521  significantly larger on some OSs.
522* `Ready` was removed and replaced with various `is_*` methods on `Event`. For
523  example instead checking for readable readiness using
524  `Event::ready().is_readable()`, you would call `Event::is_readable()`.
525* `Ready::is_hup` was removed in favour of `Event::is_read_closed` and
526  `Event::is_write_closed`.
527* The Iterator implementation of `Events` was changed to return `&Event`.
528* `Evented` was renamed to `event::Source` and now takes mutable reference to
529  the source.
530* Minimum supported Rust version was increased to 1.39.
531* By default Mio now uses a shim implementation. To enable the full
532  implementation, that uses the OS, enable the `os-oll` feature. To enable the
533  network types use `tcp`, `udp` and/or `uds`. For more documentation on the
534  features see the `feature` module in the API documentation (requires the
535  `extra-docs` feature).
536* The entire Windows implementation was rewritten.
537* Various optimisation were made to reduce the number of system calls in
538  creating and using sockets, e.g. making use of `accept4(2)`.
539* The `fmt::Debug` implementation of `Events` is now actually useful as it
540  prints all `Event`s.
541
542# 0.6.23 (Dec 01, 2020)
543
544### Changed
545- **MSRV**: Increased the MSRV from 1.18.0 (Jun 8, 2017) to 1.31.0 (Dec 6,
546  2018)
547  (https://github.com/tokio-rs/mio/commit/4879e0d32ddfd98e762fc87240e594a3ad8fca30).
548
549### Fixed
550- Work around Linux kernel < 2.6.37 bug on 32-bits making timeouts longer then
551  ~30 minutes effectively infinite
552  (https://github.com/tokio-rs/mio/commit/e7cba59950e9c9fa6194e29b5b1e72029e3df455).
553- Update miow and net2 depedencies to get rid of invalid memory layout assumption
554  (https://github.com/tokio-rs/mio/commit/13f02ac0a86d7c0c0001e5ff8960a0b4340d075c).
555
556# 0.6.22 (May 01, 2020)
557
558### Added
559- Add support for illumos target (#1294)
560
561# 0.6.21 (November 27, 2019)
562
563### Fixed
564- remove `=` dependency on `cfg-if`.
565
566# 0.6.20 (November 21, 2019)
567
568### Fixed
569- Use default IOCP concurrency value (#1161).
570- setting FD_CLOEXEC in pipe (#1095).
571
572# 0.6.19 (May 28, 2018)
573
574### Fixed
575- Do not trigger HUP events on kqueue platforms (#958).
576
577# 0.6.18 (May 24, 2018)
578
579### Fixed
580- Fix compilation on kqueue platforms with 32bit C long (#948).
581
582# 0.6.17 (May 15, 2018)
583
584### Fixed
585- Don't report `RDHUP` as `HUP` (#939)
586- Fix lazycell related compilation issues.
587- Fix EPOLLPRI conflicting with READABLE
588- Abort process on ref count overflows
589
590### Added
591- Define PRI on all targets
592
593# 0.6.16 (September 5, 2018)
594
595* Add EPOLLPRI readiness to UnixReady on supported platforms (#867)
596* Reduce spurious awaken calls (#875)
597
598# 0.6.15 (July 3, 2018)
599
600* Implement `Evented` for containers (#840).
601* Fix android-aarch64 build (#850).
602
603# 0.6.14 (March 8, 2018)
604
605* Add `Poll::poll_interruptible` (#811)
606* Add `Ready::all` and `usize` conversions (#825)
607
608# 0.6.13 (February 5, 2018)
609
610* Fix build on DragonFlyBSD.
611* Add `TcpListener::from_std` that does not require the socket addr.
612* Deprecate `TcpListener::from_listener` in favor of from_std.
613
614# 0.6.12 (January 5, 2018)
615
616* Add `TcpStream::peek` function (#773).
617* Raise minimum Rust version to 1.18.0.
618* `Poll`: retry select() when interrupted by a signal (#742).
619* Deprecate `Events` index access (#713).
620* Add `Events::clear` (#782).
621* Add support for `lio_listio` (#780).
622
623# 0.6.11 (October 25, 2017)
624
625* Allow register to take empty interest (#640).
626* Fix bug with TCP errors on windows (#725).
627* Add TcpListener::accept_std (#733).
628* Update IoVec to fix soundness bug -- includes behavior change. (#747).
629* Minimum Rust version is now 1.14.0.
630* Fix Android x86_64 build.
631* Misc API & doc polish.
632
633# 0.6.10 (July 27, 2017)
634
635* Experimental support for Fuchsia
636* Add `only_v6` option for UDP sockets
637* Fix build on NetBSD
638* Minimum Rust version is now 1.13.0
639* Assignment operators (e.g. `|=`) are now implemented for `Ready`
640
641# 0.6.9 (June 7, 2017)
642
643* More socket options are exposed through the TCP types, brought in through the
644  `net2` crate.
645
646# 0.6.8 (May 26, 2017)
647
648* Support Fuchia
649* POSIX AIO support
650* Fix memory leak caused by Register::new2
651* Windows: fix handling failed TCP connections
652* Fix build on aarch64-linux-android
653* Fix usage of `O_CLOEXEC` with `SETFL`
654
655# 0.6.7 (April 27, 2017)
656
657* Ignore EPIPE coming out of `kevent`
658* Timer thread should exit when timer is dropped.
659
660# 0.6.6 (March 22, 2017)
661
662* Add send(), recv() and connect() to UDPSocket.
663* Fix bug in custom readiness queue
664* Move net types into `net` module
665
666# 0.6.5 (March 14, 2017)
667
668* Misc improvements to kqueue bindings
669* Add official support for iOS, Android, BSD
670* Reimplement custom readiness queue
671* `Poll` is now `Sync`
672* Officially deprecate non-core functionality (timers, channel, etc...)
673* `Registration` now implements `Evented`
674* Fix bug around error conditions with `connect` on windows.
675* Use iovec crate for scatter / gather operations
676* Only support readable and writable readiness on all platforms
677* Expose additional readiness in a platform specific capacity
678
679# 0.6.4 (January 24, 2017)
680
681* Fix compilation on musl
682* Add `TcpStream::from_stream` which converts a std TCP stream to Mio.
683
684# 0.6.3 (January 22, 2017)
685
686* Implement readv/writev for `TcpStream`, allowing vectored reads/writes to
687  work across platforms
688* Remove `nix` dependency
689* Implement `Display` and `Error` for some channel error types.
690* Optimize TCP on Windows through `SetFileCompletionNotificationModes`
691
692# 0.6.2 (December 18, 2016)
693
694* Allow registration of custom handles on Windows (like `EventedFd` on Unix)
695* Send only one byte for the awakener on Unix instead of four
696* Fix a bug in the timer implementation which caused an infinite loop
697
698# 0.6.1 (October 30, 2016)
699
700* Update dependency of `libc` to 0.2.16
701* Fix channel `dec` logic
702* Fix a timer bug around timeout cancellation
703* Don't allocate buffers for TCP reads on Windows
704* Touched up documentation in a few places
705* Fix an infinite looping timer thread on OSX
706* Fix compile on 32-bit OSX
707* Fix compile on FreeBSD
708
709# 0.6.0 (September 2, 2016)
710
711* Shift primary API towards `Poll`
712* `EventLoop` and types to `deprecated` mod. All contents of the
713  `deprecated` mod will be removed by Mio 1.0.
714* Increase minimum supported Rust version to 1.9.0
715* Deprecate unix domain socket implementation in favor of using a
716  version external to Mio. For example: https://github.com/alexcrichton/mio-uds.
717* Remove various types now included in `std`
718* Updated TCP & UDP APIs to match the versions in `std`
719* Enable implementing `Evented` for any type via `Registration`
720* Rename `IoEvent` -> `Event`
721* Access `Event` data via functions vs. public fields.
722* Expose `Events` as a public type that is passed into `Poll`
723* Use `std::time::Duration` for all APIs that require a time duration.
724* Polled events are now retrieved via `Events` type.
725* Implement `std::error::Error` for `TimerError`
726* Relax `Send` bound on notify messages.
727* Remove `Clone` impl for `Timeout` (future proof)
728* Remove `mio::prelude`
729* Remove `mio::util`
730* Remove dependency on bytes
731
732# 0.5.0 (December 3, 2015)
733
734* Windows support (#239)
735* NetBSD support (#306)
736* Android support (#295)
737* Don't re-export bytes types
738* Renamed `EventLoop::register_opt` to `EventLoop::register` (#257)
739* `EventLoopConfig` is now a builder instead of having public struct fields. It
740  is also no longer `Copy`. (#259)
741* `TcpSocket` is no longer exported in the public API (#262)
742* Integrate with net2. (#262)
743* `TcpListener` now returns the remote peer address from `accept` as well (#275)
744* The `UdpSocket::{send_to, recv_from}` methods are no longer generic over `Buf`
745  or `MutBuf` but instead take slices directly. The return types have also been
746  updated to return the number of bytes transferred. (#260)
747* Fix bug with kqueue where an error on registration prevented the
748  changelist from getting flushed (#276)
749* Support sending/receiving FDs over UNIX sockets (#291)
750* Mio's socket types are permanently associated with an EventLoop (#308)
751* Reduce unnecessary poll wakeups (#314)
752
753
754# 0.4.1 (July 21, 2015)
755
756* [BUGFIX] Fix notify channel concurrency bug (#216)
757
758# 0.4.0 (July 16, 2015)
759
760* [BUGFIX] EventLoop::register requests all events, not just readable.
761* [BUGFIX] Attempting to send a message to a shutdown event loop fails correctly.
762* [FEATURE] Expose TCP shutdown
763* [IMPROVEMENT] Coalesce readable & writable into `ready` event (#184)
764* [IMPROVEMENT] Rename TryRead & TryWrite function names to avoid conflict with std.
765* [IMPROVEMENT] Provide TCP and UDP types in Mio (path to windows #155)
766* [IMPROVEMENT] Use clock_ticks crate instead of time (path to windows #155)
767* [IMPROVEMENT] Move unix specific features into mio::unix module
768* [IMPROVEMENT] TcpListener sets SO_REUSEADDR by default
769