A runtime for writing reliable asynchronous applications with Rust. Provides I/O, networking, scheduling, timers, ...
AsyncFd::async_io
(#5542)recv_buf
for UdpSocket
and UnixDatagram
(#5583)OwnedSemaphorePermit::semaphore
(#5618)same_channel
to broadcast channel (#5607)watch::Receiver::wait_for
(#5611)JoinSet::spawn_blocking
and JoinSet::spawn_blocking_on
(#5612)read_to_end
not grow unnecessarily (#5610)RwLock
(#5647)Notify
(#5503)get_peer_cred
on AIX (#5065)broadcast
with custom wakers (#5578)This release bumps the MSRV of Tokio to 1.56. (#5559)
async_io
helper method to sockets (#5512)AsFd
/AsHandle
/AsSocket
(#5514, #5540)UdpSocket::peek_sender()
(#5520)RwLockWriteGuard::{downgrade_map, try_downgrade_map}
(#5527)JoinHandle::abort_handle
(#5543)memchr
from libc
(#5558)#[tokio::main]
(#5557)Interval
returns Ready
(#5553)ReadDir
(#5555)spawn_blocking
location fields (#5573)Wheel::poll()
(#5574)join!
and try_join!
(https://github.com/tokio-rs/tokio/pull/5504)fs::try_exists
(https://github.com/tokio-rs/tokio/pull/4299)MappedOwnedMutexGuard
(https://github.com/tokio-rs/tokio/pull/5474)#[clippy::has_significant_drop]
(https://github.com/tokio-rs/tokio/pull/5422)Instant::now()
perf with test-util (https://github.com/tokio-rs/tokio/pull/5513)poll_fn
in copy_bidirectional
(https://github.com/tokio-rs/tokio/pull/5486)notify_waiters
calls atomic (https://github.com/tokio-rs/tokio/pull/5458)blocking_*
methods (https://github.com/tokio-rs/tokio/pull/5448)process::Command
docs (https://github.com/tokio-rs/tokio/pull/5413)This release fixes a compilation failure on targets without AtomicU64
when using rustc older than 1.63. (#5356)
The highlight of this release is the reduction of lock contention for all I/O operations (#5300). We have received reports of up to a 20% improvement in CPU utilization and increased throughput for real-world I/O heavy applications.
AtomicU64
support detection (#5284)This release forward ports changes from 1.18.4.
Handle::runtime_flavor
(#5138)Mutex::blocking_lock_owned
(#5130)Semaphore::MAX_PERMITS
(#5144)merge()
to semaphore permits (#4948)mpsc::WeakUnboundedSender
(#5189)Command::process_group
(#5114)task::id()
and task::try_id()
(#5171)LocalOwnedTasks
(#5099)mark_pending
called illegally (#5093)unsync_load
on atomic types (#5175)LocalSet
drop in thread local (#5179)CachePadded
(#5106)tokio::io::copy
continue filling the buffer when writer stalls (#5066)coop::budget
from LocalSet::run_until
(#5155)Notify
panic safe (#5154)write_i8
to use signed integers (#5040)set_tos
methods (#5073)UdpSocket::recv
documentation (#5150)TryLockError
for RwLock::try_write
(#5160)timeout
(#5118)timeout
checks only before poll (#5126)oneshot::Receiver
in docs (#5198)Mutex::new
for globals (#5061)Option
around mio::Events
in io driver (#5078)io::handle
refs with scheduler:Handle (#5128)scheduler::Handle
(#5135)runtime::context
module (#5140)driver.rs
(#5141)runtime::context
to unify thread-locals (#5143)coop
mod into runtime
(#5152)Runtime
into its own file (#5159)Handle::enter
(#5163)enter
into context
(#5167)CoreStage
methods to Core
(#5182)This release removes the dependency on the once_cell
crate to restore the MSRV of 1.21.x, which is the latest minor version at the time of release. (#5048)