Releases: tokio-rs/tokio
Tokio v1.48.0
1.48.0 (October 14th, 2025)
The MSRV is increased to 1.71.
Added
- fs: add
File::max_buf_size
(#7594) - io: export
Chain
ofAsyncReadExt::chain
(#7599) - net: add
SocketAddr::as_abstract_name
(#7491) - net: add
TcpStream::quickack
andTcpStream::set_quickack
(#7490) - net: implement
AsRef<Self>
forTcpStream
andUnixStream
(#7573) - task: add
LocalKey::try_get
(#7666) - task: implement
Ord
fortask::Id
(#7530)
Changed
- deps: bump windows-sys to version 0.61 (#7645)
- fs: preserve
max_buf_size
when cloning aFile
(#7593) - macros: suppress
clippy::unwrap_in_result
in#[tokio::main]
(#7651) - net: remove
PollEvented
noise from Debug formats (#7675) - process: upgrade
Command::spawn_with
to useFnOnce
(#7511) - sync: remove inner mutex in
SetOnce
(#7554) - sync: use
UnsafeCell::get_mut
inMutex::get_mut
andRwLock::get_mut
(#7569) - time: reduce the generated code size of
Timeout<T>::poll
(#7535)
Fixed
- macros: fix hygiene issue in
join!
andtry_join!
(#7638) - net: fix copy/paste errors in udp peek methods (#7604)
- process: fix error when runtime is shut down on nightly-2025-10-12 (#7672)
- runtime: use release ordering in
wake_by_ref()
even if already woken (#7622) - sync: close the
broadcast::Sender
inbroadcast::Sender::new()
(#7629) - sync: fix implementation of unused
RwLock::try_*
methods (#7587)
Unstable
- tokio: use cargo features instead of
--cfg
flags fortaskdump
andio_uring
(#7655, #7621) - fs: support
io_uring
infs::write
(#7567) - fs: support
io_uring
withFile::open()
(#7617) - fs: support
io_uring
withOpenOptions
(#7321) - macros: add
local
runtime flavor (#7375, #7597)
Documented
- io: clarify the zero capacity case of
AsyncRead::poll_read
(#7580) - io: fix typos in the docs of
AsyncFd
readiness guards (#7583) - net: clarify socket gets closed on drop (#7526)
- net: clarify the behavior of
UCred::pid()
on Cygwin (#7611) - net: clarify the supported platform of
set_reuseport()
andreuseport()
(#7628) - net: qualify that
SO_REUSEADDR
is only set on Unix (#7533) - runtime: add guide for choosing between runtime types (#7635)
- runtime: clarify the behavior of
Handle::block_on
(#7665) - runtime: clarify the edge case of
Builder::global_queue_interval()
(#7605) - sync: clarify bounded channel panic behavior (#7641)
- sync: clarify the behavior of
tokio::sync::watch::Receiver
(#7584) - sync: document cancel safety on
SetOnce::wait
(#7506) - sync: fix the docs of
parking_lot
feature flag (#7663) - sync: improve the docs of
UnboundedSender::send
(#7661) - sync: improve the docs of
sync::watch
(#7601) - sync: reword allocation failure paragraph in broadcast docs (#7595)
- task: clarify the behavior of several
spawn_local
methods (#7669) - task: clarify the task ID reuse guarantees (#7577)
- task: improve the example of
poll_proceed
(#7586)
Tokio v1.47.1
Tokio v1.43.2
Tokio v1.47.0
1.47.0 (July 25th, 2025)
This release adds poll_proceed
and cooperative
to the coop
module for
cooperative scheduling, adds SetOnce
to the sync
module which provides
similar functionality to [std::sync::OnceLock
], and adds a new method
sync::Notify::notified_owned()
which returns an OwnedNotified
without
a lifetime parameter.
Added
- coop: add
cooperative
andpoll_proceed
(#7405) - sync: add
SetOnce
(#7418) - sync: add
sync::Notify::notified_owned()
(#7465)
Changed
- deps: upgrade windows-sys 0.52 β 0.59 ([#7117])
- deps: update to socket2 v0.6 ([#7443])
- sync: improve
AtomicWaker::wake
performance (#7450)
Documented
Tokio v1.46.1
1.46.1 (July 4th, 2025)
This release fixes incorrect spawn locations in runtime task hooks for tasks spawned using tokio::spawn
rather than Runtime::spawn
. This issue only effected the spawn location in TaskMeta::spawned_at
, and did not effect task locations in Tracing events.
Unstable
- runtime: add
TaskMeta::spawn_location
tracking where a task was spawned (#7440)
Tokio v1.46.0
1.46.0 (July 2nd, 2025)
Fixed
- net: fixed
TcpStream::shutdown
incorrectly returning an error on macOS (#7290)
Added
- sync:
mpsc::OwnedPermit::{same_channel, same_channel_as_sender}
methods (#7389) - macros:
biased
option forjoin!
andtry_join!
, similar toselect!
(#7307) - net: support for cygwin (#7393)
- net: support
pope::OpenOptions::read_write
on Android (#7426) - net: add
Clone
implementation fornet::unix::SocketAddr
(#7422)
Changed
- runtime: eliminate unnecessary lfence while operating on
queue::Local<T>
(#7340) - task: disallow blocking in
LocalSet::{poll,drop}
(#7372)
Unstable
- runtime: add
TaskMeta::spawn_location
tracking where a task was spawned (#7417) - runtime: removed borrow from
LocalOptions
parameter toruntime::Builder::build_local
(#7346)
Documented
- io: clarify behavior of seeking when
start_seek
is not used (#7366) - io: document cancellation safety of
AsyncWriteExt::flush
(#7364) - net: fix docs for
recv_buffer_size
method (#7336) - net: fix broken link of
RawFd
inTcpSocket
docs (#7416) - net: update
AsRawFd
doc link to current Rust stdlib location (#7429) - readme: fix double period in reactor description (#7363)
- runtime: add doc note that
on_*_task_poll
is unstable (#7311) - sync: update broadcast docs on allocation failure (#7352)
- time: add a missing panic scenario of
time::advance
(#7394)
Tokio v1.45.1
1.45.1 (May 24th, 2025)
This fixes a regression on the wasm32-unknown-unknown target, where code that previously did not panic due to calls to Instant::now()
started failing. This is due to the stabilization of the first time-based metric.
Fixed
- Disable time-based metrics on wasm32-unknown-unknown (#7322)
Tokio v1.45.0
Added
- metrics: stabilize
worker_total_busy_duration
,worker_park_count
, andworker_unpark_count
(#6899, #7276) - process: add
Command::spawn_with
(#7249)
Changed
- io: do not require
Unpin
for some trait impls (#7204) - rt: mark
runtime::Handle
as unwind safe (#7230) - time: revert internal sharding implementation (#7226)
Unstable
- rt: remove alt multi-threaded runtime (#7275)
Tokio v1.42.1
This release fixes a soundness issue in the broadcast channel. The channel accepts values that are Send
but !Sync
. Previously, the channel called clone()
on these values without synchronizing. This release fixes the channel by synchronizing calls to .clone()
(Thanks Austin Bonander for finding and reporting the issue).
Fixed
- sync: synchronize < 7DC4 code>clone() call in broadcast channel (#7232)
Tokio v1.44.2
This release fixes a soundness issue in the broadcast channel. The channel
accepts values that are Send
but !Sync
. Previously, the channel called
clone()
on these values without synchronizing. This release fixes the channel
by synchronizing calls to .clone()
(Thanks Austin Bonander for finding and
reporting the issue).
Fixed
- sync: synchronize
clone()
call in broadcast channel (#7232)