NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #51 most downloaded on crates.io
Lightweight non-blocking I/O.
Last release 4 days ago
03 Oct 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 56 of the last 60 stable releases
8 versions withdrawn
withdrawn after publishing
12 years old
81 releases · first in 2014
Co-authored-by: Thomas de Zeeuw thomasdezeeuw@gmail.com
Co-authored-by: Thomas de Zeeuw thomasdezeeuw@gmail.com
Release v1.2.3
Release v1.2.3 (#2007)
One column per quarter.
poll(2) implementation
(https://github.com/tokio-rs/mio/pull/1998).EVFILT_USER based
Waker, one that was already used on FreeBSD and macOS
(https://github.com/tokio-rs/mio/pull/1993).Add support for Solaris using event ports (https://github.com/tokio-rs/mio/pull/1962).
poll(2)
(https://github.com/tokio-rs/mio/pull/1966).Add support for horizonOS/n3ds (https://github.com/tokio-rs/mio/pull/1951).
WSA_FLAG_NO_HANDLE_INHERIT for socket creation
(https://github.com/tokio-rs/mio/pull/1946).NamedPipe::connect
(https://github.com/tokio-rs/mio/pull/1954).Support was added for WASM Preview 2 (https://github.com/tokio-rs/mio/pull/1931).
AsFd for Registry
(https://github.com/tokio-rs/mio/pull/1936).Handle ERROR_MORE_DATA when scheduling reads for Window named pipes (https://github.com/tokio-rs/mio/pull/1921).
ERROR_MORE_DATA when scheduling reads for Window named pipes
(https://github.com/tokio-rs/mio/pull/1921).Update to v1.1.0
Update to v1.1.0 (#1909)
MSRV was increased to 1.71 to support windows-sys v0.61.
TcpStream::peek returned WouldBlock the events would
stop working correctly
(https://github.com/tokio-rs/mio/pull/1895).Event Send and Sync on platforms using kqueue
(https://github.com/tokio-rs/mio/pull/1906).unreachable! code in NamedPipe
(https://github.com/tokio-rs/mio/pull/1903).Update windows-sys to 0.59 (https://github.com/tokio-rs/mio/pull/1857).
Release v1.0.3
Release v1.0.3 (#1843)
poll(2) implementation on AIX, removing the need for using
mio_unsupported_force_poll_poll
(https://github.com/tokio-rs/mio/pull/1833).Work around eventfd bug on illumos (https://github.com/tokio-rs/mio/pull/1826).
--no-default-features --features os-ext
(https://github.com/tokio-rs/mio/pull/1828).Added Fuchsia support (https://github.com/tokio-rs/mio/pull/1811).
cfg situations easier to follow
(https://github.com/tokio-rs/mio/pull/1812,
https://github.com/tokio-rs/mio/pull/1813).Nothing published for this version
Fix receiving IOCP events after deregistering a Windows named pipe (https://github.com/tokio-rs/mio/pull/1760, backport pr: https://github.com/tokio-r
Solaris support (https://github.com/tokio-rs/mio/pull/1724).
ESP-IDF framework support (https://github.com/tokio-rs/mio/pull/1692).
{UnixListener,UnixStream}:bind_addr
(https://github.com/tokio-rs/mio/pull/1630).mio_unsupported_force_poll_poll and mio_unsupported_force_waker_pipe
unsupported configuration flags to force a specific poll or waker
implementation
(https://github.com/tokio-rs/mio/pull/1684,
https://github.com/tokio-rs/mio/pull/1685,
https://github.com/tokio-rs/mio/pull/1692).pipe(2) based waker (swapped file descriptors)
(https://github.com/tokio-rs/mio/pull/1722).Registrys.
(https://github.com/tokio-rs/mio/pull/1706).Fix compilation on WASI (https://github.com/tokio-rs/mio/pull/1676).
Add/fix support for tvOS and watchOS, Mio should now build for tvOS and watchOS, but we don't have a CI setup yet (https://github.com/tokio-rs/mio/pul
log dependency optional behind the log feature flag (enabled by
default). Users that disabled Mio's default features will now not see any
logging from Mio, enabling the log feature will fix that. This was done in
response to the log crate increasing it's MSRV to v1.60, see
https://github.com/rust-lang/log/pull/552
(https://github.com/tokio-rs/mio/pull/1673).Poll::poll when using Duration::MAX as timeout
(https://github.com/tokio-rs/mio/pull/1657).Interest::PRIORITY on Linux and Android, to trigger Event::is_priority (https://github.com/tokio-rs/mio/pull/1647).
Interest::PRIORITY on Linux and Android, to trigger Event::is_priority
(https://github.com/tokio-rs/mio/pull/1647).Poll::poll
(https://github.com/tokio-rs/mio/pull/1642).Updated windows-sys to 0.42.0 (https://github.com/tokio-rs/mio/pull/1624).
windows-sys to 0.42.0
(https://github.com/tokio-rs/mio/pull/1624).epoll\_create1 on Android API level < 21.
(https://github.com/tokio-rs/mio/pull/1590).Support Registery::try_clone on wasm32-wasi (https://github.com/tokio-rs/mio/pull/1576).
Registery::try_clone on wasm32-wasi
(https://github.com/tokio-rs/mio/pull/1576).Replace winapi dependency with windows-sys. (https://github.com/tokio-rs/mio/pull/1556).
winapi dependency with windows-sys.
(https://github.com/tokio-rs/mio/pull/1556).TcpStream::connect
(https://github.com/tokio-rs/mio/pull/1565).Experimental support for Redox.
Add try_io method to all I/O types (#1551). This execute a user defined I/O closure while updating Mio's internal state ensuring that the I/O type rec
try_io method to all I/O types (#1551). This execute a user defined I/O
closure while updating Mio's internal state ensuring that the I/O type
receives more events if it hits a WouldBlock error. This is added to the
following types:
TcpStreamUdpSocketUnixDatagramUnixStreamunix::pipe::Senderunix::pipe::Receiverwasm32-wasi target (#1549). Note that a lot
of time type are still missing, e.g. the Waker, and may never be possible to
implement.Deprecated features (https://github.com/tokio-rs/mio/commit/105f8f2afb57b01ddea716a0aa9720f226c520e3):
TcpSocket type
(https://github.com/tokio-rs/mio/commit/02e9be41f27daf822575444fdd2b3067433a5996).
The socket2 crate provides all the functionality and more.UdpSocket::peer_addr
(https://github.com/tokio-rs/mio/commit/5fc104d08e0e74c8a19247f7cba0f058699fc438).Remove use unsound internal macro (#1519).
sys::unix::SocketAddr::as_abstract_namespace() (#1520).Fix Registry::try_clone invalid usage of F_DUPFD_CLOEXEC (#1497, https://github.com/tokio-rs/mio/commit/2883f5c1f35bf1a59682c5ffc4afe6b97d7d6e68).
Registry::try_clone invalid usage of F_DUPFD_CLOEXEC (#1497,
https://github.com/tokio-rs/mio/commit/2883f5c1f35bf1a59682c5ffc4afe6b97d7d6e68).Set FD_CLOEXEC when calling Registry::try_clone (https://github.com/tokio-rs/mio/commit/d1617b567ff6bc669d71e367d22e0e93ff7e2e24 for epoll and (https:
FD_CLOEXEC when calling Registry::try_clone
(https://github.com/tokio-rs/mio/commit/d1617b567ff6bc669d71e367d22e0e93ff7e2e24 for epoll and
(https://github.com/tokio-rs/mio/commit/b367a05e408ca90a26383c3aa16d8a16f019dc59 for kqueue).Fix missing feature of winapi. (https://github.com/tokio-rs/mio/commit/a7e61db9e3c2b929ef1a33532bfcc22045d163ce).
Fix an instance of not doc(cfg(.*)) (https://github.com/tokio-rs/mio/commit/25e8f911357c740034f10a170dfa4ea1b28234ce).
Fix error handling in NamedPipe::write (https://github.com/tokio-rs/mio/commit/aec872be9732e5c6685100674278be27f54a271b).
NamedPipe::write
(https://github.com/tokio-rs/mio/commit/aec872be9732e5c6685100674278be27f54a271b).accept(2) on x86 Android instead of accept4(2)
(https://github.com/tokio-rs/mio/commit/6f86b925d3e48f30905d5cfa54348acf3f1fa036,
https://github.com/tokio-rs/mio/commit/8d5414880ab82178305ac1d2c16d715e58633d3e).Fix TcpStream::set_linger on macOS (https://github.com/tokio-rs/mio/commit/175773ce02e85977db81224c782c8d140aba8543).
TcpStream::set_linger on macOS
(https://github.com/tokio-rs/mio/commit/175773ce02e85977db81224c782c8d140aba8543).UdpSocket::only_v6 (https://github.com/tokio-rs/mio/commit/0101e05a800f17fb88f4315d9b9fe0f08cca6e57).
UdpSocket::only_v6
(https://github.com/tokio-rs/mio/commit/0101e05a800f17fb88f4315d9b9fe0f08cca6e57).Clone implementation for Event
(https://github.com/tokio-rs/mio/commit/26540ebbae89df6d4d08465c56f715d8f2addfc3).AsRawFd implementation for Registry
(https://github.com/tokio-rs/mio/commit/f70daa72da0042b1880256164774c3286d315a02).Read and Write implementation for &unix::pipe::Sender and Receiver,
that is on the reference to them, an implementation existed on the types
themselves already
(https://github.com/tokio-rs/mio/commit/1be481dcbbcb6906364008b5d61e7f53cddc3eb3).SocketAddr::address
(https://github.com/tokio-rs/mio/commit/6d3fa69240cd4bb95e9d34605c660c30245a18bd).Waker::wake works on illumos systems with poor pipe(2) and
epoll(2) interaction using EPOLLET
(https://github.com/tokio-rs/mio/commit/943d4249dcc17cd8b4d2250c4fa19116097248fa).unix::pipe on illumos
(https://github.com/tokio-rs/mio/commit/0db49f6d5caf54b12176821363d154384357e70a).net feature, replaces tcp, udp and uds features (https://github.com/tokio-rs/mio/commit/a301ba520a8479b459c4acdcefa4a7c5eea818c7).
net feature, replaces tcp, udp and uds features
(https://github.com/tokio-rs/mio/commit/a301ba520a8479b459c4acdcefa4a7c5eea818c7).os-ext feature, replaces os-util and pipe features
(https://github.com/tokio-rs/mio/commit/f5017fae8a3d3bb4b4cada25b01a2d76a406badc).TcpSocket
(https://github.com/tokio-rs/mio/commit/290c43a96662d54ab7c4b8814e5a9f9a9e523fda).TcpSocket::set_{send, recv}_buffer_size
(https://github.com/tokio-rs/mio/commit/40c4af79bf5b32b8fbdbf6f2e5c16290e1d3d406).TcpSocket::get_linger
(https://github.com/tokio-rs/mio/commit/13e82ced655bbb6e2729226e485a7de9f2c2ccd9).IntoRawFd for TcpSocket
(https://github.com/tokio-rs/mio/commit/50548ed45d0b2c98f1f2e003e210d14195284ef4).tcp, udp and uds features, replaced by a new net feature.
(https://github.com/tokio-rs/mio/commit/a301ba520a8479b459c4acdcefa4a7c5eea818c7).extra-docs feature, now enabled by default.
(https://github.com/tokio-rs/mio/commit/25731e8688a2d91c5c700674a2c2d3841240ece1).os-util and pipe features, replaced by a new os-ext feature.
(https://github.com/tokio-rs/mio/commit/f5017fae8a3d3bb4b4cada25b01a2d76a406badc).std::net::SocketAddr. Previously Mio
would assume that SocketAddrV{4,6} had the same layout as
libc::sockaddr_in(6), however this is not guaranteed by the standard
library.
(https://github.com/tokio-rs/mio/commit/152e0751f0be1c9b0cbd6778645b76bcb0eba93c).TcpSocket::get_localaddr() retrieves local address (https://github.com/tokio-rs/mio/commit/b41a022b2242eef1969c70c8ba93e04c528dba47).
TcpSocket::get_localaddr() retrieves local address
(https://github.com/tokio-rs/mio/commit/b41a022b2242eef1969c70c8ba93e04c528dba47).TcpSocket::set_reuseport() & TcpSocket::get_reuseport() configures and reads SO_REUSEPORT
(https://github.com/tokio-rs/mio/commit/183bbe409ab69cbf9db41d0263b41ec86202d9a0).unix:pipe() a wrapper around pipe(2) sys call
(https://github.com/tokio-rs/mio/commit/2b7c0967a7362303946deb3d4ca2ae507af6c72d).Interest:remove()
(https://github.com/tokio-rs/mio/commit/b8639c3d9ac07bb7e2e27685680c8a6510fa1357).lost "socket closed" events on windows (https://github.com/tokio-rs/mio/commit/50c299aca56c4a26e5ed20c283007239fbe6a7a7).
TcpSocket::set_linger() configures SO_LINGER
(https://github.com/tokio-rs/mio/commit/3b4096565c1a879f651b8f8282ecdcbdbd5c92d3).TcpSocket for configuring a TCP socket before connecting or listening (https://github.com/tokio-rs/mio/commit/5b09e60d0f64419b989bda88c86a3147334a03b3
TcpSocket for configuring a TCP socket before connecting or listening
(https://github.com/tokio-rs/mio/commit/5b09e60d0f64419b989bda88c86a3147334a03b3).Windows named pipe support. (https://github.com/tokio-rs/mio/commit/52e8c2220e87696d20f13561402bcaabba4136ed).
In January 2020 Rust reduced its support for 32-bit Apple targets (https://blog.rust-lang.org/2020/01/03/reducing-support-for-32-bit-apple-targets.htm
In January 2020 Rust reduced its support for 32-bit Apple targets (https://blog.rust-lang.org/2020/01/03/reducing-support-for-32-bit-apple-targets.html). Starting with v0.7.1 Mio will do the same as we're no longer checking 32 bit iOS/macOS on our CI.
epoll(2)'s EPOLLERR event as Event::is_write_closed if it's the
only event
(https://github.com/tokio-rs/mio/commit/0c77b5712d675eeb9bd43928b5dd7d22b2c7ac0c).SO_NOSIGPIPE on all sockets (not just UDP) on for Apple targets
(https://github.com/tokio-rs/mio/commit/b8bbdcb0d3236f4c4acb257996d42a88dc9987d9).POLL_ABORT on Windows
(https://github.com/tokio-rs/mio/commit/a98da62b3ed1eeed1770aaca12f46d647e4fa749).SIO_BASE_HANDLE calls on Windows
(https://github.com/tokio-rs/mio/commit/b15fc18458a79ef8a51f73effa92548650f4e5dc).accept4(2)
(https://github.com/tokio-rs/mio/commit/4e306addc7144f2e02a7e8397c220b179a006a19).lazy_static on Windows
(https://github.com/tokio-rs/mio/commit/57e4c2a8ac153bc7bb87829e22cf0a21e3927e8a).All code deprecated in 0.6 was removed in 0.7.
Version 0.7 of Mio contains various major changes compared to version 0.6. Overall a large number of API changes have been made to reduce the complexity of the implementation and remove overhead where possible.
Please refer to the blog post about 0.7-alpha.1 for additional information.
Interest structure that replaces Ready in registering event sources.Registry structure that separates the registering and polling functionality.Waker structure that allows another thread to wake a thread polling Poll.UnixDatagram, UnixListener and
UnixStream.UnixReady was merged into Ready.Registration and SetReadiness types.PollOpt was removed and all registrations use edge-triggers. See the upgrade
guide on how to process event using edge-triggers.net module) now support only the same API as
found in the standard library, various methods on the types were removed.TcpStream now supports vectored I/O.Poll::poll_interruptible was removed. Instead Poll::poll will now return
an error if one occurs.From<usize> is removed from Token, the internal field is still public, so
Token(my_token) can still be used.Poll
and registered event sources. It is recommended to reread the documentation of
at least event::Source and Poll.Event was changed to be a wrapper around the OS event. This means it can be
significantly larger on some OSs.Ready was removed and replaced with various is_* methods on Event. For
example instead checking for readable readiness using
Event::ready().is_readable(), you would call Event::is_readable().Ready::is_hup was removed in favour of Event::is_read_closed and
Event::is_write_closed.Events was changed to return &Event.Evented was renamed to event::Source and now takes mutable reference to
the source.os-oll feature. To enable the
network types use tcp, udp and/or uds. For more documentation on the
features see the feature module in the API documentation (requires the
extra-docs feature).accept4(2).fmt::Debug implementation of Events is now actually useful as it
prints all Events.Nothing published for this version
MSRV: Increased the MSRV from 1.18.0 (Jun 8, 2017) to 1.31.0 (Dec 6, 2018) (https://github.com/tokio-rs/mio/commit/4879e0d32ddfd98e762fc87240e594a3ad8
### Added - Add support for illumos target
### Fixed - remove = dependency on cfg-if.
= dependency on cfg-if.Use default IOCP concurrency value (#1161).
Do not trigger HUP events on kqueue platforms (#958).
Fix compilation on kqueue platforms with 32bit C long (#948).
Fix lazycell related compilation issues.
RDHUP as HUP (#939)Add EPOLLPRI readiness to UnixReady on supported platforms
Implement Evented for containers (#840).
Evented for containers (#840).Add Ready::all and usize conversions
Poll::poll_interruptible (#811)Ready::all and usize conversions (#825)Deprecate TcpListener::from_listener in favor of from_std.
TcpListener::from_std that does not require the socket addr.TcpListener::from_listener in favor of from_std.Deprecate Events index access (#713).
TcpStream::peek function (#773).Poll: retry select() when interrupted by a signal (#742).Events index access (#713).Events::clear (#782).lio_listio (#780).Allow register to take empty interest (#640).
Experimental support for Fuchsia
only_v6 option for UDP sockets|=) are now implemented for ReadyMore socket options are exposed through the TCP types, brought in through the net2 crate.
net2 crate.Fix memory leak caused by Register::new2
O_CLOEXEC with SETFLIgnore EPIPE coming out of kevent
keventAdd send(), recv() and connect() to UDPSocket.
net moduleOfficially deprecate non-core functionality (timers, channel, etc...)
Poll is now SyncRegistration now implements Eventedconnect on windows.Add TcpStream::from_stream which converts a std TCP stream to Mio.
TcpStream::from_stream which converts a std TCP stream to Mio.Your coding agent can read these notes before it upgrades. Set up the MCP server →