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