chore(deps): update rust crate tokio to 1.38.2 [security] #13

Open
renovate wants to merge 1 commit from renovate/crate-tokio-vulnerability into main
Member

This PR contains the following updates:

Package Type Update Change
tokio (source) dev-dependencies minor 11.38.2
tokio (source) dependencies minor 11.38.2
tokio (source) dependencies minor 1.27.01.38.2

Tokio broadcast channel calls clone in parallel, but does not require Sync

GHSA-rr8g-9fpq-6wmg / RUSTSEC-2025-0023

More information

Details

The broadcast channel internally calls clone on the stored value when receiving it, and only requires T:Send. This means that using the broadcast channel with values that are Send but not Sync can trigger unsoundness if the clone implementation makes use of the value being !Sync.

Thank you to Austin Bonander for finding and reporting this issue.

Severity

  • CVSS Score: 2.7 / 10 (Low)
  • Vector String: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:U

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


Broadcast channel calls clone in parallel, but does not require Sync

GHSA-rr8g-9fpq-6wmg / RUSTSEC-2025-0023

More information

Details

The broadcast channel internally calls clone on the stored value when
receiving it, and only requires T:Send. This means that using the broadcast
channel with values that are Send but not Sync can trigger unsoundness if
the clone implementation makes use of the value being !Sync.

Thank you to Austin Bonander for finding and reporting this issue.

Severity

Unknown

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


Race condition in tokio

CVE-2021-38191 / GHSA-2grh-hm3w-w7hv / RUSTSEC-2021-0072

More information

Details

When aborting a task with JoinHandle::abort, the future is dropped in the thread calling abort if the task is not currently being executed. This is incorrect for tasks spawned on a LocalSet. This can easily result in race conditions as many projects use Rc or RefCell in their Tokio tasks for better performance.

Severity

  • CVSS Score: 5.9 / 10 (Medium)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


Task dropped in wrong thread when aborting LocalSet task

CVE-2021-38191 / GHSA-2grh-hm3w-w7hv / RUSTSEC-2021-0072

More information

Details

When aborting a task with JoinHandle::abort, the future is dropped in the
thread calling abort if the task is not currently being executed. This is
incorrect for tasks spawned on a LocalSet.

This can easily result in race conditions as many projects use Rc or RefCell
in their Tokio tasks for better performance.

See tokio#3929 for more details.

Severity

Unknown

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


Race Condition in tokio

CVE-2021-45710 / GHSA-fg7r-2g4j-5cgr / RUSTSEC-2021-0124

More information

Details

If a tokio::sync::oneshot channel is closed (via the oneshot::Receiver::close method), a data race may occur if the oneshot::Sender::send method is called while the corresponding oneshot::Receiver is awaited or calling try_recv.

When these methods are called concurrently on a closed channel, the two halves of the channel can concurrently access a shared memory location, resulting in a data race. This has been observed to cause memory corruption.

Note that the race only occurs when both halves of the channel are used after the Receiver half has called close. Code where close is not used, or where the Receiver is not awaited and try_recv is not called after calling close, is not affected.

Severity

  • CVSS Score: 8.1 / 10 (High)
  • Vector String: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


Data race when sending and receiving after closing a oneshot channel

CVE-2021-45710 / GHSA-fg7r-2g4j-5cgr / RUSTSEC-2021-0124

More information

Details

If a tokio::sync::oneshot channel is closed (via the
oneshot::Receiver::close method), a data race may occur if the
oneshot::Sender::send method is called while the corresponding
oneshot::Receiver is awaited or calling try_recv.

When these methods are called concurrently on a closed channel, the two halves
of the channel can concurrently access a shared memory location, resulting in a
data race. This has been observed to cause memory corruption.

Note that the race only occurs when both halves of the channel are used
after the Receiver half has called close. Code where close is not used, or where the
Receiver is not awaited and try_recv is not called after calling close,
is not affected.

See tokio#4225 for more details.

Severity

Unknown

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


tokio::io::ReadHalf<T>::unsplit is Unsound

GHSA-4q83-7cq4-p6wg / RUSTSEC-2023-0005

More information

Details

tokio::io::ReadHalf<T>::unsplit can violate the Pin contract

The soundness issue is described in the tokio/issues#5372

Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf)
is unusual, combined with the difficulty of making any arbitrary use-after-free
exploitable in Rust without doing a lot of careful alignment of data types in
the surrounding code.

The tokio feature io-util is also required to be enabled to trigger this
soundness issue.

Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e
and carllerche appropriately responding and fixing the soundness bug.

Tokio before 0.2.0 used futures 0.1 that did not have Pin, so it is not
affected by this issue.

Severity

Low

References

This data is provided by OSV and the GitHub Advisory Database (CC-BY 4.0).


tokio::io::ReadHalf<T>::unsplit is Unsound

GHSA-4q83-7cq4-p6wg / RUSTSEC-2023-0005

More information

Details

tokio::io::ReadHalf<T>::unsplit can violate the Pin contract

The soundness issue is described in the tokio/issues#5372

Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf)
is unusual, combined with the difficulty of making any arbitrary use-after-free
exploitable in Rust without doing a lot of careful alignment of data types in
the surrounding code.

The tokio feature io-util is also required to be enabled to trigger this
soundness issue.

Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e
and carllerche appropriately responding and fixing the soundness bug.

Tokio before 0.2.0 used futures 0.1 that did not have Pin, so it is not
affected by this issue.

Severity

Unknown

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


Release Notes

tokio-rs/tokio (tokio)

v1.38.2: Tokio v1.38.2

Compare Source

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

Compare Source

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_up while holding all the locks of sharded time wheels (#​6683)

v1.38.0: Tokio v1.38.0

Compare Source

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 AsyncBufRead for Join (#​6449)
  • net: add Apple visionOS support (#​6465)
  • net: implement Clone for NamedPipeInfo (#​6586)
  • net: support QNX OS (#​6421)
  • sync: add Notify::notify_last (#​6520)
  • sync: add mpsc::Receiver::{capacity,max_capacity} (#​6511)
  • sync: add split method 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_threads count (#​6551)
  • metrics: stabilize RuntimeMetrics::worker_count (#​6556)
  • runtime: move task out of the lifo_slot in block_in_place (#​6596)
  • runtime: panic if global_queue_interval is zero (#​6445)
  • sync: always drop message in destructor for oneshot receiver (#​6558)
  • sync: instrument Semaphore for task dumps (#​6499)
  • sync: use FIFO ordering when waking batches of wakers (#​6521)
  • task: make LocalKey::get work 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_when field in TimerShared (#​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_empty on mpsc block boundaries (#​6603)
Documented
  • fs: rewrite file system docs (#​6467)
  • io: fix stdin documentation (#​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 NamedPipeServer example (#​6590)
  • sync: add examples for SemaphorePermit, OwnedSemaphorePermit (#​6477)
  • sync: document that Barrier::wait is not cancel safe (#​6494)
  • sync: explain relation between watch::Sender::{subscribe,closed} (#​6490)
  • task: clarify that you can't abort spawn_blocking tasks (#​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

Compare Source

1.37.0 (March 28th, 2024)
Added
  • fs: add set_max_buf_size to tokio::fs::File (#​6411)
  • io: add try_new and try_with_interest to AsyncFd (#​6345)
  • sync: add forget_permits method to semaphore (#​6331)
  • sync: add is_closed, is_empty, and len to mpsc receivers (#​6348)
  • sync: add a rwlock() method to owned RwLock guards (#​6418)
  • sync: expose strong and weak counts of mpsc sender handles (#​6405)
  • sync: implement Clone for watch::Sender (#​6388)
  • task: add TaskLocalFuture::take_value (#​6340)
  • task: implement FromIterator for JoinSet (#​6300)
Changed
  • io: make io::split use 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 Runtime to #[tokio::main] (#​6366)
  • runtime: make the enter example 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::downgrade with #[must_use] (#​6326)
  • sync: reorder const_new before new_with (#​6392)
  • sync: update watch channel docs (#​6395)
  • task: fix documentation links (#​6336)
Changed (unstable)
  • runtime: include task Id in taskdumps (#​6328)
  • runtime: panic if unhandled_panic is enabled when not supported (#​6410)

v1.36.0: Tokio v1.36.0

Compare Source

1.36.0 (February 2nd, 2024)
Added
  • io: add tokio::io::Join (#​6220)
  • io: implement AsyncWrite for Empty (#​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 copy cooperative (#​6265)
  • io: make repeat and sink cooperative (#​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_ready docs (#​6304)
  • net: document that *Fd traits on TcpSocket are 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

Compare Source

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

Compare Source

1.35.0 (December 8th, 2023)
Added
  • net: add Apple watchOS support (#​6176)
Changed
  • io: drop the Sized requirements from AsyncReadExt.read_buf (#​6169)
  • runtime: make Runtime unwind safe (#​6189)
  • runtime: reduce the lock contention in task spawn (#​6001)
  • tokio: update nix dependency to 0.27.1 (#​6190)
Fixed
  • chore: make --cfg docsrs work without net feature (#​6166)
  • chore: use relaxed load for unsync_load on 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 AsyncWriteExt examples (#​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

Compare Source

Fixed
  • io: allow clear_readiness after io driver shutdown (#​6067)
  • io: fix integer overflow in take (#​6080)
  • io: fix I/O resource hang (#​6134)
  • sync: fix broadcast::channel link (#​6100)
Changed
  • macros: use ::core qualified imports instead of ::std inside tokio::test macro (#​5973)
Added
  • fs: update cfg attr in fs::read_dir to include aix (#​6075)
  • sync: add mpsc::Receiver::recv_many (#​6010)
  • tokio: added vita target support (#​6094)

v1.33.0: Tokio v1.33.0

Compare Source

1.33.0 (October 9, 2023)
Fixed
  • io: mark Interest::add with #[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_local source 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::remove method (#​5906)
  • io: add vectored writes to DuplexStream (#​5985)
  • net: add Apple tvOS support (#​6045)
  • sync: add ?Sized bound 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 stats feature (#​5952)
Documented
Unstable
  • taskdump: fix potential deadlock (#​6036)

v1.32.1: Tokio v1.32.1

Compare Source

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

Compare Source

Fixed
  • sync: fix potential quadratic behavior in broadcast::Receiver (#​5925)
Added
  • process: stabilize Command::raw_arg (#​5930)
  • io: enable awaiting error readiness (#​5781)
Unstable
  • rt(alt): improve the scalability of alt runtime as the number of cores grows (#​5935)

v1.31.0: Tokio v1.31.0

Compare Source

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

Compare Source

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_poll flag (#​5881)
  • sync: make const_new methods 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 UCred for espidf (#​5868)
  • fs: add File::options() (#​5869)
  • time: implement extra reset variants for Interval (#​5878)
  • process: add {ChildStd*}::into_owned_{fd, handle} (#​5899)
Removed
  • tokio: removed unused tokio_* cfgs (#​5890)
  • remove build script to speed up compilation (#​5887)
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 Sleep as !Unpin in docs (#​5916)
  • process: fix raw_arg not showing up in docs (#​5865)
Unstable
  • rt: add runtime ID (#​5864)
  • rt: initial implementation of new threaded runtime (#​5823)

v1.29.1: Tokio v1.29.1

Compare Source

Fixed
  • rt: fix nesting two block_in_place with a block_on between (#​5837)

v1.29.0: Tokio v1.29.0

Compare Source

Technically a breaking change, the Send implementation is removed from
runtime::EnterGuard. This change fixes a bug and should not impact most users.

Breaking
  • rt: EnterGuard should not be Send (#​5766)
Fixed
  • fs: reduce blocking ops in fs::read_dir (#​5653)
  • rt: fix possible starvation (#​5686, #​5712)
  • rt: fix stacked borrows issue in JoinSet (#​5693)
  • rt: panic if EnterGuard dropped incorrect order (#​5772)
  • time: do not overflow to signal value (#​5710)
  • fs: wait for in-flight ops before cloning File (#​5803)
Changed
  • rt: reduce time to poll tasks scheduled from outside the runtime (#​5705, #​5720)
Added
  • net: add uds doc alias for unix sockets (#​5659)
  • rt: add metric for number of tasks (#​5628)
  • sync: implement more traits for channel errors (#​5666)
  • net: add nodelay methods on TcpSocket (#​5672)
  • sync: add broadcast::Receiver::blocking_recv (#​5690)
  • process: add raw_arg method to Command (#​5704)
  • io: support PRIORITY epoll events (#​5566)
  • task: add JoinSet::poll_join_next (#​5721)
  • net: add support for Redox OS (#​5790)
Unstable

v1.28.2: Tokio v1.28.2

Compare Source

1.28.2 (May 28, 2023)

Forward ports 1.18.6 changes.

Fixed
  • deps: disable default features for mio (#​5728)

v1.28.1: Tokio v1.28.1

Compare Source

1.28.1 (May 10th, 2023)

This release fixes a mistake in the build script that makes AsFd implementations unavailable on Rust 1.63. (#​5677)

v1.28.0: Tokio v1.28.0

Compare Source

1.28.0 (April 25th, 2023)
Added
  • io: add AsyncFd::async_io (#​5542)
  • io: impl BufMut for ReadBuf (#​5590)
  • net: add recv_buf for UdpSocket and UnixDatagram (#​5583)
  • sync: add OwnedSemaphorePermit::semaphore (#​5618)
  • sync: add same_channel to broadcast channel (#​5607)
  • sync: add watch::Receiver::wait_for (#​5611)
  • task: add JoinSet::spawn_blocking and JoinSet::spawn_blocking_on (#​5612)
Changed
  • deps: update windows-sys to 0.48 (#​5591)
  • io: make read_to_end not grow unnecessarily (#​5610)
  • macros: make entrypoints more efficient (#​5621)
  • sync: improve Debug impl for RwLock (#​5647)
  • sync: reduce contention in Notify (#​5503)
Fixed
  • net: support get_peer_cred on AIX (#​5065)
  • sync: avoid deadlocks in broadcast with custom wakers (#​5578)
Documented
  • sync: fix typo in Semaphore::MAX_PERMITS (#​5645)
  • sync: fix typo in tokio::sync::watch::Sender docs (#​5587)

v1.27.0: Tokio v1.27.0

Compare Source

1.27.0 (March 27th, 2023)

This release bumps the MSRV of Tokio to 1.56. (#​5559)

Added
  • io: add async_io helper method to sockets (#​5512)
  • io: add implementations of AsFd/AsHandle/AsSocket (#​5514, #​5540)
  • net: add UdpSocket::peek_sender() (#​5520)
  • sync: add RwLockWriteGuard::{downgrade_map, try_downgrade_map} (#​5527)
  • task: add JoinHandle::abort_handle (#​5543)
Changed
  • io: use memchr from libc (#​5558)
  • macros: accept path as crate rename in #[tokio::main] (#​5557)
  • macros: update to syn 2.0.0 (#​5572)
  • time: don't register for a wakeup when Interval returns Ready (#​5553)
Fixed
  • fs: fuse std iterator in ReadDir (#​5555)
  • tracing: fix spawn_blocking location fields (#​5573)
  • time: clean up redundant check in Wheel::poll() (#​5574)
Documented
  • macros: define cancellation safety (#​5525)
  • io: add details to docs of tokio::io::copy[_buf] (#​5575)
  • io: refer to ReaderStream and StreamReader in module docs (#​5576)

v1.26.0: Tokio v1.26.0

Compare Source

Fixed
Added
Changed
Internal Changes
Unstable
Documented

v1.25.3: Tokio v1.25.3

Compare Source

1.25.3 (December 17th, 2023)
Fixed
  • io: add budgeting to tokio::runtime::io::registration::async_io (#​6221)

v1.25.2: Tokio v1.25.2

Compare Source

1.25.2 (September 22, 2023)

Forward ports 1.20.6 changes.

Changed

v1.25.1: Tokio v1.25.1

Compare Source

1.25.1 (May 28, 2023)

Forward ports 1.18.6 changes.

Fixed
  • deps: disable default features for mio (#​5728)

v1.25.0: Tokio v1.25.0

1.25.0 (January 28, 2023)
Fixed
  • rt: fix runtime metrics reporting (#​5330)
Added
  • sync: add broadcast::Sender::len (#​5343)
Changed
  • fs: increase maximum read buffer size to 2MiB (#​5397)

v1.24.1: Tokio v1.24.1

Compare Source

This release fixes a compilation failure on targets without AtomicU64 when using rustc older than 1.63. (#​5356)

v1.24.0: Tokio v1.24.0

Compare Source

The highlight of this release is the reduction of lock contention for all I/O operations (#​5300). We have received reports of up to a 20% improvement in CPU utilization and increased throughput for real-world I/O heavy applications.

Fixed
  • rt: improve native AtomicU64 support detection (#​5284)
Added
  • rt: add configuration option for max number of I/O events polled from the OS
    per tick (#​5186)
  • rt: add an environment variable for configuring the default number of worker
    threads per runtime instance (#​4250)
Changed
  • sync: reduce MPSC channel stack usage (#​5294)
  • io: reduce lock contention in I/O operations (#​5300)
  • fs: speed up read_dir() by chunking operations (#​5309)
  • rt: use internal ThreadId implementation (#​5329)
  • test: don't auto-advance time when a spawn_blocking task is running (#​5115)

v1.23.1: Tokio v1.23.1

Compare Source

This release forward ports changes from 1.18.4.

Fixed
  • net: fix Windows named pipe server builder to maintain option when toggling
    pipe mode (#​5336).

v1.23.0: Tokio v1.23.0

Compare Source

Fixed
  • net: fix Windows named pipe connect (#​5208)
  • io: support vectored writes for ChildStdin (#​5216)
  • io: fix async fn ready() false positive for OS-specific events (#​5231)
Changed
  • runtime: yield_now defers task until after driver poll (#​5223)
  • runtime: reduce amount of codegen needed per spawned task (#​5213)
  • windows: replace winapi dependency with windows-sys (#​5204)

v1.22.0: Tokio v1.22.0

Compare Source

Added
  • runtime: add Handle::runtime_flavor (#​5138)
  • sync: add Mutex::blocking_lock_owned (#​5130)
  • sync: add Semaphore::MAX_PERMITS (#​5144)
  • sync: add merge() to semaphore permits (#​4948)
  • sync: add mpsc::WeakUnboundedSender (#​5189)
Added (unstable)
  • process: add Command::process_group (#​5114)
  • runtime: export metrics about the blocking thread pool (#​5161)
  • task: add task::id() and task::try_id() (#​5171)
Fixed
  • macros: don't take ownership of futures in macros (#​5087)
  • runtime: fix Stacked Borrows violation in LocalOwnedTasks (#​5099)
  • runtime: mitigate ABA with 32-bit queue indices when possible (#​5042)
  • task: wake local tasks to the local queue when woken by the same thread (#​5095)
  • time: panic in release mode when mark_pending called illegally (#​5093)
  • runtime: fix typo in expect message (#​5169)
  • runtime: fix unsync_load on atomic types (#​5175)
  • task: elaborate safety comments in task deallocation (#​5172)
  • runtime: fix LocalSet drop in thread local (#​5179)
  • net: remove libc type leakage in a public API (#​5191)
  • runtime: update the alignment of CachePadded (#​5106)
Changed
  • io: make tokio::io::copy continue filling the buffer when writer stalls (#​5066)
  • runtime: remove coop::budget from LocalSet::run_until (#​5155)
  • sync: make Notify panic safe (#​5154)
Documented
  • io: fix doc for write_i8 to use signed integers (#​5040)
  • net: fix doc typos for TCP and UDP set_tos methods (#​5073)
  • net: fix function name in UdpSocket::recv documentation (#​5150)
  • sync: typo in TryLockError for RwLock::try_write (#​5160)
  • task: document that spawned tasks execute immediately (#​5117)
  • time: document return type of timeout (#​5118)
  • time: document that timeout checks only before poll (#​5126)
  • sync: specify return type of oneshot::Receiver in docs (#​5198)
Internal changes
  • runtime: use const Mutex::new for globals (#​5061)
  • runtime: remove Option around mio::Events in io driver (#​5078)
  • runtime: remove a conditional compilation clause (#​5104)
  • runtime: remove a reference to internal time handle (#​5107)
  • runtime: misc time driver cleanup (#​5120)
  • runtime: move signal driver to runtime module (#​5121)
  • runtime: signal driver now uses I/O driver directly (#​5125)
  • runtime: start decoupling I/O driver and I/O handle (#​5127)
  • runtime: switch io::handle refs with scheduler:Handle (#​5128)
  • runtime: remove Arc from I/O driver (#​5134)
  • runtime: use signal driver handle via scheduler::Handle (#​5135)
  • runtime: move internal clock fns out of context (#​5139)
  • runtime: remove runtime::context module (#​5140)
  • runtime: keep driver cfgs in driver.rs (#​5141)
  • runtime: add runtime::context to unify thread-locals (#​5143)
  • runtime: rename some confusing internal variables/fns (#​5151)
  • runtime: move coop mod into runtime (#​5152)
  • runtime: move budget state to context thread-local (#​5157)
  • runtime: move park logic into runtime module (#​5158)
  • runtime: move Runtime into its own file (#​5159)
  • runtime: unify entering a runtime with Handle::enter (#​5163)
  • runtime: remove handle reference from each scheduler (#​5166)
  • runtime: move enter into context (#​5167)
  • runtime: combine context and entered thread-locals (#​5168)
  • runtime: fix accidental unsetting of current handle (#​5178)
  • runtime: move CoreStage methods to Core (#​5182)
  • sync: name mpsc semaphore types (#​5146)

v1.21.2: Tokio v1.21.2

Compare Source

1.21.2 (September 27, 2022)

This release removes the dependency on the once_cell crate to restore the MSRV of 1.21.x, which is the latest minor version at the time of release. (#​5048)

v1.21.1: Tokio v1.21.1

Compare Source

1.21.1 (September 13, 2022)
Fixed
  • net: fix dependency resolution for socket2 (#​5000)
  • task: ignore failure to set TLS in LocalSet Drop (#​4976)

v1.21.0: Tokio v1.21.0

Compare Source

1.21.0 (September 2, 2022)

This release is the first release of Tokio to intentionally support WASM. The sync,macros,io-util,rt,time features are stabilized on WASM. Additionally the wasm32-wasi target is given unstable support for the net feature.

Added
  • net: add device and bind_device methods to TCP/UDP sockets (#​4882)
  • net: add tos and set_tos methods to TCP and UDP sockets (#​4877)
  • net: add security flags to named pipe ServerOptions (#​4845)
  • signal: add more windows signal handlers (#​4924)
  • sync: add mpsc::Sender::max_capacity method (#​4904)
  • sync: implement Weak version of mpsc::Sender (#​4595)
  • task: add LocalSet::enter (#​4765)
  • task: stabilize JoinSet and AbortHandle (#​4920)
  • tokio: add track_caller to public APIs (#​4805, #​4848, #​4852)
  • wasm: initial support for wasm32-wasi target (#​4716)
Fixed
  • miri: improve miri compatibility by avoiding temporary references in linked_list::Link impls (#​4841)
  • signal: don't register write interest on signal pipe (#​4898)
  • sync: add #[must_use] to lock guards (#​4886)
  • sync: fix hang when calling recv on closed and reopened broadcast channel (#​4867)
  • task: propagate attributes on task-locals (#​4837)
Changed
  • fs: change panic to error in File::start_seek (#​4897)
  • io: reduce syscalls in poll_read (#​4840)
  • process: use blocking threadpool for child stdio I/O (#​4824)
  • signal: make SignalKind methods const (#​4956)
Internal changes
  • rt: extract basic_scheduler::Config (#​4935)
  • rt: move I/O driver into runtime module (#​4942)
  • rt: rename internal scheduler types (#​4945)
Documented
  • chore: fix typos and grammar (#​4858, #​4894, #​4928)
  • io: fix typo in AsyncSeekExt::rewind docs (#​4893)
  • net: add documentation to try_read() for zero-length buffers (#​4937)
  • runtime: remove incorrect panic section for Builder::worker_threads (#​4849)
  • sync: doc of watch::Sender::send improved (#​4959)
  • task: add cancel safety docs to JoinHandle (#​4901)
  • task: expand on cancellation of spawn_blocking (#​4811)
  • time: clarify that the first tick of Interval::tick happens immediately (#​4951)
Unstable
  • rt: add unstable option to disable the LIFO slot (#​4936)
  • task: fix incorrect signature in Builder::spawn_on (#​4953)
  • task: make task::Builder::spawn* methods fallible (#​4823)

v1.20.6: Tokio v1.20.6

Compare Source

1.20.6 (September 22, 2023)

This is a backport of a change from 1.27.0.

Changed

v1.20.5: Tokio v1.20.5

Compare Source

1.20.5 (May 28, 2023)

Forward ports 1.18.6 changes.

Fixed
  • deps: disable default features for mio (#​5728)

v1.20.4

Compare Source

v1.20.3

Compare Source

v1.20.2: Tokio v1.20.2

Compare Source

1.20.2 (September 27, 2022)

This release removes the dependency on the once_cell crate to restore the MSRV of the 1.20.x LTS release. (#​5048)

v1.20.1: Tokio v1.20.1

Compare Source

1.20.1 (July 25, 2022)
Fixed
  • chore: fix version detection in build script (#​4860)

v1.20.0: Tokio v1.20.0

Compare Source

1.20.0 (July 12, 2022)
Added
Changed
  • time: remove src/time/driver/wheel/stack.rs (#​4766)
  • rt: clean up arguments passed to basic scheduler (#​4767)
  • net: be more specific about winapi features (#​4764)
  • tokio: use const initialized thread locals where possible (#​4677)
  • task: various small improvements to LocalKey (#​4795)
Fixed
Documented
  • fs: warn about performance pitfall (#​4762)
  • chore: fix spelling (#​4769)
  • sync: document spurious failures in oneshot (#​4777)
  • sync: add warning for watch in non-Send futures (#​4741)
  • chore: fix typo (#​4798)
Unstable
  • joinset: rename join_one to join_next (#​4755)
  • rt: unhandled panic config for current thread rt (#​4770)

v1.19.2: Tokio v1.19.2

Compare Source

1.19.2 (June 6, 2022)

This release fixes another bug in Notified::enable. (#​4751)

v1.19.1: Tokio v1.19.1

Compare Source

1.19.1 (June 5, 2022)

This release fixes a bug in Notified::enable. (#​4747)

v1.19.0: Tokio v1.19.0

Compare Source

1.19.0 (June 3, 2022)
Added
  • runtime: add is_finished method for JoinHandle and AbortHandle (#​4709)
  • runtime: make global queue and event polling intervals configurable (#​4671)
  • sync: add Notified::enable (#​4705)
  • sync: add watch::Sender::send_if_modified (#​4591)
  • sync: add resubscribe method to broadcast::Receiver (#​4607)
  • net: add take_error to TcpSocket and TcpStream (#​4739)
Changed
  • io: refactor out usage of Weak in the io handle (#​4656)
Fixed
  • macros: avoid starvation in join! and try_join! (#​4624)
Documented
  • runtime: clarify semantics of tasks outliving block_on (#​4729)
  • time: fix example for MissedTickBehavior::Burst (#​4713)
Unstable
  • metrics: correctly update atomics in IoDriverMetrics (#​4725)
  • metrics: fix compilation with unstable, process, and rt, but without net (#​4682)
  • task: add #[track_caller] to JoinSet/JoinMap (#​4697)
  • task: add Builder::{spawn_on, spawn_local_on, spawn_blocking_on} (#​4683)
  • task: add consume_budget for cooperative scheduling (#​4498)
  • task: add join_set::Builder for configuring JoinSet tasks (#​4687)
  • task: update return value of JoinSet::join_one (#​4726)

v1.18.6: Tokio v1.18.6

Compare Source

1.18.6 (May 28, 2023)
Fixed
  • deps: disable default features for mio (#​5728)

v1.18.5

Compare Source

v1.18.4

Compare Source

v1.18.3: Tokio v1.18.3

Compare Source

1.18.3 (September 27, 2022)

This release removes the dependency on the once_cell crate to restore the MSRV of the 1.18.x LTS release. (#​5048)

v1.18.2: Tokio v1.18.2

Compare Source

1.18.2 (May 5, 2022)

Add missing features for the winapi dependency. (#​4663)

v1.18.1: Tokio v1.18.1

Compare Source

1.18.1 (May 2, 2022)

The 1.18.0 release broke the build for targets without 64-bit atomics when building with tokio_unstable. This release fixes that. (#​4649)

v1.18.0: Tokio v1.18.0

Compare Source

1.18.0 (April 27, 2022)

This release adds a number of new APIs in tokio::net, tokio::signal, and
tokio::sync. In addition, it adds new unstable APIs to tokio::task (Ids
for uniquely identifying a task, and AbortHandle for remotely cancelling a
task), as well as a number of bugfixes.

Fixed
  • blocking: add missing #[track_caller] for spawn_blocking (#​4616)
  • macros: fix select macro to process 64 branches (#​4519)
  • net: fix try_io methods not calling Mio's try_io internally (#​4582)
  • runtime: recover when OS fails to spawn a new thread (#​4485)
Added
  • net: add UdpSocket::peer_addr (#​4611)
  • net: add try_read_buf method for named pipes (#​4626)
  • signal: add SignalKind Hash/Eq impls and c_int conversion (#​4540)
  • signal: add support for signals up to SIGRTMAX (#​4555)
  • sync: add watch::Sender::send_modify method (#​4310)
  • sync: add broadcast::Receiver::len method (#​4542)
  • sync: add watch::Receiver::same_channel method (#​4581)
  • sync: implement Clone for RecvError types (#​4560)
Changed
  • update mio to 0.8.1 (#​4582)
  • macros: rename tokio::select!'s internal util module (#​4543)
  • runtime: use Vec::with_capacity when building runtime (#​4553)
Documented
  • improve docs for tokio_unstable (#​4524)
  • runtime: include more documentation for thread_pool/worker (#​4511)
  • runtime: update Handle::current's docs to mention EnterGuard (#​4567)
  • time: clarify platform specific timer resolution (#​4474)
  • signal: document that Signal::recv is cancel-safe (#​4634)
  • sync: UnboundedReceiver close docs (#​4548)
Unstable

The following changes only apply when building with --cfg tokio_unstable:

  • task: add task::Id type (#​4630)
  • task: add AbortHandle type for cancelling tasks in a JoinSet (#​4530],
    [#​4640)
  • task: fix missing doc(cfg(...)) attributes for JoinSet (#​4531)
  • task: fix broken link in AbortHandle RustDoc (#​4545)
  • metrics: add initial IO driver metrics (#​4507)

v1.17.0: Tokio v1.17.0

Compare Source

1.17.0 (February 15, 2022)

This release updates the minimum supported Rust version (MSRV) to 1.49,
the mio dependency to v0.8, and the (optional) parking_lot
dependency to v0.12. Additionally, it contains several bug fixes, as
well as internal refactoring and performance improvements.

Fixed
  • time: prevent panicking in sleep with large durations (#​4495)
  • time: eliminate potential panics in Instant arithmetic on platforms
    where Instant::now is not monotonic (#​4461)
  • io: fix DuplexStream not participating in cooperative yielding
    (#​4478)
  • rt: fix potential double panic when dropping a JoinHandle (#​4430)
Changed
  • update minimum supported Rust version to 1.49 (#​4457)
  • update parking_lot dependency to v0.12.0 (#​4459)
  • update mio dependency to v0.8 (#​4449)
  • rt: remove an unnecessary lock in the blocking pool (#​4436)
  • rt: remove an unnecessary enum in the basic scheduler (#​4462)
  • time: use bit manipulation instead of modulo to improve performance
    (#​4480)
  • net: use std::future::Ready instead of our own Ready future
    (#​4271)
  • replace deprecated atomic::spin_loop_hint with hint::spin_loop
    (#​4491)
  • fix miri failures in intrusive linked lists (#​4397)
Documented
  • io: add an example for tokio::process::ChildStdin (#​4479)
Unstable

The following changes only apply when building with --cfg tokio_unstable:

  • task: fix missing location information in tracing spans generated by
    spawn_local (#​4483)
  • task: add JoinSet for managing sets of tasks (#​4335)
  • metrics: fix compilation error on MIPS (#​4475)
  • metrics: fix compilation error on arm32v7 (#​4453)

v1.16.1: Tokio v1.16.1

Compare Source

1.16.1 (January 28, 2022)

This release fixes a bug in #​4428 with the change #​4437.

v1.16.0: Tokio v1.16.0

Compare Source

Fixes a soundness bug in io::Take (#​4428). The unsoundness is exposed when
leaking memory in the given AsyncRead implementation and then overwriting the
supplied buffer:

impl AsyncRead for Buggy {
    fn poll_read(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>,
        buf: &mut ReadBuf<'_>
    ) -> Poll<Result<()>> {
      let new_buf = vec![0; 5].leak();
      *buf = ReadBuf::new(new_buf);
      buf.put_slice(b"hello");
      Poll::Ready(Ok(()))
    }
}

Also, this release includes improvements to the multi-threaded scheduler that
can increase throughput by up to 20% in some cases (#​4383).

Fixed
  • io: soundness don't expose uninitialized memory when using io::Take in edge case (#​4428)
  • fs: ensure File::write results in a write syscall when the runtime shuts down (#​4316)
  • process: drop pipe after child exits in wait_with_output (#​4315)
  • rt: improve error message when spawning a thread fails (#​4398)
  • rt: reduce false-positive thread wakups in the multi-threaded scheduler (#​4383)
  • sync: don't inherit Send from parking_lot::*Guard (#​4359)
Added
  • net: TcpSocket::linger() and set_linger() (#​4324)
  • net: impl UnwindSafe for socket types (#​4384)
  • rt: impl UnwindSafe for JoinHandle (#​4418)
  • sync: watch::Receiver::has_changed() (#​4342)
  • sync: oneshot::Receiver::blocking_recv() (#​4334)
  • sync: RwLock blocking operations (#​4425)
Unstable

The following changes only apply when building with --cfg tokio_unstable

  • rt: breaking change overhaul runtime metrics API (#​4373)

v1.15.0: Tokio v1.15.0

Compare Source

Fixed
  • io: add cooperative yielding support to io::empty() (#​4300)
  • time: make timeout robust against budget-depleting tasks (#​4314)
Changed
  • update minimum supported Rust version to 1.46.
Added
  • time: add Interval::reset() (#​4248)
  • io: add explicit lifetimes to AsyncFdReadyGuard (#​4267)
  • process: add Command::as_std() (#​4295)
Added (unstable)
  • tracing: instrument tokio::sync types (#​4302)

v1.14.1: Tokio v1.14.1

Compare Source

This release backports a bug fix from 1.16.1

Fixes a soundness bug in io::Take (#​4428). The unsoundness is exposed when
leaking memory in the given AsyncRead implementation and then overwriting the
supplied buffer:

impl AsyncRead for Buggy {
    fn poll_read(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>,
        buf: &mut ReadBuf<'_>
    ) -> Poll<Result<()>> {
      let new_buf = vec![0; 5].leak();
      *buf = ReadBuf::new(new_buf);
      buf.put_slice(b"hello");
      Poll::Ready(Ok(()))
    }
}
Fixed
  • io: soundness don't expose uninitialized memory when using io::Take in edge case (#​4428)

v1.14.0: Tokio v1.14.0

Compare Source

1.14.0 (November 15, 2021)
Fixed
  • macros: fix compiler errors when using mut patterns in select! (#​4211)
  • sync: fix a data race between oneshot::Sender::send and awaiting a
    oneshot::Receiver when the oneshot has been closed (#​4226)
  • sync: make AtomicWaker panic safe (#​3689)
  • runtime: fix basic scheduler dropping tasks outside a runtime context
    (#​4213)
Added
Changed
  • io: updated copy buffer size to match std::io::copy (#​4209)
Documented
  • io: rename buffer to file in doc-test (#​4230)
  • sync: fix Notify example (#​4212)

v1.13.1: Tokio v1.13.1

Compare Source

1.13.1 (November 15, 2021)

This release fixes a data race when sending and receiving on a
closed oneshot channel (RUSTSEC-2021-0124).

Fixed
  • sync: fix a data race between oneshot::Sender::send and awaiting a
    oneshot::Receiver when the oneshot has been closed (#​4226)

v1.13.0: Tokio v1.13.0

Compare Source

1.13.0 (October 29, 2021)
Fixed
  • sync: fix Notify to clone the waker before locking its waiter list (#​4129)
  • tokio: add riscv32 to non atomic64 architectures (#​4185)
Added
  • net: add poll_{recv,send}_ready methods to udp and uds_datagram (#​4131)
  • net: add try_*, readable, writable, ready, and peer_addr methods to split halves (#​4120)
  • sync: add blocking_lock to Mutex (#​4130)
  • sync: add watch::Sender::send_replace (#​3962, #​4195)
  • sync: expand Debug for Mutex<T> impl to unsized T (#​4134)
  • tracing: instrument time::Sleep (#​4072)
  • tracing: use structured location fields for spawned tasks (#​4128)
Changed
  • io: add assert in copy_bidirectional that poll_write is sensible (#​4125)
  • macros: use qualified syntax when polling in select! (#​4192)
  • runtime: handle block_on wakeups better (#​4157)
  • task: allocate callback on heap immediately in debug mode (#​4203)
  • tokio: assert platform-minimum requirements at build time (#​3797)
Documented
  • docs: conversion of doc comments to indicative mood (#​4174)
  • docs: add returning on the first error example for try_join! (#​4133)
  • docs: fixing broken links in tokio/src/lib.rs (#​4132)
  • signal: add example with background listener (#​4171)
  • sync: add more oneshot examples (#​4153)
  • time: document Interval::tick cancel safety (#​4152)

v1.12.0: Tokio v1.12.0

Compare Source

1.12.0 (September 21, 2021)
Fixed
  • mpsc: ensure try_reserve error is consistent with try_send (#​4119)
  • mpsc: use spin_loop_hint instead of yield_now (#​4115)
  • sync: make SendError field public (#​4097)
Added
  • io: add POSIX AIO on FreeBSD (#​4054)
  • io: add convenience method AsyncSeekExt::rewind (#​4107)
  • runtime: add tracing span for block_on futures (#​4094)
  • runtime: callback when a worker parks and unparks (#​4070)
  • sync: implement try_recv for mpsc channels (#​4113)
Changed
  • macros: run runtime inside LocalSet when using macro (#​4027)
Documented
  • docs: clarify CPU-bound tasks on Tokio (#​4105)
  • mpsc: document spurious failures on poll_recv (#​4117)
  • mpsc: document that PollSender impls Sink (#​4110)
  • task: document non-guarantees of yield_now (#​4091)
  • time: document paused time details better (#​4061, #​4103)

v1.11.0: Tokio v1.11.0

Compare Source

1.11.0 (August 31, 2021)
Fixed
  • time: don't panic when Instant is not monotonic (#​4044)
  • io: fix panic in fill_buf by not calling poll_fill_buf twice (#​4084)
Added
  • watch: add watch::Sender::subscribe (#​3800)
  • process: add from_std to ChildStd* (#​4045)
  • stats: initial work on runtime stats (#​4043)
Changed
Documented
  • time: make Sleep examples easier to find (#​4040)

v1.10.1: Tokio v1.10.1

Compare Source

1.10.1 (August 24, 2021)
Fixed
  • runtime: fix leak in UnownedTask (#​4063)

v1.10.0: Tokio v1.10.0

Compare Source

1.10.0 (August 12, 2021)
Added
  • io: add (read|write)_f(32|64)[_le] methods (#​4022)
  • io: add fill_buf and consume to AsyncBufReadExt (#​3991)
  • process: add Child::raw_handle() on windows (#​3998)
Fixed
  • doc: fix non-doc builds with --cfg docsrs (#​4020)
  • io: flush eagerly in io::copy (#​4001)
  • runtime: a debug assert was sometimes triggered during shutdown (#​4005)
  • sync: use spin_loop_hint instead of yield_now in mpsc (#​4037)
  • tokio: the test-util feature depends on rt, sync, and time (#​4036)
Changes
  • runtime: reorganize parts of the runtime (#​3979, #​4005)
  • signal: make windows docs for signal module show up on unix builds (#​3770)
  • task: quickly send task to heap on debug mode (#​4009)
Documented
  • io: document cancellation safety of AsyncBufReadExt (#​3997)
  • sync: document when watch::send fails (#​4021)

v1.9.0: Tokio v1.9.0

Compare Source

1.9.0 (July 19, 2021)
Added
  • net: allow customized I/O operations for TcpStream (#​3888)
  • sync: add getter for the mutex from a guard (#​3928)
  • task: expose nameable future for TaskLocal::scope (#​3273)
Fixed
  • Fix leak if output of future panics on drop (#​3967)
  • Fix leak in LocalSet (#​3978)
Changes

v1.8.5: Tokio v1.8.5

Compare Source

This release backports a bug fix from 1.16.1

Fixes a soundness bug in io::Take (#​4428). The unsoundness is exposed when
leaking memory in the given AsyncRead implementation and then overwriting the
supplied buffer:

impl AsyncRead for Buggy {
    fn poll_read(
        self: Pin<&mut Self>,
        cx: &mut Context<'_>,
        buf: &mut ReadBuf<'_>
    ) -> Poll<Result<()>> {
      let new_buf = vec![0; 5].leak();
      *buf = ReadBuf::new(new_buf);
      buf.put_slice(b"hello");
      Poll::Ready(Ok(()))
    }
}
Fixed
  • io: soundness don't expose uninitialized memory when using io::Take in edge case (#​4428)

v1.8.4: Tokio v1.8.4

Compare Source

1.8.4 (November 15, 2021)

This release backports a bugfix for a data race when sending and receiving on a
closed oneshot channel ([RUSTSEC-2021-0124]) from v1.13.1.

Fixed
  • sync: fix a data race between oneshot::Sender::send and awaiting a
    oneshot::Receiver when the oneshot has been closed (#​4226)

v1.8.3: Tokio v1.8.3

Compare Source

1.8.3 (July 22, 2021)

This release backports two fixes from 1.9.0

Fixed
  • Fix leak if output of future panics on drop (#​3967)
  • Fix leak in LocalSet (#​3978)

v1.8.2: Tokio 1.8.2

Compare Source

Fixes a missed edge case from 1.8.1.

Fixed
  • runtime: drop canceled future on next poll (#​3965)

v1.8.1: Tokio 1.8.1

Compare Source

Forward ports 1.5.1 fixes.

Fixed
  • runtime: remotely abort tasks on JoinHandle::abort (#​3934)

v1.8.0

Compare Source

1.8.0 (July 2, 2021)
Added
  • io: add get_{ref,mut} methods to AsyncFdReadyGuard and AsyncFdReadyMutGuard (#​3807)
  • io: efficient implementation of vectored writes for BufWriter (#​3163)
  • net: add ready/try methods to NamedPipe{Client,Server} (#​3866, #​3899)
  • sync: add watch::Receiver::borrow_and_update (#​3813)
  • sync: implement From<T> for OnceCell<T> (#​3877)
  • time: allow users to specify Interval behaviour when delayed (#​3721)
Added (unstable)
  • rt: add tokio::task::Builder (#​3881)
Fixed
  • net: handle HUP event with UnixStream (#​3898)
Documented
  • doc: document cancellation safety (#​3900)
  • time: add wait alias to sleep (#​3897)
  • time: document auto-advancing behaviour of runtime (#​3763)

v1.7.3: Tokio 1.7.3

Compare Source

Fixes a missed edge case from 1.7.2.

Fixed
  • runtime: drop canceled future on next poll (#​3965)

v1.7.2: Tokio v1.7.2

Compare Source

Forward ports 1.5.1 fixes.

Fixed
  • runtime: remotely abort tasks on JoinHandle::abort (#​3934)

v1.7.1: Tokio v1.7.1

Compare Source

Fixed
  • runtime: fix early task shutdown during runtime shutdown (#​3870)

v1.7.0: Tokio v1.7.0

Compare Source

1.7.0 (June 15, 2021)
Added
  • net: add named pipes on windows (#​3760)
  • net: add TcpSocket from std::net::TcpStream conversion (#​3838)
  • sync: add receiver_count to watch::Sender (#​3729)
  • sync: export sync::notify::Notified future publicly (#​3840)
  • tracing: instrument task wakers (#​3836)
Fixed
  • macros: suppress clippy::default_numeric_fallback lint in generated code (#​3831)
  • runtime: immediately drop new tasks when runtime is shut down (#​3752)
  • sync: deprecate unused mpsc::RecvError type (#​3833)
Documented
  • io: clarify EOF condition for AsyncReadExt::read_buf (#​3850)
  • io: clarify limits on return values of AsyncWrite::poll_write (#​3820)
  • sync: add examples to Semaphore (#​3808)

v1.6.4: Tokio 1.6.4

Compare Source

Fixes a missed edge case from 1.6.3.

Fixed
  • runtime: drop canceled future on next poll (#​3965)

v1.6.3: Tokio v1.6.3

Compare Source

Forward ports 1.5.1 fixes.

Fixed
  • runtime: remotely abort tasks on JoinHandle::abort (#​3934)

v1.6.2: Tokio v1.6.2

Compare Source

Fixes
  • test: sub-ms time:advance regression introduced in 1.6 (#​3852)

v1.6.1: Tokio v1.6.1

Compare Source

This release reverts #​3518 because it doesn't work on some kernels due to
a kernel bug. (#​3803)

v1.6.0: Tokio v1.6.0

Compare Source

1.6.0 (May 14, 2021)
Added
  • fs: try doing a non-blocking read before punting to the threadpool (#​3518)
  • io: add write_all_buf to AsyncWriteExt (#​3737)
  • io: implement AsyncSeek for BufReader, BufWriter, and BufStream (#​3491)
  • net: support non-blocking vectored I/O (#​3761)
  • sync: add mpsc::Sender::{reserve_owned, try_reserve_owned} (#​3704)
  • sync: add a MutexGuard::map method that returns a MappedMutexGuard (#​2472)
  • time: add getter for Interval's period (#​3705)
Fixed
  • io: wake pending writers on DuplexStream close (#​3756)
  • process: avoid redundant effort to reap orphan processes (#​3743)
  • signal: use std::os::raw::c_int instead of libc::c_int on public API (#​3774)
  • sync: preserve permit state in notify_waiters (#​3660)
  • task: update JoinHandle panic message (#​3727)
  • time: prevent time::advance from going too far (#​3712)
Documented
  • net: hide net::unix::datagram module from docs (#​3775)
  • process: updated example (#​3748)
  • sync: Barrier doc should use task, not thread (#​3780)
  • task: update documentation on block_in_place (#​3753)

v1.5.1: Tokio v1.5.1

Compare Source

Fixed
  • runtime: remotely abort tasks on JoinHandle::abort (#​3934)

v1.5.0: Tokio v1.5.0

Compare Source

1.5.0 (April 12, 2021)
Added
  • io: add AsyncSeekExt::stream_position (#​3650)
  • io: add AsyncWriteExt::write_vectored (#​3678)
  • io: add a copy_bidirectional utility (#​3572)
  • net: implement IntoRawFd for TcpSocket (#​3684)
  • sync: add OnceCell (#​3591)
  • sync: add OwnedRwLockReadGuard and OwnedRwLockWriteGuard (#​3340)
  • sync: add Semaphore::is_closed (#​3673)
  • sync: add mpsc::Sender::capacity (#​3690)
  • sync: allow configuring RwLock max reads (#​3644)
  • task: add sync_scope for LocalKey (#​3612)
Fixed
  • chore: try to avoid noalias attributes on intrusive linked list (#​3654)
  • rt: fix panic in JoinHandle::abort() when called from other threads (#​3672)
  • sync: don't panic in oneshot::try_recv (#​3674)
  • sync: fix notifications getting dropped on receiver drop (#​3652)
  • sync: fix Semaphore permit overflow calculation (#​3644)
Documented
  • io: clarify requirements of AsyncFd (#​3635)
  • runtime: fix unclear docs for {Handle,Runtime}::block_on (#​3628)
  • sync: document that Semaphore is fair (#​3693)
  • sync: improve doc on blocking mutex (#​3645)

v1.4.0: Tokio v1.4.0

Compare Source

Added
  • macros: introduce biased argument for select! (#​3603)
  • runtime: add Handle::block_on (#​3569)
Fixed
  • runtime: avoid unnecessary polling of block_on future (#​3582)
  • runtime: fix memory leak/growth when creating many runtimes (#​3564)
  • runtime: mark EnterGuard with must_use (#​3609)
Documented
  • chore: mention fix for building docs in contributing guide (#​3618)
  • doc: add link to PollSender (#​3613)
  • doc: alias sleep to delay (#​3604)
  • sync: improve Mutex FIFO explanation (#​3615)
  • timer: fix double newline in module docs (#​3617)

v1.3.0: Tokio v1.3.0

Compare Source

Added
  • coop: expose an unconstrained() opt-out (#​3547)
  • net: add into_std for net types without it (#​3509)
  • sync: add same_channel method to mpsc::Sender (#​3532)
  • sync: add {try_,}acquire_many_owned to Semaphore (#​3535)
  • sync: add back RwLockWriteGuard::map and RwLockWriteGuard::try_map (#​3348)
Fixed
  • sync: allow oneshot::Receiver::close after successful try_recv (#​3552)
  • time: do not panic on timeout(Duration::MAX) (#​3551)
Documented
  • doc: doc aliases for pre-1.0 function names (#​3523)
  • io: fix typos (#​3541)
  • io: note the EOF behaviour of read_until (#​3536)
  • io: update AsyncRead::poll_read doc (#​3557)
  • net: update UdpSocket splitting doc (#​3517)
  • runtime: add link to LocalSet on new_current_thread (#​3508)
  • runtime: update documentation of thread limits (#​3527)
  • sync: do not recommend join_all for Barrier (#​3514)
  • sync: documentation for oneshot (#​3592)
  • sync: rename notify to notify_one (#​3526)
  • time: fix typo in Sleep doc (#​3515)
  • time: sync interval.rs and time/mod.rs docs (#​3533)

v1.2.0: Tokio v1.2.0

Compare Source

Added
  • signal: make Signal::poll_recv method public (#​3383)
Fixed
  • time: make test-util paused time fully deterministic (#​3492)
Documented
  • sync: link to new broadcast and watch wrappers (#​3504)

v1.1.1: Tokio v1.1.1

Compare Source

Forward ports 1.0.3 fix.

Fixed
  • io: memory leak during shutdown (#​3477).

v1.1.0: Tokio v1.1.0

Compare Source

Added
  • net: add try_read_buf and try_recv_buf (#​3351)
  • mpsc: Add Sender::try_reserve function (#​3418)
  • sync: add RwLock try_read and try_write methods (#​3400)
  • io: add ReadBuf::inner_mut (#​3443)
Changed
  • macros: improve select! error message (#​3352)
  • io: keep track of initialized bytes in read_to_end (#​3426)
  • runtime: consolidate errors for context missing (#​3441)
Fixed
  • task: wake LocalSet on spawn_local (#​3369)
  • sync: fix panic in broadcast::Receiver drop (#​3434)
Documented
  • stream: link to new Stream wrappers in tokio-stream (#​3343)
  • docs: mention that test-util feature is not enabled with full (#​3397)
  • process: add documentation to process::Child fields (#​3437)
  • io: clarify AsyncFd docs about changes of the inner fd (#​3430)
  • net: update datagram docs on splitting (#​3448)
  • time: document that Sleep is not Unpin (#​3457)
  • sync: add link to PollSemaphore (#​3456)
  • task: add LocalSet example (#​3438)
  • sync: improve bounded mpsc documentation (#​3458)

v1.0.3: Tokio v1.0.3

Compare Source

Fixed
  • io: memory leak during shutdown (#​3477).

v1.0.2: Tokio v1.0.2

Compare Source

Fixed
  • io: soundness in read_to_end (#​3428).

Configuration

📅 Schedule: (UTC)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about these updates again.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate.

This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [tokio](https://tokio.rs) ([source](https://github.com/tokio-rs/tokio)) | dev-dependencies | minor | `1` → `1.38.2` | | [tokio](https://tokio.rs) ([source](https://github.com/tokio-rs/tokio)) | dependencies | minor | `1` → `1.38.2` | | [tokio](https://tokio.rs) ([source](https://github.com/tokio-rs/tokio)) | dependencies | minor | `1.27.0` → `1.38.2` | --- ### Tokio broadcast channel calls clone in parallel, but does not require `Sync` [GHSA-rr8g-9fpq-6wmg](https://github.com/advisories/GHSA-rr8g-9fpq-6wmg) / [RUSTSEC-2025-0023](https://rustsec.org/advisories/RUSTSEC-2025-0023.html) <details> <summary>More information</summary> #### Details The broadcast channel internally calls `clone` on the stored value when receiving it, and only requires `T:Send`. This means that using the broadcast channel with values that are `Send` but not `Sync` can trigger unsoundness if the `clone` implementation makes use of the value being `!Sync`. Thank you to Austin Bonander for finding and reporting this issue. #### Severity - CVSS Score: 2.7 / 10 (Low) - Vector String: `CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N/E:U` #### References - [https://github.com/tokio-rs/tokio/pull/7232](https://github.com/tokio-rs/tokio/pull/7232) - [https://github.com/tokio-rs/tokio](https://github.com/tokio-rs/tokio) - [https://rustsec.org/advisories/RUSTSEC-2025-0023.html](https://rustsec.org/advisories/RUSTSEC-2025-0023.html) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-rr8g-9fpq-6wmg) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Broadcast channel calls clone in parallel, but does not require `Sync` [GHSA-rr8g-9fpq-6wmg](https://github.com/advisories/GHSA-rr8g-9fpq-6wmg) / [RUSTSEC-2025-0023](https://rustsec.org/advisories/RUSTSEC-2025-0023.html) <details> <summary>More information</summary> #### Details The broadcast channel internally calls `clone` on the stored value when receiving it, and only requires `T:Send`. This means that using the broadcast channel with values that are `Send` but not `Sync` can trigger unsoundness if the `clone` implementation makes use of the value being `!Sync`. Thank you to Austin Bonander for finding and reporting this issue. #### Severity Unknown #### References - [https://crates.io/crates/tokio](https://crates.io/crates/tokio) - [https://rustsec.org/advisories/RUSTSEC-2025-0023.html](https://rustsec.org/advisories/RUSTSEC-2025-0023.html) - [https://github.com/tokio-rs/tokio/pull/7232](https://github.com/tokio-rs/tokio/pull/7232) This data is provided by [OSV](https://osv.dev/vulnerability/RUSTSEC-2025-0023) and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt)). </details> --- ### Race condition in tokio [CVE-2021-38191](https://nvd.nist.gov/vuln/detail/CVE-2021-38191) / [GHSA-2grh-hm3w-w7hv](https://github.com/advisories/GHSA-2grh-hm3w-w7hv) / [RUSTSEC-2021-0072](https://rustsec.org/advisories/RUSTSEC-2021-0072.html) <details> <summary>More information</summary> #### Details When aborting a task with JoinHandle::abort, the future is dropped in the thread calling abort if the task is not currently being executed. This is incorrect for tasks spawned on a LocalSet. This can easily result in race conditions as many projects use Rc or RefCell in their Tokio tasks for better performance. #### Severity - CVSS Score: 5.9 / 10 (Medium) - Vector String: `CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H` #### References - [https://nvd.nist.gov/vuln/detail/CVE-2021-38191](https://nvd.nist.gov/vuln/detail/CVE-2021-38191) - [https://github.com/tokio-rs/tokio/issues/3929](https://github.com/tokio-rs/tokio/issues/3929) - [https://github.com/tokio-rs/tokio](https://github.com/tokio-rs/tokio) - [https://raw.githubusercontent.com/rustsec/advisory-db/main/crates/tokio/RUSTSEC-2021-0072.md](https://raw.githubusercontent.com/rustsec/advisory-db/main/crates/tokio/RUSTSEC-2021-0072.md) - [https://rustsec.org/advisories/RUSTSEC-2021-0072.html](https://rustsec.org/advisories/RUSTSEC-2021-0072.html) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-2grh-hm3w-w7hv) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Task dropped in wrong thread when aborting `LocalSet` task [CVE-2021-38191](https://nvd.nist.gov/vuln/detail/CVE-2021-38191) / [GHSA-2grh-hm3w-w7hv](https://github.com/advisories/GHSA-2grh-hm3w-w7hv) / [RUSTSEC-2021-0072](https://rustsec.org/advisories/RUSTSEC-2021-0072.html) <details> <summary>More information</summary> #### Details When aborting a task with `JoinHandle::abort`, the future is dropped in the thread calling abort if the task is not currently being executed. This is incorrect for tasks spawned on a `LocalSet`. This can easily result in race conditions as many projects use `Rc` or `RefCell` in their Tokio tasks for better performance. See [tokio#3929][issue] for more details. [issue]: https://github.com/tokio-rs/tokio/issues/3929 #### Severity Unknown #### References - [https://crates.io/crates/tokio](https://crates.io/crates/tokio) - [https://rustsec.org/advisories/RUSTSEC-2021-0072.html](https://rustsec.org/advisories/RUSTSEC-2021-0072.html) - [https://github.com/tokio-rs/tokio/issues/3929](https://github.com/tokio-rs/tokio/issues/3929) This data is provided by [OSV](https://osv.dev/vulnerability/RUSTSEC-2021-0072) and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt)). </details> --- ### Race Condition in tokio [CVE-2021-45710](https://nvd.nist.gov/vuln/detail/CVE-2021-45710) / [GHSA-fg7r-2g4j-5cgr](https://github.com/advisories/GHSA-fg7r-2g4j-5cgr) / [RUSTSEC-2021-0124](https://rustsec.org/advisories/RUSTSEC-2021-0124.html) <details> <summary>More information</summary> #### Details If a tokio::sync::oneshot channel is closed (via the oneshot::Receiver::close method), a data race may occur if the oneshot::Sender::send method is called while the corresponding oneshot::Receiver is awaited or calling try_recv. When these methods are called concurrently on a closed channel, the two halves of the channel can concurrently access a shared memory location, resulting in a data race. This has been observed to cause memory corruption. Note that the race only occurs when both halves of the channel are used after the Receiver half has called close. Code where close is not used, or where the Receiver is not awaited and try_recv is not called after calling close, is not affected. #### Severity - CVSS Score: 8.1 / 10 (High) - Vector String: `CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H` #### References - [https://nvd.nist.gov/vuln/detail/CVE-2021-45710](https://nvd.nist.gov/vuln/detail/CVE-2021-45710) - [https://github.com/tokio-rs/tokio/issues/4225](https://github.com/tokio-rs/tokio/issues/4225) - [https://github.com/tokio-rs/tokio](https://github.com/tokio-rs/tokio) - [https://raw.githubusercontent.com/rustsec/advisory-db/main/crates/tokio/RUSTSEC-2021-0124.md](https://raw.githubusercontent.com/rustsec/advisory-db/main/crates/tokio/RUSTSEC-2021-0124.md) - [https://rustsec.org/advisories/RUSTSEC-2021-0124.html](https://rustsec.org/advisories/RUSTSEC-2021-0124.html) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-fg7r-2g4j-5cgr) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### Data race when sending and receiving after closing a `oneshot` channel [CVE-2021-45710](https://nvd.nist.gov/vuln/detail/CVE-2021-45710) / [GHSA-fg7r-2g4j-5cgr](https://github.com/advisories/GHSA-fg7r-2g4j-5cgr) / [RUSTSEC-2021-0124](https://rustsec.org/advisories/RUSTSEC-2021-0124.html) <details> <summary>More information</summary> #### Details If a `tokio::sync::oneshot` channel is closed (via the [`oneshot::Receiver::close`] method), a data race may occur if the `oneshot::Sender::send` method is called while the corresponding `oneshot::Receiver` is `await`ed or calling `try_recv`. When these methods are called concurrently on a closed channel, the two halves of the channel can concurrently access a shared memory location, resulting in a data race. This has been observed to [cause memory corruption][corruption]. Note that the race only occurs when **both** halves of the channel are used after the `Receiver` half has called `close`. Code where `close` is not used, or where the `Receiver` is not `await`ed and `try_recv` is not called after calling `close`, is not affected. See [tokio#4225][issue] for more details. [corruption]: https://github.com/tokio-rs/tokio/issues/4225#issuecomment-967434847 [issue]: https://github.com/tokio-rs/tokio/issues/4225 [`oneshot::Receiver::close`]: https://docs.rs/tokio/1.14.0/tokio/sync/oneshot/struct.Receiver.html#method.close #### Severity Unknown #### References - [https://crates.io/crates/tokio](https://crates.io/crates/tokio) - [https://rustsec.org/advisories/RUSTSEC-2021-0124.html](https://rustsec.org/advisories/RUSTSEC-2021-0124.html) - [https://github.com/tokio-rs/tokio/issues/4225](https://github.com/tokio-rs/tokio/issues/4225) This data is provided by [OSV](https://osv.dev/vulnerability/RUSTSEC-2021-0124) and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt)). </details> --- ### `tokio::io::ReadHalf<T>::unsplit` is Unsound [GHSA-4q83-7cq4-p6wg](https://github.com/advisories/GHSA-4q83-7cq4-p6wg) / [RUSTSEC-2023-0005](https://rustsec.org/advisories/RUSTSEC-2023-0005.html) <details> <summary>More information</summary> #### Details `tokio::io::ReadHalf<T>::unsplit` can violate the `Pin` contract The soundness issue is described in the [tokio/issues#5372](https://github.com/tokio-rs/tokio/issues/5372) Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf) is unusual, combined with the difficulty of making any arbitrary use-after-free exploitable in Rust without doing a lot of careful alignment of data types in the surrounding code. The `tokio` feature `io-util` is also required to be enabled to trigger this soundness issue. Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e and carllerche appropriately responding and fixing the soundness bug. Tokio before 0.2.0 used `futures` 0.1 that did not have `Pin`, so it is not affected by this issue. #### Severity Low #### References - [https://github.com/tokio-rs/tokio/issues/5372](https://github.com/tokio-rs/tokio/issues/5372) - [https://github.com/tokio-rs/tokio](https://github.com/tokio-rs/tokio) - [https://rustsec.org/advisories/RUSTSEC-2023-0005.html](https://rustsec.org/advisories/RUSTSEC-2023-0005.html) This data is provided by [OSV](https://osv.dev/vulnerability/GHSA-4q83-7cq4-p6wg) and the [GitHub Advisory Database](https://github.com/github/advisory-database) ([CC-BY 4.0](https://github.com/github/advisory-database/blob/main/LICENSE.md)). </details> --- ### `tokio::io::ReadHalf<T>::unsplit` is Unsound [GHSA-4q83-7cq4-p6wg](https://github.com/advisories/GHSA-4q83-7cq4-p6wg) / [RUSTSEC-2023-0005](https://rustsec.org/advisories/RUSTSEC-2023-0005.html) <details> <summary>More information</summary> #### Details `tokio::io::ReadHalf<T>::unsplit` can violate the `Pin` contract The soundness issue is described in the [tokio/issues#5372](https://github.com/tokio-rs/tokio/issues/5372) Specific set of conditions needed to trigger an issue (a !Unpin type in ReadHalf) is unusual, combined with the difficulty of making any arbitrary use-after-free exploitable in Rust without doing a lot of careful alignment of data types in the surrounding code. The `tokio` feature `io-util` is also required to be enabled to trigger this soundness issue. Thanks to zachs18 reporting the issue to Tokio team responsibly and taiki-e and carllerche appropriately responding and fixing the soundness bug. Tokio before 0.2.0 used `futures` 0.1 that did not have `Pin`, so it is not affected by this issue. #### Severity Unknown #### References - [https://crates.io/crates/tokio](https://crates.io/crates/tokio) - [https://rustsec.org/advisories/RUSTSEC-2023-0005.html](https://rustsec.org/advisories/RUSTSEC-2023-0005.html) - [https://github.com/tokio-rs/tokio/issues/5372](https://github.com/tokio-rs/tokio/issues/5372) This data is provided by [OSV](https://osv.dev/vulnerability/RUSTSEC-2023-0005) and the [Rust Advisory Database](https://github.com/RustSec/advisory-db) ([CC0 1.0](https://github.com/rustsec/advisory-db/blob/main/LICENSE.txt)). </details> --- ### Release Notes <details> <summary>tokio-rs/tokio (tokio)</summary> ### [`v1.38.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.38.2): Tokio v1.38.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.38.1...tokio-1.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 ([#&#8203;7232]) [#&#8203;7232]: https://github.com/tokio-rs/tokio/pull/7232 ### [`v1.38.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.38.1): Tokio v1.38.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.38.0...tokio-1.38.1) ##### 1.38.1 (July 16th, 2024) This release fixes the bug identified as ([#&#8203;6682]), which caused timers not to fire when they should. ##### Fixed - time: update `wake_up` while holding all the locks of sharded time wheels ([#&#8203;6683]) [#&#8203;6682]: https://github.com/tokio-rs/tokio/pull/6682 [#&#8203;6683]: https://github.com/tokio-rs/tokio/pull/6683 ### [`v1.38.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.38.0): Tokio v1.38.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.37.0...tokio-1.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` ([#&#8203;6573]) - io: add `copy_bidirectional_with_sizes` ([#&#8203;6500]) - io: implement `AsyncBufRead` for `Join` ([#&#8203;6449]) - net: add Apple visionOS support ([#&#8203;6465]) - net: implement `Clone` for `NamedPipeInfo` ([#&#8203;6586]) - net: support QNX OS ([#&#8203;6421]) - sync: add `Notify::notify_last` ([#&#8203;6520]) - sync: add `mpsc::Receiver::{capacity,max_capacity}` ([#&#8203;6511]) - sync: add `split` method to the semaphore permit ([#&#8203;6472], [#&#8203;6478]) - task: add `tokio::task::join_set::Builder::spawn_blocking` ([#&#8203;6578]) - wasm: support rt-multi-thread with wasm32-wasi-preview1-threads ([#&#8203;6510]) ##### Changed - macros: make `#[tokio::test]` append `#[test]` at the end of the attribute list ([#&#8203;6497]) - metrics: fix `blocking_threads` count ([#&#8203;6551]) - metrics: stabilize `RuntimeMetrics::worker_count` ([#&#8203;6556]) - runtime: move task out of the `lifo_slot` in `block_in_place` ([#&#8203;6596]) - runtime: panic if `global_queue_interval` is zero ([#&#8203;6445]) - sync: always drop message in destructor for oneshot receiver ([#&#8203;6558]) - sync: instrument `Semaphore` for task dumps ([#&#8203;6499]) - sync: use FIFO ordering when waking batches of wakers ([#&#8203;6521]) - task: make `LocalKey::get` work with Clone types ([#&#8203;6433]) - tests: update nix and mio-aio dev-dependencies ([#&#8203;6552]) - time: clean up implementation ([#&#8203;6517]) - time: lazily init timers on first poll ([#&#8203;6512]) - time: remove the `true_when` field in `TimerShared` ([#&#8203;6563]) - time: use sharding for timer implementation ([#&#8203;6534]) ##### Fixed - taskdump: allow building taskdump docs on non-unix machines ([#&#8203;6564]) - time: check for overflow in `Interval::poll_tick` ([#&#8203;6487]) - sync: fix incorrect `is_empty` on mpsc block boundaries ([#&#8203;6603]) ##### Documented - fs: rewrite file system docs ([#&#8203;6467]) - io: fix `stdin` documentation ([#&#8203;6581]) - io: fix obsolete reference in `ReadHalf::unsplit()` documentation ([#&#8203;6498]) - macros: render more comprehensible documentation for `select!` ([#&#8203;6468]) - net: add missing types to module docs ([#&#8203;6482]) - net: fix misleading `NamedPipeServer` example ([#&#8203;6590]) - sync: add examples for `SemaphorePermit`, `OwnedSemaphorePermit` ([#&#8203;6477]) - sync: document that `Barrier::wait` is not cancel safe ([#&#8203;6494]) - sync: explain relation between `watch::Sender::{subscribe,closed}` ([#&#8203;6490]) - task: clarify that you can't abort `spawn_blocking` tasks ([#&#8203;6571]) - task: fix a typo in doc of `LocalSet::run_until` ([#&#8203;6599]) - time: fix test-util requirement for pause and resume in docs ([#&#8203;6503]) [#&#8203;6421]: https://github.com/tokio-rs/tokio/pull/6421 [#&#8203;6433]: https://github.com/tokio-rs/tokio/pull/6433 [#&#8203;6445]: https://github.com/tokio-rs/tokio/pull/6445 [#&#8203;6449]: https://github.com/tokio-rs/tokio/pull/6449 [#&#8203;6465]: https://github.com/tokio-rs/tokio/pull/6465 [#&#8203;6467]: https://github.com/tokio-rs/tokio/pull/6467 [#&#8203;6468]: https://github.com/tokio-rs/tokio/pull/6468 [#&#8203;6472]: https://github.com/tokio-rs/tokio/pull/6472 [#&#8203;6477]: https://github.com/tokio-rs/tokio/pull/6477 [#&#8203;6478]: https://github.com/tokio-rs/tokio/pull/6478 [#&#8203;6482]: https://github.com/tokio-rs/tokio/pull/6482 [#&#8203;6487]: https://github.com/tokio-rs/tokio/pull/6487 [#&#8203;6490]: https://github.com/tokio-rs/tokio/pull/6490 [#&#8203;6494]: https://github.com/tokio-rs/tokio/pull/6494 [#&#8203;6497]: https://github.com/tokio-rs/tokio/pull/6497 [#&#8203;6498]: https://github.com/tokio-rs/tokio/pull/6498 [#&#8203;6499]: https://github.com/tokio-rs/tokio/pull/6499 [#&#8203;6500]: https://github.com/tokio-rs/tokio/pull/6500 [#&#8203;6503]: https://github.com/tokio-rs/tokio/pull/6503 [#&#8203;6510]: https://github.com/tokio-rs/tokio/pull/6510 [#&#8203;6511]: https://github.com/tokio-rs/tokio/pull/6511 [#&#8203;6512]: https://github.com/tokio-rs/tokio/pull/6512 [#&#8203;6517]: https://github.com/tokio-rs/tokio/pull/6517 [#&#8203;6520]: https://github.com/tokio-rs/tokio/pull/6520 [#&#8203;6521]: https://github.com/tokio-rs/tokio/pull/6521 [#&#8203;6534]: https://github.com/tokio-rs/tokio/pull/6534 [#&#8203;6551]: https://github.com/tokio-rs/tokio/pull/6551 [#&#8203;6552]: https://github.com/tokio-rs/tokio/pull/6552 [#&#8203;6556]: https://github.com/tokio-rs/tokio/pull/6556 [#&#8203;6558]: https://github.com/tokio-rs/tokio/pull/6558 [#&#8203;6563]: https://github.com/tokio-rs/tokio/pull/6563 [#&#8203;6564]: https://github.com/tokio-rs/tokio/pull/6564 [#&#8203;6571]: https://github.com/tokio-rs/tokio/pull/6571 [#&#8203;6573]: https://github.com/tokio-rs/tokio/pull/6573 [#&#8203;6578]: https://github.com/tokio-rs/tokio/pull/6578 [#&#8203;6581]: https://github.com/tokio-rs/tokio/pull/6581 [#&#8203;6586]: https://github.com/tokio-rs/tokio/pull/6586 [#&#8203;6590]: https://github.com/tokio-rs/tokio/pull/6590 [#&#8203;6596]: https://github.com/tokio-rs/tokio/pull/6596 [#&#8203;6599]: https://github.com/tokio-rs/tokio/pull/6599 [#&#8203;6603]: https://github.com/tokio-rs/tokio/pull/6603 ### [`v1.37.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.37.0): Tokio v1.37.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.36.0...tokio-1.37.0) ##### 1.37.0 (March 28th, 2024) ##### Added - fs: add `set_max_buf_size` to `tokio::fs::File` ([#&#8203;6411]) - io: add `try_new` and `try_with_interest` to `AsyncFd` ([#&#8203;6345]) - sync: add `forget_permits` method to semaphore ([#&#8203;6331]) - sync: add `is_closed`, `is_empty`, and `len` to mpsc receivers ([#&#8203;6348]) - sync: add a `rwlock()` method to owned `RwLock` guards ([#&#8203;6418]) - sync: expose strong and weak counts of mpsc sender handles ([#&#8203;6405]) - sync: implement `Clone` for `watch::Sender` ([#&#8203;6388]) - task: add `TaskLocalFuture::take_value` ([#&#8203;6340]) - task: implement `FromIterator` for `JoinSet` ([#&#8203;6300]) ##### Changed - io: make `io::split` use a mutex instead of a spinlock ([#&#8203;6403]) ##### Fixed - docs: fix docsrs build without net feature ([#&#8203;6360]) - macros: allow select with only else branch ([#&#8203;6339]) - runtime: fix leaking registration entries when os registration fails ([#&#8203;6329]) ##### Documented - io: document cancel safety of `AsyncBufReadExt::fill_buf` ([#&#8203;6431]) - io: document cancel safety of `AsyncReadExt`'s primitive read functions ([#&#8203;6337]) - runtime: add doc link from `Runtime` to `#[tokio::main]` ([#&#8203;6366]) - runtime: make the `enter` example deterministic ([#&#8203;6351]) - sync: add Semaphore example for limiting the number of outgoing requests ([#&#8203;6419]) - sync: fix missing period in broadcast docs ([#&#8203;6377]) - sync: mark `mpsc::Sender::downgrade` with `#[must_use]` ([#&#8203;6326]) - sync: reorder `const_new` before `new_with` ([#&#8203;6392]) - sync: update watch channel docs ([#&#8203;6395]) - task: fix documentation links ([#&#8203;6336]) ##### Changed (unstable) - runtime: include task `Id` in taskdumps ([#&#8203;6328]) - runtime: panic if `unhandled_panic` is enabled when not supported ([#&#8203;6410]) [#&#8203;6300]: https://github.com/tokio-rs/tokio/pull/6300 [#&#8203;6326]: https://github.com/tokio-rs/tokio/pull/6326 [#&#8203;6328]: https://github.com/tokio-rs/tokio/pull/6328 [#&#8203;6329]: https://github.com/tokio-rs/tokio/pull/6329 [#&#8203;6331]: https://github.com/tokio-rs/tokio/pull/6331 [#&#8203;6336]: https://github.com/tokio-rs/tokio/pull/6336 [#&#8203;6337]: https://github.com/tokio-rs/tokio/pull/6337 [#&#8203;6339]: https://github.com/tokio-rs/tokio/pull/6339 [#&#8203;6340]: https://github.com/tokio-rs/tokio/pull/6340 [#&#8203;6345]: https://github.com/tokio-rs/tokio/pull/6345 [#&#8203;6348]: https://github.com/tokio-rs/tokio/pull/6348 [#&#8203;6351]: https://github.com/tokio-rs/tokio/pull/6351 [#&#8203;6360]: https://github.com/tokio-rs/tokio/pull/6360 [#&#8203;6366]: https://github.com/tokio-rs/tokio/pull/6366 [#&#8203;6377]: https://github.com/tokio-rs/tokio/pull/6377 [#&#8203;6388]: https://github.com/tokio-rs/tokio/pull/6388 [#&#8203;6392]: https://github.com/tokio-rs/tokio/pull/6392 [#&#8203;6395]: https://github.com/tokio-rs/tokio/pull/6395 [#&#8203;6403]: https://github.com/tokio-rs/tokio/pull/6403 [#&#8203;6405]: https://github.com/tokio-rs/tokio/pull/6405 [#&#8203;6410]: https://github.com/tokio-rs/tokio/pull/6410 [#&#8203;6411]: https://github.com/tokio-rs/tokio/pull/6411 [#&#8203;6418]: https://github.com/tokio-rs/tokio/pull/6418 [#&#8203;6419]: https://github.com/tokio-rs/tokio/pull/6419 [#&#8203;6431]: https://github.com/tokio-rs/tokio/pull/6431 ### [`v1.36.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.36.0): Tokio v1.36.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.35.1...tokio-1.36.0) ##### 1.36.0 (February 2nd, 2024) ##### Added - io: add `tokio::io::Join` ([#&#8203;6220]) - io: implement `AsyncWrite` for `Empty` ([#&#8203;6235]) - net: add support for anonymous unix pipes ([#&#8203;6127]) - net: add `UnixSocket` ([#&#8203;6290]) - net: expose keepalive option on `TcpSocket` ([#&#8203;6311]) - sync: add `{Receiver,UnboundedReceiver}::poll_recv_many` ([#&#8203;6236]) - sync: add `Sender::{try_,}reserve_many` ([#&#8203;6205]) - sync: add `watch::Receiver::mark_unchanged` ([#&#8203;6252]) - task: add `JoinSet::try_join_next` ([#&#8203;6280]) ##### Changed - io: make `copy` cooperative ([#&#8203;6265]) - io: make `repeat` and `sink` cooperative ([#&#8203;6254]) - io: simplify check for empty slice ([#&#8203;6293]) - process: use pidfd on Linux when available ([#&#8203;6152]) - sync: use AtomicBool in broadcast channel future ([#&#8203;6298]) ##### Documented - io: clarify `clear_ready` docs ([#&#8203;6304]) - net: document that `*Fd` traits on `TcpSocket` are unix-only ([#&#8203;6294]) - sync: document FIFO behavior of `tokio::sync::Mutex` ([#&#8203;6279]) - chore: typographic improvements ([#&#8203;6262]) - runtime: remove obsolete comment ([#&#8203;6303]) - task: fix typo ([#&#8203;6261]) [#&#8203;6220]: https://github.com/tokio-rs/tokio/pull/6220 [#&#8203;6235]: https://github.com/tokio-rs/tokio/pull/6235 [#&#8203;6127]: https://github.com/tokio-rs/tokio/pull/6127 [#&#8203;6290]: https://github.com/tokio-rs/tokio/pull/6290 [#&#8203;6311]: https://github.com/tokio-rs/tokio/pull/6311 [#&#8203;6236]: https://github.com/tokio-rs/tokio/pull/6236 [#&#8203;6205]: https://github.com/tokio-rs/tokio/pull/6205 [#&#8203;6252]: https://github.com/tokio-rs/tokio/pull/6252 [#&#8203;6280]: https://github.com/tokio-rs/tokio/pull/6280 [#&#8203;6265]: https://github.com/tokio-rs/tokio/pull/6265 [#&#8203;6254]: https://github.com/tokio-rs/tokio/pull/6254 [#&#8203;6293]: https://github.com/tokio-rs/tokio/pull/6293 [#&#8203;6238]: https://github.com/tokio-rs/tokio/pull/6238 [#&#8203;6152]: https://github.com/tokio-rs/tokio/pull/6152 [#&#8203;6298]: https://github.com/tokio-rs/tokio/pull/6298 [#&#8203;6262]: https://github.com/tokio-rs/tokio/pull/6262 [#&#8203;6303]: https://github.com/tokio-rs/tokio/pull/6303 [#&#8203;6261]: https://github.com/tokio-rs/tokio/pull/6261 [#&#8203;6304]: https://github.com/tokio-rs/tokio/pull/6304 [#&#8203;6294]: https://github.com/tokio-rs/tokio/pull/6294 [#&#8203;6279]: https://github.com/tokio-rs/tokio/pull/6279 ### [`v1.35.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.35.1): Tokio v1.35.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.35.0...tokio-1.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` ([#&#8203;6221]) [#&#8203;6221]: https://github.com/tokio-rs/tokio/pull/6221 ### [`v1.35.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.35.0): Tokio v1.35.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.34.0...tokio-1.35.0) ##### 1.35.0 (December 8th, 2023) ##### Added - net: add Apple watchOS support ([#&#8203;6176]) ##### Changed - io: drop the `Sized` requirements from `AsyncReadExt.read_buf` ([#&#8203;6169]) - runtime: make `Runtime` unwind safe ([#&#8203;6189]) - runtime: reduce the lock contention in task spawn ([#&#8203;6001]) - tokio: update nix dependency to 0.27.1 ([#&#8203;6190]) ##### Fixed - chore: make `--cfg docsrs` work without net feature ([#&#8203;6166]) - chore: use relaxed load for `unsync_load` on miri ([#&#8203;6179]) - runtime: handle missing context on wake ([#&#8203;6148]) - taskdump: fix taskdump cargo config example ([#&#8203;6150]) - taskdump: skip notified tasks during taskdumps ([#&#8203;6194]) - tracing: avoid creating resource spans with current parent, use a None parent instead ([#&#8203;6107]) - tracing: make task span explicit root ([#&#8203;6158]) ##### Documented - io: flush in `AsyncWriteExt` examples ([#&#8203;6149]) - runtime: document fairness guarantees and current behavior ([#&#8203;6145]) - task: document cancel safety of `LocalSet::run_until` ([#&#8203;6147]) [#&#8203;6001]: https://github.com/tokio-rs/tokio/pull/6001 [#&#8203;6107]: https://github.com/tokio-rs/tokio/pull/6107 [#&#8203;6144]: https://github.com/tokio-rs/tokio/pull/6144 [#&#8203;6145]: https://github.com/tokio-rs/tokio/pull/6145 [#&#8203;6147]: https://github.com/tokio-rs/tokio/pull/6147 [#&#8203;6148]: https://github.com/tokio-rs/tokio/pull/6148 [#&#8203;6149]: https://github.com/tokio-rs/tokio/pull/6149 [#&#8203;6150]: https://github.com/tokio-rs/tokio/pull/6150 [#&#8203;6158]: https://github.com/tokio-rs/tokio/pull/6158 [#&#8203;6166]: https://github.com/tokio-rs/tokio/pull/6166 [#&#8203;6169]: https://github.com/tokio-rs/tokio/pull/6169 [#&#8203;6176]: https://github.com/tokio-rs/tokio/pull/6176 [#&#8203;6179]: https://github.com/tokio-rs/tokio/pull/6179 [#&#8203;6189]: https://github.com/tokio-rs/tokio/pull/6189 [#&#8203;6190]: https://github.com/tokio-rs/tokio/pull/6190 [#&#8203;6194]: https://github.com/tokio-rs/tokio/pull/6194 ### [`v1.34.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.34.0): Tokio v1.34.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.33.0...tokio-1.34.0) ##### Fixed - io: allow `clear_readiness` after io driver shutdown ([#&#8203;6067]) - io: fix integer overflow in `take` ([#&#8203;6080]) - io: fix I/O resource hang ([#&#8203;6134]) - sync: fix `broadcast::channel` link ([#&#8203;6100]) ##### Changed - macros: use `::core` qualified imports instead of `::std` inside `tokio::test` macro ([#&#8203;5973]) ##### Added - fs: update cfg attr in `fs::read_dir` to include `aix` ([#&#8203;6075]) - sync: add `mpsc::Receiver::recv_many` ([#&#8203;6010]) - tokio: added vita target support ([#&#8203;6094]) [#&#8203;5973]: https://github.com/tokio-rs/tokio/pull/5973 [#&#8203;6067]: https://github.com/tokio-rs/tokio/pull/6067 [#&#8203;6080]: https://github.com/tokio-rs/tokio/pull/6080 [#&#8203;6134]: https://github.com/tokio-rs/tokio/pull/6134 [#&#8203;6100]: https://github.com/tokio-rs/tokio/pull/6100 [#&#8203;6075]: https://github.com/tokio-rs/tokio/pull/6075 [#&#8203;6010]: https://github.com/tokio-rs/tokio/pull/6010 [#&#8203;6094]: https://github.com/tokio-rs/tokio/pull/6094 ### [`v1.33.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.33.0): Tokio v1.33.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.32.1...tokio-1.33.0) ##### 1.33.0 (October 9, 2023) ##### Fixed - io: mark `Interest::add` with `#[must_use]` ([#&#8203;6037]) - runtime: fix cache line size for RISC-V ([#&#8203;5994]) - sync: prevent lock poisoning in `watch::Receiver::wait_for` ([#&#8203;6021]) - task: fix `spawn_local` source location ([#&#8203;5984]) ##### Changed - sync: use Acquire/Release orderings instead of SeqCst in `watch` ([#&#8203;6018]) ##### Added - fs: add vectored writes to `tokio::fs::File` ([#&#8203;5958]) - io: add `Interest::remove` method ([#&#8203;5906]) - io: add vectored writes to `DuplexStream` ([#&#8203;5985]) - net: add Apple tvOS support ([#&#8203;6045]) - sync: add `?Sized` bound to `{MutexGuard,OwnedMutexGuard}::map` ([#&#8203;5997]) - sync: add `watch::Receiver::mark_unseen` ([#&#8203;5962], [#&#8203;6014], [#&#8203;6017]) - sync: add `watch::Sender::new` ([#&#8203;5998]) - sync: add const fn `OnceCell::from_value` ([#&#8203;5903]) ##### Removed - remove unused `stats` feature ([#&#8203;5952]) ##### Documented - add missing backticks in code examples ([#&#8203;5938], [#&#8203;6056]) - fix typos ([#&#8203;5988], [#&#8203;6030]) - process: document that `Child::wait` is cancel safe ([#&#8203;5977]) - sync: add examples for `Semaphore` ([#&#8203;5939], [#&#8203;5956], [#&#8203;5978], [#&#8203;6031], [#&#8203;6032], [#&#8203;6050]) - sync: document that `broadcast` capacity is a lower bound ([#&#8203;6042]) - sync: document that `const_new` is not instrumented ([#&#8203;6002]) - sync: improve cancel-safety documentation for `mpsc::Sender::send` ([#&#8203;5947]) - sync: improve docs for `watch` channel ([#&#8203;5954]) - taskdump: render taskdump documentation on docs.rs ([#&#8203;5972]) ##### Unstable - taskdump: fix potential deadlock ([#&#8203;6036]) [#&#8203;5903]: https://github.com/tokio-rs/tokio/pull/5903 [#&#8203;5906]: https://github.com/tokio-rs/tokio/pull/5906 [#&#8203;5938]: https://github.com/tokio-rs/tokio/pull/5938 [#&#8203;5939]: https://github.com/tokio-rs/tokio/pull/5939 [#&#8203;5947]: https://github.com/tokio-rs/tokio/pull/5947 [#&#8203;5952]: https://github.com/tokio-rs/tokio/pull/5952 [#&#8203;5954]: https://github.com/tokio-rs/tokio/pull/5954 [#&#8203;5956]: https://github.com/tokio-rs/tokio/pull/5956 [#&#8203;5958]: https://github.com/tokio-rs/tokio/pull/5958 [#&#8203;5960]: https://github.com/tokio-rs/tokio/pull/5960 [#&#8203;5962]: https://github.com/tokio-rs/tokio/pull/5962 [#&#8203;5971]: https://github.com/tokio-rs/tokio/pull/5971 [#&#8203;5972]: https://github.com/tokio-rs/tokio/pull/5972 [#&#8203;5977]: https://github.com/tokio-rs/tokio/pull/5977 [#&#8203;5978]: https://github.com/tokio-rs/tokio/pull/5978 [#&#8203;5984]: https://github.com/tokio-rs/tokio/pull/5984 [#&#8203;5985]: https://github.com/tokio-rs/tokio/pull/5985 [#&#8203;5988]: https://github.com/tokio-rs/tokio/pull/5988 [#&#8203;5994]: https://github.com/tokio-rs/tokio/pull/5994 [#&#8203;5997]: https://github.com/tokio-rs/tokio/pull/5997 [#&#8203;5998]: https://github.com/tokio-rs/tokio/pull/5998 [#&#8203;6002]: https://github.com/tokio-rs/tokio/pull/6002 [#&#8203;6014]: https://github.com/tokio-rs/tokio/pull/6014 [#&#8203;6017]: https://github.com/tokio-rs/tokio/pull/6017 [#&#8203;6018]: https://github.com/tokio-rs/tokio/pull/6018 [#&#8203;6021]: https://github.com/tokio-rs/tokio/pull/6021 [#&#8203;6030]: https://github.com/tokio-rs/tokio/pull/6030 [#&#8203;6031]: https://github.com/tokio-rs/tokio/pull/6031 [#&#8203;6032]: https://github.com/tokio-rs/tokio/pull/6032 [#&#8203;6036]: https://github.com/tokio-rs/tokio/pull/6036 [#&#8203;6037]: https://github.com/tokio-rs/tokio/pull/6037 [#&#8203;6042]: https://github.com/tokio-rs/tokio/pull/6042 [#&#8203;6045]: https://github.com/tokio-rs/tokio/pull/6045 [#&#8203;6050]: https://github.com/tokio-rs/tokio/pull/6050 [#&#8203;6056]: https://github.com/tokio-rs/tokio/pull/6056 [#&#8203;6058]: https://github.com/tokio-rs/tokio/pull/6058 ### [`v1.32.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.32.1): Tokio v1.32.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.32.0...tokio-1.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` ([#&#8203;6221]) [#&#8203;6221]: https://github.com/tokio-rs/tokio/pull/6221 ### [`v1.32.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.32.0): Tokio v1.32.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.31.0...tokio-1.32.0) ##### Fixed - sync: fix potential quadratic behavior in `broadcast::Receiver` ([#&#8203;5925]) ##### Added - process: stabilize `Command::raw_arg` ([#&#8203;5930]) - io: enable awaiting error readiness ([#&#8203;5781]) ##### Unstable - rt(alt): improve the scalability of alt runtime as the number of cores grows ([#&#8203;5935]) [#&#8203;5925]: https://github.com/tokio-rs/tokio/pull/5925 [#&#8203;5930]: https://github.com/tokio-rs/tokio/pull/5930 [#&#8203;5781]: https://github.com/tokio-rs/tokio/pull/5781 [#&#8203;5935]: https://github.com/tokio-rs/tokio/pull/5935 ### [`v1.31.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.31.0): Tokio v1.31.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.30.0...tokio-1.31.0) ##### Fixed - io: delegate `WriteHalf::poll_write_vectored` ([#&#8203;5914]) ##### Unstable - rt(unstable): fix memory leak in unstable next-gen scheduler prototype ([#&#8203;5911]) - rt: expose mean task poll time metric ([#&#8203;5927]) [#&#8203;5914]: https://github.com/tokio-rs/tokio/pull/5914 [#&#8203;5911]: https://github.com/tokio-rs/tokio/pull/5911 [#&#8203;5927]: https://github.com/tokio-rs/tokio/pull/5927 ### [`v1.30.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.30.0): Tokio v1.30.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.29.1...tokio-1.30.0) ##### 1.30.0 (August 9, 2023) This release bumps the MSRV of Tokio to 1.63. ([#&#8203;5887]) ##### Changed - tokio: reduce LLVM code generation ([#&#8203;5859]) - io: support `--cfg mio_unsupported_force_poll_poll` flag ([#&#8203;5881]) - sync: make `const_new` methods always available ([#&#8203;5885]) - sync: avoid false sharing in mpsc channel ([#&#8203;5829]) - rt: pop at least one task from inject queue ([#&#8203;5908]) ##### Added - sync: add `broadcast::Sender::new` ([#&#8203;5824]) - net: implement `UCred` for espidf ([#&#8203;5868]) - fs: add `File::options()` ([#&#8203;5869]) - time: implement extra reset variants for `Interval` ([#&#8203;5878]) - process: add `{ChildStd*}::into_owned_{fd, handle}` ([#&#8203;5899]) ##### Removed - tokio: removed unused `tokio_*` cfgs ([#&#8203;5890]) - remove build script to speed up compilation ([#&#8203;5887]) ##### Documented - sync: mention lagging in docs for `broadcast::send` ([#&#8203;5820]) - runtime: expand on sharing runtime docs ([#&#8203;5858]) - io: use vec in example for `AsyncReadExt::read_exact` ([#&#8203;5863]) - time: mark `Sleep` as `!Unpin` in docs ([#&#8203;5916]) - process: fix `raw_arg` not showing up in docs ([#&#8203;5865]) ##### Unstable - rt: add runtime ID ([#&#8203;5864]) - rt: initial implementation of new threaded runtime ([#&#8203;5823]) [#&#8203;5820]: https://github.com/tokio-rs/tokio/pull/5820 [#&#8203;5823]: https://github.com/tokio-rs/tokio/pull/5823 [#&#8203;5824]: https://github.com/tokio-rs/tokio/pull/5824 [#&#8203;5829]: https://github.com/tokio-rs/tokio/pull/5829 [#&#8203;5858]: https://github.com/tokio-rs/tokio/pull/5858 [#&#8203;5859]: https://github.com/tokio-rs/tokio/pull/5859 [#&#8203;5863]: https://github.com/tokio-rs/tokio/pull/5863 [#&#8203;5864]: https://github.com/tokio-rs/tokio/pull/5864 [#&#8203;5865]: https://github.com/tokio-rs/tokio/pull/5865 [#&#8203;5868]: https://github.com/tokio-rs/tokio/pull/5868 [#&#8203;5869]: https://github.com/tokio-rs/tokio/pull/5869 [#&#8203;5878]: https://github.com/tokio-rs/tokio/pull/5878 [#&#8203;5881]: https://github.com/tokio-rs/tokio/pull/5881 [#&#8203;5885]: https://github.com/tokio-rs/tokio/pull/5885 [#&#8203;5887]: https://github.com/tokio-rs/tokio/pull/5887 [#&#8203;5890]: https://github.com/tokio-rs/tokio/pull/5890 [#&#8203;5899]: https://github.com/tokio-rs/tokio/pull/5899 [#&#8203;5908]: https://github.com/tokio-rs/tokio/pull/5908 [#&#8203;5916]: https://github.com/tokio-rs/tokio/pull/5916 ### [`v1.29.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.29.1): Tokio v1.29.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.29.0...tokio-1.29.1) ##### Fixed - rt: fix nesting two `block_in_place` with a `block_on` between ([#&#8203;5837]) [#&#8203;5837]: https://github.com/tokio-rs/tokio/pull/5837 ### [`v1.29.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.29.0): Tokio v1.29.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.28.2...tokio-1.29.0) Technically a breaking change, the `Send` implementation is removed from `runtime::EnterGuard`. This change fixes a bug and should not impact most users. ##### Breaking - rt: `EnterGuard` should not be `Send` ([#&#8203;5766]) ##### Fixed - fs: reduce blocking ops in `fs::read_dir` ([#&#8203;5653]) - rt: fix possible starvation ([#&#8203;5686], [#&#8203;5712]) - rt: fix stacked borrows issue in `JoinSet` ([#&#8203;5693]) - rt: panic if `EnterGuard` dropped incorrect order ([#&#8203;5772]) - time: do not overflow to signal value ([#&#8203;5710]) - fs: wait for in-flight ops before cloning `File` ([#&#8203;5803]) ##### Changed - rt: reduce time to poll tasks scheduled from outside the runtime ([#&#8203;5705], [#&#8203;5720]) ##### Added - net: add uds doc alias for unix sockets ([#&#8203;5659]) - rt: add metric for number of tasks ([#&#8203;5628]) - sync: implement more traits for channel errors ([#&#8203;5666]) - net: add nodelay methods on TcpSocket ([#&#8203;5672]) - sync: add `broadcast::Receiver::blocking_recv` ([#&#8203;5690]) - process: add `raw_arg` method to `Command` ([#&#8203;5704]) - io: support PRIORITY epoll events ([#&#8203;5566]) - task: add `JoinSet::poll_join_next` ([#&#8203;5721]) - net: add support for Redox OS ([#&#8203;5790]) ##### Unstable - rt: add the ability to dump task backtraces ([#&#8203;5608], [#&#8203;5676], [#&#8203;5708], [#&#8203;5717]) - rt: instrument task poll times with a histogram ([#&#8203;5685]) [#&#8203;5766]: https://github.com/tokio-rs/tokio/pull/5766 [#&#8203;5653]: https://github.com/tokio-rs/tokio/pull/5653 [#&#8203;5686]: https://github.com/tokio-rs/tokio/pull/5686 [#&#8203;5712]: https://github.com/tokio-rs/tokio/pull/5712 [#&#8203;5693]: https://github.com/tokio-rs/tokio/pull/5693 [#&#8203;5772]: https://github.com/tokio-rs/tokio/pull/5772 [#&#8203;5710]: https://github.com/tokio-rs/tokio/pull/5710 [#&#8203;5803]: https://github.com/tokio-rs/tokio/pull/5803 [#&#8203;5705]: https://github.com/tokio-rs/tokio/pull/5705 [#&#8203;5720]: https://github.com/tokio-rs/tokio/pull/5720 [#&#8203;5659]: https://github.com/tokio-rs/tokio/pull/5659 [#&#8203;5628]: https://github.com/tokio-rs/tokio/pull/5628 [#&#8203;5666]: https://github.com/tokio-rs/tokio/pull/5666 [#&#8203;5672]: https://github.com/tokio-rs/tokio/pull/5672 [#&#8203;5690]: https://github.com/tokio-rs/tokio/pull/5690 [#&#8203;5704]: https://github.com/tokio-rs/tokio/pull/5704 [#&#8203;5566]: https://github.com/tokio-rs/tokio/pull/5566 [#&#8203;5721]: https://github.com/tokio-rs/tokio/pull/5721 [#&#8203;5790]: https://github.com/tokio-rs/tokio/pull/5790 [#&#8203;5608]: https://github.com/tokio-rs/tokio/pull/5608 [#&#8203;5676]: https://github.com/tokio-rs/tokio/pull/5676 [#&#8203;5708]: https://github.com/tokio-rs/tokio/pull/5708 [#&#8203;5717]: https://github.com/tokio-rs/tokio/pull/5717 [#&#8203;5685]: https://github.com/tokio-rs/tokio/pull/5685 ### [`v1.28.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.28.2): Tokio v1.28.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.28.1...tokio-1.28.2) ##### 1.28.2 (May 28, 2023) Forward ports 1.18.6 changes. ##### Fixed - deps: disable default features for mio ([#&#8203;5728]) [#&#8203;5728]: https://github.com/tokio-rs/tokio/pull/5728 ### [`v1.28.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.28.1): Tokio v1.28.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.28.0...tokio-1.28.1) ##### 1.28.1 (May 10th, 2023) This release fixes a mistake in the build script that makes `AsFd` implementations unavailable on Rust 1.63. ([#&#8203;5677]) [#&#8203;5677]: https://github.com/tokio-rs/tokio/pull/5677 ### [`v1.28.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.28.0): Tokio v1.28.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.27.0...tokio-1.28.0) ##### 1.28.0 (April 25th, 2023) ##### Added - io: add `AsyncFd::async_io` ([#&#8203;5542]) - io: impl BufMut for ReadBuf ([#&#8203;5590]) - net: add `recv_buf` for `UdpSocket` and `UnixDatagram` ([#&#8203;5583]) - sync: add `OwnedSemaphorePermit::semaphore` ([#&#8203;5618]) - sync: add `same_channel` to broadcast channel ([#&#8203;5607]) - sync: add `watch::Receiver::wait_for` ([#&#8203;5611]) - task: add `JoinSet::spawn_blocking` and `JoinSet::spawn_blocking_on` ([#&#8203;5612]) ##### Changed - deps: update windows-sys to 0.48 ([#&#8203;5591]) - io: make `read_to_end` not grow unnecessarily ([#&#8203;5610]) - macros: make entrypoints more efficient ([#&#8203;5621]) - sync: improve Debug impl for `RwLock` ([#&#8203;5647]) - sync: reduce contention in `Notify` ([#&#8203;5503]) ##### Fixed - net: support `get_peer_cred` on AIX ([#&#8203;5065]) - sync: avoid deadlocks in `broadcast` with custom wakers ([#&#8203;5578]) ##### Documented - sync: fix typo in `Semaphore::MAX_PERMITS` ([#&#8203;5645]) - sync: fix typo in `tokio::sync::watch::Sender` docs ([#&#8203;5587]) [#&#8203;5065]: https://github.com/tokio-rs/tokio/pull/5065 [#&#8203;5503]: https://github.com/tokio-rs/tokio/pull/5503 [#&#8203;5542]: https://github.com/tokio-rs/tokio/pull/5542 [#&#8203;5578]: https://github.com/tokio-rs/tokio/pull/5578 [#&#8203;5583]: https://github.com/tokio-rs/tokio/pull/5583 [#&#8203;5587]: https://github.com/tokio-rs/tokio/pull/5587 [#&#8203;5590]: https://github.com/tokio-rs/tokio/pull/5590 [#&#8203;5591]: https://github.com/tokio-rs/tokio/pull/5591 [#&#8203;5607]: https://github.com/tokio-rs/tokio/pull/5607 [#&#8203;5610]: https://github.com/tokio-rs/tokio/pull/5610 [#&#8203;5611]: https://github.com/tokio-rs/tokio/pull/5611 [#&#8203;5612]: https://github.com/tokio-rs/tokio/pull/5612 [#&#8203;5618]: https://github.com/tokio-rs/tokio/pull/5618 [#&#8203;5621]: https://github.com/tokio-rs/tokio/pull/5621 [#&#8203;5645]: https://github.com/tokio-rs/tokio/pull/5645 [#&#8203;5647]: https://github.com/tokio-rs/tokio/pull/5647 ### [`v1.27.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.27.0): Tokio v1.27.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.26.0...tokio-1.27.0) ##### 1.27.0 (March 27th, 2023) This release bumps the MSRV of Tokio to 1.56. ([#&#8203;5559]) ##### Added - io: add `async_io` helper method to sockets ([#&#8203;5512]) - io: add implementations of `AsFd`/`AsHandle`/`AsSocket` ([#&#8203;5514], [#&#8203;5540]) - net: add `UdpSocket::peek_sender()` ([#&#8203;5520]) - sync: add `RwLockWriteGuard::{downgrade_map, try_downgrade_map}` ([#&#8203;5527]) - task: add `JoinHandle::abort_handle` ([#&#8203;5543]) ##### Changed - io: use `memchr` from `libc` ([#&#8203;5558]) - macros: accept path as crate rename in `#[tokio::main]` ([#&#8203;5557]) - macros: update to syn 2.0.0 ([#&#8203;5572]) - time: don't register for a wakeup when `Interval` returns `Ready` ([#&#8203;5553]) ##### Fixed - fs: fuse std iterator in `ReadDir` ([#&#8203;5555]) - tracing: fix `spawn_blocking` location fields ([#&#8203;5573]) - time: clean up redundant check in `Wheel::poll()` ([#&#8203;5574]) ##### Documented - macros: define cancellation safety ([#&#8203;5525]) - io: add details to docs of `tokio::io::copy[_buf]` ([#&#8203;5575]) - io: refer to `ReaderStream` and `StreamReader` in module docs ([#&#8203;5576]) [#&#8203;5512]: https://github.com/tokio-rs/tokio/pull/5512 [#&#8203;5514]: https://github.com/tokio-rs/tokio/pull/5514 [#&#8203;5520]: https://github.com/tokio-rs/tokio/pull/5520 [#&#8203;5525]: https://github.com/tokio-rs/tokio/pull/5525 [#&#8203;5527]: https://github.com/tokio-rs/tokio/pull/5527 [#&#8203;5540]: https://github.com/tokio-rs/tokio/pull/5540 [#&#8203;5543]: https://github.com/tokio-rs/tokio/pull/5543 [#&#8203;5553]: https://github.com/tokio-rs/tokio/pull/5553 [#&#8203;5555]: https://github.com/tokio-rs/tokio/pull/5555 [#&#8203;5557]: https://github.com/tokio-rs/tokio/pull/5557 [#&#8203;5558]: https://github.com/tokio-rs/tokio/pull/5558 [#&#8203;5559]: https://github.com/tokio-rs/tokio/pull/5559 [#&#8203;5572]: https://github.com/tokio-rs/tokio/pull/5572 [#&#8203;5573]: https://github.com/tokio-rs/tokio/pull/5573 [#&#8203;5574]: https://github.com/tokio-rs/tokio/pull/5574 [#&#8203;5575]: https://github.com/tokio-rs/tokio/pull/5575 [#&#8203;5576]: https://github.com/tokio-rs/tokio/pull/5576 ### [`v1.26.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.26.0): Tokio v1.26.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.25.3...tokio-1.26.0) ##### Fixed - macros: fix empty `join!` and `try_join!` ([https://github.com/tokio-rs/tokio/pull/5504]) - sync: don't leak tracing spans in mutex guards ([https://github.com/tokio-rs/tokio/pull/5469]) - sync: drop wakers after unlocking the mutex in Notify ([https://github.com/tokio-rs/tokio/pull/5471]) - sync: drop wakers outside lock in semaphore ([https://github.com/tokio-rs/tokio/pull/5475]) ##### Added - fs: add `fs::try_exists` ([https://github.com/tokio-rs/tokio/pull/4299]) - net: add types for named unix pipes ([https://github.com/tokio-rs/tokio/pull/5351]) - sync: add `MappedOwnedMutexGuard` ([https://github.com/tokio-rs/tokio/pull/5474]) ##### Changed - chore: update windows-sys to 0.45 ([https://github.com/tokio-rs/tokio/pull/5386]) - net: use Message Read Mode for named pipes ([https://github.com/tokio-rs/tokio/pull/5350]) - sync: mark lock guards with `#[clippy::has_significant_drop]` ([https://github.com/tokio-rs/tokio/pull/5422]) - sync: reduce contention in watch channel ([https://github.com/tokio-rs/tokio/pull/5464]) - time: remove cache padding in timer entries ([https://github.com/tokio-rs/tokio/pull/5468]) - time: Improve `Instant::now()` perf with test-util ([https://github.com/tokio-rs/tokio/pull/5513]) ##### Internal Changes - io: use `poll_fn` in `copy_bidirectional` ([https://github.com/tokio-rs/tokio/pull/5486]) - net: refactor named pipe builders to not use bitfields ([https://github.com/tokio-rs/tokio/pull/5477]) - rt: remove Arc from Clock ([https://github.com/tokio-rs/tokio/pull/5434]) - sync: make `notify_waiters` calls atomic ([https://github.com/tokio-rs/tokio/pull/5458]) - time: don't store deadline twice in sleep entries ([https://github.com/tokio-rs/tokio/pull/5410]) ##### Unstable - metrics: add a new metric for budget exhaustion yields ([https://github.com/tokio-rs/tokio/pull/5517]) ##### Documented - io: improve AsyncFd example ([https://github.com/tokio-rs/tokio/pull/5481]) - runtime: document the nature of the main future ([https://github.com/tokio-rs/tokio/pull/5494]) - runtime: remove extra period in docs ([https://github.com/tokio-rs/tokio/pull/5511]) - signal: updated Documentation for Signals ([https://github.com/tokio-rs/tokio/pull/5459]) - sync: add doc aliases for `blocking_*` methods ([https://github.com/tokio-rs/tokio/pull/5448]) - sync: fix docs for Send/Sync bounds in broadcast ([https://github.com/tokio-rs/tokio/pull/5480]) - sync: document drop behavior for channels ([https://github.com/tokio-rs/tokio/pull/5497]) - task: clarify what happens to spawned work during runtime shutdown ([https://github.com/tokio-rs/tokio/pull/5394]) - task: clarify `process::Command` docs ([https://github.com/tokio-rs/tokio/pull/5413]) - task: fix wording with 'unsend' ([https://github.com/tokio-rs/tokio/pull/5452]) - time: document immediate completion guarantee for timeouts ([https://github.com/tokio-rs/tokio/pull/5509]) - tokio: document supported platforms ([https://github.com/tokio-rs/tokio/pull/5483]) [https://github.com/tokio-rs/tokio/pull/4299]: https://github.com/tokio-rs/tokio/pull/4299 [https://github.com/tokio-rs/tokio/pull/5350]: https://github.com/tokio-rs/tokio/pull/5350 [https://github.com/tokio-rs/tokio/pull/5351]: https://github.com/tokio-rs/tokio/pull/5351 [https://github.com/tokio-rs/tokio/pull/5386]: https://github.com/tokio-rs/tokio/pull/5386 [https://github.com/tokio-rs/tokio/pull/5394]: https://github.com/tokio-rs/tokio/pull/5394 [https://github.com/tokio-rs/tokio/pull/5410]: https://github.com/tokio-rs/tokio/pull/5410 [https://github.com/tokio-rs/tokio/pull/5413]: https://github.com/tokio-rs/tokio/pull/5413 [https://github.com/tokio-rs/tokio/pull/5422]: https://github.com/tokio-rs/tokio/pull/5422 [https://github.com/tokio-rs/tokio/pull/5434]: https://github.com/tokio-rs/tokio/pull/5434 [https://github.com/tokio-rs/tokio/pull/5448]: https://github.com/tokio-rs/tokio/pull/5448 [https://github.com/tokio-rs/tokio/pull/5452]: https://github.com/tokio-rs/tokio/pull/5452 [https://github.com/tokio-rs/tokio/pull/5458]: https://github.com/tokio-rs/tokio/pull/5458 [https://github.com/tokio-rs/tokio/pull/5459]: https://github.com/tokio-rs/tokio/pull/5459 [https://github.com/tokio-rs/tokio/pull/5464]: https://github.com/tokio-rs/tokio/pull/5464 [https://github.com/tokio-rs/tokio/pull/5468]: https://github.com/tokio-rs/tokio/pull/5468 [https://github.com/tokio-rs/tokio/pull/5469]: https://github.com/tokio-rs/tokio/pull/5469 [https://github.com/tokio-rs/tokio/pull/5471]: https://github.com/tokio-rs/tokio/pull/5471 [https://github.com/tokio-rs/tokio/pull/5474]: https://github.com/tokio-rs/tokio/pull/5474 [https://github.com/tokio-rs/tokio/pull/5475]: https://github.com/tokio-rs/tokio/pull/5475 [https://github.com/tokio-rs/tokio/pull/5477]: https://github.com/tokio-rs/tokio/pull/5477 [https://github.com/tokio-rs/tokio/pull/5480]: https://github.com/tokio-rs/tokio/pull/5480 [https://github.com/tokio-rs/tokio/pull/5481]: https://github.com/tokio-rs/tokio/pull/5481 [https://github.com/tokio-rs/tokio/pull/5483]: https://github.com/tokio-rs/tokio/pull/5483 [https://github.com/tokio-rs/tokio/pull/5486]: https://github.com/tokio-rs/tokio/pull/5486 [https://github.com/tokio-rs/tokio/pull/5494]: https://github.com/tokio-rs/tokio/pull/5494 [https://github.com/tokio-rs/tokio/pull/5497]: https://github.com/tokio-rs/tokio/pull/5497 [https://github.com/tokio-rs/tokio/pull/5504]: https://github.com/tokio-rs/tokio/pull/5504 [https://github.com/tokio-rs/tokio/pull/5509]: https://github.com/tokio-rs/tokio/pull/5509 [https://github.com/tokio-rs/tokio/pull/5511]: https://github.com/tokio-rs/tokio/pull/5511 [https://github.com/tokio-rs/tokio/pull/5513]: https://github.com/tokio-rs/tokio/pull/5513 [https://github.com/tokio-rs/tokio/pull/5517]: https://github.com/tokio-rs/tokio/pull/5517 ### [`v1.25.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.25.3): Tokio v1.25.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.25.2...tokio-1.25.3) ##### 1.25.3 (December 17th, 2023) ##### Fixed - io: add budgeting to `tokio::runtime::io::registration::async_io` ([#&#8203;6221]) [#&#8203;6221]: https://github.com/tokio-rs/tokio/pull/6221 ### [`v1.25.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.25.2): Tokio v1.25.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.25.1...tokio-1.25.2) ##### 1.25.2 (September 22, 2023) Forward ports 1.20.6 changes. ##### Changed - io: use `memchr` from `libc` ([#&#8203;5960]) [#&#8203;5960]: https://github.com/tokio-rs/tokio/pull/5960 ### [`v1.25.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.25.1): Tokio v1.25.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.25.0...tokio-1.25.1) ##### 1.25.1 (May 28, 2023) Forward ports 1.18.6 changes. ##### Fixed - deps: disable default features for mio ([#&#8203;5728]) [#&#8203;5728]: https://github.com/tokio-rs/tokio/pull/5728 ### [`v1.25.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.25.0): Tokio v1.25.0 ##### 1.25.0 (January 28, 2023) ##### Fixed - rt: fix runtime metrics reporting ([#&#8203;5330]) ##### Added - sync: add `broadcast::Sender::len` ([#&#8203;5343]) ##### Changed - fs: increase maximum read buffer size to 2MiB ([#&#8203;5397]) [#&#8203;5330]: https://github.com/tokio-rs/tokio/pull/5330 [#&#8203;5343]: https://github.com/tokio-rs/tokio/pull/5343 [#&#8203;5397]: https://github.com/tokio-rs/tokio/pull/5397 ### [`v1.24.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.24.1): Tokio v1.24.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.24.0...tokio-1.24.1) This release fixes a compilation failure on targets without `AtomicU64` when using rustc older than 1.63. ([#&#8203;5356]) [#&#8203;5356]: https://github.com/tokio-rs/tokio/pull/5356 ### [`v1.24.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.24.0): Tokio v1.24.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.23.1...tokio-1.24.0) The highlight of this release is the reduction of lock contention for all I/O operations ([#&#8203;5300](https://github.com/tokio-rs/tokio/issues/5300)). We have received reports of up to a 20% improvement in CPU utilization and increased throughput for real-world I/O heavy applications. ##### Fixed - rt: improve native `AtomicU64` support detection ([#&#8203;5284]) ##### Added - rt: add configuration option for max number of I/O events polled from the OS per tick ([#&#8203;5186]) - rt: add an environment variable for configuring the default number of worker threads per runtime instance ([#&#8203;4250]) ##### Changed - sync: reduce MPSC channel stack usage ([#&#8203;5294]) - io: reduce lock contention in I/O operations ([#&#8203;5300]) - fs: speed up `read_dir()` by chunking operations ([#&#8203;5309]) - rt: use internal `ThreadId` implementation ([#&#8203;5329]) - test: don't auto-advance time when a `spawn_blocking` task is running ([#&#8203;5115]) [#&#8203;5186]: https://github.com/tokio-rs/tokio/pull/5186 [#&#8203;5294]: https://github.com/tokio-rs/tokio/pull/5294 [#&#8203;5284]: https://github.com/tokio-rs/tokio/pull/5284 [#&#8203;4250]: https://github.com/tokio-rs/tokio/pull/4250 [#&#8203;5300]: https://github.com/tokio-rs/tokio/pull/5300 [#&#8203;5329]: https://github.com/tokio-rs/tokio/pull/5329 [#&#8203;5115]: https://github.com/tokio-rs/tokio/pull/5115 [#&#8203;5309]: https://github.com/tokio-rs/tokio/pull/5309 ### [`v1.23.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.23.1): Tokio v1.23.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.23.0...tokio-1.23.1) This release forward ports changes from 1.18.4. ##### Fixed - net: fix Windows named pipe server builder to maintain option when toggling pipe mode ([#&#8203;5336]). [#&#8203;5336]: https://github.com/tokio-rs/tokio/pull/5336 ### [`v1.23.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.23.0): Tokio v1.23.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.22.0...tokio-1.23.0) ##### Fixed - net: fix Windows named pipe connect ([#&#8203;5208]) - io: support vectored writes for `ChildStdin` ([#&#8203;5216]) - io: fix `async fn ready()` false positive for OS-specific events ([#&#8203;5231]) ##### Changed - runtime: `yield_now` defers task until after driver poll ([#&#8203;5223]) - runtime: reduce amount of codegen needed per spawned task ([#&#8203;5213]) - windows: replace `winapi` dependency with `windows-sys` ([#&#8203;5204]) [#&#8203;5208]: https://github.com/tokio-rs/tokio/pull/5208 [#&#8203;5216]: https://github.com/tokio-rs/tokio/pull/5216 [#&#8203;5213]: https://github.com/tokio-rs/tokio/pull/5213 [#&#8203;5204]: https://github.com/tokio-rs/tokio/pull/5204 [#&#8203;5223]: https://github.com/tokio-rs/tokio/pull/5223 [#&#8203;5231]: https://github.com/tokio-rs/tokio/pull/5231 ### [`v1.22.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.22.0): Tokio v1.22.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.21.2...tokio-1.22.0) ##### Added - runtime: add `Handle::runtime_flavor` ([#&#8203;5138]) - sync: add `Mutex::blocking_lock_owned` ([#&#8203;5130]) - sync: add `Semaphore::MAX_PERMITS` ([#&#8203;5144]) - sync: add `merge()` to semaphore permits ([#&#8203;4948]) - sync: add `mpsc::WeakUnboundedSender` ([#&#8203;5189]) ##### Added (unstable) - process: add `Command::process_group` ([#&#8203;5114]) - runtime: export metrics about the blocking thread pool ([#&#8203;5161]) - task: add `task::id()` and `task::try_id()` ([#&#8203;5171]) ##### Fixed - macros: don't take ownership of futures in macros ([#&#8203;5087]) - runtime: fix Stacked Borrows violation in `LocalOwnedTasks` ([#&#8203;5099]) - runtime: mitigate ABA with 32-bit queue indices when possible ([#&#8203;5042]) - task: wake local tasks to the local queue when woken by the same thread ([#&#8203;5095]) - time: panic in release mode when `mark_pending` called illegally ([#&#8203;5093]) - runtime: fix typo in expect message ([#&#8203;5169]) - runtime: fix `unsync_load` on atomic types ([#&#8203;5175]) - task: elaborate safety comments in task deallocation ([#&#8203;5172]) - runtime: fix `LocalSet` drop in thread local ([#&#8203;5179]) - net: remove libc type leakage in a public API ([#&#8203;5191]) - runtime: update the alignment of `CachePadded` ([#&#8203;5106]) ##### Changed - io: make `tokio::io::copy` continue filling the buffer when writer stalls ([#&#8203;5066]) - runtime: remove `coop::budget` from `LocalSet::run_until` ([#&#8203;5155]) - sync: make `Notify` panic safe ([#&#8203;5154]) ##### Documented - io: fix doc for `write_i8` to use signed integers ([#&#8203;5040]) - net: fix doc typos for TCP and UDP `set_tos` methods ([#&#8203;5073]) - net: fix function name in `UdpSocket::recv` documentation ([#&#8203;5150]) - sync: typo in `TryLockError` for `RwLock::try_write` ([#&#8203;5160]) - task: document that spawned tasks execute immediately ([#&#8203;5117]) - time: document return type of `timeout` ([#&#8203;5118]) - time: document that `timeout` checks only before poll ([#&#8203;5126]) - sync: specify return type of `oneshot::Receiver` in docs ([#&#8203;5198]) ##### Internal changes - runtime: use const `Mutex::new` for globals ([#&#8203;5061]) - runtime: remove `Option` around `mio::Events` in io driver ([#&#8203;5078]) - runtime: remove a conditional compilation clause ([#&#8203;5104]) - runtime: remove a reference to internal time handle ([#&#8203;5107]) - runtime: misc time driver cleanup ([#&#8203;5120]) - runtime: move signal driver to runtime module ([#&#8203;5121]) - runtime: signal driver now uses I/O driver directly ([#&#8203;5125]) - runtime: start decoupling I/O driver and I/O handle ([#&#8203;5127]) - runtime: switch `io::handle` refs with scheduler:Handle ([#&#8203;5128]) - runtime: remove Arc from I/O driver ([#&#8203;5134]) - runtime: use signal driver handle via `scheduler::Handle` ([#&#8203;5135]) - runtime: move internal clock fns out of context ([#&#8203;5139]) - runtime: remove `runtime::context` module ([#&#8203;5140]) - runtime: keep driver cfgs in `driver.rs` ([#&#8203;5141]) - runtime: add `runtime::context` to unify thread-locals ([#&#8203;5143]) - runtime: rename some confusing internal variables/fns ([#&#8203;5151]) - runtime: move `coop` mod into `runtime` ([#&#8203;5152]) - runtime: move budget state to context thread-local ([#&#8203;5157]) - runtime: move park logic into runtime module ([#&#8203;5158]) - runtime: move `Runtime` into its own file ([#&#8203;5159]) - runtime: unify entering a runtime with `Handle::enter` ([#&#8203;5163]) - runtime: remove handle reference from each scheduler ([#&#8203;5166]) - runtime: move `enter` into `context` ([#&#8203;5167]) - runtime: combine context and entered thread-locals ([#&#8203;5168]) - runtime: fix accidental unsetting of current handle ([#&#8203;5178]) - runtime: move `CoreStage` methods to `Core` ([#&#8203;5182]) - sync: name mpsc semaphore types ([#&#8203;5146]) [#&#8203;4948]: https://github.com/tokio-rs/tokio/pull/4948 [#&#8203;5040]: https://github.com/tokio-rs/tokio/pull/5040 [#&#8203;5042]: https://github.com/tokio-rs/tokio/pull/5042 [#&#8203;5061]: https://github.com/tokio-rs/tokio/pull/5061 [#&#8203;5066]: https://github.com/tokio-rs/tokio/pull/5066 [#&#8203;5073]: https://github.com/tokio-rs/tokio/pull/5073 [#&#8203;5078]: https://github.com/tokio-rs/tokio/pull/5078 [#&#8203;5087]: https://github.com/tokio-rs/tokio/pull/5087 [#&#8203;5093]: https://github.com/tokio-rs/tokio/pull/5093 [#&#8203;5095]: https://github.com/tokio-rs/tokio/pull/5095 [#&#8203;5099]: https://github.com/tokio-rs/tokio/pull/5099 [#&#8203;5104]: https://github.com/tokio-rs/tokio/pull/5104 [#&#8203;5106]: https://github.com/tokio-rs/tokio/pull/5106 [#&#8203;5107]: https://github.com/tokio-rs/tokio/pull/5107 [#&#8203;5114]: https://github.com/tokio-rs/tokio/pull/5114 [#&#8203;5117]: https://github.com/tokio-rs/tokio/pull/5117 [#&#8203;5118]: https://github.com/tokio-rs/tokio/pull/5118 [#&#8203;5120]: https://github.com/tokio-rs/tokio/pull/5120 [#&#8203;5121]: https://github.com/tokio-rs/tokio/pull/5121 [#&#8203;5125]: https://github.com/tokio-rs/tokio/pull/5125 [#&#8203;5126]: https://github.com/tokio-rs/tokio/pull/5126 [#&#8203;5127]: https://github.com/tokio-rs/tokio/pull/5127 [#&#8203;5128]: https://github.com/tokio-rs/tokio/pull/5128 [#&#8203;5130]: https://github.com/tokio-rs/tokio/pull/5130 [#&#8203;5134]: https://github.com/tokio-rs/tokio/pull/5134 [#&#8203;5135]: https://github.com/tokio-rs/tokio/pull/5135 [#&#8203;5138]: https://github.com/tokio-rs/tokio/pull/5138 [#&#8203;5138]: https://github.com/tokio-rs/tokio/pull/5138 [#&#8203;5139]: https://github.com/tokio-rs/tokio/pull/5139 [#&#8203;5140]: https://github.com/tokio-rs/tokio/pull/5140 [#&#8203;5141]: https://github.com/tokio-rs/tokio/pull/5141 [#&#8203;5143]: https://github.com/tokio-rs/tokio/pull/5143 [#&#8203;5144]: https://github.com/tokio-rs/tokio/pull/5144 [#&#8203;5144]: https://github.com/tokio-rs/tokio/pull/5144 [#&#8203;5146]: https://github.com/tokio-rs/tokio/pull/5146 [#&#8203;5150]: https://github.com/tokio-rs/tokio/pull/5150 [#&#8203;5151]: https://github.com/tokio-rs/tokio/pull/5151 [#&#8203;5152]: https://github.com/tokio-rs/tokio/pull/5152 [#&#8203;5154]: https://github.com/tokio-rs/tokio/pull/5154 [#&#8203;5155]: https://github.com/tokio-rs/tokio/pull/5155 [#&#8203;5157]: https://github.com/tokio-rs/tokio/pull/5157 [#&#8203;5158]: https://github.com/tokio-rs/tokio/pull/5158 [#&#8203;5159]: https://github.com/tokio-rs/tokio/pull/5159 [#&#8203;5160]: https://github.com/tokio-rs/tokio/pull/5160 [#&#8203;5161]: https://github.com/tokio-rs/tokio/pull/5161 [#&#8203;5163]: https://github.com/tokio-rs/tokio/pull/5163 [#&#8203;5166]: https://github.com/tokio-rs/tokio/pull/5166 [#&#8203;5167]: https://github.com/tokio-rs/tokio/pull/5167 [#&#8203;5168]: https://github.com/tokio-rs/tokio/pull/5168 [#&#8203;5169]: https://github.com/tokio-rs/tokio/pull/5169 [#&#8203;5171]: https://github.com/tokio-rs/tokio/pull/5171 [#&#8203;5172]: https://github.com/tokio-rs/tokio/pull/5172 [#&#8203;5175]: https://github.com/tokio-rs/tokio/pull/5175 [#&#8203;5178]: https://github.com/tokio-rs/tokio/pull/5178 [#&#8203;5179]: https://github.com/tokio-rs/tokio/pull/5179 [#&#8203;5182]: https://github.com/tokio-rs/tokio/pull/5182 [#&#8203;5189]: https://github.com/tokio-rs/tokio/pull/5189 [#&#8203;5191]: https://github.com/tokio-rs/tokio/pull/5191 [#&#8203;5198]: https://github.com/tokio-rs/tokio/pull/5198 ### [`v1.21.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.21.2): Tokio v1.21.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.21.1...tokio-1.21.2) ##### 1.21.2 (September 27, 2022) This release removes the dependency on the `once_cell` crate to restore the MSRV of 1.21.x, which is the latest minor version at the time of release. ([#&#8203;5048]) [#&#8203;5048]: https://github.com/tokio-rs/tokio/pull/5048 ### [`v1.21.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.21.1): Tokio v1.21.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.21.0...tokio-1.21.1) ##### 1.21.1 (September 13, 2022) ##### Fixed - net: fix dependency resolution for socket2 ([#&#8203;5000]) - task: ignore failure to set TLS in `LocalSet` Drop ([#&#8203;4976]) [#&#8203;4976]: https://github.com/tokio-rs/tokio/pull/4976 [#&#8203;5000]: https://github.com/tokio-rs/tokio/pull/5000 ### [`v1.21.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.21.0): Tokio v1.21.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.20.6...tokio-1.21.0) ##### 1.21.0 (September 2, 2022) This release is the first release of Tokio to intentionally support WASM. The `sync,macros,io-util,rt,time` features are stabilized on WASM. Additionally the wasm32-wasi target is given unstable support for the `net` feature. ##### Added - net: add `device` and `bind_device` methods to TCP/UDP sockets ([#&#8203;4882]) - net: add `tos` and `set_tos` methods to TCP and UDP sockets ([#&#8203;4877]) - net: add security flags to named pipe `ServerOptions` ([#&#8203;4845]) - signal: add more windows signal handlers ([#&#8203;4924]) - sync: add `mpsc::Sender::max_capacity` method ([#&#8203;4904]) - sync: implement Weak version of `mpsc::Sender` ([#&#8203;4595]) - task: add `LocalSet::enter` ([#&#8203;4765]) - task: stabilize `JoinSet` and `AbortHandle` ([#&#8203;4920]) - tokio: add `track_caller` to public APIs ([#&#8203;4805], [#&#8203;4848], [#&#8203;4852]) - wasm: initial support for `wasm32-wasi` target ([#&#8203;4716]) ##### Fixed - miri: improve miri compatibility by avoiding temporary references in `linked_list::Link` impls ([#&#8203;4841]) - signal: don't register write interest on signal pipe ([#&#8203;4898]) - sync: add `#[must_use]` to lock guards ([#&#8203;4886]) - sync: fix hang when calling `recv` on closed and reopened broadcast channel ([#&#8203;4867]) - task: propagate attributes on task-locals ([#&#8203;4837]) ##### Changed - fs: change panic to error in `File::start_seek` ([#&#8203;4897]) - io: reduce syscalls in `poll_read` ([#&#8203;4840]) - process: use blocking threadpool for child stdio I/O ([#&#8203;4824]) - signal: make `SignalKind` methods const ([#&#8203;4956]) ##### Internal changes - rt: extract `basic_scheduler::Config` ([#&#8203;4935]) - rt: move I/O driver into `runtime` module ([#&#8203;4942]) - rt: rename internal scheduler types ([#&#8203;4945]) ##### Documented - chore: fix typos and grammar ([#&#8203;4858], [#&#8203;4894], [#&#8203;4928]) - io: fix typo in `AsyncSeekExt::rewind` docs ([#&#8203;4893]) - net: add documentation to `try_read()` for zero-length buffers ([#&#8203;4937]) - runtime: remove incorrect panic section for `Builder::worker_threads` ([#&#8203;4849]) - sync: doc of `watch::Sender::send` improved ([#&#8203;4959]) - task: add cancel safety docs to `JoinHandle` ([#&#8203;4901]) - task: expand on cancellation of `spawn_blocking` ([#&#8203;4811]) - time: clarify that the first tick of `Interval::tick` happens immediately ([#&#8203;4951]) ##### Unstable - rt: add unstable option to disable the LIFO slot ([#&#8203;4936]) - task: fix incorrect signature in `Builder::spawn_on` ([#&#8203;4953]) - task: make `task::Builder::spawn*` methods fallible ([#&#8203;4823]) [#&#8203;4595]: https://github.com/tokio-rs/tokio/pull/4595 [#&#8203;4716]: https://github.com/tokio-rs/tokio/pull/4716 [#&#8203;4765]: https://github.com/tokio-rs/tokio/pull/4765 [#&#8203;4805]: https://github.com/tokio-rs/tokio/pull/4805 [#&#8203;4811]: https://github.com/tokio-rs/tokio/pull/4811 [#&#8203;4823]: https://github.com/tokio-rs/tokio/pull/4823 [#&#8203;4824]: https://github.com/tokio-rs/tokio/pull/4824 [#&#8203;4837]: https://github.com/tokio-rs/tokio/pull/4837 [#&#8203;4840]: https://github.com/tokio-rs/tokio/pull/4840 [#&#8203;4841]: https://github.com/tokio-rs/tokio/pull/4841 [#&#8203;4845]: https://github.com/tokio-rs/tokio/pull/4845 [#&#8203;4848]: https://github.com/tokio-rs/tokio/pull/4848 [#&#8203;4849]: https://github.com/tokio-rs/tokio/pull/4849 [#&#8203;4852]: https://github.com/tokio-rs/tokio/pull/4852 [#&#8203;4858]: https://github.com/tokio-rs/tokio/pull/4858 [#&#8203;4867]: https://github.com/tokio-rs/tokio/pull/4867 [#&#8203;4877]: https://github.com/tokio-rs/tokio/pull/4877 [#&#8203;4882]: https://github.com/tokio-rs/tokio/pull/4882 [#&#8203;4886]: https://github.com/tokio-rs/tokio/pull/4886 [#&#8203;4893]: https://github.com/tokio-rs/tokio/pull/4893 [#&#8203;4894]: https://github.com/tokio-rs/tokio/pull/4894 [#&#8203;4897]: https://github.com/tokio-rs/tokio/pull/4897 [#&#8203;4898]: https://github.com/tokio-rs/tokio/pull/4898 [#&#8203;4901]: https://github.com/tokio-rs/tokio/pull/4901 [#&#8203;4904]: https://github.com/tokio-rs/tokio/pull/4904 [#&#8203;4920]: https://github.com/tokio-rs/tokio/pull/4920 [#&#8203;4924]: https://github.com/tokio-rs/tokio/pull/4924 [#&#8203;4928]: https://github.com/tokio-rs/tokio/pull/4928 [#&#8203;4935]: https://github.com/tokio-rs/tokio/pull/4935 [#&#8203;4936]: https://github.com/tokio-rs/tokio/pull/4936 [#&#8203;4937]: https://github.com/tokio-rs/tokio/pull/4937 [#&#8203;4942]: https://github.com/tokio-rs/tokio/pull/4942 [#&#8203;4945]: https://github.com/tokio-rs/tokio/pull/4945 [#&#8203;4951]: https://github.com/tokio-rs/tokio/pull/4951 [#&#8203;4953]: https://github.com/tokio-rs/tokio/pull/4953 [#&#8203;4956]: https://github.com/tokio-rs/tokio/pull/4956 [#&#8203;4959]: https://github.com/tokio-rs/tokio/pull/4959 ### [`v1.20.6`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.20.6): Tokio v1.20.6 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.20.5...tokio-1.20.6) ##### 1.20.6 (September 22, 2023) This is a backport of a change from 1.27.0. ##### Changed - io: use `memchr` from `libc` ([#&#8203;5960]) [#&#8203;5960]: https://github.com/tokio-rs/tokio/pull/5960 ### [`v1.20.5`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.20.5): Tokio v1.20.5 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.20.4...tokio-1.20.5) ##### 1.20.5 (May 28, 2023) Forward ports 1.18.6 changes. ##### Fixed - deps: disable default features for mio ([#&#8203;5728]) [#&#8203;5728]: https://github.com/tokio-rs/tokio/pull/5728 ### [`v1.20.4`](https://github.com/tokio-rs/tokio/compare/tokio-1.20.3...tokio-1.20.4) [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.20.3...tokio-1.20.4) ### [`v1.20.3`](https://github.com/tokio-rs/tokio/compare/tokio-1.20.2...tokio-1.20.3) [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.20.2...tokio-1.20.3) ### [`v1.20.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.20.2): Tokio v1.20.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.20.1...tokio-1.20.2) ##### 1.20.2 (September 27, 2022) This release removes the dependency on the `once_cell` crate to restore the MSRV of the 1.20.x LTS release. ([#&#8203;5048]) [#&#8203;5048]: https://github.com/tokio-rs/tokio/pull/5048 ### [`v1.20.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.20.1): Tokio v1.20.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.20.0...tokio-1.20.1) ##### 1.20.1 (July 25, 2022) ##### Fixed - chore: fix version detection in build script ([#&#8203;4860]) [#&#8203;4860]: https://github.com/tokio-rs/tokio/pull/4860 ### [`v1.20.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.20.0): Tokio v1.20.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.19.2...tokio-1.20.0) ##### 1.20.0 (July 12, 2022) ##### Added - tokio: add track\_caller to public APIs ([#&#8203;4772], [#&#8203;4791], [#&#8203;4793], [#&#8203;4806], [#&#8203;4808]) - sync: Add `has_changed` method to `watch::Ref` ([#&#8203;4758]) ##### Changed - time: remove `src/time/driver/wheel/stack.rs` ([#&#8203;4766]) - rt: clean up arguments passed to basic scheduler ([#&#8203;4767]) - net: be more specific about winapi features ([#&#8203;4764]) - tokio: use const initialized thread locals where possible ([#&#8203;4677]) - task: various small improvements to LocalKey ([#&#8203;4795]) ##### Fixed ##### Documented - fs: warn about performance pitfall ([#&#8203;4762]) - chore: fix spelling ([#&#8203;4769]) - sync: document spurious failures in oneshot ([#&#8203;4777]) - sync: add warning for watch in non-Send futures ([#&#8203;4741]) - chore: fix typo ([#&#8203;4798]) ##### Unstable - joinset: rename `join_one` to `join_next` ([#&#8203;4755]) - rt: unhandled panic config for current thread rt ([#&#8203;4770]) [#&#8203;4677]: https://github.com/tokio-rs/tokio/pull/4677 [#&#8203;4741]: https://github.com/tokio-rs/tokio/pull/4741 [#&#8203;4755]: https://github.com/tokio-rs/tokio/pull/4755 [#&#8203;4758]: https://github.com/tokio-rs/tokio/pull/4758 [#&#8203;4762]: https://github.com/tokio-rs/tokio/pull/4762 [#&#8203;4764]: https://github.com/tokio-rs/tokio/pull/4764 [#&#8203;4766]: https://github.com/tokio-rs/tokio/pull/4766 [#&#8203;4767]: https://github.com/tokio-rs/tokio/pull/4767 [#&#8203;4769]: https://github.com/tokio-rs/tokio/pull/4769 [#&#8203;4770]: https://github.com/tokio-rs/tokio/pull/4770 [#&#8203;4772]: https://github.com/tokio-rs/tokio/pull/4772 [#&#8203;4777]: https://github.com/tokio-rs/tokio/pull/4777 [#&#8203;4791]: https://github.com/tokio-rs/tokio/pull/4791 [#&#8203;4793]: https://github.com/tokio-rs/tokio/pull/4793 [#&#8203;4795]: https://github.com/tokio-rs/tokio/pull/4795 [#&#8203;4798]: https://github.com/tokio-rs/tokio/pull/4798 [#&#8203;4806]: https://github.com/tokio-rs/tokio/pull/4806 [#&#8203;4808]: https://github.com/tokio-rs/tokio/pull/4808 ### [`v1.19.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.19.2): Tokio v1.19.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.19.1...tokio-1.19.2) ##### 1.19.2 (June 6, 2022) This release fixes another bug in `Notified::enable`. ([#&#8203;4751]) [#&#8203;4751]: https://github.com/tokio-rs/tokio/pull/4751 ### [`v1.19.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.19.1): Tokio v1.19.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.19.0...tokio-1.19.1) ##### 1.19.1 (June 5, 2022) This release fixes a bug in `Notified::enable`. ([#&#8203;4747]) [#&#8203;4747]: https://github.com/tokio-rs/tokio/pull/4747 ### [`v1.19.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.19.0): Tokio v1.19.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.18.6...tokio-1.19.0) ##### 1.19.0 (June 3, 2022) ##### Added - runtime: add `is_finished` method for `JoinHandle` and `AbortHandle` ([#&#8203;4709]) - runtime: make global queue and event polling intervals configurable ([#&#8203;4671]) - sync: add `Notified::enable` ([#&#8203;4705]) - sync: add `watch::Sender::send_if_modified` ([#&#8203;4591]) - sync: add resubscribe method to broadcast::Receiver ([#&#8203;4607]) - net: add `take_error` to `TcpSocket` and `TcpStream` ([#&#8203;4739]) ##### Changed - io: refactor out usage of Weak in the io handle ([#&#8203;4656]) ##### Fixed - macros: avoid starvation in `join!` and `try_join!` ([#&#8203;4624]) ##### Documented - runtime: clarify semantics of tasks outliving `block_on` ([#&#8203;4729]) - time: fix example for `MissedTickBehavior::Burst` ([#&#8203;4713]) ##### Unstable - metrics: correctly update atomics in `IoDriverMetrics` ([#&#8203;4725]) - metrics: fix compilation with unstable, process, and rt, but without net ([#&#8203;4682]) - task: add `#[track_caller]` to `JoinSet`/`JoinMap` ([#&#8203;4697]) - task: add `Builder::{spawn_on, spawn_local_on, spawn_blocking_on}` ([#&#8203;4683]) - task: add `consume_budget` for cooperative scheduling ([#&#8203;4498]) - task: add `join_set::Builder` for configuring `JoinSet` tasks ([#&#8203;4687]) - task: update return value of `JoinSet::join_one` ([#&#8203;4726]) [#&#8203;4498]: https://github.com/tokio-rs/tokio/pull/4498 [#&#8203;4591]: https://github.com/tokio-rs/tokio/pull/4591 [#&#8203;4607]: https://github.com/tokio-rs/tokio/pull/4607 [#&#8203;4624]: https://github.com/tokio-rs/tokio/pull/4624 [#&#8203;4656]: https://github.com/tokio-rs/tokio/pull/4656 [#&#8203;4671]: https://github.com/tokio-rs/tokio/pull/4671 [#&#8203;4682]: https://github.com/tokio-rs/tokio/pull/4682 [#&#8203;4683]: https://github.com/tokio-rs/tokio/pull/4683 [#&#8203;4687]: https://github.com/tokio-rs/tokio/pull/4687 [#&#8203;4697]: https://github.com/tokio-rs/tokio/pull/4697 [#&#8203;4705]: https://github.com/tokio-rs/tokio/pull/4705 [#&#8203;4709]: https://github.com/tokio-rs/tokio/pull/4709 [#&#8203;4713]: https://github.com/tokio-rs/tokio/pull/4713 [#&#8203;4725]: https://github.com/tokio-rs/tokio/pull/4725 [#&#8203;4726]: https://github.com/tokio-rs/tokio/pull/4726 [#&#8203;4729]: https://github.com/tokio-rs/tokio/pull/4729 [#&#8203;4739]: https://github.com/tokio-rs/tokio/pull/4739 ### [`v1.18.6`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.18.6): Tokio v1.18.6 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.18.5...tokio-1.18.6) ##### 1.18.6 (May 28, 2023) ##### Fixed - deps: disable default features for mio ([#&#8203;5728]) [#&#8203;5728]: https://github.com/tokio-rs/tokio/pull/5728 ### [`v1.18.5`](https://github.com/tokio-rs/tokio/compare/tokio-1.18.4...tokio-1.18.5) [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.18.4...tokio-1.18.5) ### [`v1.18.4`](https://github.com/tokio-rs/tokio/compare/tokio-1.18.3...tokio-1.18.4) [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.18.3...tokio-1.18.4) ### [`v1.18.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.18.3): Tokio v1.18.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.18.2...tokio-1.18.3) ##### 1.18.3 (September 27, 2022) This release removes the dependency on the `once_cell` crate to restore the MSRV of the 1.18.x LTS release. ([#&#8203;5048]) [#&#8203;5048]: https://github.com/tokio-rs/tokio/pull/5048 ### [`v1.18.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.18.2): Tokio v1.18.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.18.1...tokio-1.18.2) ##### 1.18.2 (May 5, 2022) Add missing features for the `winapi` dependency. ([#&#8203;4663]) [#&#8203;4663]: https://github.com/tokio-rs/tokio/pull/4663 ### [`v1.18.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.18.1): Tokio v1.18.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.18.0...tokio-1.18.1) ##### 1.18.1 (May 2, 2022) The 1.18.0 release broke the build for targets without 64-bit atomics when building with `tokio_unstable`. This release fixes that. ([#&#8203;4649]) [#&#8203;4649]: https://github.com/tokio-rs/tokio/pull/4649 ### [`v1.18.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.18.0): Tokio v1.18.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.17.0...tokio-1.18.0) ##### 1.18.0 (April 27, 2022) This release adds a number of new APIs in `tokio::net`, `tokio::signal`, and `tokio::sync`. In addition, it adds new unstable APIs to `tokio::task` (`Id`s for uniquely identifying a task, and `AbortHandle` for remotely cancelling a task), as well as a number of bugfixes. ##### Fixed - blocking: add missing `#[track_caller]` for `spawn_blocking` ([#&#8203;4616](https://github.com/tokio-rs/tokio/issues/4616)) - macros: fix `select` macro to process 64 branches ([#&#8203;4519](https://github.com/tokio-rs/tokio/issues/4519)) - net: fix `try_io` methods not calling Mio's `try_io` internally ([#&#8203;4582](https://github.com/tokio-rs/tokio/issues/4582)) - runtime: recover when OS fails to spawn a new thread ([#&#8203;4485](https://github.com/tokio-rs/tokio/issues/4485)) ##### Added - net: add `UdpSocket::peer_addr` ([#&#8203;4611](https://github.com/tokio-rs/tokio/issues/4611)) - net: add `try_read_buf` method for named pipes ([#&#8203;4626](https://github.com/tokio-rs/tokio/issues/4626)) - signal: add `SignalKind` `Hash`/`Eq` impls and `c_int` conversion ([#&#8203;4540](https://github.com/tokio-rs/tokio/issues/4540)) - signal: add support for signals up to `SIGRTMAX` ([#&#8203;4555](https://github.com/tokio-rs/tokio/issues/4555)) - sync: add `watch::Sender::send_modify` method ([#&#8203;4310](https://github.com/tokio-rs/tokio/issues/4310)) - sync: add `broadcast::Receiver::len` method ([#&#8203;4542](https://github.com/tokio-rs/tokio/issues/4542)) - sync: add `watch::Receiver::same_channel` method ([#&#8203;4581](https://github.com/tokio-rs/tokio/issues/4581)) - sync: implement `Clone` for `RecvError` types ([#&#8203;4560](https://github.com/tokio-rs/tokio/issues/4560)) ##### Changed - update `mio` to 0.8.1 ([#&#8203;4582](https://github.com/tokio-rs/tokio/issues/4582)) - macros: rename `tokio::select!`'s internal `util` module ([#&#8203;4543](https://github.com/tokio-rs/tokio/issues/4543)) - runtime: use `Vec::with_capacity` when building runtime ([#&#8203;4553](https://github.com/tokio-rs/tokio/issues/4553)) ##### Documented - improve docs for `tokio_unstable` ([#&#8203;4524](https://github.com/tokio-rs/tokio/issues/4524)) - runtime: include more documentation for thread\_pool/worker ([#&#8203;4511](https://github.com/tokio-rs/tokio/issues/4511)) - runtime: update `Handle::current`'s docs to mention `EnterGuard` ([#&#8203;4567](https://github.com/tokio-rs/tokio/issues/4567)) - time: clarify platform specific timer resolution ([#&#8203;4474](https://github.com/tokio-rs/tokio/issues/4474)) - signal: document that `Signal::recv` is cancel-safe ([#&#8203;4634](https://github.com/tokio-rs/tokio/issues/4634)) - sync: `UnboundedReceiver` close docs ([#&#8203;4548](https://github.com/tokio-rs/tokio/issues/4548)) ##### Unstable The following changes only apply when building with `--cfg tokio_unstable`: - task: add `task::Id` type ([#&#8203;4630](https://github.com/tokio-rs/tokio/issues/4630)) - task: add `AbortHandle` type for cancelling tasks in a `JoinSet` ([#&#8203;4530](https://github.com/tokio-rs/tokio/issues/4530)], \[[#&#8203;4640](https://github.com/tokio-rs/tokio/issues/4640)) - task: fix missing `doc(cfg(...))` attributes for `JoinSet` ([#&#8203;4531](https://github.com/tokio-rs/tokio/issues/4531)) - task: fix broken link in `AbortHandle` RustDoc ([#&#8203;4545](https://github.com/tokio-rs/tokio/issues/4545)) - metrics: add initial IO driver metrics ([#&#8203;4507](https://github.com/tokio-rs/tokio/issues/4507)) ### [`v1.17.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.17.0): Tokio v1.17.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.16.1...tokio-1.17.0) ##### 1.17.0 (February 15, 2022) This release updates the minimum supported Rust version (MSRV) to 1.49, the `mio` dependency to v0.8, and the (optional) `parking_lot` dependency to v0.12. Additionally, it contains several bug fixes, as well as internal refactoring and performance improvements. ##### Fixed - time: prevent panicking in `sleep` with large durations ([#&#8203;4495]) - time: eliminate potential panics in `Instant` arithmetic on platforms where `Instant::now` is not monotonic ([#&#8203;4461]) - io: fix `DuplexStream` not participating in cooperative yielding ([#&#8203;4478]) - rt: fix potential double panic when dropping a `JoinHandle` ([#&#8203;4430]) ##### Changed - update minimum supported Rust version to 1.49 ([#&#8203;4457]) - update `parking_lot` dependency to v0.12.0 ([#&#8203;4459]) - update `mio` dependency to v0.8 ([#&#8203;4449]) - rt: remove an unnecessary lock in the blocking pool ([#&#8203;4436]) - rt: remove an unnecessary enum in the basic scheduler ([#&#8203;4462]) - time: use bit manipulation instead of modulo to improve performance ([#&#8203;4480]) - net: use `std::future::Ready` instead of our own `Ready` future ([#&#8203;4271]) - replace deprecated `atomic::spin_loop_hint` with `hint::spin_loop` ([#&#8203;4491]) - fix miri failures in intrusive linked lists ([#&#8203;4397]) ##### Documented - io: add an example for `tokio::process::ChildStdin` ([#&#8203;4479]) ##### Unstable The following changes only apply when building with `--cfg tokio_unstable`: - task: fix missing location information in `tracing` spans generated by `spawn_local` ([#&#8203;4483]) - task: add `JoinSet` for managing sets of tasks ([#&#8203;4335]) - metrics: fix compilation error on MIPS ([#&#8203;4475]) - metrics: fix compilation error on arm32v7 ([#&#8203;4453]) [#&#8203;4495]: https://github.com/tokio-rs/tokio/pull/4495 [#&#8203;4461]: https://github.com/tokio-rs/tokio/pull/4461 [#&#8203;4478]: https://github.com/tokio-rs/tokio/pull/4478 [#&#8203;4430]: https://github.com/tokio-rs/tokio/pull/4430 [#&#8203;4457]: https://github.com/tokio-rs/tokio/pull/4457 [#&#8203;4459]: https://github.com/tokio-rs/tokio/pull/4459 [#&#8203;4449]: https://github.com/tokio-rs/tokio/pull/4449 [#&#8203;4462]: https://github.com/tokio-rs/tokio/pull/4462 [#&#8203;4436]: https://github.com/tokio-rs/tokio/pull/4436 [#&#8203;4480]: https://github.com/tokio-rs/tokio/pull/4480 [#&#8203;4271]: https://github.com/tokio-rs/tokio/pull/4271 [#&#8203;4491]: https://github.com/tokio-rs/tokio/pull/4491 [#&#8203;4397]: https://github.com/tokio-rs/tokio/pull/4397 [#&#8203;4479]: https://github.com/tokio-rs/tokio/pull/4479 [#&#8203;4483]: https://github.com/tokio-rs/tokio/pull/4483 [#&#8203;4335]: https://github.com/tokio-rs/tokio/pull/4335 [#&#8203;4475]: https://github.com/tokio-rs/tokio/pull/4475 [#&#8203;4453]: https://github.com/tokio-rs/tokio/pull/4453 ### [`v1.16.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.16.1): Tokio v1.16.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.16.0...tokio-1.16.1) ##### 1.16.1 (January 28, 2022) This release fixes a bug in [#&#8203;4428] with the change [#&#8203;4437]. [#&#8203;4428]: https://github.com/tokio-rs/tokio/pull/4428 [#&#8203;4437]: https://github.com/tokio-rs/tokio/pull/4437 ### [`v1.16.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.16.0): Tokio v1.16.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.15.0...tokio-1.16.0) Fixes a soundness bug in `io::Take` ([#&#8203;4428]). The unsoundness is exposed when leaking memory in the given `AsyncRead` implementation and then overwriting the supplied buffer: ```rust impl AsyncRead for Buggy { fn poll_read( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut ReadBuf<'_> ) -> Poll<Result<()>> { let new_buf = vec![0; 5].leak(); *buf = ReadBuf::new(new_buf); buf.put_slice(b"hello"); Poll::Ready(Ok(())) } } ``` Also, this release includes improvements to the multi-threaded scheduler that can increase throughput by up to 20% in some cases ([#&#8203;4383]). ##### Fixed - io: **soundness** don't expose uninitialized memory when using `io::Take` in edge case ([#&#8203;4428]) - fs: ensure `File::write` results in a `write` syscall when the runtime shuts down ([#&#8203;4316]) - process: drop pipe after child exits in `wait_with_output` ([#&#8203;4315]) - rt: improve error message when spawning a thread fails ([#&#8203;4398]) - rt: reduce false-positive thread wakups in the multi-threaded scheduler ([#&#8203;4383]) - sync: don't inherit `Send` from `parking_lot::*Guard` ([#&#8203;4359]) ##### Added - net: `TcpSocket::linger()` and `set_linger()` ([#&#8203;4324]) - net: impl `UnwindSafe` for socket types ([#&#8203;4384]) - rt: impl `UnwindSafe` for `JoinHandle` ([#&#8203;4418]) - sync: `watch::Receiver::has_changed()` ([#&#8203;4342]) - sync: `oneshot::Receiver::blocking_recv()` ([#&#8203;4334]) - sync: `RwLock` blocking operations ([#&#8203;4425]) ##### Unstable The following changes only apply when building with `--cfg tokio_unstable` - rt: **breaking change** overhaul runtime metrics API ([#&#8203;4373]) [#&#8203;4428]: https://github.com/tokio-rs/tokio/pull/4428 [#&#8203;4316]: https://github.com/tokio-rs/tokio/pull/4316 [#&#8203;4315]: https://github.com/tokio-rs/tokio/pull/4315 [#&#8203;4398]: https://github.com/tokio-rs/tokio/pull/4398 [#&#8203;4383]: https://github.com/tokio-rs/tokio/pull/4383 [#&#8203;4359]: https://github.com/tokio-rs/tokio/pull/4359 [#&#8203;4324]: https://github.com/tokio-rs/tokio/pull/4324 [#&#8203;4384]: https://github.com/tokio-rs/tokio/pull/4384 [#&#8203;4418]: https://github.com/tokio-rs/tokio/pull/4418 [#&#8203;4342]: https://github.com/tokio-rs/tokio/pull/4342 [#&#8203;4334]: https://github.com/tokio-rs/tokio/pull/4334 [#&#8203;4425]: https://github.com/tokio-rs/tokio/pull/4425 [#&#8203;4373]: https://github.com/tokio-rs/tokio/pull/4373 ### [`v1.15.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.15.0): Tokio v1.15.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.14.1...tokio-1.15.0) ##### Fixed - io: add cooperative yielding support to `io::empty()` ([#&#8203;4300]) - time: make timeout robust against budget-depleting tasks ([#&#8203;4314]) ##### Changed - update minimum supported Rust version to 1.46. ##### Added - time: add `Interval::reset()` ([#&#8203;4248]) - io: add explicit lifetimes to `AsyncFdReadyGuard` ([#&#8203;4267]) - process: add `Command::as_std()` ([#&#8203;4295]) ##### Added (unstable) - tracing: instrument `tokio::sync` types ([#&#8203;4302]) [#&#8203;4302]: https://github.com/tokio-rs/tokio/pull/4302 [#&#8203;4300]: https://github.com/tokio-rs/tokio/pull/4300 [#&#8203;4295]: https://github.com/tokio-rs/tokio/pull/4295 [#&#8203;4267]: https://github.com/tokio-rs/tokio/pull/4267 [#&#8203;4248]: https://github.com/tokio-rs/tokio/pull/4248 [#&#8203;4314]: https://github.com/tokio-rs/tokio/pull/4314 ### [`v1.14.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.14.1): Tokio v1.14.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.14.0...tokio-1.14.1) This release backports a bug fix from 1.16.1 Fixes a soundness bug in `io::Take` ([#&#8203;4428]). The unsoundness is exposed when leaking memory in the given `AsyncRead` implementation and then overwriting the supplied buffer: ```rust impl AsyncRead for Buggy { fn poll_read( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut ReadBuf<'_> ) -> Poll<Result<()>> { let new_buf = vec![0; 5].leak(); *buf = ReadBuf::new(new_buf); buf.put_slice(b"hello"); Poll::Ready(Ok(())) } } ``` ##### Fixed - io: **soundness** don't expose uninitialized memory when using `io::Take` in edge case ([#&#8203;4428]) [#&#8203;4428]: https://github.com/tokio-rs/tokio/pull/4428 ### [`v1.14.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.14.0): Tokio v1.14.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.13.1...tokio-1.14.0) ##### 1.14.0 (November 15, 2021) ##### Fixed - macros: fix compiler errors when using `mut` patterns in `select!` ([#&#8203;4211]) - sync: fix a data race between `oneshot::Sender::send` and awaiting a `oneshot::Receiver` when the oneshot has been closed ([#&#8203;4226]) - sync: make `AtomicWaker` panic safe ([#&#8203;3689]) - runtime: fix basic scheduler dropping tasks outside a runtime context ([#&#8203;4213]) ##### Added - stats: add `RuntimeStats::busy_duration_total` ([#&#8203;4179], [#&#8203;4223]) ##### Changed - io: updated `copy` buffer size to match `std::io::copy` ([#&#8203;4209]) ##### Documented - io: rename buffer to file in doc-test ([#&#8203;4230]) - sync: fix Notify example ([#&#8203;4212]) [#&#8203;4211]: https://github.com/tokio-rs/tokio/pull/4211 [#&#8203;4226]: https://github.com/tokio-rs/tokio/pull/4226 [#&#8203;3689]: https://github.com/tokio-rs/tokio/pull/3689 [#&#8203;4213]: https://github.com/tokio-rs/tokio/pull/4213 [#&#8203;4179]: https://github.com/tokio-rs/tokio/pull/4179 [#&#8203;4223]: https://github.com/tokio-rs/tokio/pull/4223 [#&#8203;4209]: https://github.com/tokio-rs/tokio/pull/4209 [#&#8203;4230]: https://github.com/tokio-rs/tokio/pull/4230 [#&#8203;4212]: https://github.com/tokio-rs/tokio/pull/4212 ### [`v1.13.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.13.1): Tokio v1.13.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.13.0...tokio-1.13.1) ##### 1.13.1 (November 15, 2021) This release fixes a data race when sending and receiving on a closed `oneshot` channel ([RUSTSEC-2021-0124]). ##### Fixed - sync: fix a data race between `oneshot::Sender::send` and awaiting a `oneshot::Receiver` when the oneshot has been closed ([#&#8203;4226](https://github.com/tokio-rs/tokio/issues/4226)) [RUSTSEC-2021-0124]: https://rustsec.org/advisories/RUSTSEC-2021-0124.html ### [`v1.13.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.13.0): Tokio v1.13.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.12.0...tokio-1.13.0) ##### 1.13.0 (October 29, 2021) ##### Fixed - sync: fix `Notify` to clone the waker before locking its waiter list ([#&#8203;4129]) - tokio: add riscv32 to non atomic64 architectures ([#&#8203;4185]) ##### Added - net: add `poll_{recv,send}_ready` methods to `udp` and `uds_datagram` ([#&#8203;4131]) - net: add `try_*`, `readable`, `writable`, `ready`, and `peer_addr` methods to split halves ([#&#8203;4120]) - sync: add `blocking_lock` to `Mutex` ([#&#8203;4130]) - sync: add `watch::Sender::send_replace` ([#&#8203;3962], [#&#8203;4195]) - sync: expand `Debug` for `Mutex<T>` impl to unsized `T` ([#&#8203;4134]) - tracing: instrument time::Sleep ([#&#8203;4072]) - tracing: use structured location fields for spawned tasks ([#&#8203;4128]) ##### Changed - io: add assert in `copy_bidirectional` that `poll_write` is sensible ([#&#8203;4125]) - macros: use qualified syntax when polling in `select!` ([#&#8203;4192]) - runtime: handle `block_on` wakeups better ([#&#8203;4157]) - task: allocate callback on heap immediately in debug mode ([#&#8203;4203]) - tokio: assert platform-minimum requirements at build time ([#&#8203;3797]) ##### Documented - docs: conversion of doc comments to indicative mood ([#&#8203;4174]) - docs: add returning on the first error example for `try_join!` ([#&#8203;4133]) - docs: fixing broken links in `tokio/src/lib.rs` ([#&#8203;4132]) - signal: add example with background listener ([#&#8203;4171]) - sync: add more oneshot examples ([#&#8203;4153]) - time: document `Interval::tick` cancel safety ([#&#8203;4152]) [#&#8203;3797]: https://github.com/tokio-rs/tokio/pull/3797 [#&#8203;3962]: https://github.com/tokio-rs/tokio/pull/3962 [#&#8203;4072]: https://github.com/tokio-rs/tokio/pull/4072 [#&#8203;4120]: https://github.com/tokio-rs/tokio/pull/4120 [#&#8203;4125]: https://github.com/tokio-rs/tokio/pull/4125 [#&#8203;4128]: https://github.com/tokio-rs/tokio/pull/4128 [#&#8203;4129]: https://github.com/tokio-rs/tokio/pull/4129 [#&#8203;4130]: https://github.com/tokio-rs/tokio/pull/4130 [#&#8203;4131]: https://github.com/tokio-rs/tokio/pull/4131 [#&#8203;4132]: https://github.com/tokio-rs/tokio/pull/4132 [#&#8203;4133]: https://github.com/tokio-rs/tokio/pull/4133 [#&#8203;4134]: https://github.com/tokio-rs/tokio/pull/4134 [#&#8203;4152]: https://github.com/tokio-rs/tokio/pull/4152 [#&#8203;4153]: https://github.com/tokio-rs/tokio/pull/4153 [#&#8203;4157]: https://github.com/tokio-rs/tokio/pull/4157 [#&#8203;4171]: https://github.com/tokio-rs/tokio/pull/4171 [#&#8203;4174]: https://github.com/tokio-rs/tokio/pull/4174 [#&#8203;4185]: https://github.com/tokio-rs/tokio/pull/4185 [#&#8203;4192]: https://github.com/tokio-rs/tokio/pull/4192 [#&#8203;4195]: https://github.com/tokio-rs/tokio/pull/4195 [#&#8203;4203]: https://github.com/tokio-rs/tokio/pull/4203 ### [`v1.12.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.12.0): Tokio v1.12.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.11.0...tokio-1.12.0) ##### 1.12.0 (September 21, 2021) ##### Fixed - mpsc: ensure `try_reserve` error is consistent with `try_send` ([#&#8203;4119]) - mpsc: use `spin_loop_hint` instead of `yield_now` ([#&#8203;4115]) - sync: make `SendError` field public ([#&#8203;4097]) ##### Added - io: add POSIX AIO on FreeBSD ([#&#8203;4054]) - io: add convenience method `AsyncSeekExt::rewind` ([#&#8203;4107]) - runtime: add tracing span for `block_on` futures ([#&#8203;4094]) - runtime: callback when a worker parks and unparks ([#&#8203;4070]) - sync: implement `try_recv` for mpsc channels ([#&#8203;4113]) ##### Changed - macros: run runtime inside `LocalSet` when using macro ([#&#8203;4027]) ##### Documented - docs: clarify CPU-bound tasks on Tokio ([#&#8203;4105]) - mpsc: document spurious failures on `poll_recv` ([#&#8203;4117]) - mpsc: document that `PollSender` impls `Sink` ([#&#8203;4110]) - task: document non-guarantees of `yield_now` ([#&#8203;4091]) - time: document paused time details better ([#&#8203;4061], [#&#8203;4103]) [#&#8203;4027]: https://github.com/tokio-rs/tokio/pull/4027 [#&#8203;4054]: https://github.com/tokio-rs/tokio/pull/4054 [#&#8203;4061]: https://github.com/tokio-rs/tokio/pull/4061 [#&#8203;4070]: https://github.com/tokio-rs/tokio/pull/4070 [#&#8203;4091]: https://github.com/tokio-rs/tokio/pull/4091 [#&#8203;4094]: https://github.com/tokio-rs/tokio/pull/4094 [#&#8203;4097]: https://github.com/tokio-rs/tokio/pull/4097 [#&#8203;4103]: https://github.com/tokio-rs/tokio/pull/4103 [#&#8203;4105]: https://github.com/tokio-rs/tokio/pull/4105 [#&#8203;4107]: https://github.com/tokio-rs/tokio/pull/4107 [#&#8203;4110]: https://github.com/tokio-rs/tokio/pull/4110 [#&#8203;4113]: https://github.com/tokio-rs/tokio/pull/4113 [#&#8203;4115]: https://github.com/tokio-rs/tokio/pull/4115 [#&#8203;4117]: https://github.com/tokio-rs/tokio/pull/4117 [#&#8203;4119]: https://github.com/tokio-rs/tokio/pull/4119 ### [`v1.11.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.11.0): Tokio v1.11.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.10.1...tokio-1.11.0) ##### 1.11.0 (August 31, 2021) ##### Fixed - time: don't panic when Instant is not monotonic ([#&#8203;4044]) - io: fix panic in `fill_buf` by not calling `poll_fill_buf` twice ([#&#8203;4084]) ##### Added - watch: add `watch::Sender::subscribe` ([#&#8203;3800]) - process: add `from_std` to `ChildStd*` ([#&#8203;4045]) - stats: initial work on runtime stats ([#&#8203;4043]) ##### Changed - tracing: change span naming to new console convention ([#&#8203;4042]) - io: speed-up waking by using uninitialized array ([#&#8203;4055], [#&#8203;4071], [#&#8203;4075]) ##### Documented - time: make Sleep examples easier to find ([#&#8203;4040]) [#&#8203;3800]: https://github.com/tokio-rs/tokio/pull/3800 [#&#8203;4040]: https://github.com/tokio-rs/tokio/pull/4040 [#&#8203;4042]: https://github.com/tokio-rs/tokio/pull/4042 [#&#8203;4043]: https://github.com/tokio-rs/tokio/pull/4043 [#&#8203;4044]: https://github.com/tokio-rs/tokio/pull/4044 [#&#8203;4045]: https://github.com/tokio-rs/tokio/pull/4045 [#&#8203;4055]: https://github.com/tokio-rs/tokio/pull/4055 [#&#8203;4071]: https://github.com/tokio-rs/tokio/pull/4071 [#&#8203;4075]: https://github.com/tokio-rs/tokio/pull/4075 [#&#8203;4084]: https://github.com/tokio-rs/tokio/pull/4084 ### [`v1.10.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.10.1): Tokio v1.10.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.10.0...tokio-1.10.1) ##### 1.10.1 (August 24, 2021) ##### Fixed - runtime: fix leak in UnownedTask ([#&#8203;4063]) [#&#8203;4063]: https://github.com/tokio-rs/tokio/pull/4063 ### [`v1.10.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.10.0): Tokio v1.10.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.9.0...tokio-1.10.0) ##### 1.10.0 (August 12, 2021) ##### Added - io: add `(read|write)_f(32|64)[_le]` methods ([#&#8203;4022]) - io: add `fill_buf` and `consume` to `AsyncBufReadExt` ([#&#8203;3991]) - process: add `Child::raw_handle()` on windows ([#&#8203;3998]) ##### Fixed - doc: fix non-doc builds with `--cfg docsrs` ([#&#8203;4020]) - io: flush eagerly in `io::copy` ([#&#8203;4001]) - runtime: a debug assert was sometimes triggered during shutdown ([#&#8203;4005]) - sync: use `spin_loop_hint` instead of `yield_now` in mpsc ([#&#8203;4037]) - tokio: the test-util feature depends on rt, sync, and time ([#&#8203;4036]) ##### Changes - runtime: reorganize parts of the runtime ([#&#8203;3979], [#&#8203;4005]) - signal: make windows docs for signal module show up on unix builds ([#&#8203;3770]) - task: quickly send task to heap on debug mode ([#&#8203;4009]) ##### Documented - io: document cancellation safety of `AsyncBufReadExt` ([#&#8203;3997]) - sync: document when `watch::send` fails ([#&#8203;4021]) [#&#8203;3770]: https://github.com/tokio-rs/tokio/pull/3770 [#&#8203;3979]: https://github.com/tokio-rs/tokio/pull/3979 [#&#8203;3991]: https://github.com/tokio-rs/tokio/pull/3991 [#&#8203;3997]: https://github.com/tokio-rs/tokio/pull/3997 [#&#8203;3998]: https://github.com/tokio-rs/tokio/pull/3998 [#&#8203;4001]: https://github.com/tokio-rs/tokio/pull/4001 [#&#8203;4005]: https://github.com/tokio-rs/tokio/pull/4005 [#&#8203;4009]: https://github.com/tokio-rs/tokio/pull/4009 [#&#8203;4020]: https://github.com/tokio-rs/tokio/pull/4020 [#&#8203;4021]: https://github.com/tokio-rs/tokio/pull/4021 [#&#8203;4022]: https://github.com/tokio-rs/tokio/pull/4022 [#&#8203;4036]: https://github.com/tokio-rs/tokio/pull/4036 [#&#8203;4037]: https://github.com/tokio-rs/tokio/pull/4037 ### [`v1.9.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.9.0): Tokio v1.9.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.8.5...tokio-1.9.0) ##### 1.9.0 (July 19, 2021) ##### Added - net: allow customized I/O operations for `TcpStream` ([#&#8203;3888]) - sync: add getter for the mutex from a guard ([#&#8203;3928]) - task: expose nameable future for `TaskLocal::scope` ([#&#8203;3273]) ##### Fixed - Fix leak if output of future panics on drop ([#&#8203;3967]) - Fix leak in `LocalSet` ([#&#8203;3978]) ##### Changes - runtime: reorganize parts of the runtime ([#&#8203;3909], [#&#8203;3939], [#&#8203;3950], [#&#8203;3955], [#&#8203;3980]) - sync: clean up `OnceCell` ([#&#8203;3945]) - task: remove mutex in `JoinError` ([#&#8203;3959]) [#&#8203;3273]: https://github.com/tokio-rs/tokio/pull/3273 [#&#8203;3888]: https://github.com/tokio-rs/tokio/pull/3888 [#&#8203;3909]: https://github.com/tokio-rs/tokio/pull/3909 [#&#8203;3928]: https://github.com/tokio-rs/tokio/pull/3928 [#&#8203;3934]: https://github.com/tokio-rs/tokio/pull/3934 [#&#8203;3939]: https://github.com/tokio-rs/tokio/pull/3939 [#&#8203;3945]: https://github.com/tokio-rs/tokio/pull/3945 [#&#8203;3950]: https://github.com/tokio-rs/tokio/pull/3950 [#&#8203;3955]: https://github.com/tokio-rs/tokio/pull/3955 [#&#8203;3959]: https://github.com/tokio-rs/tokio/pull/3959 [#&#8203;3967]: https://github.com/tokio-rs/tokio/pull/3967 [#&#8203;3978]: https://github.com/tokio-rs/tokio/pull/3978 [#&#8203;3980]: https://github.com/tokio-rs/tokio/pull/3980 ### [`v1.8.5`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.8.5): Tokio v1.8.5 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.8.4...tokio-1.8.5) This release backports a bug fix from 1.16.1 Fixes a soundness bug in `io::Take` ([#&#8203;4428]). The unsoundness is exposed when leaking memory in the given `AsyncRead` implementation and then overwriting the supplied buffer: ```rust impl AsyncRead for Buggy { fn poll_read( self: Pin<&mut Self>, cx: &mut Context<'_>, buf: &mut ReadBuf<'_> ) -> Poll<Result<()>> { let new_buf = vec![0; 5].leak(); *buf = ReadBuf::new(new_buf); buf.put_slice(b"hello"); Poll::Ready(Ok(())) } } ``` ##### Fixed - io: **soundness** don't expose uninitialized memory when using `io::Take` in edge case ([#&#8203;4428]) [#&#8203;4428]: https://github.com/tokio-rs/tokio/pull/4428 ### [`v1.8.4`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.8.4): Tokio v1.8.4 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.8.3...tokio-1.8.4) ##### 1.8.4 (November 15, 2021) This release backports a bugfix for a data race when sending and receiving on a closed `oneshot` channel (\[RUSTSEC-2021-0124]) from v1.13.1. ##### Fixed - sync: fix a data race between `oneshot::Sender::send` and awaiting a `oneshot::Receiver` when the oneshot has been closed ([#&#8203;4226](https://github.com/tokio-rs/tokio/issues/4226)) ### [`v1.8.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.8.3): Tokio v1.8.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.8.2...tokio-1.8.3) ##### 1.8.3 (July 22, 2021) This release backports two fixes from 1.9.0 ##### Fixed - Fix leak if output of future panics on drop ([#&#8203;3967]) - Fix leak in `LocalSet` ([#&#8203;3978]) [#&#8203;3967]: https://github.com/tokio-rs/tokio/pull/3967 [#&#8203;3978]: https://github.com/tokio-rs/tokio/pull/3978 ### [`v1.8.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.8.2): Tokio 1.8.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.8.1...tokio-1.8.2) Fixes a missed edge case from 1.8.1. ##### Fixed - runtime: drop canceled future on next poll ([#&#8203;3965](https://github.com/tokio-rs/tokio/issues/3965)) ### [`v1.8.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.8.1): Tokio 1.8.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.8.0...tokio-1.8.1) Forward ports 1.5.1 fixes. ##### Fixed - runtime: remotely abort tasks on `JoinHandle::abort` ([#&#8203;3934]) [#&#8203;3934]: https://github.com/tokio-rs/tokio/pull/3934 ### [`v1.8.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.8.0) [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.7.3...tokio-1.8.0) ##### 1.8.0 (July 2, 2021) ##### Added - io: add `get_{ref,mut}` methods to `AsyncFdReadyGuard` and `AsyncFdReadyMutGuard` ([#&#8203;3807]) - io: efficient implementation of vectored writes for `BufWriter` ([#&#8203;3163]) - net: add ready/try methods to `NamedPipe{Client,Server}` ([#&#8203;3866], [#&#8203;3899]) - sync: add `watch::Receiver::borrow_and_update` ([#&#8203;3813]) - sync: implement `From<T>` for `OnceCell<T>` ([#&#8203;3877]) - time: allow users to specify Interval behaviour when delayed ([#&#8203;3721]) ##### Added (unstable) - rt: add `tokio::task::Builder` ([#&#8203;3881]) ##### Fixed - net: handle HUP event with `UnixStream` ([#&#8203;3898]) ##### Documented - doc: document cancellation safety ([#&#8203;3900]) - time: add wait alias to sleep ([#&#8203;3897]) - time: document auto-advancing behaviour of runtime ([#&#8203;3763]) [#&#8203;3163]: https://github.com/tokio-rs/tokio/pull/3163 [#&#8203;3721]: https://github.com/tokio-rs/tokio/pull/3721 [#&#8203;3763]: https://github.com/tokio-rs/tokio/pull/3763 [#&#8203;3807]: https://github.com/tokio-rs/tokio/pull/3807 [#&#8203;3813]: https://github.com/tokio-rs/tokio/pull/3813 [#&#8203;3866]: https://github.com/tokio-rs/tokio/pull/3866 [#&#8203;3877]: https://github.com/tokio-rs/tokio/pull/3877 [#&#8203;3881]: https://github.com/tokio-rs/tokio/pull/3881 [#&#8203;3897]: https://github.com/tokio-rs/tokio/pull/3897 [#&#8203;3898]: https://github.com/tokio-rs/tokio/pull/3898 [#&#8203;3899]: https://github.com/tokio-rs/tokio/pull/3899 [#&#8203;3900]: https://github.com/tokio-rs/tokio/pull/3900 ### [`v1.7.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.7.3): Tokio 1.7.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.7.2...tokio-1.7.3) Fixes a missed edge case from 1.7.2. ##### Fixed - runtime: drop canceled future on next poll ([#&#8203;3965](https://github.com/tokio-rs/tokio/issues/3965)) ### [`v1.7.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.7.2): Tokio v1.7.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.7.1...tokio-1.7.2) Forward ports 1.5.1 fixes. ##### Fixed - runtime: remotely abort tasks on `JoinHandle::abort` ([#&#8203;3934]) [#&#8203;3934]: https://github.com/tokio-rs/tokio/pull/3934 ### [`v1.7.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.7.1): Tokio v1.7.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.7.0...tokio-1.7.1) ##### Fixed - runtime: fix early task shutdown during runtime shutdown ([#&#8203;3870]) [#&#8203;3870]: https://github.com/tokio-rs/tokio/pull/3870 ### [`v1.7.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.7.0): Tokio v1.7.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.6.4...tokio-1.7.0) ##### 1.7.0 (June 15, 2021) ##### Added - net: add named pipes on windows ([#&#8203;3760](https://github.com/tokio-rs/tokio/issues/3760)) - net: add `TcpSocket` from `std::net::TcpStream` conversion ([#&#8203;3838](https://github.com/tokio-rs/tokio/issues/3838)) - sync: add `receiver_count` to `watch::Sender` ([#&#8203;3729](https://github.com/tokio-rs/tokio/issues/3729)) - sync: export `sync::notify::Notified` future publicly ([#&#8203;3840](https://github.com/tokio-rs/tokio/issues/3840)) - tracing: instrument task wakers ([#&#8203;3836](https://github.com/tokio-rs/tokio/issues/3836)) ##### Fixed - macros: suppress `clippy::default_numeric_fallback` lint in generated code ([#&#8203;3831](https://github.com/tokio-rs/tokio/issues/3831)) - runtime: immediately drop new tasks when runtime is shut down ([#&#8203;3752](https://github.com/tokio-rs/tokio/issues/3752)) - sync: deprecate unused `mpsc::RecvError` type ([#&#8203;3833](https://github.com/tokio-rs/tokio/issues/3833)) ##### Documented - io: clarify EOF condition for `AsyncReadExt::read_buf` ([#&#8203;3850](https://github.com/tokio-rs/tokio/issues/3850)) - io: clarify limits on return values of `AsyncWrite::poll_write` ([#&#8203;3820](https://github.com/tokio-rs/tokio/issues/3820)) - sync: add examples to Semaphore ([#&#8203;3808](https://github.com/tokio-rs/tokio/issues/3808)) ### [`v1.6.4`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.6.4): Tokio 1.6.4 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.6.3...tokio-1.6.4) Fixes a missed edge case from 1.6.3. ##### Fixed - runtime: drop canceled future on next poll ([#&#8203;3965](https://github.com/tokio-rs/tokio/issues/3965)) ### [`v1.6.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.6.3): Tokio v1.6.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.6.2...tokio-1.6.3) Forward ports 1.5.1 fixes. ##### Fixed - runtime: remotely abort tasks on `JoinHandle::abort` ([#&#8203;3934]) [#&#8203;3934]: https://github.com/tokio-rs/tokio/pull/3934 ### [`v1.6.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.6.2): Tokio v1.6.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.6.1...tokio-1.6.2) ##### Fixes - test: sub-ms `time:advance` regression introduced in 1.6 ([#&#8203;3852]) [#&#8203;3852]: https://github.com/tokio-rs/tokio/pull/3852 ### [`v1.6.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.6.1): Tokio v1.6.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.6.0...tokio-1.6.1) This release reverts [#&#8203;3518] because it doesn't work on some kernels due to a kernel bug. ([#&#8203;3803]) [#&#8203;3518]: https://github.com/tokio-rs/tokio/issues/3518 [#&#8203;3803]: https://github.com/tokio-rs/tokio/issues/3803 ### [`v1.6.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.6.0): Tokio v1.6.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.5.1...tokio-1.6.0) ##### 1.6.0 (May 14, 2021) ##### Added - fs: try doing a non-blocking read before punting to the threadpool ([#&#8203;3518](https://github.com/tokio-rs/tokio/issues/3518)) - io: add `write_all_buf` to `AsyncWriteExt` ([#&#8203;3737](https://github.com/tokio-rs/tokio/issues/3737)) - io: implement `AsyncSeek` for `BufReader`, `BufWriter`, and `BufStream` ([#&#8203;3491](https://github.com/tokio-rs/tokio/issues/3491)) - net: support non-blocking vectored I/O ([#&#8203;3761](https://github.com/tokio-rs/tokio/issues/3761)) - sync: add `mpsc::Sender::{reserve_owned, try_reserve_owned}` ([#&#8203;3704](https://github.com/tokio-rs/tokio/issues/3704)) - sync: add a `MutexGuard::map` method that returns a `MappedMutexGuard` ([#&#8203;2472](https://github.com/tokio-rs/tokio/issues/2472)) - time: add getter for Interval's period ([#&#8203;3705](https://github.com/tokio-rs/tokio/issues/3705)) ##### Fixed - io: wake pending writers on `DuplexStream` close ([#&#8203;3756](https://github.com/tokio-rs/tokio/issues/3756)) - process: avoid redundant effort to reap orphan processes ([#&#8203;3743](https://github.com/tokio-rs/tokio/issues/3743)) - signal: use `std::os::raw::c_int` instead of `libc::c_int` on public API ([#&#8203;3774](https://github.com/tokio-rs/tokio/issues/3774)) - sync: preserve permit state in `notify_waiters` ([#&#8203;3660](https://github.com/tokio-rs/tokio/issues/3660)) - task: update `JoinHandle` panic message ([#&#8203;3727](https://github.com/tokio-rs/tokio/issues/3727)) - time: prevent `time::advance` from going too far ([#&#8203;3712](https://github.com/tokio-rs/tokio/issues/3712)) ##### Documented - net: hide `net::unix::datagram` module from docs ([#&#8203;3775](https://github.com/tokio-rs/tokio/issues/3775)) - process: updated example ([#&#8203;3748](https://github.com/tokio-rs/tokio/issues/3748)) - sync: `Barrier` doc should use task, not thread ([#&#8203;3780](https://github.com/tokio-rs/tokio/issues/3780)) - task: update documentation on `block_in_place` ([#&#8203;3753](https://github.com/tokio-rs/tokio/issues/3753)) ### [`v1.5.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.5.1): Tokio v1.5.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.5.0...tokio-1.5.1) ##### Fixed - runtime: remotely abort tasks on `JoinHandle::abort` ([#&#8203;3934]) [#&#8203;3934]: https://github.com/tokio-rs/tokio/pull/3934 ### [`v1.5.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.5.0): Tokio v1.5.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.4.0...tokio-1.5.0) ##### 1.5.0 (April 12, 2021) ##### Added - io: add `AsyncSeekExt::stream_position` ([#&#8203;3650](https://github.com/tokio-rs/tokio/issues/3650)) - io: add `AsyncWriteExt::write_vectored` ([#&#8203;3678](https://github.com/tokio-rs/tokio/issues/3678)) - io: add a `copy_bidirectional` utility ([#&#8203;3572](https://github.com/tokio-rs/tokio/issues/3572)) - net: implement `IntoRawFd` for `TcpSocket` ([#&#8203;3684](https://github.com/tokio-rs/tokio/issues/3684)) - sync: add `OnceCell` ([#&#8203;3591](https://github.com/tokio-rs/tokio/issues/3591)) - sync: add `OwnedRwLockReadGuard` and `OwnedRwLockWriteGuard` ([#&#8203;3340](https://github.com/tokio-rs/tokio/issues/3340)) - sync: add `Semaphore::is_closed` ([#&#8203;3673](https://github.com/tokio-rs/tokio/issues/3673)) - sync: add `mpsc::Sender::capacity` ([#&#8203;3690](https://github.com/tokio-rs/tokio/issues/3690)) - sync: allow configuring `RwLock` max reads ([#&#8203;3644](https://github.com/tokio-rs/tokio/issues/3644)) - task: add `sync_scope` for `LocalKey` ([#&#8203;3612](https://github.com/tokio-rs/tokio/issues/3612)) ##### Fixed - chore: try to avoid `noalias` attributes on intrusive linked list ([#&#8203;3654](https://github.com/tokio-rs/tokio/issues/3654)) - rt: fix panic in `JoinHandle::abort()` when called from other threads ([#&#8203;3672](https://github.com/tokio-rs/tokio/issues/3672)) - sync: don't panic in `oneshot::try_recv` ([#&#8203;3674](https://github.com/tokio-rs/tokio/issues/3674)) - sync: fix notifications getting dropped on receiver drop ([#&#8203;3652](https://github.com/tokio-rs/tokio/issues/3652)) - sync: fix `Semaphore` permit overflow calculation ([#&#8203;3644](https://github.com/tokio-rs/tokio/issues/3644)) ##### Documented - io: clarify requirements of `AsyncFd` ([#&#8203;3635](https://github.com/tokio-rs/tokio/issues/3635)) - runtime: fix unclear docs for `{Handle,Runtime}::block_on` ([#&#8203;3628](https://github.com/tokio-rs/tokio/issues/3628)) - sync: document that `Semaphore` is fair ([#&#8203;3693](https://github.com/tokio-rs/tokio/issues/3693)) - sync: improve doc on blocking mutex ([#&#8203;3645](https://github.com/tokio-rs/tokio/issues/3645)) ### [`v1.4.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.4.0): Tokio v1.4.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.3.0...tokio-1.4.0) ##### Added - macros: introduce biased argument for `select!` ([#&#8203;3603]) - runtime: add `Handle::block_on` ([#&#8203;3569]) ##### Fixed - runtime: avoid unnecessary polling of `block_on` future ([#&#8203;3582]) - runtime: fix memory leak/growth when creating many runtimes ([#&#8203;3564]) - runtime: mark `EnterGuard` with `must_use` ([#&#8203;3609]) ##### Documented - chore: mention fix for building docs in contributing guide ([#&#8203;3618]) - doc: add link to `PollSender` ([#&#8203;3613]) - doc: alias sleep to delay ([#&#8203;3604]) - sync: improve `Mutex` FIFO explanation ([#&#8203;3615]) - timer: fix double newline in module docs ([#&#8203;3617]) [#&#8203;3564]: https://github.com/tokio-rs/tokio/pull/3564 [#&#8203;3613]: https://github.com/tokio-rs/tokio/pull/3613 [#&#8203;3618]: https://github.com/tokio-rs/tokio/pull/3618 [#&#8203;3617]: https://github.com/tokio-rs/tokio/pull/3617 [#&#8203;3582]: https://github.com/tokio-rs/tokio/pull/3582 [#&#8203;3615]: https://github.com/tokio-rs/tokio/pull/3615 [#&#8203;3603]: https://github.com/tokio-rs/tokio/pull/3603 [#&#8203;3609]: https://github.com/tokio-rs/tokio/pull/3609 [#&#8203;3604]: https://github.com/tokio-rs/tokio/pull/3604 [#&#8203;3569]: https://github.com/tokio-rs/tokio/pull/3569 ### [`v1.3.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.3.0): Tokio v1.3.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.2.0...tokio-1.3.0) ##### Added - coop: expose an `unconstrained()` opt-out ([#&#8203;3547](https://github.com/tokio-rs/tokio/issues/3547)) - net: add `into_std` for net types without it ([#&#8203;3509](https://github.com/tokio-rs/tokio/issues/3509)) - sync: add `same_channel` method to `mpsc::Sender` ([#&#8203;3532](https://github.com/tokio-rs/tokio/issues/3532)) - sync: add `{try_,}acquire_many_owned` to `Semaphore` ([#&#8203;3535](https://github.com/tokio-rs/tokio/issues/3535)) - sync: add back `RwLockWriteGuard::map` and `RwLockWriteGuard::try_map` ([#&#8203;3348](https://github.com/tokio-rs/tokio/issues/3348)) ##### Fixed - sync: allow `oneshot::Receiver::close` after successful `try_recv` ([#&#8203;3552](https://github.com/tokio-rs/tokio/issues/3552)) - time: do not panic on `timeout(Duration::MAX)` ([#&#8203;3551](https://github.com/tokio-rs/tokio/issues/3551)) ##### Documented - doc: doc aliases for pre-1.0 function names ([#&#8203;3523](https://github.com/tokio-rs/tokio/issues/3523)) - io: fix typos ([#&#8203;3541](https://github.com/tokio-rs/tokio/issues/3541)) - io: note the EOF behaviour of `read_until` ([#&#8203;3536](https://github.com/tokio-rs/tokio/issues/3536)) - io: update `AsyncRead::poll_read` doc ([#&#8203;3557](https://github.com/tokio-rs/tokio/issues/3557)) - net: update `UdpSocket` splitting doc ([#&#8203;3517](https://github.com/tokio-rs/tokio/issues/3517)) - runtime: add link to `LocalSet` on `new_current_thread` ([#&#8203;3508](https://github.com/tokio-rs/tokio/issues/3508)) - runtime: update documentation of thread limits ([#&#8203;3527](https://github.com/tokio-rs/tokio/issues/3527)) - sync: do not recommend `join_all` for `Barrier` ([#&#8203;3514](https://github.com/tokio-rs/tokio/issues/3514)) - sync: documentation for `oneshot` ([#&#8203;3592](https://github.com/tokio-rs/tokio/issues/3592)) - sync: rename `notify` to `notify_one` ([#&#8203;3526](https://github.com/tokio-rs/tokio/issues/3526)) - time: fix typo in `Sleep` doc ([#&#8203;3515](https://github.com/tokio-rs/tokio/issues/3515)) - time: sync `interval.rs` and `time/mod.rs` docs ([#&#8203;3533](https://github.com/tokio-rs/tokio/issues/3533)) ### [`v1.2.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.2.0): Tokio v1.2.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.1.1...tokio-1.2.0) ##### Added - signal: make `Signal::poll_recv` method public ([#&#8203;3383](https://github.com/tokio-rs/tokio/issues/3383)) ##### Fixed - time: make `test-util` paused time fully deterministic ([#&#8203;3492](https://github.com/tokio-rs/tokio/issues/3492)) ##### Documented - sync: link to new broadcast and watch wrappers ([#&#8203;3504](https://github.com/tokio-rs/tokio/issues/3504)) ### [`v1.1.1`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.1.1): Tokio v1.1.1 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.1.0...tokio-1.1.1) Forward ports 1.0.3 fix. ##### Fixed - io: memory leak during shutdown ([#&#8203;3477](https://github.com/tokio-rs/tokio/issues/3477)). ### [`v1.1.0`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.1.0): Tokio v1.1.0 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.0.3...tokio-1.1.0) ##### Added - net: add `try_read_buf` and `try_recv_buf` ([#&#8203;3351](https://github.com/tokio-rs/tokio/issues/3351)) - mpsc: Add `Sender::try_reserve` function ([#&#8203;3418](https://github.com/tokio-rs/tokio/issues/3418)) - sync: add `RwLock` `try_read` and `try_write` methods ([#&#8203;3400](https://github.com/tokio-rs/tokio/issues/3400)) - io: add `ReadBuf::inner_mut` ([#&#8203;3443](https://github.com/tokio-rs/tokio/issues/3443)) ##### Changed - macros: improve `select!` error message ([#&#8203;3352](https://github.com/tokio-rs/tokio/issues/3352)) - io: keep track of initialized bytes in `read_to_end` ([#&#8203;3426](https://github.com/tokio-rs/tokio/issues/3426)) - runtime: consolidate errors for context missing ([#&#8203;3441](https://github.com/tokio-rs/tokio/issues/3441)) ##### Fixed - task: wake `LocalSet` on `spawn_local` ([#&#8203;3369](https://github.com/tokio-rs/tokio/issues/3369)) - sync: fix panic in broadcast::Receiver drop ([#&#8203;3434](https://github.com/tokio-rs/tokio/issues/3434)) ##### Documented - stream: link to new `Stream` wrappers in `tokio-stream` ([#&#8203;3343](https://github.com/tokio-rs/tokio/issues/3343)) - docs: mention that `test-util` feature is not enabled with full ([#&#8203;3397](https://github.com/tokio-rs/tokio/issues/3397)) - process: add documentation to process::Child fields ([#&#8203;3437](https://github.com/tokio-rs/tokio/issues/3437)) - io: clarify `AsyncFd` docs about changes of the inner fd ([#&#8203;3430](https://github.com/tokio-rs/tokio/issues/3430)) - net: update datagram docs on splitting ([#&#8203;3448](https://github.com/tokio-rs/tokio/issues/3448)) - time: document that `Sleep` is not `Unpin` ([#&#8203;3457](https://github.com/tokio-rs/tokio/issues/3457)) - sync: add link to `PollSemaphore` ([#&#8203;3456](https://github.com/tokio-rs/tokio/issues/3456)) - task: add `LocalSet` example ([#&#8203;3438](https://github.com/tokio-rs/tokio/issues/3438)) - sync: improve bounded `mpsc` documentation ([#&#8203;3458](https://github.com/tokio-rs/tokio/issues/3458)) ### [`v1.0.3`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.0.3): Tokio v1.0.3 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.0.2...tokio-1.0.3) ##### Fixed - io: memory leak during shutdown ([#&#8203;3477](https://github.com/tokio-rs/tokio/issues/3477)). ### [`v1.0.2`](https://github.com/tokio-rs/tokio/releases/tag/tokio-1.0.2): Tokio v1.0.2 [Compare Source](https://github.com/tokio-rs/tokio/compare/tokio-1.0.1...tokio-1.0.2) ##### Fixed - io: soundness in `read_to_end` ([#&#8203;3428](https://github.com/tokio-rs/tokio/issues/3428)). </details> --- ### Configuration 📅 **Schedule**: (UTC) - Branch creation - At any time (no schedule defined) - Automerge - At any time (no schedule defined) 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about these updates again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yMzEuMSIsInVwZGF0ZWRJblZlciI6IjQzLjI1My4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJkZXBlbmRlbmNpZXMiXX0=-->
renovate added 1 commit 2026-06-28 23:25:04 -07:00
chore(deps): update rust crate tokio to 1.38.2 [security]
Some checks failed
Validate / Check-1 (push) Failing after 1s
Validate / Test Suite-1 (push) Failing after 1s
Validate / Lints (push) Failing after 1s
Validate / Check (push) Has been cancelled
Validate / Check-2 (push) Has been cancelled
Validate / Test Suite (push) Has been cancelled
Validate / Test Suite-2 (push) Has been cancelled
c01771f9ff
Some checks failed
Validate / Check-1 (push) Failing after 1s
Validate / Test Suite-1 (push) Failing after 1s
Validate / Lints (push) Failing after 1s
Validate / Check (push) Has been cancelled
Validate / Check-2 (push) Has been cancelled
Validate / Test Suite (push) Has been cancelled
Validate / Test Suite-2 (push) Has been cancelled
This pull request can be merged automatically.
You are not authorized to merge this pull request.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/crate-tokio-vulnerability:renovate/crate-tokio-vulnerability
git checkout renovate/crate-tokio-vulnerability

Merge

Merge the changes and update on Forgejo.

Warning: The "Autodetect manual merge" setting is not enabled for this repository, you will have to mark this pull request as manually merged afterwards.

git checkout main
git merge --no-ff renovate/crate-tokio-vulnerability
git checkout renovate/crate-tokio-vulnerability
git rebase main
git checkout main
git merge --ff-only renovate/crate-tokio-vulnerability
git checkout renovate/crate-tokio-vulnerability
git rebase main
git checkout main
git merge --no-ff renovate/crate-tokio-vulnerability
git checkout main
git merge --squash renovate/crate-tokio-vulnerability
git checkout main
git merge --ff-only renovate/crate-tokio-vulnerability
git checkout main
git merge renovate/crate-tokio-vulnerability
git push origin main
Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference: Sulkta-OSS/pallas#13
No description provided.