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
ChainofAsyncReadExt::chain(#7599) - net: add
SocketAddr::as_abstract_name(#7491) - net: add
TcpStream::quickackandTcpStream::set_quickack(#7490) - net: implement
AsRef<Self>forTcpStreamandUnixStream(#7573) - task: add
LocalKey::try_get(#7666) - task: implement
Ordfortask::Id(#7530)
Changed
- deps: bump windows-sys to version 0.61 (#7645)
- fs: preserve
max_buf_sizewhen cloning aFile(#7593) - macros: suppress
clippy::unwrap_in_resultin#[tokio::main](#7651) - net: remove
PollEventednoise from Debug formats (#7675) - process: upgrade
Command::spawn_withto useFnOnce(#7511) - sync: remove inner mutex in
SetOnce(#7554) - sync: use
UnsafeCell::get_mutinMutex::get_mutandRwLock::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::Senderinbroadcast::Sender::new()(#7629) - sync: fix implementation of unused
RwLock::try_*methods (#7587)
Unstable
- tokio: use cargo features instead of
--cfgflags fortaskdumpandio_uring(#7655, #7621) - fs: support
io_uringinfs::write(#7567) - fs: support
io_uringwithFile::open()(#7617) - fs: support
io_uringwithOpenOptions(#7321) - macros: add
localruntime flavor (#7375, #7597)
Documented
- io: clarify the zero capacity case of
AsyncRead::poll_read(#7580) - io: fix typos in the docs of
AsyncFdreadiness 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_REUSEADDRis 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_lotfeature 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_localmethods (#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
cooperativeandpoll_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::wakeperformance (#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_locationtracking where a task was spawned (#7440)
Tokio v1.46.0
1.46.0 (July 2nd, 2025)
Fixed
- net: fixed
TcpStream::shutdownincorrectly returning an error on macOS (#7290)
Added
- sync:
mpsc::OwnedPermit::{same_channel, same_channel_as_sender}methods (#7389) - macros:
biasedoption forjoin!andtry_join!, similar toselect!(#7307) - net: support for cygwin (#7393)
- net: support
pope::OpenOptions::read_writeon Android (#7426) - net: add
Cloneimplementation 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_locationtracking where a task was spawned (#7417) - runtime: removed borrow from
LocalOptionsparameter toruntime::Builder::build_local(#7346)
Documented
- io: clarify behavior of seeking when
start_seekis not used (#7366) - io: document cancellation safety of
AsyncWriteExt::flush(#7364) - net: fix docs for
recv_buffer_sizemethod (#7336) - net: fix broken link of
RawFdinTcpSocketdocs (#7416) - net: update
AsRawFddoc link to current Rust stdlib location (#7429) - readme: fix double period in reactor description (#7363)
- runtime: add doc note that
on_*_task_pollis 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
Unpinfor some trait impls (#7204) - rt: mark
runtime::Handleas 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
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)