Skip to content

Releases: tokio-rs/tokio

Tokio v1.40.0

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

1.40.0 (August 30th, 2024)

Added

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

Added (unstable)

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

Changed

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

Documented

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

Tokio v1.39.3

17 Aug 17:31
3d439ab
Compare
Choose a tag to compare

1.39.3 (August 17th, 2024)

This release fixes a regression where the unix socket api stopped accepting the abstract socket namespace. (#6772)

Tokio v1.39.2

27 Jul 10:37
f602eae
Compare
Choose a tag to compare

1.39.2 (July 27th, 2024)

This release fixes a regression where the select! macro stopped accepting expressions that make use of temporary lifetime extension. (#6722)

Tokio v1.39.1

23 Jul 16:29
f8fe0ff
Compare
Choose a tag to compare

1.39.1 (July 23rd, 2024)

This release reverts "time: avoid traversing entries in the time wheel twice" because it contains a bug. (#6715)

Tokio v1.39.0

23 Jul 13:31
48e35c1
Compare
Choose a tag to compare

1.39.0 (July 23rd, 2024)

  • This release bumps the MSRV to 1.70. (#6645)
  • This release upgrades to mio v1. (#6635)
  • This release upgrades to windows-sys v0.52 (#6154)

Added

  • io: implement AsyncSeek for Empty (#6663)
  • metrics: stabilize num_alive_tasks (#6619, #6667)
  • process: add Command::as_std_mut (#6608)
  • sync: add watch::Sender::same_channel (#6637)
  • sync: add {Receiver,UnboundedReceiver}::{sender_strong_count,sender_weak_count} (#6661)
  • sync: implement Default for watch::Sender (#6626)
  • task: implement Clone for AbortHandle (#6621)
  • task: stabilize consume_budget (#6622)

Changed

  • io: improve panic message of ReadBuf::put_slice() (#6629)
  • io: read during write in copy_bidirectional and copy (#6532)
  • runtime: replace num_cpus with available_parallelism (#6709)
  • task: avoid stack overflow when passing large future to block_on (#6692)
  • time: avoid traversing entries in the time wheel twice (#6584)
  • time: support IntoFuture with timeout (#6666)
  • macros: support IntoFuture with join! and select! (#6710)

Fixed

  • docs: fix docsrs builds with the fs feature enabled (#6585)
  • io: only use short-read optimization on known-to-be-compatible platforms (#6668)
  • time: fix overflow panic when using large durations with Interval (#6612)

Added (unstable)

  • macros: allow unhandled_panic behavior for #[tokio::main] and #[tokio::test] (#6593)
  • metrics: add spawned_tasks_count (#6114)
  • metrics: add worker_park_unpark_count (#6696)
  • metrics: add worker thread id (#6695)

Documented

  • io: update tokio::io::stdout documentation (#6674)
  • macros: typo fix in join.rs and try_join.rs (#6641)
  • runtime: fix typo in unhandled_panic (#6660)
  • task: document behavior of JoinSet::try_join_next when all tasks are running (#6671)

Tokio v1.38.1

16 Jul 17:23
14b9f71
Compare
Choose a tag to compare

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)

Tokio v1.38.0

30 May 20:29
14c17fc
Compare
Choose a tag to compare

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)

Tokio v1.37.0

28 Mar 17:35
9c337ca
Compare
Choose a tag to compare

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)

Tokio v1.36.0

02 Feb 12:21
eaf81ed
Compare
Choose a tag to compare

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)

Tokio v1.35.1

19 Dec 17:56
46ff363
Compare
Choose a tag to compare

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)