Skip to content

Releases: tokio-rs/tokio

Tokio v1.42.1

08 Apr 07:49
Compare
Choose a tag to compare

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

05 Apr 15:19
ec4b1d7
Compare
Choose a tag to compare

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.38.2

03 Apr 17:48
aa303bc
Compare
Choose a tag to compare

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.1

13 Mar 08:16
d413c9c
Compare
Choose a tag to compare

1.44.1 (March 13th, 2025)

Fixed

  • rt: skip defer queue in block_in_place context (#7216)

Tokio v1.44.0

07 Mar 20:12
8182ecf
Compare
Choose a tag to compare

1.44.0 (March 7th, 2025)

This release changes the from_std method on sockets to panic if a blocking socket is provided. We determined this change is not a breaking change as Tokio is not intended to operate using blocking sockets. Doing so results in runtime hangs and should be considered a bug. Accidentally passing a blocking socket to Tokio is one of the most common user mistakes. If this change causes an issue for you, please comment on #7172.

Added

  • coop: add task::coop module (#7116)
  • process: add Command::get_kill_on_drop() (#7086)
  • sync: add broadcast::Sender::closed (#6685, #7090)
  • sync: add broadcast::WeakSender (#7100)
  • sync: add oneshot::Receiver::is_empty() (#7153)
  • sync: add oneshot::Receiver::is_terminated() (#7152)

Fixed

  • fs: empty reads on File should not start a background read (#7139)
  • process: calling start_kill on exited child should not fail (#7160)
  • signal: fix CTRL_CLOSE, CTRL_LOGOFF, CTRL_SHUTDOWN on windows (#7122)
  • sync: properly handle panic during mpsc drop (#7094)

Changes

  • runtime: clean up magic number in registration set (#7112)
  • coop: make coop yield using waker defer strategy (#7185)
  • macros: make select! budget-aware (#7164)
  • net: panic when passing a blocking socket to from_std (#7166)
  • io: clean up buffer casts (#7142)

Changes to unstable APIs

  • rt: add before and after task poll callbacks (#7120)
  • tracing: make the task tracing API unstable public (#6972)

Documented

  • docs: fix nesting of sections in top-level docs (#7159)
  • fs: rename symlink and hardlink parameter names (#7143)
  • io: swap reader/writer in simplex doc test (#7176)
  • macros: docs about select! alternatives (#7110)
  • net: rename the argument for send_to (#7146)
  • process: add example for reading Child stdout (#7141)
  • process: clarify Child::kill behavior (#7162)
  • process: fix grammar of the ChildStdin struct doc comment (#7192)
  • runtime: consistently use worker_threads instead of core_threads (#7186)

Tokio v1.43.0

08 Jan 15:59
5f3296d
Compare
Choose a tag to compare

1.43.0 (Jan 8th, 2025)

Added

  • net: add UdpSocket::peek methods (#7068)
  • net: add support for Haiku OS (#7042)
  • process: add Command::into_std() (#7014)
  • signal: add SignalKind::info on illumos (#6995)
  • signal: add support for realtime signals on illumos (#7029)

Fixed

  • io: don't call set_len before initializing vector in Blocking (#7054)
  • macros: suppress clippy::needless_return in #[tokio::main] (#6874)
  • runtime: fix thread parking on WebAssembly (#7041)

Changes

  • chore: use unsync loads for unsync_load (#7073)
  • io: use Buf::put_bytes in Repeat read impl (#7055)
  • task: drop the join waker of a task eagerly (#6986)

Changes to unstable APIs

  • metrics: improve flexibility of H2Histogram Configuration (#6963)
  • taskdump: add accessor methods for backtrace (#6975)

Documented

  • io: clarify ReadBuf::uninit allows initialized buffers as well (#7053)
  • net: fix ambiguity in TcpStream::try_write_vectored docs (#7067)
  • runtime: fix LocalRuntime doc links (#7074)
  • sync: extend documentation for watch::Receiver::wait_for (#7038)
  • sync: fix typos in OnceCell docs (#7047)

Tokio v1.42.0

03 Dec 13:50
bb9d570
Compare
Choose a tag to compare

1.42.0 (Dec 3rd, 2024)

Added

  • io: add AsyncFd::{try_io, try_io_mut} (#6967)

Fixed

  • io: avoid ptr->ref->ptr roundtrip in RegistrationSet (#6929)
  • runtime: do not defer yield_now inside block_in_place (#6999)

Changes

  • io: simplify io readiness logic (#6966)

Documented

  • net: fix docs for tokio::net::unix::{pid_t, gid_t, uid_t} (#6791)
  • time: fix a typo in Instant docs (#6982)

Tokio v1.41.1

07 Nov 10:58
bb7ca75
Compare
Choose a tag to compare

1.41.1 (Nov 7th, 2024)

Fixed

  • metrics: fix bug with wrong number of buckets for the histogram (#6957)
  • net: display net requirement for net::UdpSocket in docs (#6938)
  • net: fix typo in TcpStream internal comment (#6944)

Tokio v1.41.0

22 Oct 09:24
01e04da
Compare
Choose a tag to compare

1.41.0 (Oct 22th, 2024)

Added

  • metrics: stabilize global_queue_depth (#6854, #6918)
  • net: add conversions for unix SocketAddr (#6868)
  • sync: add watch::Sender::sender_count (#6836)
  • sync: add mpsc::Receiver::blocking_recv_many (#6867)
  • task: stabilize Id apis (#6793, #6891)

Added (unstable)

  • metrics: add H2 Histogram option to improve histogram granularity (#6897)
  • metrics: rename some histogram apis (#6924)
  • runtime: add LocalRuntime (#6808)

Changed

  • runtime: box futures larger than 16k on release mode (#6826)
  • sync: add #[must_use] to Notified (#6828)
  • sync: make watch cooperative (#6846)
  • sync: make broadcast::Receiver cooperative (#6870)
  • task: add task size to tracing instrumentation (#6881)
  • wasm: enable cfg_fs for wasi target (#6822)

Fixed

  • net: fix regression of abstract socket path in unix socket (#6838)

Documented

  • io: recommend OwnedFd with AsyncFd (#6821)
  • io: document cancel safety of AsyncFd methods (#6890)
  • macros: render more comprehensible documentation for join and try_join (#6814, #6841)
  • net: fix swapped examples for TcpSocket::set_nodelay and TcpSocket::nodelay (#6840)
  • sync: document runtime compatibility (#6833)

Tokio v1.40.0

30 Aug 08:04
ea6d652
Compare
Choose a tag to compare

1.40.0 (August 30th, 2024)

Added

  • io: add util::SimplexStream (#6589)
  • process: stabilize Command::process_group (#6731)
  • sync: add {TrySendError,SendTimeoutError}::into_inner (#6755)
  • task: add JoinSet::join_all (#6784)

Added (unstable)

  • runtime: add Builder::{on_task_spawn, on_task_terminate} (#6742)

Changed

  • io: use vectored io for write_all_buf when possible (#6724)
  • runtime: prevent niche-optimization to avoid triggering miri (#6744)
  • sync: mark mpsc types as UnwindSafe (#6783)
  • sync,time: make Sleep and BatchSemaphore instrumentation explicit roots (#6727)
  • task: use NonZeroU64 for task::Id (#6733)
  • task: include panic message when printing JoinError (#6753)
  • task: add #[must_use] to JoinHandle::abort_handle (#6762)
  • time: eliminate timer wheel allocations (#6779)

Documented

  • docs: clarify that [build] section doesn't go in Cargo.toml (#6728)
  • io: clarify zero remaining capacity case (#6790)
  • macros: improve documentation for select! (#6774)
  • sync: document mpsc channel allocation behavior (#6773)