- Update
windows-sys
to v0.59. (#195) - On NetBSD/DragonflyBSD, set
nosigpipe
on sockets. (#196)
- Fix nightly clippy warnings. (#191)
- Fix usage of the wrong socket flags on AIX. (#187)
- On Windows, call
WSAStartup
before any raw socket functions. (#183)
- Add
Waitable
, which allows waiting for waitable handles on Windows. (#152)
- Fix an
EINVAL
error that would occur when abstract sockets are used. (#176)
- Remove dependency on
waker-fn
. (#165) - Update
windows-sys
to v0.52.0. (#173)
- Bump
async-lock
andfutures-lite
to their latest version. (#170)
- Implement
IoSafe
forstd::process::{ChildStdin, ChildStdout, ChildStderr}
. (#162)
- Breaking:
Async::new()
now takes types that implementAsFd
/AsSocket
instead ofAsRawFd
/AsRawSocket
, in order to implement I/O safety. (#142) - Breaking:
Async::get_mut()
,Async::read_with_mut()
andAsync::write_with_mut()
are nowunsafe
. The underlying source is technically "borrowed" by the polling instance, so moving it out would be unsound. (#142) - Expose miscellaneous
kqueue
filters in theos::kqueue
module. (#112) - Expose a way to get the underlying
Poller
's file descriptor on Unix. (#125) - Add a new
Async::new_nonblocking
method to allow users to avoid duplicating an already nonblocking socket. (#159) - Remove the unused
fastrand
andmemchr
dependencies. (#131) - Use
tracing
instead oflog
. (#140) - Support ESP-IDF. (#144)
- Optimize the
block_on
function to reduce allocation, leading to a slight performance improvement. (#149)
- Use
rustix
instead oflibc
/windows-sys
for system calls (#76) - Add a
will_fire
method toTimer
to test if it will ever fire (#106) - Reduce syscalls in
Async::new
(#107) - Improve the drop ergonomics of
Readable
andWritable
(#109) - Change the "
wepoll
" in documentation to "IOCP
" (#116)
- Switch from
winapi
towindows-sys
(#102)
- Update
concurrent-queue
to v2. (#99)
- Remove the dependency on the
once_cell
crate to restore the MSRV. (#95)
- Fix panic on very large durations. (#87)
- Add
Timer::never
(#87)
- Implement I/O safety traits on Rust 1.63+ (#84)
- Process timers set for exactly
now
. (#73)
- Add
Readable
andWritable
futures. (#64, #66) - Add
Async::{readable_owned, writable_owned}
. (#66)
- Add
Readable
andWritable
futures. (#64)
- Remove dependency on deprecated
vec-arena
. (#60)
- Implement
AsRef<T>
andAsMut<T>
forAsync<T>
. (#44) - Remove dependency on deprecated
nb-connect
. (#55)
- Lower MSRV to 1.41.0
- Add
Timer::interval()
andTimer::set_interval()
. - Add
Timer::interval_at()
andTimer::set_interval_at()
. - Implement
Stream
forTimer
.
- Add
Async::poll_readable()
andAsync::poll_writable()
.
- Update
futures-lite
.
- Only require
libc
on Unix platforms.
- Re-enable
async-net
dependency and fix CI.
- Update
polling
to v2.0.0
- Remove randomized yielding everywhere.
- Remove randomized yielding in write operations.
- Implement proper cancelation for
readable()
andwritable()
.
- Improve docs.
- Add
nb-connect
dependency. - Remove
wepoll-sys-stjepang
dependency.
- Remove
socket2
dependency.
- Add
TryFrom
conversion impls forAsync
.
- Don't box
T
inAsync<T>
. Async::incoming()
doesn't returnUnpin
streams anymore.
- Update dependencies.
- Stabilize.
- Replace
log::debug!
withlog::trace!
.
- Add logging.
- On Linux, fail fast if
writable()
succeeds after connecting toUnixStream
, but the connection is not really established.
- Prevent threads in
async_io::block_on()
from hogging the reactor forever.
- Performance optimizations in
block_on()
.
- Add probabilistic yielding to improve fairness.
- Update readme.
- Replace
parking
module withblock_on()
. - Fix a bug in
Async::<UnixStream>::connect()
.
- Bug fix: clear events list before polling.
- Simpler implementation of the
parking
module. - Extracted raw bindings to epoll/kqueue/wepoll into the
polling
crate.
- Update dependencies.
- More documentation.
- Tweak the async-io to poll I/O less aggressively.
- Tweak the async-io thread to use less CPU.
- More examples.
- Add
Timer::reset()
. - Add third party licenses.
- Code cleanup.
- Make
Parker
andUnparker
unwind-safe.
- Initialize the reactor in
Parker::new()
.
- Always use the last waker given to
Timer
. - Shutdown the socket in
AsyncWrite::poll_close()
. - Reduce the number of dependencies.
- Shutdown the write side of the socket in
AsyncWrite::poll_close()
. - Code and dependency cleanup.
- Always use the last waker when polling a timer.
- Initial version