Releases: tokio-rs/tokio
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::coopmodule (#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
Fileshould not start a background read (#7139) - process: calling
start_killon exited child should not fail (#7160) - signal: fix
CTRL_CLOSE,CTRL_LOGOFF,CTRL_SHUTDOWNon 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
Childstdout (#7141) - process: clarify
Child::killbehavior (#7162) - process: fix grammar of the
ChildStdinstruct doc comment (#7192) - runtime: consistently use
worker_threadsinstead ofcore_threads(#7186)
Tokio v1.43.0
1.43.0 (Jan 8th, 2025)
Added
- net: add
UdpSocket::peekmethods (#7068) - net: add support for Haiku OS (#7042)
- process: add
Command::into_std()(#7014) - signal: add
SignalKind::infoon illumos (#6995) - signal: add support for realtime signals on illumos (#7029)
Fixed
- io: don't call
set_lenbefore initializing vector inBlocking(#7054) - macros: suppress
clippy::needless_returnin#[tokio::main](#6874) - runtime: fix thread parking on WebAssembly (#7041)
Changes
- chore: use unsync loads for
unsync_load(#7073) - io: use
Buf::put_bytesinRepeatread 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
Tokio v1.42.0
Tokio v1.41.1
Tokio v1.41.0
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
Idapis (#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]toNotified(#6828) - sync: make
watchcooperative (#6846) - sync: make
broadcast::Receivercooperative (#6870) - task: add task size to tracing instrumentation (#6881)
- wasm: enable
cfg_fsforwasitarget (#6822)
Fixed
- net: fix regression of abstract socket path in unix socket (#6838)
Documented
- io: recommend
OwnedFdwithAsyncFd(#6821) - io: document cancel safety of
AsyncFdmethods (#6890) - macros: render more comprehensible documentation for
joinandtry_join(#6814, #6841) - net: fix swapped examples for
TcpSocket::set_nodelayandTcpSocket::nodelay(#6840) - sync: document runtime compatibility (#6833)
Tokio v1.40.0
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_bufwhen possible (#6724) - runtime: prevent niche-optimization to avoid triggering miri (#6744)
- sync: mark mpsc types as
UnwindSafe(#6783) - sync,time: make
SleepandBatchSemaphoreinstrumentation explicit roots (#6727) - task: use
NonZeroU64fortask::Id(#6733) - task: include panic message when printing
JoinError(#6753) - task: add
#[must_use]toJoinHandle::abort_handle(#6762) - time: eliminate timer wheel allocations (#6779)
Documented
Tokio v1.39.3
1.39.3 (August 17th, 2024)
This release fixes a regression where the unix socket api stopped accepting the abstract socket namespace. (#6772)