Mio is a low-level I/O library for Rust that provides non-blocking APIs and event notification for building high-performance I/O applications.
Mio addresses the need for minimal-overhead access to operating system I/O primitives by wrapping platform-specific event notification systems. It abstracts over epoll on Linux, kqueue on BSD variants, IOCP on Windows, and other OS-specific mechanisms, presenting a unified interface through its Poll type. The library guarantees zero allocations at runtime and focuses exclusively on the core I/O abstraction layer, leaving higher-level concerns to the application or other libraries.
Mio is suited for developers building custom I/O frameworks or applications where fine-grained control over event handling is essential. It explicitly targets use cases requiring maximum performance with minimal overhead over raw OS abstractions. The README positions Mio as a low-level foundation and recommends Tokio for developers seeking a higher-level, easier-to-use async runtime. The tool supports non-blocking TCP, UDP, and Unix domain sockets across a broad range of platforms including Linux, macOS, Windows, BSD variants, Android, iOS, and others. Platform-specific extensions are available for developers needing access to OS-particular capabilities.
The project maintains a fixed minimum supported Rust version policy per minor release series, allowing version bumps to increase the MSRV while enabling users on older toolchains to remain on earlier minor versions. The tool provides unsupported configuration flags to force alternative implementations of core functionality on platforms where they differ from the default, acknowledging that some use cases may require non-optimal implementations for compatibility reasons. Community discussion occurs on Discord alongside standard GitHub issue tracking for questions, bug reports, and feature requests.