Releases: tokio-rs/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)
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 forjoin!
andtry_join!
, similar toselect!
(#7307) - net: support for cygwin (#7393)
- net: support
pope::OpenOptions::read_write
on Android (#7426) - net: add
Clone
implementation 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_location
tracking where a task was spawned (#7417) - runtime: removed borrow from
LocalOptions
parameter toruntime::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
inTcpSocket
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)
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
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)
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)
Tokio v1.38.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)
Tokio v1.44.1
Tokio v1.44.0
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 ofcore_threads
(#7186)
Tokio v1.43.0
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 inBlocking
(#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
inRepeat
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)