v0.5.9
Update Rust crate tokio to v1.38.2 [SECURITY]
Notable changes
- sync: synchronize
clone()call in broadcast channel (#7232) - time: update
wake_upwhile holding all the locks of sharded time wheels (#6683) - fs: add
File::create_new(#6573) - io: add
copy_bidirectional_with_sizes(#6500) - io: implement
AsyncBufReadforJoin(#6449) - net: add Apple visionOS support (#6465)
- net: implement
CloneforNamedPipeInfo(#6586) - net: support QNX OS (#6421)
- sync: add
Notify::notify_last(#6520) - sync: add
mpsc::Receiver::{capacity,max_capacity}(#6511) - sync: add
splitmethod to the semaphore permit (#6472, #6478) - task: add
tokio::task::join_set::Builder::spawn_blocking(#6578) - wasm: support rt-multi-thread with wasm32-wasi-preview1-threads (#6510)
- macros: make
#[tokio::test]append#[test]at the end of the attribute list (#6497) - metrics: fix
blocking_threadscount (#6551) - metrics: stabilize
RuntimeMetrics::worker_count(#6556) - runtime: move task out of the
lifo_slotinblock_in_place(#6596) - runtime: panic if
global_queue_intervalis zero (#6445) - sync: always drop message in destructor for oneshot receiver (#6558)
- sync: instrument
Semaphorefor task dumps (#6499) - sync: use FIFO ordering when waking batches of wakers (#6521)
- task: make
LocalKey::getwork with Clone types (#6433) - tests: update nix and mio-aio dev-dependencies (#6552)
- time: clean up implementation (#6517)
- time: lazily init timers on first poll (#6512)
- time: remove the
true_whenfield inTimerShared(#6563) - time: use sharding for timer implementation (#6534)
- taskdump: allow building taskdump docs on non-unix machines (#6564)
- time: check for overflow in
Interval::poll_tick(#6487) - sync: fix incorrect
is_emptyon mpsc block boundaries (#6603) - fs: rewrite file system docs (#6467)
- io: fix
stdindocumentation (#6581) - io: fix obsolete reference in
ReadHalf::unsplit()documentation (#6498) - macros: render more comprehensible documentation for
select!(#6468) - net: add missing types to module docs (#6482)
- net: fix misleading
NamedPipeServerexample (#6590) - sync: add examples for
SemaphorePermit,OwnedSemaphorePermit(#6477) - sync: document that
Barrier::waitis not cancel safe (#6494) - sync: explain relation between
watch::Sender::{subscribe,closed}(#6490) - task: clarify that you can't abort
spawn_blockingtasks (#6571) - task: fix a typo in doc of
LocalSet::run_until(#6599) - time: fix test-util requirement for pause and resume in docs (#6503)
- fs: add
set_max_buf_sizetotokio::fs::File(#6411) - io: add
try_newandtry_with_interesttoAsyncFd(#6345) - sync: add
forget_permitsmethod to semaphore (#6331) - sync: add
is_closed,is_empty, andlento mpsc receivers (#6348) - sync: add a
rwlock()method to ownedRwLockguards (#6418) - sync: expose strong and weak counts of mpsc sender handles (#6405)
- sync: implement
Cloneforwatch::Sender(#6388) - task: add
TaskLocalFuture::take_value(#6340) - task: implement
FromIteratorforJoinSet(#6300) - io: make
io::splituse a mutex instead of a spinlock (#6403) - docs: fix docsrs build without net feature (#6360)
- macros: allow select with only else branch (#6339)
- runtime: fix leaking registration entries when os registration fails (#6329)
- io: document cancel safety of
AsyncBufReadExt::fill_buf(#6431) - io: document cancel safety of
AsyncReadExt's primitive read functions (#6337) - runtime: add doc link from
Runtimeto#[tokio::main](#6366) - runtime: make the
enterexample deterministic (#6351) - sync: add Semaphore example for limiting the number of outgoing requests (#6419)
- sync: fix missing period in broadcast docs (#6377)
- sync: mark
mpsc::Sender::downgradewith#[must_use](#6326) - sync: reorder
const_newbeforenew_with(#6392) - sync: update watch channel docs (#6395)
- task: fix documentation links (#6336)
- runtime: include task
Idin taskdumps (#6328) - runtime: panic if
unhandled_panicis enabled when not supported (#6410) - io: add
tokio::io::Join(#6220) - io: implement
AsyncWriteforEmpty(#6235) - net: add support for anonymous unix pipes (#6127)
- net: add
UnixSocket(#6290) - net: expose keepalive option on
TcpSocket(#6311) - sync: add
{Receiver,UnboundedReceiver}::poll_recv_many(#6236) - sync: add
Sender::{try_,}reserve_many(#6205) - sync: add
watch::Receiver::mark_unchanged(#6252) - task: add
JoinSet::try_join_next(#6280) - io: make
copycooperative (#6265) - io: make
repeatandsinkcooperative (#6254) - io: simplify check for empty slice (#6293)
- process: use pidfd on Linux when available (#6152)
- sync: use AtomicBool in broadcast channel future (#6298)
- io: clarify
clear_readydocs (#6304) - net: document that
*Fdtraits onTcpSocketare unix-only (#6294) - sync: document FIFO behavior of
tokio::sync::Mutex(#6279) - chore: typographic improvements (#6262)
- runtime: remove obsolete comment (#6303)
- task: fix typo (#6261)
- io: add budgeting to
tokio::runtime::io::registration::async_io(#6221) - net: add Apple watchOS support (#6176)
- io: drop the
Sizedrequirements fromAsyncReadExt.read_buf(#6169) - runtime: make
Runtimeunwind safe (#6189) - runtime: reduce the lock contention in task spawn (#6001)
- tokio: update nix dependency to 0.27.1 (#6190)
- chore: make
--cfg docsrswork without net feature (#6166) - chore: use relaxed load for
unsync_loadon miri (#6179) - runtime: handle missing context on wake (#6148)
- taskdump: fix taskdump cargo config example (#6150)
- taskdump: skip notified tasks during taskdumps (#6194)
- tracing: avoid creating resource spans with current parent, use a None parent instead (#6107)
- tracing: make task span explicit root (#6158)
- io: flush in
AsyncWriteExtexamples (#6149) - runtime: document fairness guarantees and current behavior (#6145)
- task: document cancel safety of
LocalSet::run_until(#6147) - io: allow
clear_readinessafter io driver shutdown (#6067) - io: fix integer overflow in
take(#6080) - io: fix I/O resource hang (#6134)
- sync: fix
broadcast::channellink (#6100) - macros: use
::corequalified imports instead of::stdinsidetokio::testmacro (#5973) - fs: update cfg attr in
fs::read_dirto includeaix(#6075) - sync: add
mpsc::Receiver::recv_many(#6010) - tokio: added vita target support (#6094)
- io: mark
Interest::addwith#[must_use](#6037) - runtime: fix cache line size for RISC-V (#5994)
- sync: prevent lock poisoning in
watch::Receiver::wait_for(#6021) - task: fix
spawn_localsource location (#5984) - sync: use Acquire/Release orderings instead of SeqCst in
watch(#6018) - fs: add vectored writes to
tokio::fs::File(#5958) - io: add
Interest::removemethod (#5906) - io: add vectored writes to
DuplexStream(#5985) - net: add Apple tvOS support (#6045)
- sync: add
?Sizedbound to{MutexGuard,OwnedMutexGuard}::map(#5997) - sync: add
watch::Receiver::mark_unseen(#5962, #6014, #6017) - sync: add
watch::Sender::new(#5998) - sync: add const fn
OnceCell::from_value(#5903) - remove unused
statsfeature (#5952) - add missing backticks in code examples (#5938, #6056)
- fix typos (#5988, #6030)
- process: document that
Child::waitis cancel safe (#5977) - sync: add examples for
Semaphore(#5939, #5956, #5978, #6031, #6032, #6050) - sync: document that
broadcastcapacity is a lower bound (#6042) - sync: document that
const_newis not instrumented (#6002) - sync: improve cancel-safety documentation for
mpsc::Sender::send(#5947) - sync: improve docs for
watchchannel (#5954) - taskdump: render taskdump documentation on docs.rs (#5972)
- taskdump: fix potential deadlock (#6036)
- sync: fix potential quadratic behavior in
broadcast::Receiver(#5925) - process: stabilize
Command::raw_arg(#5930) - io: enable awaiting error readiness (#5781)
- rt(alt): improve the scalability of alt runtime as the number of cores grows (#5935)
- io: delegate
WriteHalf::poll_write_vectored(#5914) - rt(unstable): fix memory leak in unstable next-gen scheduler prototype (#5911)
- rt: expose mean task poll time metric (#5927)
- tokio: reduce LLVM code generation (#5859)
- io: support
--cfg mio_unsupported_force_poll_pollflag (#5881) - sync: make
const_newmethods always available (#5885) - sync: avoid false sharing in mpsc channel (#5829)
- rt: pop at least one task from inject queue (#5908)
- sync: add
broadcast::Sender::new(#5824) - net: implement
UCredfor espidf (#5868) - fs: add
File::options()(#5869) - time: implement extra reset variants for
Interval(#5878) - process: add
{ChildStd*}::into_owned_{fd, handle}(#5899) - tokio: removed unused
tokio_*cfgs (#5890) - remove build script to speed up compilation (#5887)
- sync: mention lagging in docs for
broadcast::send(#5820) - runtime: expand on sharing runtime docs (#5858)
- io: use vec in example for
AsyncReadExt::read_exact(#5863) - time: mark
Sleepas!Unpinin docs (#5916) - process: fix
raw_argnot showing up in docs (#5865) - rt: add runtime ID (#5864)
- rt: initial implementation of new threaded runtime (#5823)
tokio-rs/tokio (tokio)
v1.38.2: 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)
v1.38.1: Tokio v1.38.1
1.38.1 (July 16th, 2024)
This release fixes the bug identified as (#6682), which caused timers not
to fire when they should.
Fixed
- time: update
wake_upwhile holding all the locks of sharded time wheels (#6683)
v1.38.0: Tokio v1.38.0
This release marks the beginning of stabilization for runtime metrics. It
stabilizes RuntimeMetrics::worker_count. Future releases will continue to
stabilize more metrics.
Added
- fs: add
File::create_new(#6573) - io: add
copy_bidirectional_with_sizes(#6500) - io: implement
AsyncBufReadforJoin(#6449) - net: add Apple visionOS support (#6465)
- net: implement
CloneforNamedPipeInfo(#6586) - net: support QNX OS (#6421)
- sync: add
Notify::notify_last(#6520) - sync: add
mpsc::Receiver::{capacity,max_capacity}(#6511) - sync: add
splitmethod to the semaphore permit (#6472, #6478) - task: add
tokio::task::join_set::Builder::spawn_blocking(#6578) - wasm: support rt-multi-thread with wasm32-wasi-preview1-threads (#6510)
Changed
- macros: make
#[tokio::test]append#[test]at the end of the attribute list (#6497) - metrics: fix
blocking_threadscount (#6551) - metrics: stabilize
RuntimeMetrics::worker_count(#6556) - runtime: move task out of the
lifo_slotinblock_in_place(#6596) - runtime: panic if
global_queue_intervalis zero (#6445) - sync: always drop message in destructor for oneshot receiver (#6558)
- sync: instrument
Semaphorefor task dumps (#6499) - sync: use FIFO ordering when waking batches of wakers (#6521)
- task: make
LocalKey::getwork with Clone types (#6433) - tests: update nix and mio-aio dev-dependencies (#6552)
- time: clean up implementation (#6517)
- time: lazily init timers on first poll (#6512)
- time: remove the
true_whenfield inTimerShared(#6563) - time: use sharding for timer implementation (#6534)
Fixed
- taskdump: allow building taskdump docs on non-unix machines (#6564)
- time: check for overflow in
Interval::poll_tick(#6487) - sync: fix incorrect
is_emptyon mpsc block boundaries (#6603)
Documented
- fs: rewrite file system docs (#6467)
- io: fix
stdindocumentation (#6581) - io: fix obsolete reference in
ReadHalf::unsplit()documentation (#6498) - macros: render more comprehensible documentation for
select!(#6468) - net: add missing types to module docs (#6482)
- net: fix misleading
NamedPipeServerexample (#6590) - sync: add examples for
SemaphorePermit,OwnedSemaphorePermit(#6477) - sync: document that
Barrier::waitis not cancel safe (#6494) - sync: explain relation between
watch::Sender::{subscribe,closed}(#6490) - task: clarify that you can't abort
spawn_blockingtasks (#6571) - task: fix a typo in doc of
LocalSet::run_until(#6599) - time: fix test-util requirement for pause and resume in docs (#6503)
v1.37.0: Tokio v1.37.0
1.37.0 (March 28th, 2024)
Added
- fs: add
set_max_buf_sizetotokio::fs::File(#6411) - io: add
try_newandtry_with_interesttoAsyncFd(#6345) - sync: add
forget_permitsmethod to semaphore (#6331) - sync: add
is_closed,is_empty, andlento mpsc receivers (#6348) - sync: add a
rwlock()method to ownedRwLockguards (#6418) - sync: expose strong and weak counts of mpsc sender handles (#6405)
- sync: implement
Cloneforwatch::Sender(#6388) - task: add
TaskLocalFuture::take_value(#6340) - task: implement
FromIteratorforJoinSet(#6300)
Changed
- io: make
io::splituse a mutex instead of a spinlock (#6403)
Fixed
- docs: fix docsrs build without net feature (#6360)
- macros: allow select with only else branch (#6339)
- runtime: fix leaking registration entries when os registration fails (#6329)
Documented
- io: document cancel safety of
AsyncBufReadExt::fill_buf(#6431) - io: document cancel safety of
AsyncReadExt's primitive read functions (#6337) - runtime: add doc link from
Runtimeto#[tokio::main](#6366) - runtime: make the
enterexample deterministic (#6351) - sync: add Semaphore example for limiting the number of outgoing requests (#6419)
- sync: fix missing period in broadcast docs (#6377)
- sync: mark
mpsc::Sender::downgradewith#[must_use](#6326) - sync: reorder
const_newbeforenew_with(#6392) - sync: update watch channel docs (#6395)
- task: fix documentation links (#6336)
Changed (unstable)
- runtime: include task
Idin taskdumps (#6328) - runtime: panic if
unhandled_panicis enabled when not supported (#6410)
v1.36.0: Tokio v1.36.0
1.36.0 (February 2nd, 2024)
Added
- io: add
tokio::io::Join(#6220) - io: implement
AsyncWriteforEmpty(#6235) - net: add support for anonymous unix pipes (#6127)
- net: add
UnixSocket(#6290) - net: expose keepalive option on
TcpSocket(#6311) - sync: add
{Receiver,UnboundedReceiver}::poll_recv_many(#6236) - sync: add
Sender::{try_,}reserve_many(#6205) - sync: add
watch::Receiver::mark_unchanged(#6252) - task: add
JoinSet::try_join_next(#6280)
Changed
- io: make
copycooperative (#6265) - io: make
repeatandsinkcooperative (#6254) - io: simplify check for empty slice (#6293)
- process: use pidfd on Linux when available (#6152)
- sync: use AtomicBool in broadcast channel future (#6298)
Documented
- io: clarify
clear_readydocs (#6304) - net: document that
*Fdtraits onTcpSocketare unix-only (#6294) - sync: document FIFO behavior of
tokio::sync::Mutex(#6279) - chore: typographic improvements (#6262)
- runtime: remove obsolete comment (#6303)
- task: fix typo (#6261)
v1.35.1: Tokio v1.35.1
1.35.1 (December 19, 2023)
This is a forward part of a change that was backported to 1.25.3.
Fixed
- io: add budgeting to
tokio::runtime::io::registration::async_io(#6221)
v1.35.0: Tokio v1.35.0
1.35.0 (December 8th, 2023)
Added
- net: add Apple watchOS support (#6176)
Changed
- io: drop the
Sizedrequirements fromAsyncReadExt.read_buf(#6169) - runtime: make
Runtimeunwind safe (#6189) - runtime: reduce the lock contention in task spawn (#6001)
- tokio: update nix dependency to 0.27.1 (#6190)
Fixed
- chore: make
--cfg docsrswork without net feature (#6166) - chore: use relaxed load for
unsync_loadon miri (#6179) - runtime: handle missing context on wake (#6148)
- taskdump: fix taskdump cargo config example (#6150)
- taskdump: skip notified tasks during taskdumps (#6194)
- tracing: avoid creating resource spans with current parent, use a None parent instead (#6107)
- tracing: make task span explicit root (#6158)
Documented
- io: flush in
AsyncWriteExtexamples (#6149) - runtime: document fairness guarantees and current behavior (#6145)
- task: document cancel safety of
LocalSet::run_until(#6147)
v1.34.0: Tokio v1.34.0
Fixed
- io: allow
clear_readinessafter io driver shutdown (#6067) - io: fix integer overflow in
take(#6080) - io: fix I/O resource hang (#6134)
- sync: fix
broadcast::channellink (#6100)
Changed
- macros: use
::corequalified imports instead of::stdinsidetokio::testmacro (#5973)
Added
- fs: update cfg attr in
fs::read_dirto includeaix(#6075) - sync: add
mpsc::Receiver::recv_many(#6010) - tokio: added vita target support (#6094)
v1.33.0: Tokio v1.33.0
1.33.0 (October 9, 2023)
Fixed
- io: mark
Interest::addwith#[must_use](#6037) - runtime: fix cache line size for RISC-V (#5994)
- sync: prevent lock poisoning in
watch::Receiver::wait_for(#6021) - task: fix
spawn_localsource location (#5984)
Changed
- sync: use Acquire/Release orderings instead of SeqCst in
watch(#6018)
Added
- fs: add vectored writes to
tokio::fs::File(#5958) - io: add
Interest::removemethod (#5906) - io: add vectored writes to
DuplexStream(#5985) - net: add Apple tvOS support (#6045)
- sync: add
?Sizedbound to{MutexGuard,OwnedMutexGuard}::map(#5997) - sync: add
watch::Receiver::mark_unseen(#5962, #6014, #6017) - sync: add
watch::Sender::new(#5998) - sync: add const fn
OnceCell::from_value(#5903)
Removed
- remove unused
statsfeature (#5952)
Documented
- add missing backticks in code examples (#5938, #6056)
- fix typos (#5988, #6030)
- process: document that
Child::waitis cancel safe (#5977) - sync: add examples for
Semaphore(#5939, #5956, #5978, #6031, #6032, #6050) - sync: document that
broadcastcapacity is a lower bound (#6042) - sync: document that
const_newis not instrumented (#6002) - sync: improve cancel-safety documentation for
mpsc::Sender::send(#5947) - sync: improve docs for
watchchannel (#5954) - taskdump: render taskdump documentation on docs.rs (#5972)
Unstable
- taskdump: fix potential deadlock (#6036)
v1.32.1: Tokio v1.32.1
1.32.1 (December 19, 2023)
This is a forward part of a change that was backported to 1.25.3.
Fixed
- io: add budgeting to
tokio::runtime::io::registration::async_io(#6221)
v1.32.0: Tokio v1.32.0
Fixed
- sync: fix potential quadratic behavior in
broadcast::Receiver(#5925)
Added
Unstable
- rt(alt): improve the scalability of alt runtime as the number of cores grows (#5935)
v1.31.0: Tokio v1.31.0
Fixed
- io: delegate
WriteHalf::poll_write_vectored(#5914)
Unstable
- rt(unstable): fix memory leak in unstable next-gen scheduler prototype (#5911)
- rt: expose mean task poll time metric (#5927)
v1.30.0: Tokio v1.30.0
1.30.0 (August 9, 2023)
This release bumps the MSRV of Tokio to 1.63. (#5887)
Changed
- tokio: reduce LLVM code generation (#5859)
- io: support
--cfg mio_unsupported_force_poll_pollflag (#5881) - sync: make
const_newmethods always available (#5885) - sync: avoid false sharing in mpsc channel (#5829)
- rt: pop at least one task from inject queue (#5908)
Added
- sync: add
broadcast::Sender::new(#5824) - net: implement
UCredfor espidf (#5868) - fs: add
File::options()(#5869) - time: implement extra reset variants for
Interval(#5878) - process: add
{ChildStd*}::into_owned_{fd, handle}(#5899)
Removed
Documented
- sync: mention lagging in docs for
broadcast::send(#5820) - runtime: expand on sharing runtime docs (#5858)
- io: use vec in example for
AsyncReadExt::read_exact(#5863) - time: mark
Sleepas!Unpinin docs (#5916) - process: fix
raw_argnot showing up in docs (#5865)
Unstable
List of commits
99a940d (Update Rust crate tokio to v1.38.2 [SECURITY], 2025-04-07)