18 KiB
18 KiB
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).
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