22 KiB
22 KiB
0.8.8
Fixed
- Fix compilation on WASI (https://github.com/tokio-rs/mio/pull/1676).
0.8.7
Added
- 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/pull/1658).
Changed
- Made the
logdependency optional behind thelogfeature flag (enabled by default). Users that disabled Mio's default features will now not see any logging from Mio, enabling thelogfeature will fix that. This was done in response to thelogcrate increasing it's MSRV to v1.60, see https://github.com/rust-lang/log/pull/552 (https://github.com/tokio-rs/mio/pull/1673). - Update windows-sys dependency to v0.48 (https://github.com/tokio-rs/mio/pull/1663).
Fixed
- Fix overflow in
Poll::pollwhen usingDuration::MAXas timeout (https://github.com/tokio-rs/mio/pull/1657).
0.8.6
Added
Interest::PRIORITYon Linux and Android, to triggerEvent::is_priority(https://github.com/tokio-rs/mio/pull/1647).
Changed
- Updated windows-sys to 0.45 (https://github.com/tokio-rs/mio/pull/1644).
- We started testing with sanitizers on the CI (https://github.com/tokio-rs/mio/pull/1648).
Fixed
- A number of potential fd leaks when setup resulted in an error right after creation (https://github.com/tokio-rs/mio/pull/1636).
- Less truncating for timeout values in
Poll::poll(https://github.com/tokio-rs/mio/pull/1642).
0.8.5
Changed
- Updated
windows-systo 0.42.0 (https://github.com/tokio-rs/mio/pull/1624). - Officially document Wine as not supported, some people claimed it worked, other claims it doesn't, but nobody stepped up to fix the problem (https://github.com/tokio-rs/mio/pull/1596).
- Switch to GitHub Actions (https://github.com/tokio-rs/mio/pull/1598, https://github.com/tokio-rs/mio/pull/1601).
- Documented the current Poll::poll time behaviour (https://github.com/tokio-rs/mio/pull/1603).
Fixed
- Timeout less than one millisecond becoming zero millsiconds (https://github.com/tokio-rs/mio/pull/1615, https://github.com/tokio-rs/mio/pull/1616)
- Undefined reference to
epoll\_create1on Android API level < 21. (https://github.com/tokio-rs/mio/pull/1590).
0.8.4
Added
- Support
Registery::try_cloneonwasm32-wasi(https://github.com/tokio-rs/mio/pull/1576). - Add docs about polling without registering event sources (https://github.com/tokio-rs/mio/pull/1585).
0.8.3
Changed
- Replace
winapidependency withwindows-sys. (https://github.com/tokio-rs/mio/pull/1556). - Future proofed the kevent ABI for FreeBSD (https://github.com/tokio-rs/mio/pull/1572).
Fixed
- Improved support for Redox, making it possible to run on stable Rust (https://github.com/tokio-rs/mio/pull/1555).
- Don't ignore EAGAIN in UDS connect call (https://github.com/tokio-rs/mio/pull/1564).
- Documentation of
TcpStream::connect(https://github.com/tokio-rs/mio/pull/1565).
0.8.2
Added
- Experimental support for Redox.
0.8.1
Added
- Add
try_iomethod 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::Receiver
- Basic, experimental support for
wasm32-wasitarget (#1549). Note that a lot of time type are still missing, e.g. theWaker, and may never be possible to implement.
0.8.0
Removed
- Deprecated features (
105f8f2afb):- extra-docs (always enabled)
- tcp (replaced with "net" feature).
- udp (replaced with "net" feature).
- uds (replaced with "net" feature).
- pipe (replaced with "os-ext" feature).
- os-util (replaced with "os-ext" feature).
TcpSockettype (02e9be41f2). The socket2 crate provides all the functionality and more.- Support for Solaris, it never really worked anyway (https://github.com/tokio-rs/mio/pull/1528).
Changes
- Update minimum Rustc version (MSVR) to 1.46.0
(
5c577efecd).
Added
UdpSocket::peer_addr(5fc104d08e).
0.7.14
Fixes
- Remove use unsound internal macro (#1519).
Added
sys::unix::SocketAddr::as_abstract_namespace()(#1520).
0.7.13
Fixes
- Fix
Registry::try_cloneinvalid usage ofF_DUPFD_CLOEXEC(#1497,2883f5c1f3).
0.7.12 (yanked)
Fixes
- Set
FD_CLOEXECwhen callingRegistry::try_clone(d1617b567ffor epoll and (b367a05e40for kqueue).
0.7.11
Fixes
- Fix missing feature of winapi.
(
a7e61db9e3).
0.7.10
Fixes
- Fix an instance of not doc(cfg(.*))
(
25e8f91135).
0.7.9
Fixes
- Fix error handling in
NamedPipe::write(aec872be97). - Use
accept(2)on x86 Android instead ofaccept4(2)(6f86b925d3,8d5414880a). - Improve error message when opening AFD device
(
139f7c4422).
0.7.8
Fixes
- Fix
TcpStream::set_lingeron macOS (175773ce02). - Fix compilation on DragonFlyBSD
(
b51af46b28).
0.7.7
Added
UdpSocket::only_v6(0101e05a80).Cloneimplementation forEvent(26540ebbae).AsRawFdimplementation forRegistry(f70daa72da).ReadandWriteimplementation for&unix::pipe::SenderandReceiver, that is on the reference to them, an implementation existed on the types themselves already (1be481dcbb).
Fixes
- Underflow in
SocketAddr::address(6d3fa69240). - Android build with the net feature enabled, but with os-poll disabled
(
49d8fd33e0). - Solaris build with the net feature enabled, but with os-poll disabled
(
a6e025e9d9). - Ensure that
Waker::wakeworks on illumos systems with poorpipe(2)andepoll(2)interaction usingEPOLLET(943d4249dc). - Fix
unix::pipeon illumos (0db49f6d5c).
0.7.6
Added
netfeature, replacestcp,udpandudsfeatures (a301ba520a).os-extfeature, replacesos-utilandpipefeatures (f5017fae8a).- Added keepalive support to
TcpSocket(290c43a966). TcpSocket::set_{send, recv}_buffer_size(40c4af79bf).TcpSocket::get_linger(13e82ced65).- Implement
IntoRawFdforTcpSocket(50548ed45d).
Deprecated
- The
tcp,udpandudsfeatures, replaced by a newnetfeature. (a301ba520a). - The
extra-docsfeature, now enabled by default. (25731e8688). - The
os-utilandpipefeatures, replaced by a newos-extfeature. (f5017fae8a).
Fixes
- Incorrect assumption of the layout of
std::net::SocketAddr. Previously Mio would assume thatSocketAddrV{4,6}had the same layout aslibc::sockaddr_in(6), however this is not guaranteed by the standard library. (152e0751f0). - Also bumped the miow dependency to version 0.3.6 to solve the same problem as above.
0.7.5
Added
TcpSocket::get_localaddr()retrieves local address (b41a022b22).TcpSocket::set_reuseport()&TcpSocket::get_reuseport()configures and readsSO_REUSEPORT(183bbe409a).unix:pipe()a wrapper around pipe(2) sys call (2b7c0967a7).- Add a check that a single Waker is active per Poll instance (only in debug mode)
(
f4874f28b3). - Added
Interest:remove()(b8639c3d9a).
0.7.4
Fixes
- lost "socket closed" events on windows
(
50c299aca5).
Added
TcpSocket::set_linger()configures SO_LINGER (3b4096565c).
0.7.3
Added
TcpSocketfor configuring a TCP socket before connecting or listening (5b09e60d0f).
0.7.2
Added
- Windows named pipe support.
(
52e8c2220e).
0.7.1
Reduced support for 32-bit Apple targets
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.
Added
- Support for illumos
(
976f2354d0). - Report
epoll(2)'sEPOLLERRevent asEvent::is_write_closedif it's the only event (0c77b5712d). - Optimised event::Iter::{size_hint, count}
(
40df934a11).
Fixed
- Work around Linux kernel < 2.6.37 bug on 32-bits making timeouts longer then
~30 minutes effectively infinite
(
d555991f5e). - Set
SO_NOSIGPIPEon all sockets (not just UDP) on for Apple targets (b8bbdcb0d3). - Properly handle
POLL_ABORTon Windows (a98da62b3e). - Improved error handling around failing
SIO_BASE_HANDLEcalls on Windows (b15fc18458).
Changed
- On NetBSD we now use
accept4(2)(4e306addc7). - The package uploaded to crates.io should be slightly smaller
(
eef8d3b950).
Removed
- Dependency on
lazy_staticon Windows (57e4c2a8ac).
0.7.0
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.
Added
Intereststructure that replacesReadyin registering event sources.Registrystructure that separates the registering and polling functionality.Wakerstructure that allows another thread to wake a thread pollingPoll.- Unix Domain Socket (UDS) types:
UnixDatagram,UnixListenerandUnixStream.
Removed
- All code deprecated in 0.6 was removed in 0.7.
- Support for Fuchsia was removed as the code was unmaintained.
- Support for Bitrig was removed, rustc dropped support for it also.
UnixReadywas merged intoReady.- Custom user-space readiness queue was removed, this includes the public
RegistrationandSetReadinesstypes. PollOptwas removed and all registrations use edge-triggers. See the upgrade guide on how to process event using edge-triggers.- The network types (types in the
netmodule) now support only the same API as found in the standard library, various methods on the types were removed. TcpStreamnow supports vectored I/O.Poll::poll_interruptiblewas removed. InsteadPoll::pollwill now return an error if one occurs.From<usize>is removed fromToken, the internal field is still public, soToken(my_token)can still be used.
Changed
- Various documentation improvements were made around correct usage of
Polland registered event sources. It is recommended to reread the documentation of at leastevent::SourceandPoll. - Mio now uses Rust 2018 and rustfmt for all code.
Eventwas changed to be a wrapper around the OS event. This means it can be significantly larger on some OSes.Readywas removed and replaced with variousis_*methods onEvent. For example instead checking for readable readiness usingEvent::ready().is_readable(), you would callEvent::is_readable().Ready::is_hupwas removed in favour ofEvent::is_read_closedandEvent::is_write_closed.- The Iterator implementation of
Eventswas changed to return&Event. Eventedwas renamed toevent::Sourceand now takes mutable reference to the source.- Minimum supported Rust version was increased to 1.39.
- By default Mio now uses a shim implementation. To enable the full
implementation, that uses the OS, enable the
os-ollfeature. To enable the network types usetcp,udpand/oruds. For more documentation on the features see thefeaturemodule in the API documentation (requires theextra-docsfeature). - The entire Windows implementation was rewritten.
- Various optimisation were made to reduce the number of system calls in
creating and using sockets, e.g. making use of
accept4(2). - The
fmt::Debugimplementation ofEventsis now actually useful as it prints allEvents.
0.6.23 (Dec 01, 2020)
Changed
- MSRV: Increased the MSRV from 1.18.0 (Jun 8, 2017) to 1.31.0 (Dec 6,
2018)
(
4879e0d32d).
Fixed
- Work around Linux kernel < 2.6.37 bug on 32-bits making timeouts longer then
~30 minutes effectively infinite
(
e7cba59950). - Update miow and net2 depedencies to get rid of invalid memory layout assumption
(
13f02ac0a8).
0.6.22 (May 01, 2020)
Added
- Add support for illumos target (#1294)
0.6.21 (November 27, 2019)
Fixed
- remove
=dependency oncfg-if.
0.6.20 (November 21, 2019)
Fixed
- Use default IOCP concurrency value (#1161).
- setting FD_CLOEXEC in pipe (#1095).
0.6.19 (May 28, 2018)
Fixed
- Do not trigger HUP events on kqueue platforms (#958).
0.6.18 (May 24, 2018)
Fixed
- Fix compilation on kqueue platforms with 32bit C long (#948).
0.6.17 (May 15, 2018)
Fixed
- Don't report
RDHUPasHUP(#939) - Fix lazycell related compilation issues.
- Fix EPOLLPRI conflicting with READABLE
- Abort process on ref count overflows
Added
- Define PRI on all targets
0.6.16 (September 5, 2018)
- Add EPOLLPRI readiness to UnixReady on supported platforms (#867)
- Reduce spurious awaken calls (#875)
0.6.15 (July 3, 2018)
- Implement
Eventedfor containers (#840). - Fix android-aarch64 build (#850).
0.6.14 (March 8, 2018)
- Add
Poll::poll_interruptible(#811) - Add
Ready::allandusizeconversions (#825)
0.6.13 (February 5, 2018)
- Fix build on DragonFlyBSD.
- Add
TcpListener::from_stdthat does not require the socket addr. - Deprecate
TcpListener::from_listenerin favor of from_std.
0.6.12 (January 5, 2018)
- Add
TcpStream::peekfunction (#773). - Raise minimum Rust version to 1.18.0.
Poll: retry select() when interrupted by a signal (#742).- Deprecate
Eventsindex access (#713). - Add
Events::clear(#782). - Add support for
lio_listio(#780).
0.6.11 (October 25, 2017)
- 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.
0.6.10 (July 27, 2017)
- Experimental support for Fuchsia
- Add
only_v6option for UDP sockets - Fix build on NetBSD
- Minimum Rust version is now 1.13.0
- Assignment operators (e.g.
|=) are now implemented forReady
0.6.9 (June 7, 2017)
- More socket options are exposed through the TCP types, brought in through the
net2crate.
0.6.8 (May 26, 2017)
- 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_CLOEXECwithSETFL
0.6.7 (April 27, 2017)
- Ignore EPIPE coming out of
kevent - Timer thread should exit when timer is dropped.
0.6.6 (March 22, 2017)
- Add send(), recv() and connect() to UDPSocket.
- Fix bug in custom readiness queue
- Move net types into
netmodule
0.6.5 (March 14, 2017)
- Misc improvements to kqueue bindings
- Add official support for iOS, Android, BSD
- Reimplement custom readiness queue
Pollis nowSync- Officially deprecate non-core functionality (timers, channel, etc...)
Registrationnow implementsEvented- Fix bug around error conditions with
connecton 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
0.6.4 (January 24, 2017)
- Fix compilation on musl
- Add
TcpStream::from_streamwhich converts a std TCP stream to Mio.
0.6.3 (January 22, 2017)
- Implement readv/writev for
TcpStream, allowing vectored reads/writes to work across platforms - Remove
nixdependency - Implement
DisplayandErrorfor some channel error types. - Optimize TCP on Windows through
SetFileCompletionNotificationModes
0.6.2 (December 18, 2016)
- Allow registration of custom handles on Windows (like
EventedFdon 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
0.6.1 (October 30, 2016)
- Update dependency of
libcto 0.2.16 - Fix channel
declogic - 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
0.6.0 (September 2, 2016)
- Shift primary API towards
Poll EventLoopand types todeprecatedmod. All contents of thedeprecatedmod 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
Eventedfor any type viaRegistration - Rename
IoEvent->Event - Access
Eventdata via functions vs. public fields. - Expose
Eventsas a public type that is passed intoPoll - Use
std::time::Durationfor all APIs that require a time duration. - Polled events are now retrieved via
Eventstype. - Implement
std::error::ErrorforTimerError - Relax
Sendbound on notify messages. - Remove
Cloneimpl forTimeout(future proof) - Remove
mio::prelude - Remove
mio::util - Remove dependency on bytes
0.5.0 (December 3, 2015)
- Windows support (#239)
- NetBSD support (#306)
- Android support (#295)
- Don't re-export bytes types
- Renamed
EventLoop::register_opttoEventLoop::register(#257) EventLoopConfigis now a builder instead of having public struct fields. It is also no longerCopy. (#259)TcpSocketis no longer exported in the public API (#262)- Integrate with net2. (#262)
TcpListenernow returns the remote peer address fromacceptas well (#275)- The
UdpSocket::{send_to, recv_from}methods are no longer generic overBuforMutBufbut 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)
0.4.1 (July 21, 2015)
- [BUGFIX] Fix notify channel concurrency bug (#216)
0.4.0 (July 16, 2015)
- [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
readyevent (#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