Tokio v1.50.0
- io: add optimizer hint that
memchrreturns in-bounds pointer (#7792) - io: implement vectored writes for
write_buf(#7871) - runtime: panic when
event_intervalis set to 0 (#7838) - runtime: shorten default thread name to fit in Linux limit (#7880)
- signal: remember the result of
SetConsoleCtrlHandler(#7833) - signal: specialize windows
Registry(#7885)
- io: always cleanup
AsyncFdregistration list on deregister (#7773) - macros: remove (most) local
usedeclarations intokio::select!(#7929) - net: fix
GET_BUF_SIZEconstant fortarget_os = "android"(#7889) - runtime: avoid redundant unpark in current_thread scheduler (#7834)
- runtime: don't park in
current_threadifbefore_parkdefers waker (#7835) - io: fix write readiness on ESP32 on short writes (#7872)
- runtime: wake deferred tasks before entering
block_in_place(#7879) - sync: drop rx waker when oneshot receiver is dropped (#7886)
- runtime: fix double increment of
num_idle_threadson shutdown (#7910, #7918, #7922)
- fs: check for io-uring opcode support (#7815)
- runtime: avoid lock acquisition after uring init (#7850)
- docs: update outdated unstable features section (#7839)
- io: clarify the behavior of
AsyncWriteExt::shutdown()(#7908) - io: explain how to flush stdout/stderr (#7904)
- io: fix incorrect and confusing
AsyncWritedocumentation (#7875) - rt: clarify the documentation of
Runtime::spawn(#7803) - rt: fix missing quotation in docs (#7925)
- runtime: correct the default thread name in docs (#7896)
- runtime: fix
event_intervaldoc (#7932) - sync: clarify RwLock fairness documentation (#7919)
- sync: clarify that
recvreturnsNoneonce closed and no more messages (#7920) - task: clarify when to use
spawn_blockingvs dedicated threads (#7923) - task: doc that task drops before
JoinHandlecompletion (#7825) - signal: guarantee that listeners never return
None(#7869) - task: fix task module feature flags in docs (#7891)
- task: fix two typos (#7913)
- task: improve the docs of
Builder::spawn_local(#7828) - time: add docs about auto-advance and when to use sleep (#7858)
- util: fix typo in docs (#7926)
Tokio v1.49.0
- net: add support for
TCLASSoption on IPv6 (#7781) - runtime: stabilize
runtime::id::Id(#7125) - task: implement
ExtendforJoinSet(#7195) - task: stabilize the
LocalSet::id()(#7776)
- net: deprecate
{TcpStream,TcpSocket}::set_linger(#7752)
- macros: fix the hygiene issue of
join!andtry_join!(#7766) - runtime: revert "replace manual vtable definitions with Wake" (#7699)
- sync: return
TryRecvError::DisconnectedfromReceiver::try_recvafterReceiver::close(#7686) - task: remove unnecessary trait bounds on the
Debugimplementation (#7720)
- fs: handle
EINTRinfs::writefor io-uring (#7786) - fs: support io-uring with
tokio::fs::read(#7696) - runtime: disable io-uring on
EPERM(#7724) - time: add alternative timer for better multicore scalability (#7467)
- docs: fix a typos in
bounded.rsandpark.rs(#7817) - io: add
SyncIoBridgecross-references tocopyandcopy_buf(#7798) - io: doc that
AsyncWritedoes not inherit fromstd::io::Write(#7705) - metrics: clarify that
num_alive_tasksis not strongly consistent (#7614) - net: clarify the cancellation safety of the
TcpStream::peek(#7305) - net: clarify the drop behavior of
unix::OwnedWriteHalf(#7742) - net: clarify the platform-dependent backlog in
TcpSocketdocs (#7738) - runtime: mention
LocalRuntimeinnew_current_threaddocs (#7820) - sync: add missing period to
mpsc::Sender::try_senddocs (#7721) - sync: clarify the cancellation safety of
oneshot::Receiver(#7780) - sync: improve the docs for the
errorsof mpsc (#7722) - task: add example for
spawn_localusage on local runtime (#7689)
Tokio v1.48.0
The MSRV is increased to 1.71.
- 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)
- 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)
- 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)
- 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)
- 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.0
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.
- coop: add
cooperativeandpoll_proceed(#7405) - sync: add
SetOnce(#7418) - sync: add
sync::Notify::notified_owned()(#7465)
- deps: upgrade windows-sys 0.52 → 0.59 ([#7117])
- deps: update to socket2 v0.6 ([#7443])
- sync: improve
AtomicWaker::wakeperformance (#7450)
Tokio v1.46.1
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.
- runtime: add
TaskMeta::spawn_locationtracking where a task was spawned (#7440)
Tokio v1.46.0
- net: fixed
TcpStream::shutdownincorrectly returning an error on macOS (#7290)
- 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)
- runtime: eliminate unnecessary lfence while operating on
queue::Local<T>(#7340) - task: disallow blocking in
LocalSet::{poll,drop}(#7372)
- runtime: add
TaskMeta::spawn_locationtracking where a task was spawned (#7417) - runtime: removed borrow from
LocalOptionsparameter toruntime::Builder::build_local(#7346)
- 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
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.
- Disable time-based metrics on wasm32-unknown-unknown (#7322)
Tokio v1.45.0
- metrics: stabilize
worker_total_busy_duration,worker_park_count, andworker_unpark_count(#6899, #7276) - process: add
Command::spawn_with(#7249)
- io: do not require
Unpinfor some trait impls (#7204) - rt: mark
runtime::Handleas unwind safe (#7230) - time: revert internal sharding implementation (#7226)
- rt: remove alt multi-threaded runtime (#7275)