tokio-rs/tokio
 Watch   
 Star   
 Fork   
15 days ago
tokio

Tokio v1.50.0

1.50.0 (Mar 3rd, 2026)

Added

  • net: add TcpStream::set_zero_linger (#7837)
  • rt: add is_rt_shutdown_err (#7771)

Changed

  • io: add optimizer hint that memchr returns in-bounds pointer (#7792)
  • io: implement vectored writes for write_buf (#7871)
  • runtime: panic when event_interval is 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)

Fixed

  • io: always cleanup AsyncFd registration list on deregister (#7773)
  • macros: remove (most) local use declarations in tokio::select! (#7929)
  • net: fix GET_BUF_SIZE constant for target_os = "android" (#7889)
  • runtime: avoid redundant unpark in current_thread scheduler (#7834)
  • runtime: don't park in current_thread if before_park defers 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_threads on shutdown (#7910, #7918, #7922)

Unstable

  • fs: check for io-uring opcode support (#7815)
  • runtime: avoid lock acquisition after uring init (#7850)

Documented

  • 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 AsyncWrite documentation (#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_interval doc (#7932)
  • sync: clarify RwLock fairness documentation (#7919)
  • sync: clarify that recv returns None once closed and no more messages (#7920)
  • task: clarify when to use spawn_blocking vs dedicated threads (#7923)
  • task: doc that task drops before JoinHandle completion (#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)
2026-01-03 17:58:44
tokio

Tokio v1.49.0

1.49.0 (January 3rd, 2026)

Added

  • net: add support for TCLASS option on IPv6 (#7781)
  • runtime: stabilize runtime::id::Id (#7125)
  • task: implement Extend for JoinSet (#7195)
  • task: stabilize the LocalSet::id() (#7776)

Changed

  • net: deprecate {TcpStream,TcpSocket}::set_linger (#7752)

Fixed

  • macros: fix the hygiene issue of join! and try_join! (#7766)
  • runtime: revert "replace manual vtable definitions with Wake" (#7699)
  • sync: return TryRecvError::Disconnected from Receiver::try_recv after Receiver::close (#7686)
  • task: remove unnecessary trait bounds on the Debug implementation (#7720)

Unstable

  • fs: handle EINTR in fs::write for 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)

Documented

  • docs: fix a typos in bounded.rs and park.rs (#7817)
  • io: add SyncIoBridge cross-references to copy and copy_buf (#7798)
  • io: doc that AsyncWrite does not inherit from std::io::Write (#7705)
  • metrics: clarify that num_alive_tasks is 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 TcpSocket docs (#7738)
  • runtime: mention LocalRuntime in new_current_thread docs (#7820)
  • sync: add missing period to mpsc::Sender::try_send docs (#7721)
  • sync: clarify the cancellation safety of oneshot::Receiver (#7780)
  • sync: improve the docs for the errors of mpsc (#7722)
  • task: add example for spawn_local usage on local runtime (#7689)
2025-10-14 21:07:25
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 of AsyncReadExt::chain (#7599)
  • net: add SocketAddr::as_abstract_name (#7491)
  • net: add TcpStream::quickack and TcpStream::set_quickack (#7490)
  • net: implement AsRef<Self> for TcpStream and UnixStream (#7573)
  • task: add LocalKey::try_get (#7666)
  • task: implement Ord for task::Id (#7530)

Changed

  • deps: bump windows-sys to version 0.61 (#7645)
  • fs: preserve max_buf_size when cloning a File (#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 use FnOnce (#7511)
  • sync: remove inner mutex in SetOnce (#7554)
  • sync: use UnsafeCell::get_mut in Mutex::get_mut and RwLock::get_mut (#7569)
  • time: reduce the generated code size of Timeout<T>::poll (#7535)

Fixed

  • macros: fix hygiene issue in join! and try_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 in broadcast::Sender::new() (#7629)
  • sync: fix implementation of unused RwLock::try_* methods (#7587)

Unstable

  • tokio: use cargo features instead of --cfg flags for taskdump and io_uring (#7655, #7621)
  • fs: support io_uring in fs::write (#7567)
  • fs: support io_uring with File::open() (#7617)
  • fs: support io_uring with OpenOptions (#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() and reuseport() (#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)
2025-08-01 19:20:34
tokio

Tokio v1.47.1

1.47.1 (August 1st, 2025)

Fixed

  • process: fix panic from spurious pidfd wakeup (#7494)
  • sync: fix broken link of Python asyncio.Event in SetOnce docs (#7485)
2025-08-01 18:57:50
tokio

Tokio v1.43.2

1.43.2 (August 1st, 2025)

Fixed

  • process: fix panic from spurious pidfd wakeup (#7494)
2025-07-26 22:50:58
tokio

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 and poll_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

  • metrics: fix listed feature requirements for some metrics (#7449)
  • runtime: improve safety comments of Readiness<'_> (#7415)
2025-07-05 03:38:19
tokio

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)
2025-07-02 16:20:42
tokio

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 for join! and try_join!, similar to select! (#7307)
  • net: support for cygwin (#7393)
  • net: support pope::OpenOptions::read_write on Android (#7426)
  • net: add Clone implementation for net::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 to runtime::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 in TcpSocket 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)
2025-05-24 22:27:50
tokio

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)
2025-05-06 14:43:25
tokio

Tokio v1.45.0

Added

  • metrics: stabilize worker_total_busy_duration, worker_park_count, and worker_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)