Skip to content

Releases: tokio-rs/tokio

Tokio v1.52.1

16 Apr 21:29
905c146

Choose a tag to compare

1.52.1 (April 16th, 2026)

Fixed

Tokio v1.52.0

14 Apr 19:14
5f7be0a

Choose a tag to compare

1.52.0 (April 14th, 2026)

Added

  • io: AioSource::register_borrowed for I/O safety support (#7992)
  • net: add try_io function to unix::pipe sender and receiver types (#8030)

Added (unstable)

  • runtime: Builder::enable_eager_driver_handoff setting enable eager hand off of the I/O and time drivers before polling tasks (#8010)
  • taskdump: add trace_with() for customized task dumps (#8025)
  • taskdump: allow impl FnMut() in trace_with instead of just fn() (#8040)
  • fs: support io_uring in AsyncRead for File (#7907)

Changed

  • runtime: improve spawn_blocking scalability with sharded queue (#7757)
  • runtime: use compare_exchange_weak() in worker queue (#8028)

Fixed

  • runtime: overflow second half of tasks when local queue is filled instead of first half (#8029)

Documented

  • docs: fix typo in oneshot::Sender::send docs (#8026)
  • docs: hide #[tokio::main] attribute in the docs of sync::watch (#8035)
  • net: add docs on ConnectionRefused errors with UDP sockets (#7870)

Tokio v1.51.1

08 Apr 10:39
98df02d

Choose a tag to compare

1.51.1 (April 8th, 2026)

Fixed

  • sync: fix semaphore reopens after forget (#8021)
  • net: surface errors from SO_ERROR on recv for UDP sockets on Linux (#8001)

Fixed (unstable)

  • metrics: fix worker_local_schedule_count test (#8008)
  • rt: do not leak fd when cancelling io_uring open operation (#7983)

Tokio v1.51.0

03 Apr 08:43
0af06b7

Choose a tag to compare

1.51.0 (April 3rd, 2026)

Added

  • net: implement get_peer_cred on Hurd (#7989)
  • runtime: add tokio::runtime::worker_index() (#7921)
  • runtime: add runtime name (#7924)
  • runtime: stabilize LocalRuntime (#7557)
  • wasm: add wasm32-wasip2 networking support (#7933)

Changed

  • runtime: steal tasks from the LIFO slot (#7431)

Fixed

  • docs: do not show "Available on non-loom only." doc label (#7977)
  • macros: improve overall macro hygiene (#7997)
  • sync: fix notify_waiters priority in Notify (#7996)
  • sync: fix panic in Chan::recv_many when called with non-empty vector on closed channel (#7991)

Tokio v1.47.4

02 Apr 12:41
aa65d0d

Choose a tag to compare

1.47.4 (April 2nd, 2026)

Fixed

  • sync: fix panic in Chan::recv_many when called with non-empty vector on closed channel (#7991)

Tokio v1.50.0

03 Mar 09:41
0273e45

Choose a tag to compare

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)

Tokio v1.49.0

03 Jan 10:00
e3b89bb

Choose a tag to compare

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)

Tokio v1.48.0

14 Oct 13:09
556820f

Choose a tag to compare

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)

Tokio v1.47.1

01 Aug 11:25
be8ee45

Choose a tag to compare

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)

Tokio v1.43.2

01 Aug 11:25
db8edc6

Choose a tag to compare

1.43.2 (August 1st, 2025)

Fixed

  • process: fix panic from spurious pidfd wakeup (#7494)