- The
join_multicast_v4
andleave_multicast_v4
methods now take theirIpv4Addr
arguments by value rather than by reference. - Fix lazycell related compilation issues.
- Do not trigger HUP events on kqueue platforms (#958).
- Fix compilation on kqueue platforms with 32bit C long (#948).
- Don't report
RDHUP
asHUP
(#939) - Fix lazycell related compilation issues.
- Fix EPOLLPRI conflicting with READABLE
- Abort process on ref count overflows
- Define PRI on all targets
- Add EPOLLPRI readiness to UnixReady on supported platforms (#867)
- Reduce spurious awaken calls (#875)
- Implement
Evented
for containers (#840). - Fix android-aarch64 build (#850).
- Add
Poll::poll_interruptible
(#811) - Add
Ready::all
andusize
conversions (#825)
- Fix build on DragonFlyBSD.
- Add
TcpListener::from_std
that does not require the socket addr. - Deprecate
TcpListener::from_listener
in favor of from_std.
- Add
TcpStream::peek
function (#773). - Raise minimum Rust version to 1.18.0.
Poll
: retry select() when interrupted by a signal (#742).- Deprecate
Events
index access (#713). - Add
Events::clear
(#782). - Add support for
lio_listio
(#780).
- Allow register to take empty interest (#640).
- Fix bug with TCP errors on windows (#725).
- Add TcpListener::accept_std (#733).
- Update IoVec to fix soundness bug -- includes behavior change. (#747).
- Minimum Rust version is now 1.14.0.
- Fix Android x86_64 build.
- Misc API & doc polish.
- Experimental support for Fuchsia
- Add
only_v6
option for UDP sockets - Fix build on NetBSD
- Minimum Rust version is now 1.13.0
- Assignment operators (e.g.
|=
) are now implemented forReady
- More socket options are exposed through the TCP types, brought in through the
net2
crate.
- Support Fuchia
- POSIX AIO support
- Fix memory leak caused by Register::new2
- Windows: fix handling failed TCP connections
- Fix build on aarch64-linux-android
- Fix usage of
O_CLOEXEC
withSETFL
- Ignore EPIPE coming out of
kevent
- Timer thread should exit when timer is dropped.
- Add send(), recv() and connect() to UDPSocket.
- Fix bug in custom readiness queue
- Move net types into
net
module
- Misc improvements to kqueue bindings
- Add official support for iOS, Android, BSD
- Reimplement custom readiness queue
Poll
is nowSync
- Officially deprecate non-core functionality (timers, channel, etc...)
Registration
now implementsEvented
- Fix bug around error conditions with
connect
on windows. - Use iovec crate for scatter / gather operations
- Only support readable and writable readiness on all platforms
- Expose additional readiness in a platform specific capacity
- Fix compilation on musl
- Add
TcpStream::from_stream
which converts a std TCP stream to Mio.
- Implement readv/writev for
TcpStream
, allowing vectored reads/writes to work across platforms - Remove
nix
dependency - Implement
Display
andError
for some channel error types. - Optimize TCP on Windows through
SetFileCompletionNotificationModes
- Allow registration of custom handles on Windows (like
EventedFd
on Unix) - Send only one byte for the awakener on Unix instead of four
- Fix a bug in the timer implementation which caused an infinite loop
- Update dependency of
libc
to 0.2.16 - Fix channel
dec
logic - Fix a timer bug around timeout cancellation
- Don't allocate buffers for TCP reads on Windows
- Touched up documentation in a few places
- Fix an infinite looping timer thread on OSX
- Fix compile on 32-bit OSX
- Fix compile on FreeBSD
- Shift primary API towards
Poll
EventLoop
and types todeprecated
mod. All contents of thedeprecated
mod will be removed by Mio 1.0.- Increase minimum supported Rust version to 1.9.0
- Deprecate unix domain socket implementation in favor of using a version external to Mio. For example: https://github.com/alexcrichton/mio-uds.
- Remove various types now included in
std
- Updated TCP & UDP APIs to match the versions in
std
- Enable implementing
Evented
for any type viaRegistration
- Rename
IoEvent
->Event
- Access
Event
data via functions vs. public fields. - Expose
Events
as a public type that is passed intoPoll
- Use
std::time::Duration
for all APIs that require a time duration. - Polled events are now retrieved via
Events
type. - Implement
std::error::Error
forTimerError
- Relax
Send
bound on notify messages. - Remove
Clone
impl forTimeout
(future proof) - Remove
mio::prelude
- Remove
mio::util
- Remove dependency on bytes
- Windows support (#239)
- NetBSD support (#306)
- Android support (#295)
- Don't re-export bytes types
- Renamed
EventLoop::register_opt
toEventLoop::register
(#257) EventLoopConfig
is now a builder instead of having public struct fields. It is also no longerCopy
. (#259)TcpSocket
is no longer exported in the public API (#262)- Integrate with net2. (#262)
TcpListener
now returns the remote peer address fromaccept
as well (#275)- The
UdpSocket::{send_to, recv_from}
methods are no longer generic overBuf
orMutBuf
but instead take slices directly. The return types have also been updated to return the number of bytes transferred. (#260) - Fix bug with kqueue where an error on registration prevented the changelist from getting flushed (#276)
- Support sending/receiving FDs over UNIX sockets (#291)
- Mio's socket types are permanently associated with an EventLoop (#308)
- Reduce unnecessary poll wakeups (#314)
- [BUGFIX] Fix notify channel concurrency bug (#216)
- [BUGFIX] EventLoop::register requests all events, not just readable.
- [BUGFIX] Attempting to send a message to a shutdown event loop fails correctly.
- [FEATURE] Expose TCP shutdown
- [IMPROVEMENT] Coalesce readable & writable into
ready
event (#184) - [IMPROVEMENT] Rename TryRead & TryWrite function names to avoid conflict with std.
- [IMPROVEMENT] Provide TCP and UDP types in Mio (path to windows #155)
- [IMPROVEMENT] Use clock_ticks crate instead of time (path to windows #155)
- [IMPROVEMENT] Move unix specific features into mio::unix module
- [IMPROVEMENT] TcpListener sets SO_REUSEADDR by default