1# 1.42.0 (Dec 3rd, 2024) 2 3### Added 4 5- io: add `AsyncFd::{try_io, try_io_mut}` ([#6967]) 6 7### Fixed 8 9- io: avoid `ptr->ref->ptr` roundtrip in RegistrationSet ([#6929]) 10- runtime: do not defer `yield_now` inside `block_in_place` ([#6999]) 11 12### Changes 13 14- io: simplify io readiness logic ([#6966]) 15 16### Documented 17 18- net: fix docs for `tokio::net::unix::{pid_t, gid_t, uid_t}` ([#6791]) 19- time: fix a typo in `Instant` docs ([#6982]) 20 21[#6791]: https://github.com/tokio-rs/tokio/pull/6791 22[#6929]: https://github.com/tokio-rs/tokio/pull/6929 23[#6966]: https://github.com/tokio-rs/tokio/pull/6966 24[#6967]: https://github.com/tokio-rs/tokio/pull/6967 25[#6982]: https://github.com/tokio-rs/tokio/pull/6982 26[#6999]: https://github.com/tokio-rs/tokio/pull/6999 27 28# 1.41.1 (Nov 7th, 2024) 29 30### Fixed 31 32- metrics: fix bug with wrong number of buckets for the histogram ([#6957]) 33- net: display `net` requirement for `net::UdpSocket` in docs ([#6938]) 34- net: fix typo in `TcpStream` internal comment ([#6944]) 35 36[#6957]: https://github.com/tokio-rs/tokio/pull/6957 37[#6938]: https://github.com/tokio-rs/tokio/pull/6938 38[#6944]: https://github.com/tokio-rs/tokio/pull/6944 39 40# 1.41.0 (Oct 22th, 2024) 41 42### Added 43 44- metrics: stabilize `global_queue_depth` ([#6854], [#6918]) 45- net: add conversions for unix `SocketAddr` ([#6868]) 46- sync: add `watch::Sender::sender_count` ([#6836]) 47- sync: add `mpsc::Receiver::blocking_recv_many` ([#6867]) 48- task: stabilize `Id` apis ([#6793], [#6891]) 49 50### Added (unstable) 51 52- metrics: add H2 Histogram option to improve histogram granularity ([#6897]) 53- metrics: rename some histogram apis ([#6924]) 54- runtime: add `LocalRuntime` ([#6808]) 55 56### Changed 57 58- runtime: box futures larger than 16k on release mode ([#6826]) 59- sync: add `#[must_use]` to `Notified` ([#6828]) 60- sync: make `watch` cooperative ([#6846]) 61- sync: make `broadcast::Receiver` cooperative ([#6870]) 62- task: add task size to tracing instrumentation ([#6881]) 63- wasm: enable `cfg_fs` for `wasi` target ([#6822]) 64 65### Fixed 66 67- net: fix regression of abstract socket path in unix socket ([#6838]) 68 69### Documented 70 71- io: recommend `OwnedFd` with `AsyncFd` ([#6821]) 72- io: document cancel safety of `AsyncFd` methods ([#6890]) 73- macros: render more comprehensible documentation for `join` and `try_join` ([#6814], [#6841]) 74- net: fix swapped examples for `TcpSocket::set_nodelay` and `TcpSocket::nodelay` ([#6840]) 75- sync: document runtime compatibility ([#6833]) 76 77[#6793]: https://github.com/tokio-rs/tokio/pull/6793 78[#6808]: https://github.com/tokio-rs/tokio/pull/6808 79[#6810]: https://github.com/tokio-rs/tokio/pull/6810 80[#6814]: https://github.com/tokio-rs/tokio/pull/6814 81[#6821]: https://github.com/tokio-rs/tokio/pull/6821 82[#6822]: https://github.com/tokio-rs/tokio/pull/6822 83[#6826]: https://github.com/tokio-rs/tokio/pull/6826 84[#6828]: https://github.com/tokio-rs/tokio/pull/6828 85[#6833]: https://github.com/tokio-rs/tokio/pull/6833 86[#6836]: https://github.com/tokio-rs/tokio/pull/6836 87[#6838]: https://github.com/tokio-rs/tokio/pull/6838 88[#6840]: https://github.com/tokio-rs/tokio/pull/6840 89[#6841]: https://github.com/tokio-rs/tokio/pull/6841 90[#6846]: https://github.com/tokio-rs/tokio/pull/6846 91[#6854]: https://github.com/tokio-rs/tokio/pull/6854 92[#6867]: https://github.com/tokio-rs/tokio/pull/6867 93[#6868]: https://github.com/tokio-rs/tokio/pull/6868 94[#6870]: https://github.com/tokio-rs/tokio/pull/6870 95[#6881]: https://github.com/tokio-rs/tokio/pull/6881 96[#6890]: https://github.com/tokio-rs/tokio/pull/6890 97[#6891]: https://github.com/tokio-rs/tokio/pull/6891 98[#6897]: https://github.com/tokio-rs/tokio/pull/6897 99[#6918]: https://github.com/tokio-rs/tokio/pull/6918 100[#6924]: https://github.com/tokio-rs/tokio/pull/6924 101 102# 1.40.0 (August 30th, 2024) 103 104### Added 105 106- io: add `util::SimplexStream` ([#6589]) 107- process: stabilize `Command::process_group` ([#6731]) 108- sync: add `{TrySendError,SendTimeoutError}::into_inner` ([#6755]) 109- task: add `JoinSet::join_all` ([#6784]) 110 111### Added (unstable) 112 113- runtime: add `Builder::{on_task_spawn, on_task_terminate}` ([#6742]) 114 115### Changed 116 117- io: use vectored io for `write_all_buf` when possible ([#6724]) 118- runtime: prevent niche-optimization to avoid triggering miri ([#6744]) 119- sync: mark mpsc types as `UnwindSafe` ([#6783]) 120- sync,time: make `Sleep` and `BatchSemaphore` instrumentation explicit roots ([#6727]) 121- task: use `NonZeroU64` for `task::Id` ([#6733]) 122- task: include panic message when printing `JoinError` ([#6753]) 123- task: add `#[must_use]` to `JoinHandle::abort_handle` ([#6762]) 124- time: eliminate timer wheel allocations ([#6779]) 125 126### Documented 127 128- docs: clarify that `[build]` section doesn't go in Cargo.toml ([#6728]) 129- io: clarify zero remaining capacity case ([#6790]) 130- macros: improve documentation for `select!` ([#6774]) 131- sync: document mpsc channel allocation behavior ([#6773]) 132 133[#6589]: https://github.com/tokio-rs/tokio/pull/6589 134[#6724]: https://github.com/tokio-rs/tokio/pull/6724 135[#6727]: https://github.com/tokio-rs/tokio/pull/6727 136[#6728]: https://github.com/tokio-rs/tokio/pull/6728 137[#6731]: https://github.com/tokio-rs/tokio/pull/6731 138[#6733]: https://github.com/tokio-rs/tokio/pull/6733 139[#6742]: https://github.com/tokio-rs/tokio/pull/6742 140[#6744]: https://github.com/tokio-rs/tokio/pull/6744 141[#6753]: https://github.com/tokio-rs/tokio/pull/6753 142[#6755]: https://github.com/tokio-rs/tokio/pull/6755 143[#6762]: https://github.com/tokio-rs/tokio/pull/6762 144[#6773]: https://github.com/tokio-rs/tokio/pull/6773 145[#6774]: https://github.com/tokio-rs/tokio/pull/6774 146[#6779]: https://github.com/tokio-rs/tokio/pull/6779 147[#6783]: https://github.com/tokio-rs/tokio/pull/6783 148[#6784]: https://github.com/tokio-rs/tokio/pull/6784 149[#6790]: https://github.com/tokio-rs/tokio/pull/6790 150 151# 1.39.3 (August 17th, 2024) 152 153This release fixes a regression where the unix socket api stopped accepting 154the abstract socket namespace. ([#6772]) 155 156[#6772]: https://github.com/tokio-rs/tokio/pull/6772 157 158# 1.39.2 (July 27th, 2024) 159 160This release fixes a regression where the `select!` macro stopped accepting 161expressions that make use of temporary lifetime extension. ([#6722]) 162 163[#6722]: https://github.com/tokio-rs/tokio/pull/6722 164 165# 1.39.1 (July 23rd, 2024) 166 167This release reverts "time: avoid traversing entries in the time wheel twice" 168because it contains a bug. ([#6715]) 169 170[#6715]: https://github.com/tokio-rs/tokio/pull/6715 171 172# 1.39.0 (July 23rd, 2024) 173 174Yanked. Please use 1.39.1 instead. 175 176- This release bumps the MSRV to 1.70. ([#6645]) 177- This release upgrades to mio v1. ([#6635]) 178- This release upgrades to windows-sys v0.52 ([#6154]) 179 180### Added 181 182- io: implement `AsyncSeek` for `Empty` ([#6663]) 183- metrics: stabilize `num_alive_tasks` ([#6619], [#6667]) 184- process: add `Command::as_std_mut` ([#6608]) 185- sync: add `watch::Sender::same_channel` ([#6637]) 186- sync: add `{Receiver,UnboundedReceiver}::{sender_strong_count,sender_weak_count}` ([#6661]) 187- sync: implement `Default` for `watch::Sender` ([#6626]) 188- task: implement `Clone` for `AbortHandle` ([#6621]) 189- task: stabilize `consume_budget` ([#6622]) 190 191### Changed 192 193- io: improve panic message of `ReadBuf::put_slice()` ([#6629]) 194- io: read during write in `copy_bidirectional` and `copy` ([#6532]) 195- runtime: replace `num_cpus` with `available_parallelism` ([#6709]) 196- task: avoid stack overflow when passing large future to `block_on` ([#6692]) 197- time: avoid traversing entries in the time wheel twice ([#6584]) 198- time: support `IntoFuture` with `timeout` ([#6666]) 199- macros: support `IntoFuture` with `join!` and `select!` ([#6710]) 200 201### Fixed 202 203- docs: fix docsrs builds with the fs feature enabled ([#6585]) 204- io: only use short-read optimization on known-to-be-compatible platforms ([#6668]) 205- time: fix overflow panic when using large durations with `Interval` ([#6612]) 206 207### Added (unstable) 208 209- macros: allow `unhandled_panic` behavior for `#[tokio::main]` and `#[tokio::test]` ([#6593]) 210- metrics: add `spawned_tasks_count` ([#6114]) 211- metrics: add `worker_park_unpark_count` ([#6696]) 212- metrics: add worker thread id ([#6695]) 213 214### Documented 215 216- io: update `tokio::io::stdout` documentation ([#6674]) 217- macros: typo fix in `join.rs` and `try_join.rs` ([#6641]) 218- runtime: fix typo in `unhandled_panic` ([#6660]) 219- task: document behavior of `JoinSet::try_join_next` when all tasks are running ([#6671]) 220 221[#6114]: https://github.com/tokio-rs/tokio/pull/6114 222[#6154]: https://github.com/tokio-rs/tokio/pull/6154 223[#6532]: https://github.com/tokio-rs/tokio/pull/6532 224[#6584]: https://github.com/tokio-rs/tokio/pull/6584 225[#6585]: https://github.com/tokio-rs/tokio/pull/6585 226[#6593]: https://github.com/tokio-rs/tokio/pull/6593 227[#6608]: https://github.com/tokio-rs/tokio/pull/6608 228[#6612]: https://github.com/tokio-rs/tokio/pull/6612 229[#6619]: https://github.com/tokio-rs/tokio/pull/6619 230[#6621]: https://github.com/tokio-rs/tokio/pull/6621 231[#6622]: https://github.com/tokio-rs/tokio/pull/6622 232[#6626]: https://github.com/tokio-rs/tokio/pull/6626 233[#6629]: https://github.com/tokio-rs/tokio/pull/6629 234[#6635]: https://github.com/tokio-rs/tokio/pull/6635 235[#6637]: https://github.com/tokio-rs/tokio/pull/6637 236[#6641]: https://github.com/tokio-rs/tokio/pull/6641 237[#6645]: https://github.com/tokio-rs/tokio/pull/6645 238[#6660]: https://github.com/tokio-rs/tokio/pull/6660 239[#6661]: https://github.com/tokio-rs/tokio/pull/6661 240[#6663]: https://github.com/tokio-rs/tokio/pull/6663 241[#6666]: https://github.com/tokio-rs/tokio/pull/6666 242[#6667]: https://github.com/tokio-rs/tokio/pull/6667 243[#6668]: https://github.com/tokio-rs/tokio/pull/6668 244[#6671]: https://github.com/tokio-rs/tokio/pull/6671 245[#6674]: https://github.com/tokio-rs/tokio/pull/6674 246[#6692]: https://github.com/tokio-rs/tokio/pull/6692 247[#6695]: https://github.com/tokio-rs/tokio/pull/6695 248[#6696]: https://github.com/tokio-rs/tokio/pull/6696 249[#6709]: https://github.com/tokio-rs/tokio/pull/6709 250[#6710]: https://github.com/tokio-rs/tokio/pull/6710 251 252# 1.38.1 (July 16th, 2024) 253 254This release fixes the bug identified as ([#6682]), which caused timers not 255to fire when they should. 256 257### Fixed 258 259- time: update `wake_up` while holding all the locks of sharded time wheels ([#6683]) 260 261[#6682]: https://github.com/tokio-rs/tokio/pull/6682 262[#6683]: https://github.com/tokio-rs/tokio/pull/6683 263 264# 1.38.0 (May 30th, 2024) 265 266This release marks the beginning of stabilization for runtime metrics. It 267stabilizes `RuntimeMetrics::worker_count`. Future releases will continue to 268stabilize more metrics. 269 270### Added 271 272- fs: add `File::create_new` ([#6573]) 273- io: add `copy_bidirectional_with_sizes` ([#6500]) 274- io: implement `AsyncBufRead` for `Join` ([#6449]) 275- net: add Apple visionOS support ([#6465]) 276- net: implement `Clone` for `NamedPipeInfo` ([#6586]) 277- net: support QNX OS ([#6421]) 278- sync: add `Notify::notify_last` ([#6520]) 279- sync: add `mpsc::Receiver::{capacity,max_capacity}` ([#6511]) 280- sync: add `split` method to the semaphore permit ([#6472], [#6478]) 281- task: add `tokio::task::join_set::Builder::spawn_blocking` ([#6578]) 282- wasm: support rt-multi-thread with wasm32-wasi-preview1-threads ([#6510]) 283 284### Changed 285 286- macros: make `#[tokio::test]` append `#[test]` at the end of the attribute list ([#6497]) 287- metrics: fix `blocking_threads` count ([#6551]) 288- metrics: stabilize `RuntimeMetrics::worker_count` ([#6556]) 289- runtime: move task out of the `lifo_slot` in `block_in_place` ([#6596]) 290- runtime: panic if `global_queue_interval` is zero ([#6445]) 291- sync: always drop message in destructor for oneshot receiver ([#6558]) 292- sync: instrument `Semaphore` for task dumps ([#6499]) 293- sync: use FIFO ordering when waking batches of wakers ([#6521]) 294- task: make `LocalKey::get` work with Clone types ([#6433]) 295- tests: update nix and mio-aio dev-dependencies ([#6552]) 296- time: clean up implementation ([#6517]) 297- time: lazily init timers on first poll ([#6512]) 298- time: remove the `true_when` field in `TimerShared` ([#6563]) 299- time: use sharding for timer implementation ([#6534]) 300 301### Fixed 302 303- taskdump: allow building taskdump docs on non-unix machines ([#6564]) 304- time: check for overflow in `Interval::poll_tick` ([#6487]) 305- sync: fix incorrect `is_empty` on mpsc block boundaries ([#6603]) 306 307### Documented 308 309- fs: rewrite file system docs ([#6467]) 310- io: fix `stdin` documentation ([#6581]) 311- io: fix obsolete reference in `ReadHalf::unsplit()` documentation ([#6498]) 312- macros: render more comprehensible documentation for `select!` ([#6468]) 313- net: add missing types to module docs ([#6482]) 314- net: fix misleading `NamedPipeServer` example ([#6590]) 315- sync: add examples for `SemaphorePermit`, `OwnedSemaphorePermit` ([#6477]) 316- sync: document that `Barrier::wait` is not cancel safe ([#6494]) 317- sync: explain relation between `watch::Sender::{subscribe,closed}` ([#6490]) 318- task: clarify that you can't abort `spawn_blocking` tasks ([#6571]) 319- task: fix a typo in doc of `LocalSet::run_until` ([#6599]) 320- time: fix test-util requirement for pause and resume in docs ([#6503]) 321 322[#6421]: https://github.com/tokio-rs/tokio/pull/6421 323[#6433]: https://github.com/tokio-rs/tokio/pull/6433 324[#6445]: https://github.com/tokio-rs/tokio/pull/6445 325[#6449]: https://github.com/tokio-rs/tokio/pull/6449 326[#6465]: https://github.com/tokio-rs/tokio/pull/6465 327[#6467]: https://github.com/tokio-rs/tokio/pull/6467 328[#6468]: https://github.com/tokio-rs/tokio/pull/6468 329[#6472]: https://github.com/tokio-rs/tokio/pull/6472 330[#6477]: https://github.com/tokio-rs/tokio/pull/6477 331[#6478]: https://github.com/tokio-rs/tokio/pull/6478 332[#6482]: https://github.com/tokio-rs/tokio/pull/6482 333[#6487]: https://github.com/tokio-rs/tokio/pull/6487 334[#6490]: https://github.com/tokio-rs/tokio/pull/6490 335[#6494]: https://github.com/tokio-rs/tokio/pull/6494 336[#6497]: https://github.com/tokio-rs/tokio/pull/6497 337[#6498]: https://github.com/tokio-rs/tokio/pull/6498 338[#6499]: https://github.com/tokio-rs/tokio/pull/6499 339[#6500]: https://github.com/tokio-rs/tokio/pull/6500 340[#6503]: https://github.com/tokio-rs/tokio/pull/6503 341[#6510]: https://github.com/tokio-rs/tokio/pull/6510 342[#6511]: https://github.com/tokio-rs/tokio/pull/6511 343[#6512]: https://github.com/tokio-rs/tokio/pull/6512 344[#6517]: https://github.com/tokio-rs/tokio/pull/6517 345[#6520]: https://github.com/tokio-rs/tokio/pull/6520 346[#6521]: https://github.com/tokio-rs/tokio/pull/6521 347[#6534]: https://github.com/tokio-rs/tokio/pull/6534 348[#6551]: https://github.com/tokio-rs/tokio/pull/6551 349[#6552]: https://github.com/tokio-rs/tokio/pull/6552 350[#6556]: https://github.com/tokio-rs/tokio/pull/6556 351[#6558]: https://github.com/tokio-rs/tokio/pull/6558 352[#6563]: https://github.com/tokio-rs/tokio/pull/6563 353[#6564]: https://github.com/tokio-rs/tokio/pull/6564 354[#6571]: https://github.com/tokio-rs/tokio/pull/6571 355[#6573]: https://github.com/tokio-rs/tokio/pull/6573 356[#6578]: https://github.com/tokio-rs/tokio/pull/6578 357[#6581]: https://github.com/tokio-rs/tokio/pull/6581 358[#6586]: https://github.com/tokio-rs/tokio/pull/6586 359[#6590]: https://github.com/tokio-rs/tokio/pull/6590 360[#6596]: https://github.com/tokio-rs/tokio/pull/6596 361[#6599]: https://github.com/tokio-rs/tokio/pull/6599 362[#6603]: https://github.com/tokio-rs/tokio/pull/6603 363 364# 1.37.0 (March 28th, 2024) 365 366### Added 367 368- fs: add `set_max_buf_size` to `tokio::fs::File` ([#6411]) 369- io: add `try_new` and `try_with_interest` to `AsyncFd` ([#6345]) 370- sync: add `forget_permits` method to semaphore ([#6331]) 371- sync: add `is_closed`, `is_empty`, and `len` to mpsc receivers ([#6348]) 372- sync: add a `rwlock()` method to owned `RwLock` guards ([#6418]) 373- sync: expose strong and weak counts of mpsc sender handles ([#6405]) 374- sync: implement `Clone` for `watch::Sender` ([#6388]) 375- task: add `TaskLocalFuture::take_value` ([#6340]) 376- task: implement `FromIterator` for `JoinSet` ([#6300]) 377 378### Changed 379 380- io: make `io::split` use a mutex instead of a spinlock ([#6403]) 381 382### Fixed 383 384- docs: fix docsrs build without net feature ([#6360]) 385- macros: allow select with only else branch ([#6339]) 386- runtime: fix leaking registration entries when os registration fails ([#6329]) 387 388### Documented 389 390- io: document cancel safety of `AsyncBufReadExt::fill_buf` ([#6431]) 391- io: document cancel safety of `AsyncReadExt`'s primitive read functions ([#6337]) 392- runtime: add doc link from `Runtime` to `#[tokio::main]` ([#6366]) 393- runtime: make the `enter` example deterministic ([#6351]) 394- sync: add Semaphore example for limiting the number of outgoing requests ([#6419]) 395- sync: fix missing period in broadcast docs ([#6377]) 396- sync: mark `mpsc::Sender::downgrade` with `#[must_use]` ([#6326]) 397- sync: reorder `const_new` before `new_with` ([#6392]) 398- sync: update watch channel docs ([#6395]) 399- task: fix documentation links ([#6336]) 400 401### Changed (unstable) 402 403- runtime: include task `Id` in taskdumps ([#6328]) 404- runtime: panic if `unhandled_panic` is enabled when not supported ([#6410]) 405 406[#6300]: https://github.com/tokio-rs/tokio/pull/6300 407[#6326]: https://github.com/tokio-rs/tokio/pull/6326 408[#6328]: https://github.com/tokio-rs/tokio/pull/6328 409[#6329]: https://github.com/tokio-rs/tokio/pull/6329 410[#6331]: https://github.com/tokio-rs/tokio/pull/6331 411[#6336]: https://github.com/tokio-rs/tokio/pull/6336 412[#6337]: https://github.com/tokio-rs/tokio/pull/6337 413[#6339]: https://github.com/tokio-rs/tokio/pull/6339 414[#6340]: https://github.com/tokio-rs/tokio/pull/6340 415[#6345]: https://github.com/tokio-rs/tokio/pull/6345 416[#6348]: https://github.com/tokio-rs/tokio/pull/6348 417[#6351]: https://github.com/tokio-rs/tokio/pull/6351 418[#6360]: https://github.com/tokio-rs/tokio/pull/6360 419[#6366]: https://github.com/tokio-rs/tokio/pull/6366 420[#6377]: https://github.com/tokio-rs/tokio/pull/6377 421[#6388]: https://github.com/tokio-rs/tokio/pull/6388 422[#6392]: https://github.com/tokio-rs/tokio/pull/6392 423[#6395]: https://github.com/tokio-rs/tokio/pull/6395 424[#6403]: https://github.com/tokio-rs/tokio/pull/6403 425[#6405]: https://github.com/tokio-rs/tokio/pull/6405 426[#6410]: https://github.com/tokio-rs/tokio/pull/6410 427[#6411]: https://github.com/tokio-rs/tokio/pull/6411 428[#6418]: https://github.com/tokio-rs/tokio/pull/6418 429[#6419]: https://github.com/tokio-rs/tokio/pull/6419 430[#6431]: https://github.com/tokio-rs/tokio/pull/6431 431 432# 1.36.0 (February 2nd, 2024) 433 434### Added 435 436- io: add `tokio::io::Join` ([#6220]) 437- io: implement `AsyncWrite` for `Empty` ([#6235]) 438- net: add support for anonymous unix pipes ([#6127]) 439- net: add `UnixSocket` ([#6290]) 440- net: expose keepalive option on `TcpSocket` ([#6311]) 441- sync: add `{Receiver,UnboundedReceiver}::poll_recv_many` ([#6236]) 442- sync: add `Sender::{try_,}reserve_many` ([#6205]) 443- sync: add `watch::Receiver::mark_unchanged` ([#6252]) 444- task: add `JoinSet::try_join_next` ([#6280]) 445 446### Changed 447 448- io: make `copy` cooperative ([#6265]) 449- io: make `repeat` and `sink` cooperative ([#6254]) 450- io: simplify check for empty slice ([#6293]) 451- process: use pidfd on Linux when available ([#6152]) 452- sync: use AtomicBool in broadcast channel future ([#6298]) 453 454### Documented 455 456- io: clarify `clear_ready` docs ([#6304]) 457- net: document that `*Fd` traits on `TcpSocket` are unix-only ([#6294]) 458- sync: document FIFO behavior of `tokio::sync::Mutex` ([#6279]) 459- chore: typographic improvements ([#6262]) 460- runtime: remove obsolete comment ([#6303]) 461- task: fix typo ([#6261]) 462 463[#6220]: https://github.com/tokio-rs/tokio/pull/6220 464[#6235]: https://github.com/tokio-rs/tokio/pull/6235 465[#6127]: https://github.com/tokio-rs/tokio/pull/6127 466[#6290]: https://github.com/tokio-rs/tokio/pull/6290 467[#6311]: https://github.com/tokio-rs/tokio/pull/6311 468[#6236]: https://github.com/tokio-rs/tokio/pull/6236 469[#6205]: https://github.com/tokio-rs/tokio/pull/6205 470[#6252]: https://github.com/tokio-rs/tokio/pull/6252 471[#6280]: https://github.com/tokio-rs/tokio/pull/6280 472[#6265]: https://github.com/tokio-rs/tokio/pull/6265 473[#6254]: https://github.com/tokio-rs/tokio/pull/6254 474[#6293]: https://github.com/tokio-rs/tokio/pull/6293 475[#6238]: https://github.com/tokio-rs/tokio/pull/6238 476[#6152]: https://github.com/tokio-rs/tokio/pull/6152 477[#6298]: https://github.com/tokio-rs/tokio/pull/6298 478[#6262]: https://github.com/tokio-rs/tokio/pull/6262 479[#6303]: https://github.com/tokio-rs/tokio/pull/6303 480[#6261]: https://github.com/tokio-rs/tokio/pull/6261 481[#6304]: https://github.com/tokio-rs/tokio/pull/6304 482[#6294]: https://github.com/tokio-rs/tokio/pull/6294 483[#6279]: https://github.com/tokio-rs/tokio/pull/6279 484 485# 1.35.1 (December 19, 2023) 486 487This is a forward part of a change that was backported to 1.25.3. 488 489### Fixed 490 491- io: add budgeting to `tokio::runtime::io::registration::async_io` ([#6221]) 492 493[#6221]: https://github.com/tokio-rs/tokio/pull/6221 494 495# 1.35.0 (December 8th, 2023) 496 497### Added 498 499- net: add Apple watchOS support ([#6176]) 500 501### Changed 502 503- io: drop the `Sized` requirements from `AsyncReadExt.read_buf` ([#6169]) 504- runtime: make `Runtime` unwind safe ([#6189]) 505- runtime: reduce the lock contention in task spawn ([#6001]) 506- tokio: update nix dependency to 0.27.1 ([#6190]) 507 508### Fixed 509 510- chore: make `--cfg docsrs` work without net feature ([#6166]) 511- chore: use relaxed load for `unsync_load` on miri ([#6179]) 512- runtime: handle missing context on wake ([#6148]) 513- taskdump: fix taskdump cargo config example ([#6150]) 514- taskdump: skip notified tasks during taskdumps ([#6194]) 515- tracing: avoid creating resource spans with current parent, use a None parent instead ([#6107]) 516- tracing: make task span explicit root ([#6158]) 517 518### Documented 519 520- io: flush in `AsyncWriteExt` examples ([#6149]) 521- runtime: document fairness guarantees and current behavior ([#6145]) 522- task: document cancel safety of `LocalSet::run_until` ([#6147]) 523 524[#6001]: https://github.com/tokio-rs/tokio/pull/6001 525[#6107]: https://github.com/tokio-rs/tokio/pull/6107 526[#6144]: https://github.com/tokio-rs/tokio/pull/6144 527[#6145]: https://github.com/tokio-rs/tokio/pull/6145 528[#6147]: https://github.com/tokio-rs/tokio/pull/6147 529[#6148]: https://github.com/tokio-rs/tokio/pull/6148 530[#6149]: https://github.com/tokio-rs/tokio/pull/6149 531[#6150]: https://github.com/tokio-rs/tokio/pull/6150 532[#6158]: https://github.com/tokio-rs/tokio/pull/6158 533[#6166]: https://github.com/tokio-rs/tokio/pull/6166 534[#6169]: https://github.com/tokio-rs/tokio/pull/6169 535[#6176]: https://github.com/tokio-rs/tokio/pull/6176 536[#6179]: https://github.com/tokio-rs/tokio/pull/6179 537[#6189]: https://github.com/tokio-rs/tokio/pull/6189 538[#6190]: https://github.com/tokio-rs/tokio/pull/6190 539[#6194]: https://github.com/tokio-rs/tokio/pull/6194 540 541# 1.34.0 (November 19th, 2023) 542 543### Fixed 544 545- io: allow `clear_readiness` after io driver shutdown ([#6067]) 546- io: fix integer overflow in `take` ([#6080]) 547- io: fix I/O resource hang ([#6134]) 548- sync: fix `broadcast::channel` link ([#6100]) 549 550### Changed 551 552- macros: use `::core` qualified imports instead of `::std` inside `tokio::test` macro ([#5973]) 553 554### Added 555 556- fs: update cfg attr in `fs::read_dir` to include `aix` ([#6075]) 557- sync: add `mpsc::Receiver::recv_many` ([#6010]) 558- tokio: added vita target support ([#6094]) 559 560[#5973]: https://github.com/tokio-rs/tokio/pull/5973 561[#6067]: https://github.com/tokio-rs/tokio/pull/6067 562[#6080]: https://github.com/tokio-rs/tokio/pull/6080 563[#6134]: https://github.com/tokio-rs/tokio/pull/6134 564[#6100]: https://github.com/tokio-rs/tokio/pull/6100 565[#6075]: https://github.com/tokio-rs/tokio/pull/6075 566[#6010]: https://github.com/tokio-rs/tokio/pull/6010 567[#6094]: https://github.com/tokio-rs/tokio/pull/6094 568 569# 1.33.0 (October 9, 2023) 570 571### Fixed 572 573- io: mark `Interest::add` with `#[must_use]` ([#6037]) 574- runtime: fix cache line size for RISC-V ([#5994]) 575- sync: prevent lock poisoning in `watch::Receiver::wait_for` ([#6021]) 576- task: fix `spawn_local` source location ([#5984]) 577 578### Changed 579 580- sync: use Acquire/Release orderings instead of SeqCst in `watch` ([#6018]) 581 582### Added 583 584- fs: add vectored writes to `tokio::fs::File` ([#5958]) 585- io: add `Interest::remove` method ([#5906]) 586- io: add vectored writes to `DuplexStream` ([#5985]) 587- net: add Apple tvOS support ([#6045]) 588- sync: add `?Sized` bound to `{MutexGuard,OwnedMutexGuard}::map` ([#5997]) 589- sync: add `watch::Receiver::mark_unseen` ([#5962], [#6014], [#6017]) 590- sync: add `watch::Sender::new` ([#5998]) 591- sync: add const fn `OnceCell::from_value` ([#5903]) 592 593### Removed 594 595- remove unused `stats` feature ([#5952]) 596 597### Documented 598 599- add missing backticks in code examples ([#5938], [#6056]) 600- fix typos ([#5988], [#6030]) 601- process: document that `Child::wait` is cancel safe ([#5977]) 602- sync: add examples for `Semaphore` ([#5939], [#5956], [#5978], [#6031], [#6032], [#6050]) 603- sync: document that `broadcast` capacity is a lower bound ([#6042]) 604- sync: document that `const_new` is not instrumented ([#6002]) 605- sync: improve cancel-safety documentation for `mpsc::Sender::send` ([#5947]) 606- sync: improve docs for `watch` channel ([#5954]) 607- taskdump: render taskdump documentation on docs.rs ([#5972]) 608 609### Unstable 610 611- taskdump: fix potential deadlock ([#6036]) 612 613[#5903]: https://github.com/tokio-rs/tokio/pull/5903 614[#5906]: https://github.com/tokio-rs/tokio/pull/5906 615[#5938]: https://github.com/tokio-rs/tokio/pull/5938 616[#5939]: https://github.com/tokio-rs/tokio/pull/5939 617[#5947]: https://github.com/tokio-rs/tokio/pull/5947 618[#5952]: https://github.com/tokio-rs/tokio/pull/5952 619[#5954]: https://github.com/tokio-rs/tokio/pull/5954 620[#5956]: https://github.com/tokio-rs/tokio/pull/5956 621[#5958]: https://github.com/tokio-rs/tokio/pull/5958 622[#5960]: https://github.com/tokio-rs/tokio/pull/5960 623[#5962]: https://github.com/tokio-rs/tokio/pull/5962 624[#5971]: https://github.com/tokio-rs/tokio/pull/5971 625[#5972]: https://github.com/tokio-rs/tokio/pull/5972 626[#5977]: https://github.com/tokio-rs/tokio/pull/5977 627[#5978]: https://github.com/tokio-rs/tokio/pull/5978 628[#5984]: https://github.com/tokio-rs/tokio/pull/5984 629[#5985]: https://github.com/tokio-rs/tokio/pull/5985 630[#5988]: https://github.com/tokio-rs/tokio/pull/5988 631[#5994]: https://github.com/tokio-rs/tokio/pull/5994 632[#5997]: https://github.com/tokio-rs/tokio/pull/5997 633[#5998]: https://github.com/tokio-rs/tokio/pull/5998 634[#6002]: https://github.com/tokio-rs/tokio/pull/6002 635[#6014]: https://github.com/tokio-rs/tokio/pull/6014 636[#6017]: https://github.com/tokio-rs/tokio/pull/6017 637[#6018]: https://github.com/tokio-rs/tokio/pull/6018 638[#6021]: https://github.com/tokio-rs/tokio/pull/6021 639[#6030]: https://github.com/tokio-rs/tokio/pull/6030 640[#6031]: https://github.com/tokio-rs/tokio/pull/6031 641[#6032]: https://github.com/tokio-rs/tokio/pull/6032 642[#6036]: https://github.com/tokio-rs/tokio/pull/6036 643[#6037]: https://github.com/tokio-rs/tokio/pull/6037 644[#6042]: https://github.com/tokio-rs/tokio/pull/6042 645[#6045]: https://github.com/tokio-rs/tokio/pull/6045 646[#6050]: https://github.com/tokio-rs/tokio/pull/6050 647[#6056]: https://github.com/tokio-rs/tokio/pull/6056 648[#6058]: https://github.com/tokio-rs/tokio/pull/6058 649 650# 1.32.1 (December 19, 2023) 651 652This is a forward part of a change that was backported to 1.25.3. 653 654### Fixed 655 656- io: add budgeting to `tokio::runtime::io::registration::async_io` ([#6221]) 657 658[#6221]: https://github.com/tokio-rs/tokio/pull/6221 659 660# 1.32.0 (August 16, 2023) 661 662### Fixed 663 664- sync: fix potential quadratic behavior in `broadcast::Receiver` ([#5925]) 665 666### Added 667 668- process: stabilize `Command::raw_arg` ([#5930]) 669- io: enable awaiting error readiness ([#5781]) 670 671### Unstable 672 673- rt(alt): improve scalability of alt runtime as the number of cores grows ([#5935]) 674 675[#5925]: https://github.com/tokio-rs/tokio/pull/5925 676[#5930]: https://github.com/tokio-rs/tokio/pull/5930 677[#5781]: https://github.com/tokio-rs/tokio/pull/5781 678[#5935]: https://github.com/tokio-rs/tokio/pull/5935 679 680# 1.31.0 (August 10, 2023) 681 682### Fixed 683 684* io: delegate `WriteHalf::poll_write_vectored` ([#5914]) 685 686### Unstable 687 688* rt(alt): fix memory leak in unstable next-gen scheduler prototype ([#5911]) 689* rt: expose mean task poll time metric ([#5927]) 690 691[#5914]: https://github.com/tokio-rs/tokio/pull/5914 692[#5911]: https://github.com/tokio-rs/tokio/pull/5911 693[#5927]: https://github.com/tokio-rs/tokio/pull/5927 694 695# 1.30.0 (August 9, 2023) 696 697This release bumps the MSRV of Tokio to 1.63. ([#5887]) 698 699### Changed 700 701- tokio: reduce LLVM code generation ([#5859]) 702- io: support `--cfg mio_unsupported_force_poll_poll` flag ([#5881]) 703- sync: make `const_new` methods always available ([#5885]) 704- sync: avoid false sharing in mpsc channel ([#5829]) 705- rt: pop at least one task from inject queue ([#5908]) 706 707### Added 708 709- sync: add `broadcast::Sender::new` ([#5824]) 710- net: implement `UCred` for espidf ([#5868]) 711- fs: add `File::options()` ([#5869]) 712- time: implement extra reset variants for `Interval` ([#5878]) 713- process: add `{ChildStd*}::into_owned_{fd, handle}` ([#5899]) 714 715### Removed 716 717- tokio: removed unused `tokio_*` cfgs ([#5890]) 718- remove build script to speed up compilation ([#5887]) 719 720### Documented 721 722- sync: mention lagging in docs for `broadcast::send` ([#5820]) 723- runtime: expand on sharing runtime docs ([#5858]) 724- io: use vec in example for `AsyncReadExt::read_exact` ([#5863]) 725- time: mark `Sleep` as `!Unpin` in docs ([#5916]) 726- process: fix `raw_arg` not showing up in docs ([#5865]) 727 728### Unstable 729 730- rt: add runtime ID ([#5864]) 731- rt: initial implementation of new threaded runtime ([#5823]) 732 733[#5820]: https://github.com/tokio-rs/tokio/pull/5820 734[#5823]: https://github.com/tokio-rs/tokio/pull/5823 735[#5824]: https://github.com/tokio-rs/tokio/pull/5824 736[#5829]: https://github.com/tokio-rs/tokio/pull/5829 737[#5858]: https://github.com/tokio-rs/tokio/pull/5858 738[#5859]: https://github.com/tokio-rs/tokio/pull/5859 739[#5863]: https://github.com/tokio-rs/tokio/pull/5863 740[#5864]: https://github.com/tokio-rs/tokio/pull/5864 741[#5865]: https://github.com/tokio-rs/tokio/pull/5865 742[#5868]: https://github.com/tokio-rs/tokio/pull/5868 743[#5869]: https://github.com/tokio-rs/tokio/pull/5869 744[#5878]: https://github.com/tokio-rs/tokio/pull/5878 745[#5881]: https://github.com/tokio-rs/tokio/pull/5881 746[#5885]: https://github.com/tokio-rs/tokio/pull/5885 747[#5887]: https://github.com/tokio-rs/tokio/pull/5887 748[#5890]: https://github.com/tokio-rs/tokio/pull/5890 749[#5899]: https://github.com/tokio-rs/tokio/pull/5899 750[#5908]: https://github.com/tokio-rs/tokio/pull/5908 751[#5916]: https://github.com/tokio-rs/tokio/pull/5916 752 753# 1.29.1 (June 29, 2023) 754 755### Fixed 756 757- rt: fix nesting two `block_in_place` with a `block_on` between ([#5837]) 758 759[#5837]: https://github.com/tokio-rs/tokio/pull/5837 760 761# 1.29.0 (June 27, 2023) 762 763Technically a breaking change, the `Send` implementation is removed from 764`runtime::EnterGuard`. This change fixes a bug and should not impact most users. 765 766### Breaking 767 768- rt: `EnterGuard` should not be `Send` ([#5766]) 769 770### Fixed 771 772- fs: reduce blocking ops in `fs::read_dir` ([#5653]) 773- rt: fix possible starvation ([#5686], [#5712]) 774- rt: fix stacked borrows issue in `JoinSet` ([#5693]) 775- rt: panic if `EnterGuard` dropped incorrect order ([#5772]) 776- time: do not overflow to signal value ([#5710]) 777- fs: wait for in-flight ops before cloning `File` ([#5803]) 778 779### Changed 780 781- rt: reduce time to poll tasks scheduled from outside the runtime ([#5705], [#5720]) 782 783### Added 784 785- net: add uds doc alias for unix sockets ([#5659]) 786- rt: add metric for number of tasks ([#5628]) 787- sync: implement more traits for channel errors ([#5666]) 788- net: add nodelay methods on TcpSocket ([#5672]) 789- sync: add `broadcast::Receiver::blocking_recv` ([#5690]) 790- process: add `raw_arg` method to `Command` ([#5704]) 791- io: support PRIORITY epoll events ([#5566]) 792- task: add `JoinSet::poll_join_next` ([#5721]) 793- net: add support for Redox OS ([#5790]) 794 795 796### Unstable 797 798- rt: add the ability to dump task backtraces ([#5608], [#5676], [#5708], [#5717]) 799- rt: instrument task poll times with a histogram ([#5685]) 800 801[#5766]: https://github.com/tokio-rs/tokio/pull/5766 802[#5653]: https://github.com/tokio-rs/tokio/pull/5653 803[#5686]: https://github.com/tokio-rs/tokio/pull/5686 804[#5712]: https://github.com/tokio-rs/tokio/pull/5712 805[#5693]: https://github.com/tokio-rs/tokio/pull/5693 806[#5772]: https://github.com/tokio-rs/tokio/pull/5772 807[#5710]: https://github.com/tokio-rs/tokio/pull/5710 808[#5803]: https://github.com/tokio-rs/tokio/pull/5803 809[#5705]: https://github.com/tokio-rs/tokio/pull/5705 810[#5720]: https://github.com/tokio-rs/tokio/pull/5720 811[#5659]: https://github.com/tokio-rs/tokio/pull/5659 812[#5628]: https://github.com/tokio-rs/tokio/pull/5628 813[#5666]: https://github.com/tokio-rs/tokio/pull/5666 814[#5672]: https://github.com/tokio-rs/tokio/pull/5672 815[#5690]: https://github.com/tokio-rs/tokio/pull/5690 816[#5704]: https://github.com/tokio-rs/tokio/pull/5704 817[#5566]: https://github.com/tokio-rs/tokio/pull/5566 818[#5721]: https://github.com/tokio-rs/tokio/pull/5721 819[#5790]: https://github.com/tokio-rs/tokio/pull/5790 820[#5608]: https://github.com/tokio-rs/tokio/pull/5608 821[#5676]: https://github.com/tokio-rs/tokio/pull/5676 822[#5708]: https://github.com/tokio-rs/tokio/pull/5708 823[#5717]: https://github.com/tokio-rs/tokio/pull/5717 824[#5685]: https://github.com/tokio-rs/tokio/pull/5685 825 826# 1.28.2 (May 28, 2023) 827 828Forward ports 1.18.6 changes. 829 830### Fixed 831 832- deps: disable default features for mio ([#5728]) 833 834[#5728]: https://github.com/tokio-rs/tokio/pull/5728 835 836# 1.28.1 (May 10th, 2023) 837 838This release fixes a mistake in the build script that makes `AsFd` 839implementations unavailable on Rust 1.63. ([#5677]) 840 841[#5677]: https://github.com/tokio-rs/tokio/pull/5677 842 843# 1.28.0 (April 25th, 2023) 844 845### Added 846 847- io: add `AsyncFd::async_io` ([#5542]) 848- io: impl BufMut for ReadBuf ([#5590]) 849- net: add `recv_buf` for `UdpSocket` and `UnixDatagram` ([#5583]) 850- sync: add `OwnedSemaphorePermit::semaphore` ([#5618]) 851- sync: add `same_channel` to broadcast channel ([#5607]) 852- sync: add `watch::Receiver::wait_for` ([#5611]) 853- task: add `JoinSet::spawn_blocking` and `JoinSet::spawn_blocking_on` ([#5612]) 854 855### Changed 856 857- deps: update windows-sys to 0.48 ([#5591]) 858- io: make `read_to_end` not grow unnecessarily ([#5610]) 859- macros: make entrypoints more efficient ([#5621]) 860- sync: improve Debug impl for `RwLock` ([#5647]) 861- sync: reduce contention in `Notify` ([#5503]) 862 863### Fixed 864 865- net: support `get_peer_cred` on AIX ([#5065]) 866- sync: avoid deadlocks in `broadcast` with custom wakers ([#5578]) 867 868### Documented 869 870- sync: fix typo in `Semaphore::MAX_PERMITS` ([#5645]) 871- sync: fix typo in `tokio::sync::watch::Sender` docs ([#5587]) 872 873[#5065]: https://github.com/tokio-rs/tokio/pull/5065 874[#5503]: https://github.com/tokio-rs/tokio/pull/5503 875[#5542]: https://github.com/tokio-rs/tokio/pull/5542 876[#5578]: https://github.com/tokio-rs/tokio/pull/5578 877[#5583]: https://github.com/tokio-rs/tokio/pull/5583 878[#5587]: https://github.com/tokio-rs/tokio/pull/5587 879[#5590]: https://github.com/tokio-rs/tokio/pull/5590 880[#5591]: https://github.com/tokio-rs/tokio/pull/5591 881[#5607]: https://github.com/tokio-rs/tokio/pull/5607 882[#5610]: https://github.com/tokio-rs/tokio/pull/5610 883[#5611]: https://github.com/tokio-rs/tokio/pull/5611 884[#5612]: https://github.com/tokio-rs/tokio/pull/5612 885[#5618]: https://github.com/tokio-rs/tokio/pull/5618 886[#5621]: https://github.com/tokio-rs/tokio/pull/5621 887[#5645]: https://github.com/tokio-rs/tokio/pull/5645 888[#5647]: https://github.com/tokio-rs/tokio/pull/5647 889 890# 1.27.0 (March 27th, 2023) 891 892This release bumps the MSRV of Tokio to 1.56. ([#5559]) 893 894### Added 895 896- io: add `async_io` helper method to sockets ([#5512]) 897- io: add implementations of `AsFd`/`AsHandle`/`AsSocket` ([#5514], [#5540]) 898- net: add `UdpSocket::peek_sender()` ([#5520]) 899- sync: add `RwLockWriteGuard::{downgrade_map, try_downgrade_map}` ([#5527]) 900- task: add `JoinHandle::abort_handle` ([#5543]) 901 902### Changed 903 904- io: use `memchr` from `libc` ([#5558]) 905- macros: accept path as crate rename in `#[tokio::main]` ([#5557]) 906- macros: update to syn 2.0.0 ([#5572]) 907- time: don't register for a wakeup when `Interval` returns `Ready` ([#5553]) 908 909### Fixed 910 911- fs: fuse std iterator in `ReadDir` ([#5555]) 912- tracing: fix `spawn_blocking` location fields ([#5573]) 913- time: clean up redundant check in `Wheel::poll()` ([#5574]) 914 915### Documented 916 917- macros: define cancellation safety ([#5525]) 918- io: add details to docs of `tokio::io::copy[_buf]` ([#5575]) 919- io: refer to `ReaderStream` and `StreamReader` in module docs ([#5576]) 920 921[#5512]: https://github.com/tokio-rs/tokio/pull/5512 922[#5514]: https://github.com/tokio-rs/tokio/pull/5514 923[#5520]: https://github.com/tokio-rs/tokio/pull/5520 924[#5525]: https://github.com/tokio-rs/tokio/pull/5525 925[#5527]: https://github.com/tokio-rs/tokio/pull/5527 926[#5540]: https://github.com/tokio-rs/tokio/pull/5540 927[#5543]: https://github.com/tokio-rs/tokio/pull/5543 928[#5553]: https://github.com/tokio-rs/tokio/pull/5553 929[#5555]: https://github.com/tokio-rs/tokio/pull/5555 930[#5557]: https://github.com/tokio-rs/tokio/pull/5557 931[#5558]: https://github.com/tokio-rs/tokio/pull/5558 932[#5559]: https://github.com/tokio-rs/tokio/pull/5559 933[#5572]: https://github.com/tokio-rs/tokio/pull/5572 934[#5573]: https://github.com/tokio-rs/tokio/pull/5573 935[#5574]: https://github.com/tokio-rs/tokio/pull/5574 936[#5575]: https://github.com/tokio-rs/tokio/pull/5575 937[#5576]: https://github.com/tokio-rs/tokio/pull/5576 938 939# 1.26.0 (March 1st, 2023) 940 941### Fixed 942 943- macros: fix empty `join!` and `try_join!` ([#5504]) 944- sync: don't leak tracing spans in mutex guards ([#5469]) 945- sync: drop wakers after unlocking the mutex in Notify ([#5471]) 946- sync: drop wakers outside lock in semaphore ([#5475]) 947 948### Added 949 950- fs: add `fs::try_exists` ([#4299]) 951- net: add types for named unix pipes ([#5351]) 952- sync: add `MappedOwnedMutexGuard` ([#5474]) 953 954### Changed 955 956- chore: update windows-sys to 0.45 ([#5386]) 957- net: use Message Read Mode for named pipes ([#5350]) 958- sync: mark lock guards with `#[clippy::has_significant_drop]` ([#5422]) 959- sync: reduce contention in watch channel ([#5464]) 960- time: remove cache padding in timer entries ([#5468]) 961- time: Improve `Instant::now()` perf with test-util ([#5513]) 962 963### Internal Changes 964 965- io: use `poll_fn` in `copy_bidirectional` ([#5486]) 966- net: refactor named pipe builders to not use bitfields ([#5477]) 967- rt: remove Arc from Clock ([#5434]) 968- sync: make `notify_waiters` calls atomic ([#5458]) 969- time: don't store deadline twice in sleep entries ([#5410]) 970 971### Unstable 972 973- metrics: add a new metric for budget exhaustion yields ([#5517]) 974 975### Documented 976 977- io: improve AsyncFd example ([#5481]) 978- runtime: document the nature of the main future ([#5494]) 979- runtime: remove extra period in docs ([#5511]) 980- signal: updated Documentation for Signals ([#5459]) 981- sync: add doc aliases for `blocking_*` methods ([#5448]) 982- sync: fix docs for Send/Sync bounds in broadcast ([#5480]) 983- sync: document drop behavior for channels ([#5497]) 984- task: clarify what happens to spawned work during runtime shutdown ([#5394]) 985- task: clarify `process::Command` docs ([#5413]) 986- task: fix wording with 'unsend' ([#5452]) 987- time: document immediate completion guarantee for timeouts ([#5509]) 988- tokio: document supported platforms ([#5483]) 989 990[#4299]: https://github.com/tokio-rs/tokio/pull/4299 991[#5350]: https://github.com/tokio-rs/tokio/pull/5350 992[#5351]: https://github.com/tokio-rs/tokio/pull/5351 993[#5386]: https://github.com/tokio-rs/tokio/pull/5386 994[#5394]: https://github.com/tokio-rs/tokio/pull/5394 995[#5410]: https://github.com/tokio-rs/tokio/pull/5410 996[#5413]: https://github.com/tokio-rs/tokio/pull/5413 997[#5422]: https://github.com/tokio-rs/tokio/pull/5422 998[#5434]: https://github.com/tokio-rs/tokio/pull/5434 999[#5448]: https://github.com/tokio-rs/tokio/pull/5448 1000[#5452]: https://github.com/tokio-rs/tokio/pull/5452 1001[#5458]: https://github.com/tokio-rs/tokio/pull/5458 1002[#5459]: https://github.com/tokio-rs/tokio/pull/5459 1003[#5464]: https://github.com/tokio-rs/tokio/pull/5464 1004[#5468]: https://github.com/tokio-rs/tokio/pull/5468 1005[#5469]: https://github.com/tokio-rs/tokio/pull/5469 1006[#5471]: https://github.com/tokio-rs/tokio/pull/5471 1007[#5474]: https://github.com/tokio-rs/tokio/pull/5474 1008[#5475]: https://github.com/tokio-rs/tokio/pull/5475 1009[#5477]: https://github.com/tokio-rs/tokio/pull/5477 1010[#5480]: https://github.com/tokio-rs/tokio/pull/5480 1011[#5481]: https://github.com/tokio-rs/tokio/pull/5481 1012[#5483]: https://github.com/tokio-rs/tokio/pull/5483 1013[#5486]: https://github.com/tokio-rs/tokio/pull/5486 1014[#5494]: https://github.com/tokio-rs/tokio/pull/5494 1015[#5497]: https://github.com/tokio-rs/tokio/pull/5497 1016[#5504]: https://github.com/tokio-rs/tokio/pull/5504 1017[#5509]: https://github.com/tokio-rs/tokio/pull/5509 1018[#5511]: https://github.com/tokio-rs/tokio/pull/5511 1019[#5513]: https://github.com/tokio-rs/tokio/pull/5513 1020[#5517]: https://github.com/tokio-rs/tokio/pull/5517 1021 1022# 1.25.3 (December 17th, 2023) 1023 1024### Fixed 1025- io: add budgeting to `tokio::runtime::io::registration::async_io` ([#6221]) 1026 1027[#6221]: https://github.com/tokio-rs/tokio/pull/6221 1028 1029# 1.25.2 (September 22, 2023) 1030 1031Forward ports 1.20.6 changes. 1032 1033### Changed 1034 1035- io: use `memchr` from `libc` ([#5960]) 1036 1037[#5960]: https://github.com/tokio-rs/tokio/pull/5960 1038 1039# 1.25.1 (May 28, 2023) 1040 1041Forward ports 1.18.6 changes. 1042 1043### Fixed 1044 1045- deps: disable default features for mio ([#5728]) 1046 1047[#5728]: https://github.com/tokio-rs/tokio/pull/5728 1048 1049# 1.25.0 (January 28, 2023) 1050 1051### Fixed 1052 1053- rt: fix runtime metrics reporting ([#5330]) 1054 1055### Added 1056 1057- sync: add `broadcast::Sender::len` ([#5343]) 1058 1059### Changed 1060 1061- fs: increase maximum read buffer size to 2MiB ([#5397]) 1062 1063[#5330]: https://github.com/tokio-rs/tokio/pull/5330 1064[#5343]: https://github.com/tokio-rs/tokio/pull/5343 1065[#5397]: https://github.com/tokio-rs/tokio/pull/5397 1066 1067# 1.24.2 (January 17, 2023) 1068 1069Forward ports 1.18.5 changes. 1070 1071### Fixed 1072 1073- io: fix unsoundness in `ReadHalf::unsplit` ([#5375]) 1074 1075[#5375]: https://github.com/tokio-rs/tokio/pull/5375 1076 1077# 1.24.1 (January 6, 2022) 1078 1079This release fixes a compilation failure on targets without `AtomicU64` when using rustc older than 1.63. ([#5356]) 1080 1081[#5356]: https://github.com/tokio-rs/tokio/pull/5356 1082 1083# 1.24.0 (January 5, 2022) 1084 1085### Fixed 1086 - rt: improve native `AtomicU64` support detection ([#5284]) 1087 1088### Added 1089 - rt: add configuration option for max number of I/O events polled from the OS 1090 per tick ([#5186]) 1091 - rt: add an environment variable for configuring the default number of worker 1092 threads per runtime instance ([#4250]) 1093 1094### Changed 1095 - sync: reduce MPSC channel stack usage ([#5294]) 1096 - io: reduce lock contention in I/O operations ([#5300]) 1097 - fs: speed up `read_dir()` by chunking operations ([#5309]) 1098 - rt: use internal `ThreadId` implementation ([#5329]) 1099 - test: don't auto-advance time when a `spawn_blocking` task is running ([#5115]) 1100 1101[#5186]: https://github.com/tokio-rs/tokio/pull/5186 1102[#5294]: https://github.com/tokio-rs/tokio/pull/5294 1103[#5284]: https://github.com/tokio-rs/tokio/pull/5284 1104[#4250]: https://github.com/tokio-rs/tokio/pull/4250 1105[#5300]: https://github.com/tokio-rs/tokio/pull/5300 1106[#5329]: https://github.com/tokio-rs/tokio/pull/5329 1107[#5115]: https://github.com/tokio-rs/tokio/pull/5115 1108[#5309]: https://github.com/tokio-rs/tokio/pull/5309 1109 1110# 1.23.1 (January 4, 2022) 1111 1112This release forward ports changes from 1.18.4. 1113 1114### Fixed 1115 1116- net: fix Windows named pipe server builder to maintain option when toggling 1117 pipe mode ([#5336]). 1118 1119[#5336]: https://github.com/tokio-rs/tokio/pull/5336 1120 1121# 1.23.0 (December 5, 2022) 1122 1123### Fixed 1124 1125 - net: fix Windows named pipe connect ([#5208]) 1126 - io: support vectored writes for `ChildStdin` ([#5216]) 1127 - io: fix `async fn ready()` false positive for OS-specific events ([#5231]) 1128 1129 ### Changed 1130 - runtime: `yield_now` defers task until after driver poll ([#5223]) 1131 - runtime: reduce amount of codegen needed per spawned task ([#5213]) 1132 - windows: replace `winapi` dependency with `windows-sys` ([#5204]) 1133 1134 [#5208]: https://github.com/tokio-rs/tokio/pull/5208 1135 [#5216]: https://github.com/tokio-rs/tokio/pull/5216 1136 [#5213]: https://github.com/tokio-rs/tokio/pull/5213 1137 [#5204]: https://github.com/tokio-rs/tokio/pull/5204 1138 [#5223]: https://github.com/tokio-rs/tokio/pull/5223 1139 [#5231]: https://github.com/tokio-rs/tokio/pull/5231 1140 1141# 1.22.0 (November 17, 2022) 1142 1143### Added 1144 - runtime: add `Handle::runtime_flavor` ([#5138]) 1145 - sync: add `Mutex::blocking_lock_owned` ([#5130]) 1146 - sync: add `Semaphore::MAX_PERMITS` ([#5144]) 1147 - sync: add `merge()` to semaphore permits ([#4948]) 1148 - sync: add `mpsc::WeakUnboundedSender` ([#5189]) 1149 1150### Added (unstable) 1151 1152 - process: add `Command::process_group` ([#5114]) 1153 - runtime: export metrics about the blocking thread pool ([#5161]) 1154 - task: add `task::id()` and `task::try_id()` ([#5171]) 1155 1156### Fixed 1157 - macros: don't take ownership of futures in macros ([#5087]) 1158 - runtime: fix Stacked Borrows violation in `LocalOwnedTasks` ([#5099]) 1159 - runtime: mitigate ABA with 32-bit queue indices when possible ([#5042]) 1160 - task: wake local tasks to the local queue when woken by the same thread ([#5095]) 1161 - time: panic in release mode when `mark_pending` called illegally ([#5093]) 1162 - runtime: fix typo in expect message ([#5169]) 1163 - runtime: fix `unsync_load` on atomic types ([#5175]) 1164 - task: elaborate safety comments in task deallocation ([#5172]) 1165 - runtime: fix `LocalSet` drop in thread local ([#5179]) 1166 - net: remove libc type leakage in a public API ([#5191]) 1167 - runtime: update the alignment of `CachePadded` ([#5106]) 1168 1169### Changed 1170 - io: make `tokio::io::copy` continue filling the buffer when writer stalls ([#5066]) 1171 - runtime: remove `coop::budget` from `LocalSet::run_until` ([#5155]) 1172 - sync: make `Notify` panic safe ([#5154]) 1173 1174### Documented 1175 - io: fix doc for `write_i8` to use signed integers ([#5040]) 1176 - net: fix doc typos for TCP and UDP `set_tos` methods ([#5073]) 1177 - net: fix function name in `UdpSocket::recv` documentation ([#5150]) 1178 - sync: typo in `TryLockError` for `RwLock::try_write` ([#5160]) 1179 - task: document that spawned tasks execute immediately ([#5117]) 1180 - time: document return type of `timeout` ([#5118]) 1181 - time: document that `timeout` checks only before poll ([#5126]) 1182 - sync: specify return type of `oneshot::Receiver` in docs ([#5198]) 1183 1184### Internal changes 1185 - runtime: use const `Mutex::new` for globals ([#5061]) 1186 - runtime: remove `Option` around `mio::Events` in io driver ([#5078]) 1187 - runtime: remove a conditional compilation clause ([#5104]) 1188 - runtime: remove a reference to internal time handle ([#5107]) 1189 - runtime: misc time driver cleanup ([#5120]) 1190 - runtime: move signal driver to runtime module ([#5121]) 1191 - runtime: signal driver now uses I/O driver directly ([#5125]) 1192 - runtime: start decoupling I/O driver and I/O handle ([#5127]) 1193 - runtime: switch `io::handle` refs with scheduler:Handle ([#5128]) 1194 - runtime: remove Arc from I/O driver ([#5134]) 1195 - runtime: use signal driver handle via `scheduler::Handle` ([#5135]) 1196 - runtime: move internal clock fns out of context ([#5139]) 1197 - runtime: remove `runtime::context` module ([#5140]) 1198 - runtime: keep driver cfgs in `driver.rs` ([#5141]) 1199 - runtime: add `runtime::context` to unify thread-locals ([#5143]) 1200 - runtime: rename some confusing internal variables/fns ([#5151]) 1201 - runtime: move `coop` mod into `runtime` ([#5152]) 1202 - runtime: move budget state to context thread-local ([#5157]) 1203 - runtime: move park logic into runtime module ([#5158]) 1204 - runtime: move `Runtime` into its own file ([#5159]) 1205 - runtime: unify entering a runtime with `Handle::enter` ([#5163]) 1206 - runtime: remove handle reference from each scheduler ([#5166]) 1207 - runtime: move `enter` into `context` ([#5167]) 1208 - runtime: combine context and entered thread-locals ([#5168]) 1209 - runtime: fix accidental unsetting of current handle ([#5178]) 1210 - runtime: move `CoreStage` methods to `Core` ([#5182]) 1211 - sync: name mpsc semaphore types ([#5146]) 1212 1213[#4948]: https://github.com/tokio-rs/tokio/pull/4948 1214[#5040]: https://github.com/tokio-rs/tokio/pull/5040 1215[#5042]: https://github.com/tokio-rs/tokio/pull/5042 1216[#5061]: https://github.com/tokio-rs/tokio/pull/5061 1217[#5066]: https://github.com/tokio-rs/tokio/pull/5066 1218[#5073]: https://github.com/tokio-rs/tokio/pull/5073 1219[#5078]: https://github.com/tokio-rs/tokio/pull/5078 1220[#5087]: https://github.com/tokio-rs/tokio/pull/5087 1221[#5093]: https://github.com/tokio-rs/tokio/pull/5093 1222[#5095]: https://github.com/tokio-rs/tokio/pull/5095 1223[#5099]: https://github.com/tokio-rs/tokio/pull/5099 1224[#5104]: https://github.com/tokio-rs/tokio/pull/5104 1225[#5106]: https://github.com/tokio-rs/tokio/pull/5106 1226[#5107]: https://github.com/tokio-rs/tokio/pull/5107 1227[#5114]: https://github.com/tokio-rs/tokio/pull/5114 1228[#5117]: https://github.com/tokio-rs/tokio/pull/5117 1229[#5118]: https://github.com/tokio-rs/tokio/pull/5118 1230[#5120]: https://github.com/tokio-rs/tokio/pull/5120 1231[#5121]: https://github.com/tokio-rs/tokio/pull/5121 1232[#5125]: https://github.com/tokio-rs/tokio/pull/5125 1233[#5126]: https://github.com/tokio-rs/tokio/pull/5126 1234[#5127]: https://github.com/tokio-rs/tokio/pull/5127 1235[#5128]: https://github.com/tokio-rs/tokio/pull/5128 1236[#5130]: https://github.com/tokio-rs/tokio/pull/5130 1237[#5134]: https://github.com/tokio-rs/tokio/pull/5134 1238[#5135]: https://github.com/tokio-rs/tokio/pull/5135 1239[#5138]: https://github.com/tokio-rs/tokio/pull/5138 1240[#5138]: https://github.com/tokio-rs/tokio/pull/5138 1241[#5139]: https://github.com/tokio-rs/tokio/pull/5139 1242[#5140]: https://github.com/tokio-rs/tokio/pull/5140 1243[#5141]: https://github.com/tokio-rs/tokio/pull/5141 1244[#5143]: https://github.com/tokio-rs/tokio/pull/5143 1245[#5144]: https://github.com/tokio-rs/tokio/pull/5144 1246[#5144]: https://github.com/tokio-rs/tokio/pull/5144 1247[#5146]: https://github.com/tokio-rs/tokio/pull/5146 1248[#5150]: https://github.com/tokio-rs/tokio/pull/5150 1249[#5151]: https://github.com/tokio-rs/tokio/pull/5151 1250[#5152]: https://github.com/tokio-rs/tokio/pull/5152 1251[#5154]: https://github.com/tokio-rs/tokio/pull/5154 1252[#5155]: https://github.com/tokio-rs/tokio/pull/5155 1253[#5157]: https://github.com/tokio-rs/tokio/pull/5157 1254[#5158]: https://github.com/tokio-rs/tokio/pull/5158 1255[#5159]: https://github.com/tokio-rs/tokio/pull/5159 1256[#5160]: https://github.com/tokio-rs/tokio/pull/5160 1257[#5161]: https://github.com/tokio-rs/tokio/pull/5161 1258[#5163]: https://github.com/tokio-rs/tokio/pull/5163 1259[#5166]: https://github.com/tokio-rs/tokio/pull/5166 1260[#5167]: https://github.com/tokio-rs/tokio/pull/5167 1261[#5168]: https://github.com/tokio-rs/tokio/pull/5168 1262[#5169]: https://github.com/tokio-rs/tokio/pull/5169 1263[#5171]: https://github.com/tokio-rs/tokio/pull/5171 1264[#5172]: https://github.com/tokio-rs/tokio/pull/5172 1265[#5175]: https://github.com/tokio-rs/tokio/pull/5175 1266[#5178]: https://github.com/tokio-rs/tokio/pull/5178 1267[#5179]: https://github.com/tokio-rs/tokio/pull/5179 1268[#5182]: https://github.com/tokio-rs/tokio/pull/5182 1269[#5189]: https://github.com/tokio-rs/tokio/pull/5189 1270[#5191]: https://github.com/tokio-rs/tokio/pull/5191 1271[#5198]: https://github.com/tokio-rs/tokio/pull/5198 1272 1273# 1.21.2 (September 27, 2022) 1274 1275This release removes the dependency on the `once_cell` crate to restore the MSRV 1276of 1.21.x, which is the latest minor version at the time of release. ([#5048]) 1277 1278[#5048]: https://github.com/tokio-rs/tokio/pull/5048 1279 1280# 1.21.1 (September 13, 2022) 1281 1282### Fixed 1283 1284- net: fix dependency resolution for socket2 ([#5000]) 1285- task: ignore failure to set TLS in `LocalSet` Drop ([#4976]) 1286 1287[#4976]: https://github.com/tokio-rs/tokio/pull/4976 1288[#5000]: https://github.com/tokio-rs/tokio/pull/5000 1289 1290# 1.21.0 (September 2, 2022) 1291 1292This release is the first release of Tokio to intentionally support WASM. The 1293`sync,macros,io-util,rt,time` features are stabilized on WASM. Additionally the 1294wasm32-wasi target is given unstable support for the `net` feature. 1295 1296### Added 1297 1298- net: add `device` and `bind_device` methods to TCP/UDP sockets ([#4882]) 1299- net: add `tos` and `set_tos` methods to TCP and UDP sockets ([#4877]) 1300- net: add security flags to named pipe `ServerOptions` ([#4845]) 1301- signal: add more windows signal handlers ([#4924]) 1302- sync: add `mpsc::Sender::max_capacity` method ([#4904]) 1303- sync: implement Weak version of `mpsc::Sender` ([#4595]) 1304- task: add `LocalSet::enter` ([#4765]) 1305- task: stabilize `JoinSet` and `AbortHandle` ([#4920]) 1306- tokio: add `track_caller` to public APIs ([#4805], [#4848], [#4852]) 1307- wasm: initial support for `wasm32-wasi` target ([#4716]) 1308 1309### Fixed 1310 1311- miri: improve miri compatibility by avoiding temporary references in `linked_list::Link` impls ([#4841]) 1312- signal: don't register write interest on signal pipe ([#4898]) 1313- sync: add `#[must_use]` to lock guards ([#4886]) 1314- sync: fix hang when calling `recv` on closed and reopened broadcast channel ([#4867]) 1315- task: propagate attributes on task-locals ([#4837]) 1316 1317### Changed 1318 1319- fs: change panic to error in `File::start_seek` ([#4897]) 1320- io: reduce syscalls in `poll_read` ([#4840]) 1321- process: use blocking threadpool for child stdio I/O ([#4824]) 1322- signal: make `SignalKind` methods const ([#4956]) 1323 1324### Internal changes 1325 1326- rt: extract `basic_scheduler::Config` ([#4935]) 1327- rt: move I/O driver into `runtime` module ([#4942]) 1328- rt: rename internal scheduler types ([#4945]) 1329 1330### Documented 1331 1332- chore: fix typos and grammar ([#4858], [#4894], [#4928]) 1333- io: fix typo in `AsyncSeekExt::rewind` docs ([#4893]) 1334- net: add documentation to `try_read()` for zero-length buffers ([#4937]) 1335- runtime: remove incorrect panic section for `Builder::worker_threads` ([#4849]) 1336- sync: doc of `watch::Sender::send` improved ([#4959]) 1337- task: add cancel safety docs to `JoinHandle` ([#4901]) 1338- task: expand on cancellation of `spawn_blocking` ([#4811]) 1339- time: clarify that the first tick of `Interval::tick` happens immediately ([#4951]) 1340 1341### Unstable 1342 1343- rt: add unstable option to disable the LIFO slot ([#4936]) 1344- task: fix incorrect signature in `Builder::spawn_on` ([#4953]) 1345- task: make `task::Builder::spawn*` methods fallible ([#4823]) 1346 1347[#4595]: https://github.com/tokio-rs/tokio/pull/4595 1348[#4716]: https://github.com/tokio-rs/tokio/pull/4716 1349[#4765]: https://github.com/tokio-rs/tokio/pull/4765 1350[#4805]: https://github.com/tokio-rs/tokio/pull/4805 1351[#4811]: https://github.com/tokio-rs/tokio/pull/4811 1352[#4823]: https://github.com/tokio-rs/tokio/pull/4823 1353[#4824]: https://github.com/tokio-rs/tokio/pull/4824 1354[#4837]: https://github.com/tokio-rs/tokio/pull/4837 1355[#4840]: https://github.com/tokio-rs/tokio/pull/4840 1356[#4841]: https://github.com/tokio-rs/tokio/pull/4841 1357[#4845]: https://github.com/tokio-rs/tokio/pull/4845 1358[#4848]: https://github.com/tokio-rs/tokio/pull/4848 1359[#4849]: https://github.com/tokio-rs/tokio/pull/4849 1360[#4852]: https://github.com/tokio-rs/tokio/pull/4852 1361[#4858]: https://github.com/tokio-rs/tokio/pull/4858 1362[#4867]: https://github.com/tokio-rs/tokio/pull/4867 1363[#4877]: https://github.com/tokio-rs/tokio/pull/4877 1364[#4882]: https://github.com/tokio-rs/tokio/pull/4882 1365[#4886]: https://github.com/tokio-rs/tokio/pull/4886 1366[#4893]: https://github.com/tokio-rs/tokio/pull/4893 1367[#4894]: https://github.com/tokio-rs/tokio/pull/4894 1368[#4897]: https://github.com/tokio-rs/tokio/pull/4897 1369[#4898]: https://github.com/tokio-rs/tokio/pull/4898 1370[#4901]: https://github.com/tokio-rs/tokio/pull/4901 1371[#4904]: https://github.com/tokio-rs/tokio/pull/4904 1372[#4920]: https://github.com/tokio-rs/tokio/pull/4920 1373[#4924]: https://github.com/tokio-rs/tokio/pull/4924 1374[#4928]: https://github.com/tokio-rs/tokio/pull/4928 1375[#4935]: https://github.com/tokio-rs/tokio/pull/4935 1376[#4936]: https://github.com/tokio-rs/tokio/pull/4936 1377[#4937]: https://github.com/tokio-rs/tokio/pull/4937 1378[#4942]: https://github.com/tokio-rs/tokio/pull/4942 1379[#4945]: https://github.com/tokio-rs/tokio/pull/4945 1380[#4951]: https://github.com/tokio-rs/tokio/pull/4951 1381[#4953]: https://github.com/tokio-rs/tokio/pull/4953 1382[#4956]: https://github.com/tokio-rs/tokio/pull/4956 1383[#4959]: https://github.com/tokio-rs/tokio/pull/4959 1384 1385# 1.20.6 (September 22, 2023) 1386 1387This is a backport of a change from 1.27.0. 1388 1389### Changed 1390 1391- io: use `memchr` from `libc` ([#5960]) 1392 1393[#5960]: https://github.com/tokio-rs/tokio/pull/5960 1394 1395# 1.20.5 (May 28, 2023) 1396 1397Forward ports 1.18.6 changes. 1398 1399### Fixed 1400 1401- deps: disable default features for mio ([#5728]) 1402 1403[#5728]: https://github.com/tokio-rs/tokio/pull/5728 1404 1405# 1.20.4 (January 17, 2023) 1406 1407Forward ports 1.18.5 changes. 1408 1409### Fixed 1410 1411- io: fix unsoundness in `ReadHalf::unsplit` ([#5375]) 1412 1413[#5375]: https://github.com/tokio-rs/tokio/pull/5375 1414 1415# 1.20.3 (January 3, 2022) 1416 1417This release forward ports changes from 1.18.4. 1418 1419### Fixed 1420 1421- net: fix Windows named pipe server builder to maintain option when toggling 1422 pipe mode ([#5336]). 1423 1424[#5336]: https://github.com/tokio-rs/tokio/pull/5336 1425 1426# 1.20.2 (September 27, 2022) 1427 1428This release removes the dependency on the `once_cell` crate to restore the MSRV 1429of the 1.20.x LTS release. ([#5048]) 1430 1431[#5048]: https://github.com/tokio-rs/tokio/pull/5048 1432 1433# 1.20.1 (July 25, 2022) 1434 1435### Fixed 1436 1437- chore: fix version detection in build script ([#4860]) 1438 1439[#4860]: https://github.com/tokio-rs/tokio/pull/4860 1440 1441# 1.20.0 (July 12, 2022) 1442 1443### Added 1444- tokio: add `track_caller` to public APIs ([#4772], [#4791], [#4793], [#4806], [#4808]) 1445- sync: Add `has_changed` method to `watch::Ref` ([#4758]) 1446 1447### Changed 1448 1449- time: remove `src/time/driver/wheel/stack.rs` ([#4766]) 1450- rt: clean up arguments passed to basic scheduler ([#4767]) 1451- net: be more specific about winapi features ([#4764]) 1452- tokio: use const initialized thread locals where possible ([#4677]) 1453- task: various small improvements to LocalKey ([#4795]) 1454 1455### Documented 1456 1457- fs: warn about performance pitfall ([#4762]) 1458- chore: fix spelling ([#4769]) 1459- sync: document spurious failures in oneshot ([#4777]) 1460- sync: add warning for watch in non-Send futures ([#4741]) 1461- chore: fix typo ([#4798]) 1462 1463### Unstable 1464 1465- joinset: rename `join_one` to `join_next` ([#4755]) 1466- rt: unhandled panic config for current thread rt ([#4770]) 1467 1468[#4677]: https://github.com/tokio-rs/tokio/pull/4677 1469[#4741]: https://github.com/tokio-rs/tokio/pull/4741 1470[#4755]: https://github.com/tokio-rs/tokio/pull/4755 1471[#4758]: https://github.com/tokio-rs/tokio/pull/4758 1472[#4762]: https://github.com/tokio-rs/tokio/pull/4762 1473[#4764]: https://github.com/tokio-rs/tokio/pull/4764 1474[#4766]: https://github.com/tokio-rs/tokio/pull/4766 1475[#4767]: https://github.com/tokio-rs/tokio/pull/4767 1476[#4769]: https://github.com/tokio-rs/tokio/pull/4769 1477[#4770]: https://github.com/tokio-rs/tokio/pull/4770 1478[#4772]: https://github.com/tokio-rs/tokio/pull/4772 1479[#4777]: https://github.com/tokio-rs/tokio/pull/4777 1480[#4791]: https://github.com/tokio-rs/tokio/pull/4791 1481[#4793]: https://github.com/tokio-rs/tokio/pull/4793 1482[#4795]: https://github.com/tokio-rs/tokio/pull/4795 1483[#4798]: https://github.com/tokio-rs/tokio/pull/4798 1484[#4806]: https://github.com/tokio-rs/tokio/pull/4806 1485[#4808]: https://github.com/tokio-rs/tokio/pull/4808 1486 1487# 1.19.2 (June 6, 2022) 1488 1489This release fixes another bug in `Notified::enable`. ([#4751]) 1490 1491[#4751]: https://github.com/tokio-rs/tokio/pull/4751 1492 1493# 1.19.1 (June 5, 2022) 1494 1495This release fixes a bug in `Notified::enable`. ([#4747]) 1496 1497[#4747]: https://github.com/tokio-rs/tokio/pull/4747 1498 1499# 1.19.0 (June 3, 2022) 1500 1501### Added 1502 1503- runtime: add `is_finished` method for `JoinHandle` and `AbortHandle` ([#4709]) 1504- runtime: make global queue and event polling intervals configurable ([#4671]) 1505- sync: add `Notified::enable` ([#4705]) 1506- sync: add `watch::Sender::send_if_modified` ([#4591]) 1507- sync: add resubscribe method to broadcast::Receiver ([#4607]) 1508- net: add `take_error` to `TcpSocket` and `TcpStream` ([#4739]) 1509 1510### Changed 1511 1512- io: refactor out usage of Weak in the io handle ([#4656]) 1513 1514### Fixed 1515 1516- macros: avoid starvation in `join!` and `try_join!` ([#4624]) 1517 1518### Documented 1519 1520- runtime: clarify semantics of tasks outliving `block_on` ([#4729]) 1521- time: fix example for `MissedTickBehavior::Burst` ([#4713]) 1522 1523### Unstable 1524 1525- metrics: correctly update atomics in `IoDriverMetrics` ([#4725]) 1526- metrics: fix compilation with unstable, process, and rt, but without net ([#4682]) 1527- task: add `#[track_caller]` to `JoinSet`/`JoinMap` ([#4697]) 1528- task: add `Builder::{spawn_on, spawn_local_on, spawn_blocking_on}` ([#4683]) 1529- task: add `consume_budget` for cooperative scheduling ([#4498]) 1530- task: add `join_set::Builder` for configuring `JoinSet` tasks ([#4687]) 1531- task: update return value of `JoinSet::join_one` ([#4726]) 1532 1533[#4498]: https://github.com/tokio-rs/tokio/pull/4498 1534[#4591]: https://github.com/tokio-rs/tokio/pull/4591 1535[#4607]: https://github.com/tokio-rs/tokio/pull/4607 1536[#4624]: https://github.com/tokio-rs/tokio/pull/4624 1537[#4656]: https://github.com/tokio-rs/tokio/pull/4656 1538[#4671]: https://github.com/tokio-rs/tokio/pull/4671 1539[#4682]: https://github.com/tokio-rs/tokio/pull/4682 1540[#4683]: https://github.com/tokio-rs/tokio/pull/4683 1541[#4687]: https://github.com/tokio-rs/tokio/pull/4687 1542[#4697]: https://github.com/tokio-rs/tokio/pull/4697 1543[#4705]: https://github.com/tokio-rs/tokio/pull/4705 1544[#4709]: https://github.com/tokio-rs/tokio/pull/4709 1545[#4713]: https://github.com/tokio-rs/tokio/pull/4713 1546[#4725]: https://github.com/tokio-rs/tokio/pull/4725 1547[#4726]: https://github.com/tokio-rs/tokio/pull/4726 1548[#4729]: https://github.com/tokio-rs/tokio/pull/4729 1549[#4739]: https://github.com/tokio-rs/tokio/pull/4739 1550 1551# 1.18.6 (May 28, 2023) 1552 1553### Fixed 1554 1555- deps: disable default features for mio ([#5728]) 1556 1557[#5728]: https://github.com/tokio-rs/tokio/pull/5728 1558 1559# 1.18.5 (January 17, 2023) 1560 1561### Fixed 1562 1563- io: fix unsoundness in `ReadHalf::unsplit` ([#5375]) 1564 1565[#5375]: https://github.com/tokio-rs/tokio/pull/5375 1566 1567# 1.18.4 (January 3, 2022) 1568 1569### Fixed 1570 1571- net: fix Windows named pipe server builder to maintain option when toggling 1572 pipe mode ([#5336]). 1573 1574[#5336]: https://github.com/tokio-rs/tokio/pull/5336 1575 1576# 1.18.3 (September 27, 2022) 1577 1578This release removes the dependency on the `once_cell` crate to restore the MSRV 1579of the 1.18.x LTS release. ([#5048]) 1580 1581[#5048]: https://github.com/tokio-rs/tokio/pull/5048 1582 1583# 1.18.2 (May 5, 2022) 1584 1585Add missing features for the `winapi` dependency. ([#4663]) 1586 1587[#4663]: https://github.com/tokio-rs/tokio/pull/4663 1588 1589# 1.18.1 (May 2, 2022) 1590 1591The 1.18.0 release broke the build for targets without 64-bit atomics when 1592building with `tokio_unstable`. This release fixes that. ([#4649]) 1593 1594[#4649]: https://github.com/tokio-rs/tokio/pull/4649 1595 1596# 1.18.0 (April 27, 2022) 1597 1598This release adds a number of new APIs in `tokio::net`, `tokio::signal`, and 1599`tokio::sync`. In addition, it adds new unstable APIs to `tokio::task` (`Id`s 1600for uniquely identifying a task, and `AbortHandle` for remotely cancelling a 1601task), as well as a number of bugfixes. 1602 1603### Fixed 1604 1605- blocking: add missing `#[track_caller]` for `spawn_blocking` ([#4616]) 1606- macros: fix `select` macro to process 64 branches ([#4519]) 1607- net: fix `try_io` methods not calling Mio's `try_io` internally ([#4582]) 1608- runtime: recover when OS fails to spawn a new thread ([#4485]) 1609 1610### Added 1611 1612- net: add `UdpSocket::peer_addr` ([#4611]) 1613- net: add `try_read_buf` method for named pipes ([#4626]) 1614- signal: add `SignalKind` `Hash`/`Eq` impls and `c_int` conversion ([#4540]) 1615- signal: add support for signals up to `SIGRTMAX` ([#4555]) 1616- sync: add `watch::Sender::send_modify` method ([#4310]) 1617- sync: add `broadcast::Receiver::len` method ([#4542]) 1618- sync: add `watch::Receiver::same_channel` method ([#4581]) 1619- sync: implement `Clone` for `RecvError` types ([#4560]) 1620 1621### Changed 1622 1623- update `mio` to 0.8.1 ([#4582]) 1624- macros: rename `tokio::select!`'s internal `util` module ([#4543]) 1625- runtime: use `Vec::with_capacity` when building runtime ([#4553]) 1626 1627### Documented 1628 1629- improve docs for `tokio_unstable` ([#4524]) 1630- runtime: include more documentation for thread_pool/worker ([#4511]) 1631- runtime: update `Handle::current`'s docs to mention `EnterGuard` ([#4567]) 1632- time: clarify platform specific timer resolution ([#4474]) 1633- signal: document that `Signal::recv` is cancel-safe ([#4634]) 1634- sync: `UnboundedReceiver` close docs ([#4548]) 1635 1636### Unstable 1637 1638The following changes only apply when building with `--cfg tokio_unstable`: 1639 1640- task: add `task::Id` type ([#4630]) 1641- task: add `AbortHandle` type for cancelling tasks in a `JoinSet` ([#4530], 1642 [#4640]) 1643- task: fix missing `doc(cfg(...))` attributes for `JoinSet` ([#4531]) 1644- task: fix broken link in `AbortHandle` RustDoc ([#4545]) 1645- metrics: add initial IO driver metrics ([#4507]) 1646 1647 1648[#4616]: https://github.com/tokio-rs/tokio/pull/4616 1649[#4519]: https://github.com/tokio-rs/tokio/pull/4519 1650[#4582]: https://github.com/tokio-rs/tokio/pull/4582 1651[#4485]: https://github.com/tokio-rs/tokio/pull/4485 1652[#4613]: https://github.com/tokio-rs/tokio/pull/4613 1653[#4611]: https://github.com/tokio-rs/tokio/pull/4611 1654[#4626]: https://github.com/tokio-rs/tokio/pull/4626 1655[#4540]: https://github.com/tokio-rs/tokio/pull/4540 1656[#4555]: https://github.com/tokio-rs/tokio/pull/4555 1657[#4310]: https://github.com/tokio-rs/tokio/pull/4310 1658[#4542]: https://github.com/tokio-rs/tokio/pull/4542 1659[#4581]: https://github.com/tokio-rs/tokio/pull/4581 1660[#4560]: https://github.com/tokio-rs/tokio/pull/4560 1661[#4631]: https://github.com/tokio-rs/tokio/pull/4631 1662[#4582]: https://github.com/tokio-rs/tokio/pull/4582 1663[#4543]: https://github.com/tokio-rs/tokio/pull/4543 1664[#4553]: https://github.com/tokio-rs/tokio/pull/4553 1665[#4524]: https://github.com/tokio-rs/tokio/pull/4524 1666[#4511]: https://github.com/tokio-rs/tokio/pull/4511 1667[#4567]: https://github.com/tokio-rs/tokio/pull/4567 1668[#4474]: https://github.com/tokio-rs/tokio/pull/4474 1669[#4634]: https://github.com/tokio-rs/tokio/pull/4634 1670[#4548]: https://github.com/tokio-rs/tokio/pull/4548 1671[#4630]: https://github.com/tokio-rs/tokio/pull/4630 1672[#4530]: https://github.com/tokio-rs/tokio/pull/4530 1673[#4640]: https://github.com/tokio-rs/tokio/pull/4640 1674[#4531]: https://github.com/tokio-rs/tokio/pull/4531 1675[#4545]: https://github.com/tokio-rs/tokio/pull/4545 1676[#4507]: https://github.com/tokio-rs/tokio/pull/4507 1677 1678# 1.17.0 (February 16, 2022) 1679 1680This release updates the minimum supported Rust version (MSRV) to 1.49, the 1681`mio` dependency to v0.8, and the (optional) `parking_lot` dependency to v0.12. 1682Additionally, it contains several bug fixes, as well as internal refactoring and 1683performance improvements. 1684 1685### Fixed 1686 1687- time: prevent panicking in `sleep` with large durations ([#4495]) 1688- time: eliminate potential panics in `Instant` arithmetic on platforms where 1689 `Instant::now` is not monotonic ([#4461]) 1690- io: fix `DuplexStream` not participating in cooperative yielding ([#4478]) 1691- rt: fix potential double panic when dropping a `JoinHandle` ([#4430]) 1692 1693### Changed 1694 1695- update minimum supported Rust version to 1.49 ([#4457]) 1696- update `parking_lot` dependency to v0.12.0 ([#4459]) 1697- update `mio` dependency to v0.8 ([#4449]) 1698- rt: remove an unnecessary lock in the blocking pool ([#4436]) 1699- rt: remove an unnecessary enum in the basic scheduler ([#4462]) 1700- time: use bit manipulation instead of modulo to improve performance ([#4480]) 1701- net: use `std::future::Ready` instead of our own `Ready` future ([#4271]) 1702- replace deprecated `atomic::spin_loop_hint` with `hint::spin_loop` ([#4491]) 1703- fix miri failures in intrusive linked lists ([#4397]) 1704 1705### Documented 1706 1707- io: add an example for `tokio::process::ChildStdin` ([#4479]) 1708 1709### Unstable 1710 1711The following changes only apply when building with `--cfg tokio_unstable`: 1712 1713- task: fix missing location information in `tracing` spans generated by 1714 `spawn_local` ([#4483]) 1715- task: add `JoinSet` for managing sets of tasks ([#4335]) 1716- metrics: fix compilation error on MIPS ([#4475]) 1717- metrics: fix compilation error on arm32v7 ([#4453]) 1718 1719[#4495]: https://github.com/tokio-rs/tokio/pull/4495 1720[#4461]: https://github.com/tokio-rs/tokio/pull/4461 1721[#4478]: https://github.com/tokio-rs/tokio/pull/4478 1722[#4430]: https://github.com/tokio-rs/tokio/pull/4430 1723[#4457]: https://github.com/tokio-rs/tokio/pull/4457 1724[#4459]: https://github.com/tokio-rs/tokio/pull/4459 1725[#4449]: https://github.com/tokio-rs/tokio/pull/4449 1726[#4462]: https://github.com/tokio-rs/tokio/pull/4462 1727[#4436]: https://github.com/tokio-rs/tokio/pull/4436 1728[#4480]: https://github.com/tokio-rs/tokio/pull/4480 1729[#4271]: https://github.com/tokio-rs/tokio/pull/4271 1730[#4491]: https://github.com/tokio-rs/tokio/pull/4491 1731[#4397]: https://github.com/tokio-rs/tokio/pull/4397 1732[#4479]: https://github.com/tokio-rs/tokio/pull/4479 1733[#4483]: https://github.com/tokio-rs/tokio/pull/4483 1734[#4335]: https://github.com/tokio-rs/tokio/pull/4335 1735[#4475]: https://github.com/tokio-rs/tokio/pull/4475 1736[#4453]: https://github.com/tokio-rs/tokio/pull/4453 1737 1738# 1.16.1 (January 28, 2022) 1739 1740This release fixes a bug in [#4428] with the change [#4437]. 1741 1742[#4428]: https://github.com/tokio-rs/tokio/pull/4428 1743[#4437]: https://github.com/tokio-rs/tokio/pull/4437 1744 1745# 1.16.0 (January 27, 2022) 1746 1747Fixes a soundness bug in `io::Take` ([#4428]). The unsoundness is exposed when 1748leaking memory in the given `AsyncRead` implementation and then overwriting the 1749supplied buffer: 1750 1751```rust 1752impl AsyncRead for Buggy { 1753 fn poll_read( 1754 self: Pin<&mut Self>, 1755 cx: &mut Context<'_>, 1756 buf: &mut ReadBuf<'_> 1757 ) -> Poll<Result<()>> { 1758 let new_buf = vec![0; 5].leak(); 1759 *buf = ReadBuf::new(new_buf); 1760 buf.put_slice(b"hello"); 1761 Poll::Ready(Ok(())) 1762 } 1763} 1764``` 1765 1766Also, this release includes improvements to the multi-threaded scheduler that 1767can increase throughput by up to 20% in some cases ([#4383]). 1768 1769### Fixed 1770 1771- io: **soundness** don't expose uninitialized memory when using `io::Take` in edge case ([#4428]) 1772- fs: ensure `File::write` results in a `write` syscall when the runtime shuts down ([#4316]) 1773- process: drop pipe after child exits in `wait_with_output` ([#4315]) 1774- rt: improve error message when spawning a thread fails ([#4398]) 1775- rt: reduce false-positive thread wakups in the multi-threaded scheduler ([#4383]) 1776- sync: don't inherit `Send` from `parking_lot::*Guard` ([#4359]) 1777 1778### Added 1779 1780- net: `TcpSocket::linger()` and `set_linger()` ([#4324]) 1781- net: impl `UnwindSafe` for socket types ([#4384]) 1782- rt: impl `UnwindSafe` for `JoinHandle` ([#4418]) 1783- sync: `watch::Receiver::has_changed()` ([#4342]) 1784- sync: `oneshot::Receiver::blocking_recv()` ([#4334]) 1785- sync: `RwLock` blocking operations ([#4425]) 1786 1787### Unstable 1788 1789The following changes only apply when building with `--cfg tokio_unstable` 1790 1791- rt: **breaking change** overhaul runtime metrics API ([#4373]) 1792 1793[#4428]: https://github.com/tokio-rs/tokio/pull/4428 1794[#4316]: https://github.com/tokio-rs/tokio/pull/4316 1795[#4315]: https://github.com/tokio-rs/tokio/pull/4315 1796[#4398]: https://github.com/tokio-rs/tokio/pull/4398 1797[#4383]: https://github.com/tokio-rs/tokio/pull/4383 1798[#4359]: https://github.com/tokio-rs/tokio/pull/4359 1799[#4324]: https://github.com/tokio-rs/tokio/pull/4324 1800[#4384]: https://github.com/tokio-rs/tokio/pull/4384 1801[#4418]: https://github.com/tokio-rs/tokio/pull/4418 1802[#4342]: https://github.com/tokio-rs/tokio/pull/4342 1803[#4334]: https://github.com/tokio-rs/tokio/pull/4334 1804[#4425]: https://github.com/tokio-rs/tokio/pull/4425 1805[#4373]: https://github.com/tokio-rs/tokio/pull/4373 1806 1807# 1.15.0 (December 15, 2021) 1808 1809### Fixed 1810 1811- io: add cooperative yielding support to `io::empty()` ([#4300]) 1812- time: make timeout robust against budget-depleting tasks ([#4314]) 1813 1814### Changed 1815 1816- update minimum supported Rust version to 1.46. 1817 1818### Added 1819 1820- time: add `Interval::reset()` ([#4248]) 1821- io: add explicit lifetimes to `AsyncFdReadyGuard` ([#4267]) 1822- process: add `Command::as_std()` ([#4295]) 1823 1824### Added (unstable) 1825 1826- tracing: instrument `tokio::sync` types ([#4302]) 1827 1828[#4302]: https://github.com/tokio-rs/tokio/pull/4302 1829[#4300]: https://github.com/tokio-rs/tokio/pull/4300 1830[#4295]: https://github.com/tokio-rs/tokio/pull/4295 1831[#4267]: https://github.com/tokio-rs/tokio/pull/4267 1832[#4248]: https://github.com/tokio-rs/tokio/pull/4248 1833[#4314]: https://github.com/tokio-rs/tokio/pull/4314 1834 1835# 1.14.0 (November 15, 2021) 1836 1837### Fixed 1838 1839- macros: fix compiler errors when using `mut` patterns in `select!` ([#4211]) 1840- sync: fix a data race between `oneshot::Sender::send` and awaiting a 1841 `oneshot::Receiver` when the oneshot has been closed ([#4226]) 1842- sync: make `AtomicWaker` panic safe ([#3689]) 1843- runtime: fix basic scheduler dropping tasks outside a runtime context 1844 ([#4213]) 1845 1846### Added 1847 1848- stats: add `RuntimeStats::busy_duration_total` ([#4179], [#4223]) 1849 1850### Changed 1851 1852- io: updated `copy` buffer size to match `std::io::copy` ([#4209]) 1853 1854### Documented 1855 1856- io: rename buffer to file in doc-test ([#4230]) 1857- sync: fix Notify example ([#4212]) 1858 1859[#4211]: https://github.com/tokio-rs/tokio/pull/4211 1860[#4226]: https://github.com/tokio-rs/tokio/pull/4226 1861[#3689]: https://github.com/tokio-rs/tokio/pull/3689 1862[#4213]: https://github.com/tokio-rs/tokio/pull/4213 1863[#4179]: https://github.com/tokio-rs/tokio/pull/4179 1864[#4223]: https://github.com/tokio-rs/tokio/pull/4223 1865[#4209]: https://github.com/tokio-rs/tokio/pull/4209 1866[#4230]: https://github.com/tokio-rs/tokio/pull/4230 1867[#4212]: https://github.com/tokio-rs/tokio/pull/4212 1868 1869# 1.13.1 (November 15, 2021) 1870 1871### Fixed 1872 1873- sync: fix a data race between `oneshot::Sender::send` and awaiting a 1874 `oneshot::Receiver` when the oneshot has been closed ([#4226]) 1875 1876[#4226]: https://github.com/tokio-rs/tokio/pull/4226 1877 1878# 1.13.0 (October 29, 2021) 1879 1880### Fixed 1881 1882- sync: fix `Notify` to clone the waker before locking its waiter list ([#4129]) 1883- tokio: add riscv32 to non atomic64 architectures ([#4185]) 1884 1885### Added 1886 1887- net: add `poll_{recv,send}_ready` methods to `udp` and `uds_datagram` ([#4131]) 1888- net: add `try_*`, `readable`, `writable`, `ready`, and `peer_addr` methods to split halves ([#4120]) 1889- sync: add `blocking_lock` to `Mutex` ([#4130]) 1890- sync: add `watch::Sender::send_replace` ([#3962], [#4195]) 1891- sync: expand `Debug` for `Mutex<T>` impl to unsized `T` ([#4134]) 1892- tracing: instrument time::Sleep ([#4072]) 1893- tracing: use structured location fields for spawned tasks ([#4128]) 1894 1895### Changed 1896 1897- io: add assert in `copy_bidirectional` that `poll_write` is sensible ([#4125]) 1898- macros: use qualified syntax when polling in `select!` ([#4192]) 1899- runtime: handle `block_on` wakeups better ([#4157]) 1900- task: allocate callback on heap immediately in debug mode ([#4203]) 1901- tokio: assert platform-minimum requirements at build time ([#3797]) 1902 1903### Documented 1904 1905- docs: conversion of doc comments to indicative mood ([#4174]) 1906- docs: add returning on the first error example for `try_join!` ([#4133]) 1907- docs: fixing broken links in `tokio/src/lib.rs` ([#4132]) 1908- signal: add example with background listener ([#4171]) 1909- sync: add more oneshot examples ([#4153]) 1910- time: document `Interval::tick` cancel safety ([#4152]) 1911 1912[#3797]: https://github.com/tokio-rs/tokio/pull/3797 1913[#3962]: https://github.com/tokio-rs/tokio/pull/3962 1914[#4072]: https://github.com/tokio-rs/tokio/pull/4072 1915[#4120]: https://github.com/tokio-rs/tokio/pull/4120 1916[#4125]: https://github.com/tokio-rs/tokio/pull/4125 1917[#4128]: https://github.com/tokio-rs/tokio/pull/4128 1918[#4129]: https://github.com/tokio-rs/tokio/pull/4129 1919[#4130]: https://github.com/tokio-rs/tokio/pull/4130 1920[#4131]: https://github.com/tokio-rs/tokio/pull/4131 1921[#4132]: https://github.com/tokio-rs/tokio/pull/4132 1922[#4133]: https://github.com/tokio-rs/tokio/pull/4133 1923[#4134]: https://github.com/tokio-rs/tokio/pull/4134 1924[#4152]: https://github.com/tokio-rs/tokio/pull/4152 1925[#4153]: https://github.com/tokio-rs/tokio/pull/4153 1926[#4157]: https://github.com/tokio-rs/tokio/pull/4157 1927[#4171]: https://github.com/tokio-rs/tokio/pull/4171 1928[#4174]: https://github.com/tokio-rs/tokio/pull/4174 1929[#4185]: https://github.com/tokio-rs/tokio/pull/4185 1930[#4192]: https://github.com/tokio-rs/tokio/pull/4192 1931[#4195]: https://github.com/tokio-rs/tokio/pull/4195 1932[#4203]: https://github.com/tokio-rs/tokio/pull/4203 1933 1934# 1.12.0 (September 21, 2021) 1935 1936### Fixed 1937 1938- mpsc: ensure `try_reserve` error is consistent with `try_send` ([#4119]) 1939- mpsc: use `spin_loop_hint` instead of `yield_now` ([#4115]) 1940- sync: make `SendError` field public ([#4097]) 1941 1942### Added 1943 1944- io: add POSIX AIO on FreeBSD ([#4054]) 1945- io: add convenience method `AsyncSeekExt::rewind` ([#4107]) 1946- runtime: add tracing span for `block_on` futures ([#4094]) 1947- runtime: callback when a worker parks and unparks ([#4070]) 1948- sync: implement `try_recv` for mpsc channels ([#4113]) 1949 1950### Documented 1951 1952- docs: clarify CPU-bound tasks on Tokio ([#4105]) 1953- mpsc: document spurious failures on `poll_recv` ([#4117]) 1954- mpsc: document that `PollSender` impls `Sink` ([#4110]) 1955- task: document non-guarantees of `yield_now` ([#4091]) 1956- time: document paused time details better ([#4061], [#4103]) 1957 1958[#4027]: https://github.com/tokio-rs/tokio/pull/4027 1959[#4054]: https://github.com/tokio-rs/tokio/pull/4054 1960[#4061]: https://github.com/tokio-rs/tokio/pull/4061 1961[#4070]: https://github.com/tokio-rs/tokio/pull/4070 1962[#4091]: https://github.com/tokio-rs/tokio/pull/4091 1963[#4094]: https://github.com/tokio-rs/tokio/pull/4094 1964[#4097]: https://github.com/tokio-rs/tokio/pull/4097 1965[#4103]: https://github.com/tokio-rs/tokio/pull/4103 1966[#4105]: https://github.com/tokio-rs/tokio/pull/4105 1967[#4107]: https://github.com/tokio-rs/tokio/pull/4107 1968[#4110]: https://github.com/tokio-rs/tokio/pull/4110 1969[#4113]: https://github.com/tokio-rs/tokio/pull/4113 1970[#4115]: https://github.com/tokio-rs/tokio/pull/4115 1971[#4117]: https://github.com/tokio-rs/tokio/pull/4117 1972[#4119]: https://github.com/tokio-rs/tokio/pull/4119 1973 1974# 1.11.0 (August 31, 2021) 1975 1976### Fixed 1977 1978 - time: don't panic when Instant is not monotonic ([#4044]) 1979 - io: fix panic in `fill_buf` by not calling `poll_fill_buf` twice ([#4084]) 1980 1981### Added 1982 1983 - watch: add `watch::Sender::subscribe` ([#3800]) 1984 - process: add `from_std` to `ChildStd*` ([#4045]) 1985 - stats: initial work on runtime stats ([#4043]) 1986 1987### Changed 1988 1989 - tracing: change span naming to new console convention ([#4042]) 1990 - io: speed-up waking by using uninitialized array ([#4055], [#4071], [#4075]) 1991 1992### Documented 1993 1994 - time: make Sleep examples easier to find ([#4040]) 1995 1996[#3800]: https://github.com/tokio-rs/tokio/pull/3800 1997[#4040]: https://github.com/tokio-rs/tokio/pull/4040 1998[#4042]: https://github.com/tokio-rs/tokio/pull/4042 1999[#4043]: https://github.com/tokio-rs/tokio/pull/4043 2000[#4044]: https://github.com/tokio-rs/tokio/pull/4044 2001[#4045]: https://github.com/tokio-rs/tokio/pull/4045 2002[#4055]: https://github.com/tokio-rs/tokio/pull/4055 2003[#4071]: https://github.com/tokio-rs/tokio/pull/4071 2004[#4075]: https://github.com/tokio-rs/tokio/pull/4075 2005[#4084]: https://github.com/tokio-rs/tokio/pull/4084 2006 2007# 1.10.1 (August 24, 2021) 2008 2009### Fixed 2010 2011 - runtime: fix leak in UnownedTask ([#4063]) 2012 2013[#4063]: https://github.com/tokio-rs/tokio/pull/4063 2014 2015# 1.10.0 (August 12, 2021) 2016 2017### Added 2018 2019 - io: add `(read|write)_f(32|64)[_le]` methods ([#4022]) 2020 - io: add `fill_buf` and `consume` to `AsyncBufReadExt` ([#3991]) 2021 - process: add `Child::raw_handle()` on windows ([#3998]) 2022 2023### Fixed 2024 2025 - doc: fix non-doc builds with `--cfg docsrs` ([#4020]) 2026 - io: flush eagerly in `io::copy` ([#4001]) 2027 - runtime: a debug assert was sometimes triggered during shutdown ([#4005]) 2028 - sync: use `spin_loop_hint` instead of `yield_now` in mpsc ([#4037]) 2029 - tokio: the test-util feature depends on rt, sync, and time ([#4036]) 2030 2031### Changes 2032 2033 - runtime: reorganize parts of the runtime ([#3979], [#4005]) 2034 - signal: make windows docs for signal module show up on unix builds ([#3770]) 2035 - task: quickly send task to heap on debug mode ([#4009]) 2036 2037### Documented 2038 2039 - io: document cancellation safety of `AsyncBufReadExt` ([#3997]) 2040 - sync: document when `watch::send` fails ([#4021]) 2041 2042[#3770]: https://github.com/tokio-rs/tokio/pull/3770 2043[#3979]: https://github.com/tokio-rs/tokio/pull/3979 2044[#3991]: https://github.com/tokio-rs/tokio/pull/3991 2045[#3997]: https://github.com/tokio-rs/tokio/pull/3997 2046[#3998]: https://github.com/tokio-rs/tokio/pull/3998 2047[#4001]: https://github.com/tokio-rs/tokio/pull/4001 2048[#4005]: https://github.com/tokio-rs/tokio/pull/4005 2049[#4009]: https://github.com/tokio-rs/tokio/pull/4009 2050[#4020]: https://github.com/tokio-rs/tokio/pull/4020 2051[#4021]: https://github.com/tokio-rs/tokio/pull/4021 2052[#4022]: https://github.com/tokio-rs/tokio/pull/4022 2053[#4036]: https://github.com/tokio-rs/tokio/pull/4036 2054[#4037]: https://github.com/tokio-rs/tokio/pull/4037 2055 2056# 1.9.0 (July 22, 2021) 2057 2058### Added 2059 2060 - net: allow customized I/O operations for `TcpStream` ([#3888]) 2061 - sync: add getter for the mutex from a guard ([#3928]) 2062 - task: expose nameable future for `TaskLocal::scope` ([#3273]) 2063 2064### Fixed 2065 2066 - Fix leak if output of future panics on drop ([#3967]) 2067 - Fix leak in `LocalSet` ([#3978]) 2068 2069### Changes 2070 2071 - runtime: reorganize parts of the runtime ([#3909], [#3939], [#3950], [#3955], [#3980]) 2072 - sync: clean up `OnceCell` ([#3945]) 2073 - task: remove mutex in `JoinError` ([#3959]) 2074 2075[#3273]: https://github.com/tokio-rs/tokio/pull/3273 2076[#3888]: https://github.com/tokio-rs/tokio/pull/3888 2077[#3909]: https://github.com/tokio-rs/tokio/pull/3909 2078[#3928]: https://github.com/tokio-rs/tokio/pull/3928 2079[#3934]: https://github.com/tokio-rs/tokio/pull/3934 2080[#3939]: https://github.com/tokio-rs/tokio/pull/3939 2081[#3945]: https://github.com/tokio-rs/tokio/pull/3945 2082[#3950]: https://github.com/tokio-rs/tokio/pull/3950 2083[#3955]: https://github.com/tokio-rs/tokio/pull/3955 2084[#3959]: https://github.com/tokio-rs/tokio/pull/3959 2085[#3967]: https://github.com/tokio-rs/tokio/pull/3967 2086[#3978]: https://github.com/tokio-rs/tokio/pull/3978 2087[#3980]: https://github.com/tokio-rs/tokio/pull/3980 2088 2089# 1.8.3 (July 26, 2021) 2090 2091This release backports two fixes from 1.9.0 2092 2093### Fixed 2094 2095 - Fix leak if output of future panics on drop ([#3967]) 2096 - Fix leak in `LocalSet` ([#3978]) 2097 2098[#3967]: https://github.com/tokio-rs/tokio/pull/3967 2099[#3978]: https://github.com/tokio-rs/tokio/pull/3978 2100 2101# 1.8.2 (July 19, 2021) 2102 2103Fixes a missed edge case from 1.8.1. 2104 2105### Fixed 2106 2107- runtime: drop canceled future on next poll ([#3965]) 2108 2109[#3965]: https://github.com/tokio-rs/tokio/pull/3965 2110 2111# 1.8.1 (July 6, 2021) 2112 2113Forward ports 1.5.1 fixes. 2114 2115### Fixed 2116 2117- runtime: remotely abort tasks on `JoinHandle::abort` ([#3934]) 2118 2119[#3934]: https://github.com/tokio-rs/tokio/pull/3934 2120 2121# 1.8.0 (July 2, 2021) 2122 2123### Added 2124 2125- io: add `get_{ref,mut}` methods to `AsyncFdReadyGuard` and `AsyncFdReadyMutGuard` ([#3807]) 2126- io: efficient implementation of vectored writes for `BufWriter` ([#3163]) 2127- net: add ready/try methods to `NamedPipe{Client,Server}` ([#3866], [#3899]) 2128- sync: add `watch::Receiver::borrow_and_update` ([#3813]) 2129- sync: implement `From<T>` for `OnceCell<T>` ([#3877]) 2130- time: allow users to specify Interval behavior when delayed ([#3721]) 2131 2132### Added (unstable) 2133 2134- rt: add `tokio::task::Builder` ([#3881]) 2135 2136### Fixed 2137 2138- net: handle HUP event with `UnixStream` ([#3898]) 2139 2140### Documented 2141 2142- doc: document cancellation safety ([#3900]) 2143- time: add wait alias to sleep ([#3897]) 2144- time: document auto-advancing behavior of runtime ([#3763]) 2145 2146[#3163]: https://github.com/tokio-rs/tokio/pull/3163 2147[#3721]: https://github.com/tokio-rs/tokio/pull/3721 2148[#3763]: https://github.com/tokio-rs/tokio/pull/3763 2149[#3807]: https://github.com/tokio-rs/tokio/pull/3807 2150[#3813]: https://github.com/tokio-rs/tokio/pull/3813 2151[#3866]: https://github.com/tokio-rs/tokio/pull/3866 2152[#3877]: https://github.com/tokio-rs/tokio/pull/3877 2153[#3881]: https://github.com/tokio-rs/tokio/pull/3881 2154[#3897]: https://github.com/tokio-rs/tokio/pull/3897 2155[#3898]: https://github.com/tokio-rs/tokio/pull/3898 2156[#3899]: https://github.com/tokio-rs/tokio/pull/3899 2157[#3900]: https://github.com/tokio-rs/tokio/pull/3900 2158 2159# 1.7.2 (July 6, 2021) 2160 2161Forward ports 1.5.1 fixes. 2162 2163### Fixed 2164 2165- runtime: remotely abort tasks on `JoinHandle::abort` ([#3934]) 2166 2167[#3934]: https://github.com/tokio-rs/tokio/pull/3934 2168 2169# 1.7.1 (June 18, 2021) 2170 2171### Fixed 2172 2173- runtime: fix early task shutdown during runtime shutdown ([#3870]) 2174 2175[#3870]: https://github.com/tokio-rs/tokio/pull/3870 2176 2177# 1.7.0 (June 15, 2021) 2178 2179### Added 2180 2181- net: add named pipes on windows ([#3760]) 2182- net: add `TcpSocket` from `std::net::TcpStream` conversion ([#3838]) 2183- sync: add `receiver_count` to `watch::Sender` ([#3729]) 2184- sync: export `sync::notify::Notified` future publicly ([#3840]) 2185- tracing: instrument task wakers ([#3836]) 2186 2187### Fixed 2188 2189- macros: suppress `clippy::default_numeric_fallback` lint in generated code ([#3831]) 2190- runtime: immediately drop new tasks when runtime is shut down ([#3752]) 2191- sync: deprecate unused `mpsc::RecvError` type ([#3833]) 2192 2193### Documented 2194 2195- io: clarify EOF condition for `AsyncReadExt::read_buf` ([#3850]) 2196- io: clarify limits on return values of `AsyncWrite::poll_write` ([#3820]) 2197- sync: add examples to Semaphore ([#3808]) 2198 2199[#3729]: https://github.com/tokio-rs/tokio/pull/3729 2200[#3752]: https://github.com/tokio-rs/tokio/pull/3752 2201[#3760]: https://github.com/tokio-rs/tokio/pull/3760 2202[#3808]: https://github.com/tokio-rs/tokio/pull/3808 2203[#3820]: https://github.com/tokio-rs/tokio/pull/3820 2204[#3831]: https://github.com/tokio-rs/tokio/pull/3831 2205[#3833]: https://github.com/tokio-rs/tokio/pull/3833 2206[#3836]: https://github.com/tokio-rs/tokio/pull/3836 2207[#3838]: https://github.com/tokio-rs/tokio/pull/3838 2208[#3840]: https://github.com/tokio-rs/tokio/pull/3840 2209[#3850]: https://github.com/tokio-rs/tokio/pull/3850 2210 2211# 1.6.3 (July 6, 2021) 2212 2213Forward ports 1.5.1 fixes. 2214 2215### Fixed 2216 2217- runtime: remotely abort tasks on `JoinHandle::abort` ([#3934]) 2218 2219[#3934]: https://github.com/tokio-rs/tokio/pull/3934 2220 2221# 1.6.2 (June 14, 2021) 2222 2223### Fixes 2224 2225- test: sub-ms `time:advance` regression introduced in 1.6 ([#3852]) 2226 2227[#3852]: https://github.com/tokio-rs/tokio/pull/3852 2228 2229# 1.6.1 (May 28, 2021) 2230 2231This release reverts [#3518] because it doesn't work on some kernels due to 2232a kernel bug. ([#3803]) 2233 2234[#3518]: https://github.com/tokio-rs/tokio/issues/3518 2235[#3803]: https://github.com/tokio-rs/tokio/issues/3803 2236 2237# 1.6.0 (May 14, 2021) 2238 2239### Added 2240 2241- fs: try doing a non-blocking read before punting to the threadpool ([#3518]) 2242- io: add `write_all_buf` to `AsyncWriteExt` ([#3737]) 2243- io: implement `AsyncSeek` for `BufReader`, `BufWriter`, and `BufStream` ([#3491]) 2244- net: support non-blocking vectored I/O ([#3761]) 2245- sync: add `mpsc::Sender::{reserve_owned, try_reserve_owned}` ([#3704]) 2246- sync: add a `MutexGuard::map` method that returns a `MappedMutexGuard` ([#2472]) 2247- time: add getter for Interval's period ([#3705]) 2248 2249### Fixed 2250 2251- io: wake pending writers on `DuplexStream` close ([#3756]) 2252- process: avoid redundant effort to reap orphan processes ([#3743]) 2253- signal: use `std::os::raw::c_int` instead of `libc::c_int` on public API ([#3774]) 2254- sync: preserve permit state in `notify_waiters` ([#3660]) 2255- task: update `JoinHandle` panic message ([#3727]) 2256- time: prevent `time::advance` from going too far ([#3712]) 2257 2258### Documented 2259 2260- net: hide `net::unix::datagram` module from docs ([#3775]) 2261- process: updated example ([#3748]) 2262- sync: `Barrier` doc should use task, not thread ([#3780]) 2263- task: update documentation on `block_in_place` ([#3753]) 2264 2265[#2472]: https://github.com/tokio-rs/tokio/pull/2472 2266[#3491]: https://github.com/tokio-rs/tokio/pull/3491 2267[#3518]: https://github.com/tokio-rs/tokio/pull/3518 2268[#3660]: https://github.com/tokio-rs/tokio/pull/3660 2269[#3704]: https://github.com/tokio-rs/tokio/pull/3704 2270[#3705]: https://github.com/tokio-rs/tokio/pull/3705 2271[#3712]: https://github.com/tokio-rs/tokio/pull/3712 2272[#3727]: https://github.com/tokio-rs/tokio/pull/3727 2273[#3737]: https://github.com/tokio-rs/tokio/pull/3737 2274[#3743]: https://github.com/tokio-rs/tokio/pull/3743 2275[#3748]: https://github.com/tokio-rs/tokio/pull/3748 2276[#3753]: https://github.com/tokio-rs/tokio/pull/3753 2277[#3756]: https://github.com/tokio-rs/tokio/pull/3756 2278[#3761]: https://github.com/tokio-rs/tokio/pull/3761 2279[#3774]: https://github.com/tokio-rs/tokio/pull/3774 2280[#3775]: https://github.com/tokio-rs/tokio/pull/3775 2281[#3780]: https://github.com/tokio-rs/tokio/pull/3780 2282 2283# 1.5.1 (July 6, 2021) 2284 2285### Fixed 2286 2287- runtime: remotely abort tasks on `JoinHandle::abort` ([#3934]) 2288 2289[#3934]: https://github.com/tokio-rs/tokio/pull/3934 2290 2291# 1.5.0 (April 12, 2021) 2292 2293### Added 2294 2295- io: add `AsyncSeekExt::stream_position` ([#3650]) 2296- io: add `AsyncWriteExt::write_vectored` ([#3678]) 2297- io: add a `copy_bidirectional` utility ([#3572]) 2298- net: implement `IntoRawFd` for `TcpSocket` ([#3684]) 2299- sync: add `OnceCell` ([#3591]) 2300- sync: add `OwnedRwLockReadGuard` and `OwnedRwLockWriteGuard` ([#3340]) 2301- sync: add `Semaphore::is_closed` ([#3673]) 2302- sync: add `mpsc::Sender::capacity` ([#3690]) 2303- sync: allow configuring `RwLock` max reads ([#3644]) 2304- task: add `sync_scope` for `LocalKey` ([#3612]) 2305 2306### Fixed 2307 2308- chore: try to avoid `noalias` attributes on intrusive linked list ([#3654]) 2309- rt: fix panic in `JoinHandle::abort()` when called from other threads ([#3672]) 2310- sync: don't panic in `oneshot::try_recv` ([#3674]) 2311- sync: fix notifications getting dropped on receiver drop ([#3652]) 2312- sync: fix `Semaphore` permit overflow calculation ([#3644]) 2313 2314### Documented 2315 2316- io: clarify requirements of `AsyncFd` ([#3635]) 2317- runtime: fix unclear docs for `{Handle,Runtime}::block_on` ([#3628]) 2318- sync: document that `Semaphore` is fair ([#3693]) 2319- sync: improve doc on blocking mutex ([#3645]) 2320 2321[#3340]: https://github.com/tokio-rs/tokio/pull/3340 2322[#3572]: https://github.com/tokio-rs/tokio/pull/3572 2323[#3591]: https://github.com/tokio-rs/tokio/pull/3591 2324[#3612]: https://github.com/tokio-rs/tokio/pull/3612 2325[#3628]: https://github.com/tokio-rs/tokio/pull/3628 2326[#3635]: https://github.com/tokio-rs/tokio/pull/3635 2327[#3644]: https://github.com/tokio-rs/tokio/pull/3644 2328[#3645]: https://github.com/tokio-rs/tokio/pull/3645 2329[#3650]: https://github.com/tokio-rs/tokio/pull/3650 2330[#3652]: https://github.com/tokio-rs/tokio/pull/3652 2331[#3654]: https://github.com/tokio-rs/tokio/pull/3654 2332[#3672]: https://github.com/tokio-rs/tokio/pull/3672 2333[#3673]: https://github.com/tokio-rs/tokio/pull/3673 2334[#3674]: https://github.com/tokio-rs/tokio/pull/3674 2335[#3678]: https://github.com/tokio-rs/tokio/pull/3678 2336[#3684]: https://github.com/tokio-rs/tokio/pull/3684 2337[#3690]: https://github.com/tokio-rs/tokio/pull/3690 2338[#3693]: https://github.com/tokio-rs/tokio/pull/3693 2339 2340# 1.4.0 (March 20, 2021) 2341 2342### Added 2343 2344- macros: introduce biased argument for `select!` ([#3603]) 2345- runtime: add `Handle::block_on` ([#3569]) 2346 2347### Fixed 2348 2349- runtime: avoid unnecessary polling of `block_on` future ([#3582]) 2350- runtime: fix memory leak/growth when creating many runtimes ([#3564]) 2351- runtime: mark `EnterGuard` with `must_use` ([#3609]) 2352 2353### Documented 2354 2355- chore: mention fix for building docs in contributing guide ([#3618]) 2356- doc: add link to `PollSender` ([#3613]) 2357- doc: alias sleep to delay ([#3604]) 2358- sync: improve `Mutex` FIFO explanation ([#3615]) 2359- timer: fix double newline in module docs ([#3617]) 2360 2361[#3564]: https://github.com/tokio-rs/tokio/pull/3564 2362[#3613]: https://github.com/tokio-rs/tokio/pull/3613 2363[#3618]: https://github.com/tokio-rs/tokio/pull/3618 2364[#3617]: https://github.com/tokio-rs/tokio/pull/3617 2365[#3582]: https://github.com/tokio-rs/tokio/pull/3582 2366[#3615]: https://github.com/tokio-rs/tokio/pull/3615 2367[#3603]: https://github.com/tokio-rs/tokio/pull/3603 2368[#3609]: https://github.com/tokio-rs/tokio/pull/3609 2369[#3604]: https://github.com/tokio-rs/tokio/pull/3604 2370[#3569]: https://github.com/tokio-rs/tokio/pull/3569 2371 2372# 1.3.0 (March 9, 2021) 2373 2374### Added 2375 2376- coop: expose an `unconstrained()` opt-out ([#3547]) 2377- net: add `into_std` for net types without it ([#3509]) 2378- sync: add `same_channel` method to `mpsc::Sender` ([#3532]) 2379- sync: add `{try_,}acquire_many_owned` to `Semaphore` ([#3535]) 2380- sync: add back `RwLockWriteGuard::map` and `RwLockWriteGuard::try_map` ([#3348]) 2381 2382### Fixed 2383 2384- sync: allow `oneshot::Receiver::close` after successful `try_recv` ([#3552]) 2385- time: do not panic on `timeout(Duration::MAX)` ([#3551]) 2386 2387### Documented 2388 2389- doc: doc aliases for pre-1.0 function names ([#3523]) 2390- io: fix typos ([#3541]) 2391- io: note the EOF behavior of `read_until` ([#3536]) 2392- io: update `AsyncRead::poll_read` doc ([#3557]) 2393- net: update `UdpSocket` splitting doc ([#3517]) 2394- runtime: add link to `LocalSet` on `new_current_thread` ([#3508]) 2395- runtime: update documentation of thread limits ([#3527]) 2396- sync: do not recommend `join_all` for `Barrier` ([#3514]) 2397- sync: documentation for `oneshot` ([#3592]) 2398- sync: rename `notify` to `notify_one` ([#3526]) 2399- time: fix typo in `Sleep` doc ([#3515]) 2400- time: sync `interval.rs` and `time/mod.rs` docs ([#3533]) 2401 2402[#3348]: https://github.com/tokio-rs/tokio/pull/3348 2403[#3508]: https://github.com/tokio-rs/tokio/pull/3508 2404[#3509]: https://github.com/tokio-rs/tokio/pull/3509 2405[#3514]: https://github.com/tokio-rs/tokio/pull/3514 2406[#3515]: https://github.com/tokio-rs/tokio/pull/3515 2407[#3517]: https://github.com/tokio-rs/tokio/pull/3517 2408[#3523]: https://github.com/tokio-rs/tokio/pull/3523 2409[#3526]: https://github.com/tokio-rs/tokio/pull/3526 2410[#3527]: https://github.com/tokio-rs/tokio/pull/3527 2411[#3532]: https://github.com/tokio-rs/tokio/pull/3532 2412[#3533]: https://github.com/tokio-rs/tokio/pull/3533 2413[#3535]: https://github.com/tokio-rs/tokio/pull/3535 2414[#3536]: https://github.com/tokio-rs/tokio/pull/3536 2415[#3541]: https://github.com/tokio-rs/tokio/pull/3541 2416[#3547]: https://github.com/tokio-rs/tokio/pull/3547 2417[#3551]: https://github.com/tokio-rs/tokio/pull/3551 2418[#3552]: https://github.com/tokio-rs/tokio/pull/3552 2419[#3557]: https://github.com/tokio-rs/tokio/pull/3557 2420[#3592]: https://github.com/tokio-rs/tokio/pull/3592 2421 2422# 1.2.0 (February 5, 2021) 2423 2424### Added 2425 2426- signal: make `Signal::poll_recv` method public ([#3383]) 2427 2428### Fixed 2429 2430- time: make `test-util` paused time fully deterministic ([#3492]) 2431 2432### Documented 2433 2434- sync: link to new broadcast and watch wrappers ([#3504]) 2435 2436[#3383]: https://github.com/tokio-rs/tokio/pull/3383 2437[#3492]: https://github.com/tokio-rs/tokio/pull/3492 2438[#3504]: https://github.com/tokio-rs/tokio/pull/3504 2439 2440# 1.1.1 (January 29, 2021) 2441 2442Forward ports 1.0.3 fix. 2443 2444### Fixed 2445- io: memory leak during shutdown ([#3477]). 2446 2447# 1.1.0 (January 22, 2021) 2448 2449### Added 2450 2451- net: add `try_read_buf` and `try_recv_buf` ([#3351]) 2452- mpsc: Add `Sender::try_reserve` function ([#3418]) 2453- sync: add `RwLock` `try_read` and `try_write` methods ([#3400]) 2454- io: add `ReadBuf::inner_mut` ([#3443]) 2455 2456### Changed 2457 2458- macros: improve `select!` error message ([#3352]) 2459- io: keep track of initialized bytes in `read_to_end` ([#3426]) 2460- runtime: consolidate errors for context missing ([#3441]) 2461 2462### Fixed 2463 2464- task: wake `LocalSet` on `spawn_local` ([#3369]) 2465- sync: fix panic in broadcast::Receiver drop ([#3434]) 2466 2467### Documented 2468- stream: link to new `Stream` wrappers in `tokio-stream` ([#3343]) 2469- docs: mention that `test-util` feature is not enabled with full ([#3397]) 2470- process: add documentation to process::Child fields ([#3437]) 2471- io: clarify `AsyncFd` docs about changes of the inner fd ([#3430]) 2472- net: update datagram docs on splitting ([#3448]) 2473- time: document that `Sleep` is not `Unpin` ([#3457]) 2474- sync: add link to `PollSemaphore` ([#3456]) 2475- task: add `LocalSet` example ([#3438]) 2476- sync: improve bounded `mpsc` documentation ([#3458]) 2477 2478[#3343]: https://github.com/tokio-rs/tokio/pull/3343 2479[#3351]: https://github.com/tokio-rs/tokio/pull/3351 2480[#3352]: https://github.com/tokio-rs/tokio/pull/3352 2481[#3369]: https://github.com/tokio-rs/tokio/pull/3369 2482[#3397]: https://github.com/tokio-rs/tokio/pull/3397 2483[#3400]: https://github.com/tokio-rs/tokio/pull/3400 2484[#3418]: https://github.com/tokio-rs/tokio/pull/3418 2485[#3426]: https://github.com/tokio-rs/tokio/pull/3426 2486[#3430]: https://github.com/tokio-rs/tokio/pull/3430 2487[#3434]: https://github.com/tokio-rs/tokio/pull/3434 2488[#3437]: https://github.com/tokio-rs/tokio/pull/3437 2489[#3438]: https://github.com/tokio-rs/tokio/pull/3438 2490[#3441]: https://github.com/tokio-rs/tokio/pull/3441 2491[#3443]: https://github.com/tokio-rs/tokio/pull/3443 2492[#3448]: https://github.com/tokio-rs/tokio/pull/3448 2493[#3456]: https://github.com/tokio-rs/tokio/pull/3456 2494[#3457]: https://github.com/tokio-rs/tokio/pull/3457 2495[#3458]: https://github.com/tokio-rs/tokio/pull/3458 2496 2497# 1.0.3 (January 28, 2021) 2498 2499### Fixed 2500- io: memory leak during shutdown ([#3477]). 2501 2502[#3477]: https://github.com/tokio-rs/tokio/pull/3477 2503 2504# 1.0.2 (January 14, 2021) 2505 2506### Fixed 2507- io: soundness in `read_to_end` ([#3428]). 2508 2509[#3428]: https://github.com/tokio-rs/tokio/pull/3428 2510 2511# 1.0.1 (December 25, 2020) 2512 2513This release fixes a soundness hole caused by the combination of `RwLockWriteGuard::map` 2514and `RwLockWriteGuard::downgrade` by removing the `map` function. This is a breaking 2515change, but breaking changes are allowed under our semver policy when they are required 2516to fix a soundness hole. (See [this RFC][semver] for more.) 2517 2518Note that we have chosen not to do a deprecation cycle or similar because Tokio 1.0.0 was 2519released two days ago, and therefore the impact should be minimal. 2520 2521Due to the soundness hole, we have also yanked Tokio version 1.0.0. 2522 2523### Removed 2524 2525- sync: remove `RwLockWriteGuard::map` and `RwLockWriteGuard::try_map` ([#3345]) 2526 2527### Fixed 2528 2529- docs: remove stream feature from docs ([#3335]) 2530 2531[semver]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md#soundness-changes 2532[#3335]: https://github.com/tokio-rs/tokio/pull/3335 2533[#3345]: https://github.com/tokio-rs/tokio/pull/3345 2534 2535# 1.0.0 (December 23, 2020) 2536 2537Commit to the API and long-term support. 2538 2539### Fixed 2540 2541- sync: spurious wakeup in `watch` ([#3234]). 2542 2543### Changed 2544 2545- io: rename `AsyncFd::with_io()` to `try_io()` ([#3306]) 2546- fs: avoid OS specific `*Ext` traits in favor of conditionally defining the fn ([#3264]). 2547- fs: `Sleep` is `!Unpin` ([#3278]). 2548- net: pass `SocketAddr` by value ([#3125]). 2549- net: `TcpStream::poll_peek` takes `ReadBuf` ([#3259]). 2550- rt: rename `runtime::Builder::max_threads()` to `max_blocking_threads()` ([#3287]). 2551- time: require `current_thread` runtime when calling `time::pause()` ([#3289]). 2552 2553### Removed 2554 2555- remove `tokio::prelude` ([#3299]). 2556- io: remove `AsyncFd::with_poll()` ([#3306]). 2557- net: remove `{Tcp,Unix}Stream::shutdown()` in favor of `AsyncWrite::shutdown()` ([#3298]). 2558- stream: move all stream utilities to `tokio-stream` until `Stream` is added to 2559 `std` ([#3277]). 2560- sync: mpsc `try_recv()` due to unexpected behavior ([#3263]). 2561- tracing: make unstable as `tracing-core` is not 1.0 yet ([#3266]). 2562 2563### Added 2564 2565- fs: `poll_*` fns to `DirEntry` ([#3308]). 2566- io: `poll_*` fns to `io::Lines`, `io::Split` ([#3308]). 2567- io: `_mut` method variants to `AsyncFd` ([#3304]). 2568- net: `poll_*` fns to `UnixDatagram` ([#3223]). 2569- net: `UnixStream` readiness and non-blocking ops ([#3246]). 2570- sync: `UnboundedReceiver::blocking_recv()` ([#3262]). 2571- sync: `watch::Sender::borrow()` ([#3269]). 2572- sync: `Semaphore::close()` ([#3065]). 2573- sync: `poll_recv` fns to `mpsc::Receiver`, `mpsc::UnboundedReceiver` ([#3308]). 2574- time: `poll_tick` fn to `time::Interval` ([#3316]). 2575 2576[#3065]: https://github.com/tokio-rs/tokio/pull/3065 2577[#3125]: https://github.com/tokio-rs/tokio/pull/3125 2578[#3223]: https://github.com/tokio-rs/tokio/pull/3223 2579[#3234]: https://github.com/tokio-rs/tokio/pull/3234 2580[#3246]: https://github.com/tokio-rs/tokio/pull/3246 2581[#3259]: https://github.com/tokio-rs/tokio/pull/3259 2582[#3262]: https://github.com/tokio-rs/tokio/pull/3262 2583[#3263]: https://github.com/tokio-rs/tokio/pull/3263 2584[#3264]: https://github.com/tokio-rs/tokio/pull/3264 2585[#3266]: https://github.com/tokio-rs/tokio/pull/3266 2586[#3269]: https://github.com/tokio-rs/tokio/pull/3269 2587[#3277]: https://github.com/tokio-rs/tokio/pull/3277 2588[#3278]: https://github.com/tokio-rs/tokio/pull/3278 2589[#3287]: https://github.com/tokio-rs/tokio/pull/3287 2590[#3289]: https://github.com/tokio-rs/tokio/pull/3289 2591[#3298]: https://github.com/tokio-rs/tokio/pull/3298 2592[#3299]: https://github.com/tokio-rs/tokio/pull/3299 2593[#3304]: https://github.com/tokio-rs/tokio/pull/3304 2594[#3306]: https://github.com/tokio-rs/tokio/pull/3306 2595[#3308]: https://github.com/tokio-rs/tokio/pull/3308 2596[#3316]: https://github.com/tokio-rs/tokio/pull/3316 2597 2598# 0.3.6 (December 14, 2020) 2599 2600### Fixed 2601 2602- rt: fix deadlock in shutdown ([#3228]) 2603- rt: fix panic in task abort when off rt ([#3159]) 2604- sync: make `add_permits` panic with usize::MAX >> 3 permits ([#3188]) 2605- time: Fix race condition in timer drop ([#3229]) 2606- watch: fix spurious wakeup ([#3244]) 2607 2608### Added 2609 2610- example: add back udp-codec example ([#3205]) 2611- net: add `TcpStream::into_std` ([#3189]) 2612 2613[#3159]: https://github.com/tokio-rs/tokio/pull/3159 2614[#3188]: https://github.com/tokio-rs/tokio/pull/3188 2615[#3189]: https://github.com/tokio-rs/tokio/pull/3189 2616[#3205]: https://github.com/tokio-rs/tokio/pull/3205 2617[#3228]: https://github.com/tokio-rs/tokio/pull/3228 2618[#3229]: https://github.com/tokio-rs/tokio/pull/3229 2619[#3244]: https://github.com/tokio-rs/tokio/pull/3244 2620 2621# 0.3.5 (November 30, 2020) 2622 2623### Fixed 2624 2625- rt: fix `shutdown_timeout(0)` ([#3196]). 2626- time: fixed race condition with small sleeps ([#3069]). 2627 2628### Added 2629 2630- io: `AsyncFd::with_interest()` ([#3167]). 2631- signal: `CtrlC` stream on windows ([#3186]). 2632 2633[#3069]: https://github.com/tokio-rs/tokio/pull/3069 2634[#3167]: https://github.com/tokio-rs/tokio/pull/3167 2635[#3186]: https://github.com/tokio-rs/tokio/pull/3186 2636[#3196]: https://github.com/tokio-rs/tokio/pull/3196 2637 2638# 0.3.4 (November 18, 2020) 2639 2640### Fixed 2641 2642- stream: `StreamMap` `Default` impl bound ([#3093]). 2643- io: `AsyncFd::into_inner()` should deregister the FD ([#3104]). 2644 2645### Changed 2646 2647- meta: `parking_lot` feature enabled with `full` ([#3119]). 2648 2649### Added 2650 2651- io: `AsyncWrite` vectored writes ([#3149]). 2652- net: TCP/UDP readiness and non-blocking ops ([#3130], [#2743], [#3138]). 2653- net: TCP socket option (linger, send/recv buf size) ([#3145], [#3143]). 2654- net: PID field in `UCred` with solaris/illumos ([#3085]). 2655- rt: `runtime::Handle` allows spawning onto a runtime ([#3079]). 2656- sync: `Notify::notify_waiters()` ([#3098]). 2657- sync: `acquire_many()`, `try_acquire_many()` to `Semaphore` ([#3067]). 2658 2659[#2743]: https://github.com/tokio-rs/tokio/pull/2743 2660[#3067]: https://github.com/tokio-rs/tokio/pull/3067 2661[#3079]: https://github.com/tokio-rs/tokio/pull/3079 2662[#3085]: https://github.com/tokio-rs/tokio/pull/3085 2663[#3093]: https://github.com/tokio-rs/tokio/pull/3093 2664[#3098]: https://github.com/tokio-rs/tokio/pull/3098 2665[#3104]: https://github.com/tokio-rs/tokio/pull/3104 2666[#3119]: https://github.com/tokio-rs/tokio/pull/3119 2667[#3130]: https://github.com/tokio-rs/tokio/pull/3130 2668[#3138]: https://github.com/tokio-rs/tokio/pull/3138 2669[#3143]: https://github.com/tokio-rs/tokio/pull/3143 2670[#3145]: https://github.com/tokio-rs/tokio/pull/3145 2671[#3149]: https://github.com/tokio-rs/tokio/pull/3149 2672 2673# 0.3.3 (November 2, 2020) 2674 2675Fixes a soundness hole by adding a missing `Send` bound to 2676`Runtime::spawn_blocking()`. 2677 2678### Fixed 2679 2680- rt: include missing `Send`, fixing soundness hole ([#3089]). 2681- tracing: avoid huge trace span names ([#3074]). 2682 2683### Added 2684 2685- net: `TcpSocket::reuseport()`, `TcpSocket::set_reuseport()` ([#3083]). 2686- net: `TcpSocket::reuseaddr()` ([#3093]). 2687- net: `TcpSocket::local_addr()` ([#3093]). 2688- net: add pid to `UCred` ([#2633]). 2689 2690[#2633]: https://github.com/tokio-rs/tokio/pull/2633 2691[#3074]: https://github.com/tokio-rs/tokio/pull/3074 2692[#3083]: https://github.com/tokio-rs/tokio/pull/3083 2693[#3089]: https://github.com/tokio-rs/tokio/pull/3089 2694[#3093]: https://github.com/tokio-rs/tokio/pull/3093 2695 2696# 0.3.2 (October 27, 2020) 2697 2698Adds `AsyncFd` as a replacement for v0.2's `PollEvented`. 2699 2700### Fixed 2701 2702- io: fix a potential deadlock when shutting down the I/O driver ([#2903]). 2703- sync: `RwLockWriteGuard::downgrade()` bug ([#2957]). 2704 2705### Added 2706 2707- io: `AsyncFd` for receiving readiness events on raw FDs ([#2903]). 2708- net: `poll_*` function on `UdpSocket` ([#2981]). 2709- net: `UdpSocket::take_error()` ([#3051]). 2710- sync: `oneshot::Sender::poll_closed()` ([#3032]). 2711 2712[#2903]: https://github.com/tokio-rs/tokio/pull/2903 2713[#2957]: https://github.com/tokio-rs/tokio/pull/2957 2714[#2981]: https://github.com/tokio-rs/tokio/pull/2981 2715[#3032]: https://github.com/tokio-rs/tokio/pull/3032 2716[#3051]: https://github.com/tokio-rs/tokio/pull/3051 2717 2718# 0.3.1 (October 21, 2020) 2719 2720This release fixes an use-after-free in the IO driver. Additionally, the `read_buf` 2721and `write_buf` methods have been added back to the IO traits, as the bytes crate 2722is now on track to reach version 1.0 together with Tokio. 2723 2724### Fixed 2725 2726- net: fix use-after-free ([#3019]). 2727- fs: ensure buffered data is written on shutdown ([#3009]). 2728 2729### Added 2730 2731- io: `copy_buf()` ([#2884]). 2732- io: `AsyncReadExt::read_buf()`, `AsyncReadExt::write_buf()` for working with 2733 `Buf`/`BufMut` ([#3003]). 2734- rt: `Runtime::spawn_blocking()` ([#2980]). 2735- sync: `watch::Sender::is_closed()` ([#2991]). 2736 2737[#2884]: https://github.com/tokio-rs/tokio/pull/2884 2738[#2980]: https://github.com/tokio-rs/tokio/pull/2980 2739[#2991]: https://github.com/tokio-rs/tokio/pull/2991 2740[#3003]: https://github.com/tokio-rs/tokio/pull/3003 2741[#3009]: https://github.com/tokio-rs/tokio/pull/3009 2742[#3019]: https://github.com/tokio-rs/tokio/pull/3019 2743 2744# 0.3.0 (October 15, 2020) 2745 2746This represents a 1.0 beta release. APIs are polished and future-proofed. APIs 2747not included for 1.0 stabilization have been removed. 2748 2749Biggest changes are: 2750 2751- I/O driver internal rewrite. The windows implementation includes significant 2752 changes. 2753- Runtime API is polished, especially with how it interacts with feature flag 2754 combinations. 2755- Feature flags are simplified 2756 - `rt-core` and `rt-util` are combined to `rt` 2757 - `rt-threaded` is renamed to `rt-multi-thread` to match builder API 2758 - `tcp`, `udp`, `uds`, `dns` are combined to `net`. 2759 - `parking_lot` is included with `full` 2760 2761### Changes 2762 2763- meta: Minimum supported Rust version is now 1.45. 2764- io: `AsyncRead` trait now takes `ReadBuf` in order to safely handle reading 2765 into uninitialized memory ([#2758]). 2766- io: Internal I/O driver storage is now able to compact ([#2757]). 2767- rt: `Runtime::block_on` now takes `&self` ([#2782]). 2768- sync: `watch` reworked to decouple receiving a change notification from 2769 receiving the value ([#2814], [#2806]). 2770- sync: `Notify::notify` is renamed to `notify_one` ([#2822]). 2771- process: `Child::kill` is now an `async fn` that cleans zombies ([#2823]). 2772- sync: use `const fn` constructors as possible ([#2833], [#2790]) 2773- signal: reduce cross-thread notification ([#2835]). 2774- net: tcp,udp,uds types support operations with `&self` ([#2828], [#2919], [#2934]). 2775- sync: blocking `mpsc` channel supports `send` with `&self` ([#2861]). 2776- time: rename `delay_for` and `delay_until` to `sleep` and `sleep_until` ([#2826]). 2777- io: upgrade to `mio` 0.7 ([#2893]). 2778- io: `AsyncSeek` trait is tweaked ([#2885]). 2779- fs: `File` operations take `&self` ([#2930]). 2780- rt: runtime API, and `#[tokio::main]` macro polish ([#2876]) 2781- rt: `Runtime::enter` uses an RAII guard instead of a closure ([#2954]). 2782- net: the `from_std` function on all sockets no longer sets socket into non-blocking mode ([#2893]) 2783 2784### Added 2785 2786- sync: `map` function to lock guards ([#2445]). 2787- sync: `blocking_recv` and `blocking_send` fns to `mpsc` for use outside of Tokio ([#2685]). 2788- rt: `Builder::thread_name_fn` for configuring thread names ([#1921]). 2789- fs: impl `FromRawFd` and `FromRawHandle` for `File` ([#2792]). 2790- process: `Child::wait` and `Child::try_wait` ([#2796]). 2791- rt: support configuring thread keep-alive duration ([#2809]). 2792- rt: `task::JoinHandle::abort` forcibly cancels a spawned task ([#2474]). 2793- sync: `RwLock` write guard to read guard downgrading ([#2733]). 2794- net: add `poll_*` functions that take `&self` to all net types ([#2845]) 2795- sync: `get_mut()` for `Mutex`, `RwLock` ([#2856]). 2796- sync: `mpsc::Sender::closed()` waits for `Receiver` half to close ([#2840]). 2797- sync: `mpsc::Sender::is_closed()` returns true if `Receiver` half is closed ([#2726]). 2798- stream: `iter` and `iter_mut` to `StreamMap` ([#2890]). 2799- net: implement `AsRawSocket` on windows ([#2911]). 2800- net: `TcpSocket` creates a socket without binding or listening ([#2920]). 2801 2802### Removed 2803 2804- io: vectored ops are removed from `AsyncRead`, `AsyncWrite` traits ([#2882]). 2805- io: `mio` is removed from the public API. `PollEvented` and` Registration` are 2806 removed ([#2893]). 2807- io: remove `bytes` from public API. `Buf` and `BufMut` implementation are 2808 removed ([#2908]). 2809- time: `DelayQueue` is moved to `tokio-util` ([#2897]). 2810 2811### Fixed 2812 2813- io: `stdout` and `stderr` buffering on windows ([#2734]). 2814 2815[#1921]: https://github.com/tokio-rs/tokio/pull/1921 2816[#2445]: https://github.com/tokio-rs/tokio/pull/2445 2817[#2474]: https://github.com/tokio-rs/tokio/pull/2474 2818[#2685]: https://github.com/tokio-rs/tokio/pull/2685 2819[#2726]: https://github.com/tokio-rs/tokio/pull/2726 2820[#2733]: https://github.com/tokio-rs/tokio/pull/2733 2821[#2734]: https://github.com/tokio-rs/tokio/pull/2734 2822[#2757]: https://github.com/tokio-rs/tokio/pull/2757 2823[#2758]: https://github.com/tokio-rs/tokio/pull/2758 2824[#2782]: https://github.com/tokio-rs/tokio/pull/2782 2825[#2790]: https://github.com/tokio-rs/tokio/pull/2790 2826[#2792]: https://github.com/tokio-rs/tokio/pull/2792 2827[#2796]: https://github.com/tokio-rs/tokio/pull/2796 2828[#2806]: https://github.com/tokio-rs/tokio/pull/2806 2829[#2809]: https://github.com/tokio-rs/tokio/pull/2809 2830[#2814]: https://github.com/tokio-rs/tokio/pull/2814 2831[#2822]: https://github.com/tokio-rs/tokio/pull/2822 2832[#2823]: https://github.com/tokio-rs/tokio/pull/2823 2833[#2826]: https://github.com/tokio-rs/tokio/pull/2826 2834[#2828]: https://github.com/tokio-rs/tokio/pull/2828 2835[#2833]: https://github.com/tokio-rs/tokio/pull/2833 2836[#2835]: https://github.com/tokio-rs/tokio/pull/2835 2837[#2840]: https://github.com/tokio-rs/tokio/pull/2840 2838[#2845]: https://github.com/tokio-rs/tokio/pull/2845 2839[#2856]: https://github.com/tokio-rs/tokio/pull/2856 2840[#2861]: https://github.com/tokio-rs/tokio/pull/2861 2841[#2876]: https://github.com/tokio-rs/tokio/pull/2876 2842[#2882]: https://github.com/tokio-rs/tokio/pull/2882 2843[#2885]: https://github.com/tokio-rs/tokio/pull/2885 2844[#2890]: https://github.com/tokio-rs/tokio/pull/2890 2845[#2893]: https://github.com/tokio-rs/tokio/pull/2893 2846[#2897]: https://github.com/tokio-rs/tokio/pull/2897 2847[#2908]: https://github.com/tokio-rs/tokio/pull/2908 2848[#2911]: https://github.com/tokio-rs/tokio/pull/2911 2849[#2919]: https://github.com/tokio-rs/tokio/pull/2919 2850[#2920]: https://github.com/tokio-rs/tokio/pull/2920 2851[#2930]: https://github.com/tokio-rs/tokio/pull/2930 2852[#2934]: https://github.com/tokio-rs/tokio/pull/2934 2853[#2954]: https://github.com/tokio-rs/tokio/pull/2954 2854 2855# 0.2.22 (July 21, 2020) 2856 2857### Fixes 2858 2859- docs: misc improvements ([#2572], [#2658], [#2663], [#2656], [#2647], [#2630], [#2487], [#2621], 2860 [#2624], [#2600], [#2623], [#2622], [#2577], [#2569], [#2589], [#2575], [#2540], [#2564], [#2567], 2861 [#2520], [#2521], [#2493]) 2862- rt: allow calls to `block_on` inside calls to `block_in_place` that are 2863 themselves inside `block_on` ([#2645]) 2864- net: fix non-portable behavior when dropping `TcpStream` `OwnedWriteHalf` ([#2597]) 2865- io: improve stack usage by allocating large buffers on directly on the heap 2866 ([#2634]) 2867- io: fix unsound pin projection in `AsyncReadExt::read_buf` and 2868 `AsyncWriteExt::write_buf` ([#2612]) 2869- io: fix unnecessary zeroing for `AsyncRead` implementors ([#2525]) 2870- io: Fix `BufReader` not correctly forwarding `poll_write_buf` ([#2654]) 2871- io: fix panic in `AsyncReadExt::read_line` ([#2541]) 2872 2873### Changes 2874 2875- coop: returning `Poll::Pending` no longer decrements the task budget ([#2549]) 2876 2877### Added 2878 2879- io: little-endian variants of `AsyncReadExt` and `AsyncWriteExt` methods 2880 ([#1915]) 2881- task: add [`tracing`] instrumentation to spawned tasks ([#2655]) 2882- sync: allow unsized types in `Mutex` and `RwLock` (via `default` constructors) 2883 ([#2615]) 2884- net: add `ToSocketAddrs` implementation for `&[SocketAddr]` ([#2604]) 2885- fs: add `OpenOptionsExt` for `OpenOptions` ([#2515]) 2886- fs: add `DirBuilder` ([#2524]) 2887 2888[`tracing`]: https://crates.io/crates/tracing 2889[#1915]: https://github.com/tokio-rs/tokio/pull/1915 2890[#2487]: https://github.com/tokio-rs/tokio/pull/2487 2891[#2493]: https://github.com/tokio-rs/tokio/pull/2493 2892[#2515]: https://github.com/tokio-rs/tokio/pull/2515 2893[#2520]: https://github.com/tokio-rs/tokio/pull/2520 2894[#2521]: https://github.com/tokio-rs/tokio/pull/2521 2895[#2524]: https://github.com/tokio-rs/tokio/pull/2524 2896[#2525]: https://github.com/tokio-rs/tokio/pull/2525 2897[#2540]: https://github.com/tokio-rs/tokio/pull/2540 2898[#2541]: https://github.com/tokio-rs/tokio/pull/2541 2899[#2549]: https://github.com/tokio-rs/tokio/pull/2549 2900[#2564]: https://github.com/tokio-rs/tokio/pull/2564 2901[#2567]: https://github.com/tokio-rs/tokio/pull/2567 2902[#2569]: https://github.com/tokio-rs/tokio/pull/2569 2903[#2572]: https://github.com/tokio-rs/tokio/pull/2572 2904[#2575]: https://github.com/tokio-rs/tokio/pull/2575 2905[#2577]: https://github.com/tokio-rs/tokio/pull/2577 2906[#2589]: https://github.com/tokio-rs/tokio/pull/2589 2907[#2597]: https://github.com/tokio-rs/tokio/pull/2597 2908[#2600]: https://github.com/tokio-rs/tokio/pull/2600 2909[#2604]: https://github.com/tokio-rs/tokio/pull/2604 2910[#2612]: https://github.com/tokio-rs/tokio/pull/2612 2911[#2615]: https://github.com/tokio-rs/tokio/pull/2615 2912[#2621]: https://github.com/tokio-rs/tokio/pull/2621 2913[#2622]: https://github.com/tokio-rs/tokio/pull/2622 2914[#2623]: https://github.com/tokio-rs/tokio/pull/2623 2915[#2624]: https://github.com/tokio-rs/tokio/pull/2624 2916[#2630]: https://github.com/tokio-rs/tokio/pull/2630 2917[#2634]: https://github.com/tokio-rs/tokio/pull/2634 2918[#2645]: https://github.com/tokio-rs/tokio/pull/2645 2919[#2647]: https://github.com/tokio-rs/tokio/pull/2647 2920[#2654]: https://github.com/tokio-rs/tokio/pull/2654 2921[#2655]: https://github.com/tokio-rs/tokio/pull/2655 2922[#2656]: https://github.com/tokio-rs/tokio/pull/2656 2923[#2658]: https://github.com/tokio-rs/tokio/pull/2658 2924[#2663]: https://github.com/tokio-rs/tokio/pull/2663 2925 2926# 0.2.21 (May 13, 2020) 2927 2928### Fixes 2929 2930- macros: disambiguate built-in `#[test]` attribute in macro expansion ([#2503]) 2931- rt: `LocalSet` and task budgeting ([#2462]). 2932- rt: task budgeting with `block_in_place` ([#2502]). 2933- sync: release `broadcast` channel memory without sending a value ([#2509]). 2934- time: notify when resetting a `Delay` to a time in the past ([#2290]) 2935 2936### Added 2937 2938- io: `get_mut`, `get_ref`, and `into_inner` to `Lines` ([#2450]). 2939- io: `mio::Ready` argument to `PollEvented` ([#2419]). 2940- os: illumos support ([#2486]). 2941- rt: `Handle::spawn_blocking` ([#2501]). 2942- sync: `OwnedMutexGuard` for `Arc<Mutex<T>>` ([#2455]). 2943 2944[#2290]: https://github.com/tokio-rs/tokio/pull/2290 2945[#2419]: https://github.com/tokio-rs/tokio/pull/2419 2946[#2450]: https://github.com/tokio-rs/tokio/pull/2450 2947[#2455]: https://github.com/tokio-rs/tokio/pull/2455 2948[#2462]: https://github.com/tokio-rs/tokio/pull/2462 2949[#2486]: https://github.com/tokio-rs/tokio/pull/2486 2950[#2501]: https://github.com/tokio-rs/tokio/pull/2501 2951[#2502]: https://github.com/tokio-rs/tokio/pull/2502 2952[#2503]: https://github.com/tokio-rs/tokio/pull/2503 2953[#2509]: https://github.com/tokio-rs/tokio/pull/2509 2954 2955# 0.2.20 (April 28, 2020) 2956 2957### Fixes 2958 2959- sync: `broadcast` closing the channel no longer requires capacity ([#2448]). 2960- rt: regression when configuring runtime with `max_threads` less than number of CPUs ([#2457]). 2961 2962[#2448]: https://github.com/tokio-rs/tokio/pull/2448 2963[#2457]: https://github.com/tokio-rs/tokio/pull/2457 2964 2965# 0.2.19 (April 24, 2020) 2966 2967### Fixes 2968 2969- docs: misc improvements ([#2400], [#2405], [#2414], [#2420], [#2423], [#2426], [#2427], [#2434], [#2436], [#2440]). 2970- rt: support `block_in_place` in more contexts ([#2409], [#2410]). 2971- stream: no panic in `merge()` and `chain()` when using `size_hint()` ([#2430]). 2972- task: include visibility modifier when defining a task-local ([#2416]). 2973 2974### Added 2975 2976- rt: `runtime::Handle::block_on` ([#2437]). 2977- sync: owned `Semaphore` permit ([#2421]). 2978- tcp: owned split ([#2270]). 2979 2980[#2270]: https://github.com/tokio-rs/tokio/pull/2270 2981[#2400]: https://github.com/tokio-rs/tokio/pull/2400 2982[#2405]: https://github.com/tokio-rs/tokio/pull/2405 2983[#2409]: https://github.com/tokio-rs/tokio/pull/2409 2984[#2410]: https://github.com/tokio-rs/tokio/pull/2410 2985[#2414]: https://github.com/tokio-rs/tokio/pull/2414 2986[#2416]: https://github.com/tokio-rs/tokio/pull/2416 2987[#2420]: https://github.com/tokio-rs/tokio/pull/2420 2988[#2421]: https://github.com/tokio-rs/tokio/pull/2421 2989[#2423]: https://github.com/tokio-rs/tokio/pull/2423 2990[#2426]: https://github.com/tokio-rs/tokio/pull/2426 2991[#2427]: https://github.com/tokio-rs/tokio/pull/2427 2992[#2430]: https://github.com/tokio-rs/tokio/pull/2430 2993[#2434]: https://github.com/tokio-rs/tokio/pull/2434 2994[#2436]: https://github.com/tokio-rs/tokio/pull/2436 2995[#2437]: https://github.com/tokio-rs/tokio/pull/2437 2996[#2440]: https://github.com/tokio-rs/tokio/pull/2440 2997 2998# 0.2.18 (April 12, 2020) 2999 3000### Fixes 3001 3002- task: `LocalSet` was incorrectly marked as `Send` ([#2398]) 3003- io: correctly report `WriteZero` failure in `write_int` ([#2334]) 3004 3005[#2334]: https://github.com/tokio-rs/tokio/pull/2334 3006[#2398]: https://github.com/tokio-rs/tokio/pull/2398 3007 3008# 0.2.17 (April 9, 2020) 3009 3010### Fixes 3011 3012- rt: bug in work-stealing queue ([#2387]) 3013 3014### Changes 3015 3016- rt: threadpool uses logical CPU count instead of physical by default ([#2391]) 3017 3018[#2387]: https://github.com/tokio-rs/tokio/pull/2387 3019[#2391]: https://github.com/tokio-rs/tokio/pull/2391 3020 3021# 0.2.16 (April 3, 2020) 3022 3023### Fixes 3024 3025- sync: fix a regression where `Mutex`, `Semaphore`, and `RwLock` futures no 3026 longer implement `Sync` ([#2375]) 3027- fs: fix `fs::copy` not copying file permissions ([#2354]) 3028 3029### Added 3030 3031- time: added `deadline` method to `delay_queue::Expired` ([#2300]) 3032- io: added `StreamReader` ([#2052]) 3033 3034[#2052]: https://github.com/tokio-rs/tokio/pull/2052 3035[#2300]: https://github.com/tokio-rs/tokio/pull/2300 3036[#2354]: https://github.com/tokio-rs/tokio/pull/2354 3037[#2375]: https://github.com/tokio-rs/tokio/pull/2375 3038 3039# 0.2.15 (April 2, 2020) 3040 3041### Fixes 3042 3043- rt: fix queue regression ([#2362]). 3044 3045### Added 3046 3047- sync: Add disarm to `mpsc::Sender` ([#2358]). 3048 3049[#2358]: https://github.com/tokio-rs/tokio/pull/2358 3050[#2362]: https://github.com/tokio-rs/tokio/pull/2362 3051 3052# 0.2.14 (April 1, 2020) 3053 3054### Fixes 3055 3056- rt: concurrency bug in scheduler ([#2273]). 3057- rt: concurrency bug with shell runtime ([#2333]). 3058- test-util: correct pause/resume of time ([#2253]). 3059- time: `DelayQueue` correct wakeup after `insert` ([#2285]). 3060 3061### Added 3062 3063- io: impl `RawFd`, `AsRawHandle` for std io types ([#2335]). 3064- rt: automatic cooperative task yielding ([#2160], [#2343], [#2349]). 3065- sync: `RwLock::into_inner` ([#2321]). 3066 3067### Changed 3068 3069- sync: semaphore, mutex internals rewritten to avoid allocations ([#2325]). 3070 3071[#2160]: https://github.com/tokio-rs/tokio/pull/2160 3072[#2253]: https://github.com/tokio-rs/tokio/pull/2253 3073[#2273]: https://github.com/tokio-rs/tokio/pull/2273 3074[#2285]: https://github.com/tokio-rs/tokio/pull/2285 3075[#2321]: https://github.com/tokio-rs/tokio/pull/2321 3076[#2325]: https://github.com/tokio-rs/tokio/pull/2325 3077[#2333]: https://github.com/tokio-rs/tokio/pull/2333 3078[#2335]: https://github.com/tokio-rs/tokio/pull/2335 3079[#2343]: https://github.com/tokio-rs/tokio/pull/2343 3080[#2349]: https://github.com/tokio-rs/tokio/pull/2349 3081 3082# 0.2.13 (February 28, 2020) 3083 3084### Fixes 3085 3086- macros: unresolved import in `pin!` ([#2281]). 3087 3088[#2281]: https://github.com/tokio-rs/tokio/pull/2281 3089 3090# 0.2.12 (February 27, 2020) 3091 3092### Fixes 3093 3094- net: `UnixStream::poll_shutdown` should call `shutdown(Write)` ([#2245]). 3095- process: Wake up read and write on `EPOLLERR` ([#2218]). 3096- rt: potential deadlock when using `block_in_place` and shutting down the 3097 runtime ([#2119]). 3098- rt: only detect number of CPUs if `core_threads` not specified ([#2238]). 3099- sync: reduce `watch::Receiver` struct size ([#2191]). 3100- time: succeed when setting delay of `$MAX-1` ([#2184]). 3101- time: avoid having to poll `DelayQueue` after inserting new delay ([#2217]). 3102 3103### Added 3104 3105- macros: `pin!` variant that assigns to identifier and pins ([#2274]). 3106- net: impl `Stream` for `Listener` types ([#2275]). 3107- rt: `Runtime::shutdown_timeout` waits for runtime to shutdown for specified 3108 duration ([#2186]). 3109- stream: `StreamMap` merges streams and can insert / remove streams at 3110 runtime ([#2185]). 3111- stream: `StreamExt::skip()` skips a fixed number of items ([#2204]). 3112- stream: `StreamExt::skip_while()` skips items based on a predicate ([#2205]). 3113- sync: `Notify` provides basic `async` / `await` task notification ([#2210]). 3114- sync: `Mutex::into_inner` retrieves guarded data ([#2250]). 3115- sync: `mpsc::Sender::send_timeout` sends, waiting for up to specified duration 3116 for channel capacity ([#2227]). 3117- time: impl `Ord` and `Hash` for `Instant` ([#2239]). 3118 3119[#2119]: https://github.com/tokio-rs/tokio/pull/2119 3120[#2184]: https://github.com/tokio-rs/tokio/pull/2184 3121[#2185]: https://github.com/tokio-rs/tokio/pull/2185 3122[#2186]: https://github.com/tokio-rs/tokio/pull/2186 3123[#2191]: https://github.com/tokio-rs/tokio/pull/2191 3124[#2204]: https://github.com/tokio-rs/tokio/pull/2204 3125[#2205]: https://github.com/tokio-rs/tokio/pull/2205 3126[#2210]: https://github.com/tokio-rs/tokio/pull/2210 3127[#2217]: https://github.com/tokio-rs/tokio/pull/2217 3128[#2218]: https://github.com/tokio-rs/tokio/pull/2218 3129[#2227]: https://github.com/tokio-rs/tokio/pull/2227 3130[#2238]: https://github.com/tokio-rs/tokio/pull/2238 3131[#2239]: https://github.com/tokio-rs/tokio/pull/2239 3132[#2245]: https://github.com/tokio-rs/tokio/pull/2245 3133[#2250]: https://github.com/tokio-rs/tokio/pull/2250 3134[#2274]: https://github.com/tokio-rs/tokio/pull/2274 3135[#2275]: https://github.com/tokio-rs/tokio/pull/2275 3136 3137# 0.2.11 (January 27, 2020) 3138 3139### Fixes 3140 3141- docs: misc fixes and tweaks ([#2155], [#2103], [#2027], [#2167], [#2175]). 3142- macros: handle generics in `#[tokio::main]` method ([#2177]). 3143- sync: `broadcast` potential lost notifications ([#2135]). 3144- rt: improve "no runtime" panic messages ([#2145]). 3145 3146### Added 3147 3148- optional support for using `parking_lot` internally ([#2164]). 3149- fs: `fs::copy`, an async version of `std::fs::copy` ([#2079]). 3150- macros: `select!` waits for the first branch to complete ([#2152]). 3151- macros: `join!` waits for all branches to complete ([#2158]). 3152- macros: `try_join!` waits for all branches to complete or the first error ([#2169]). 3153- macros: `pin!` pins a value to the stack ([#2163]). 3154- net: `ReadHalf::poll()` and `ReadHalf::poll_peak` ([#2151]) 3155- stream: `StreamExt::timeout()` sets a per-item max duration ([#2149]). 3156- stream: `StreamExt::fold()` applies a function, producing a single value. ([#2122]). 3157- sync: impl `Eq`, `PartialEq` for `oneshot::RecvError` ([#2168]). 3158- task: methods for inspecting the `JoinError` cause ([#2051]). 3159 3160[#2027]: https://github.com/tokio-rs/tokio/pull/2027 3161[#2051]: https://github.com/tokio-rs/tokio/pull/2051 3162[#2079]: https://github.com/tokio-rs/tokio/pull/2079 3163[#2103]: https://github.com/tokio-rs/tokio/pull/2103 3164[#2122]: https://github.com/tokio-rs/tokio/pull/2122 3165[#2135]: https://github.com/tokio-rs/tokio/pull/2135 3166[#2145]: https://github.com/tokio-rs/tokio/pull/2145 3167[#2149]: https://github.com/tokio-rs/tokio/pull/2149 3168[#2151]: https://github.com/tokio-rs/tokio/pull/2151 3169[#2152]: https://github.com/tokio-rs/tokio/pull/2152 3170[#2155]: https://github.com/tokio-rs/tokio/pull/2155 3171[#2158]: https://github.com/tokio-rs/tokio/pull/2158 3172[#2163]: https://github.com/tokio-rs/tokio/pull/2163 3173[#2164]: https://github.com/tokio-rs/tokio/pull/2164 3174[#2167]: https://github.com/tokio-rs/tokio/pull/2167 3175[#2168]: https://github.com/tokio-rs/tokio/pull/2168 3176[#2169]: https://github.com/tokio-rs/tokio/pull/2169 3177[#2175]: https://github.com/tokio-rs/tokio/pull/2175 3178[#2177]: https://github.com/tokio-rs/tokio/pull/2177 3179 3180# 0.2.10 (January 21, 2020) 3181 3182### Fixes 3183 3184- `#[tokio::main]` when `rt-core` feature flag is not enabled ([#2139]). 3185- remove `AsyncBufRead` from `BufStream` impl block ([#2108]). 3186- potential undefined behavior when implementing `AsyncRead` incorrectly ([#2030]). 3187 3188### Added 3189 3190- `BufStream::with_capacity` ([#2125]). 3191- impl `From` and `Default` for `RwLock` ([#2089]). 3192- `io::ReadHalf::is_pair_of` checks if provided `WriteHalf` is for the same 3193 underlying object ([#1762], [#2144]). 3194- `runtime::Handle::try_current()` returns a handle to the current runtime ([#2118]). 3195- `stream::empty()` returns an immediately ready empty stream ([#2092]). 3196- `stream::once(val)` returns a stream that yields a single value: `val` ([#2094]). 3197- `stream::pending()` returns a stream that never becomes ready ([#2092]). 3198- `StreamExt::chain()` sequences a second stream after the first completes ([#2093]). 3199- `StreamExt::collect()` transform a stream into a collection ([#2109]). 3200- `StreamExt::fuse` ends the stream after the first `None` ([#2085]). 3201- `StreamExt::merge` combines two streams, yielding values as they become ready ([#2091]). 3202- Task-local storage ([#2126]). 3203 3204[#1762]: https://github.com/tokio-rs/tokio/pull/1762 3205[#2030]: https://github.com/tokio-rs/tokio/pull/2030 3206[#2085]: https://github.com/tokio-rs/tokio/pull/2085 3207[#2089]: https://github.com/tokio-rs/tokio/pull/2089 3208[#2091]: https://github.com/tokio-rs/tokio/pull/2091 3209[#2092]: https://github.com/tokio-rs/tokio/pull/2092 3210[#2093]: https://github.com/tokio-rs/tokio/pull/2093 3211[#2094]: https://github.com/tokio-rs/tokio/pull/2094 3212[#2108]: https://github.com/tokio-rs/tokio/pull/2108 3213[#2109]: https://github.com/tokio-rs/tokio/pull/2109 3214[#2118]: https://github.com/tokio-rs/tokio/pull/2118 3215[#2125]: https://github.com/tokio-rs/tokio/pull/2125 3216[#2126]: https://github.com/tokio-rs/tokio/pull/2126 3217[#2139]: https://github.com/tokio-rs/tokio/pull/2139 3218[#2144]: https://github.com/tokio-rs/tokio/pull/2144 3219 3220# 0.2.9 (January 9, 2020) 3221 3222### Fixes 3223 3224- `AsyncSeek` impl for `File` ([#1986]). 3225- rt: shutdown deadlock in `threaded_scheduler` ([#2074], [#2082]). 3226- rt: memory ordering when dropping `JoinHandle` ([#2044]). 3227- docs: misc API documentation fixes and improvements. 3228 3229[#1986]: https://github.com/tokio-rs/tokio/pull/1986 3230[#2044]: https://github.com/tokio-rs/tokio/pull/2044 3231[#2074]: https://github.com/tokio-rs/tokio/pull/2074 3232[#2082]: https://github.com/tokio-rs/tokio/pull/2082 3233 3234# 0.2.8 (January 7, 2020) 3235 3236### Fixes 3237 3238- depend on new version of `tokio-macros`. 3239 3240# 0.2.7 (January 7, 2020) 3241 3242### Fixes 3243 3244- potential deadlock when dropping `basic_scheduler` Runtime. 3245- calling `spawn_blocking` from within a `spawn_blocking` ([#2006]). 3246- storing a `Runtime` instance in a thread-local ([#2011]). 3247- miscellaneous documentation fixes. 3248- rt: fix `Waker::will_wake` to return true when tasks match ([#2045]). 3249- test-util: `time::advance` runs pending tasks before changing the time ([#2059]). 3250 3251### Added 3252 3253- `net::lookup_host` maps a `T: ToSocketAddrs` to a stream of `SocketAddrs` ([#1870]). 3254- `process::Child` fields are made public to match `std` ([#2014]). 3255- impl `Stream` for `sync::broadcast::Receiver` ([#2012]). 3256- `sync::RwLock` provides an asynchronous read-write lock ([#1699]). 3257- `runtime::Handle::current` returns the handle for the current runtime ([#2040]). 3258- `StreamExt::filter` filters stream values according to a predicate ([#2001]). 3259- `StreamExt::filter_map` simultaneously filter and map stream values ([#2001]). 3260- `StreamExt::try_next` convenience for streams of `Result<T, E>` ([#2005]). 3261- `StreamExt::take` limits a stream to a specified number of values ([#2025]). 3262- `StreamExt::take_while` limits a stream based on a predicate ([#2029]). 3263- `StreamExt::all` tests if every element of the stream matches a predicate ([#2035]). 3264- `StreamExt::any` tests if any element of the stream matches a predicate ([#2034]). 3265- `task::LocalSet.await` runs spawned tasks until the set is idle ([#1971]). 3266- `time::DelayQueue::len` returns the number entries in the queue ([#1755]). 3267- expose runtime options from the `#[tokio::main]` and `#[tokio::test]` ([#2022]). 3268 3269[#1699]: https://github.com/tokio-rs/tokio/pull/1699 3270[#1755]: https://github.com/tokio-rs/tokio/pull/1755 3271[#1870]: https://github.com/tokio-rs/tokio/pull/1870 3272[#1971]: https://github.com/tokio-rs/tokio/pull/1971 3273[#2001]: https://github.com/tokio-rs/tokio/pull/2001 3274[#2005]: https://github.com/tokio-rs/tokio/pull/2005 3275[#2006]: https://github.com/tokio-rs/tokio/pull/2006 3276[#2011]: https://github.com/tokio-rs/tokio/pull/2011 3277[#2012]: https://github.com/tokio-rs/tokio/pull/2012 3278[#2014]: https://github.com/tokio-rs/tokio/pull/2014 3279[#2022]: https://github.com/tokio-rs/tokio/pull/2022 3280[#2025]: https://github.com/tokio-rs/tokio/pull/2025 3281[#2029]: https://github.com/tokio-rs/tokio/pull/2029 3282[#2034]: https://github.com/tokio-rs/tokio/pull/2034 3283[#2035]: https://github.com/tokio-rs/tokio/pull/2035 3284[#2040]: https://github.com/tokio-rs/tokio/pull/2040 3285[#2045]: https://github.com/tokio-rs/tokio/pull/2045 3286[#2059]: https://github.com/tokio-rs/tokio/pull/2059 3287 3288# 0.2.6 (December 19, 2019) 3289 3290### Fixes 3291 3292- `fs::File::seek` API regression ([#1991]). 3293 3294[#1991]: https://github.com/tokio-rs/tokio/pull/1991 3295 3296# 0.2.5 (December 18, 2019) 3297 3298### Added 3299 3300- `io::AsyncSeek` trait ([#1924]). 3301- `Mutex::try_lock` ([#1939]) 3302- `mpsc::Receiver::try_recv` and `mpsc::UnboundedReceiver::try_recv` ([#1939]). 3303- `writev` support for `TcpStream` ([#1956]). 3304- `time::throttle` for throttling streams ([#1949]). 3305- implement `Stream` for `time::DelayQueue` ([#1975]). 3306- `sync::broadcast` provides a fan-out channel ([#1943]). 3307- `sync::Semaphore` provides an async semaphore ([#1973]). 3308- `stream::StreamExt` provides stream utilities ([#1962]). 3309 3310### Fixes 3311 3312- deadlock risk while shutting down the runtime ([#1972]). 3313- panic while shutting down the runtime ([#1978]). 3314- `sync::MutexGuard` debug output ([#1961]). 3315- misc doc improvements ([#1933], [#1934], [#1940], [#1942]). 3316 3317### Changes 3318 3319- runtime threads are configured with `runtime::Builder::core_threads` and 3320 `runtime::Builder::max_threads`. `runtime::Builder::num_threads` is 3321 deprecated ([#1977]). 3322 3323[#1924]: https://github.com/tokio-rs/tokio/pull/1924 3324[#1933]: https://github.com/tokio-rs/tokio/pull/1933 3325[#1934]: https://github.com/tokio-rs/tokio/pull/1934 3326[#1939]: https://github.com/tokio-rs/tokio/pull/1939 3327[#1940]: https://github.com/tokio-rs/tokio/pull/1940 3328[#1942]: https://github.com/tokio-rs/tokio/pull/1942 3329[#1943]: https://github.com/tokio-rs/tokio/pull/1943 3330[#1949]: https://github.com/tokio-rs/tokio/pull/1949 3331[#1956]: https://github.com/tokio-rs/tokio/pull/1956 3332[#1961]: https://github.com/tokio-rs/tokio/pull/1961 3333[#1962]: https://github.com/tokio-rs/tokio/pull/1962 3334[#1972]: https://github.com/tokio-rs/tokio/pull/1972 3335[#1973]: https://github.com/tokio-rs/tokio/pull/1973 3336[#1975]: https://github.com/tokio-rs/tokio/pull/1975 3337[#1977]: https://github.com/tokio-rs/tokio/pull/1977 3338[#1978]: https://github.com/tokio-rs/tokio/pull/1978 3339 3340# 0.2.4 (December 6, 2019) 3341 3342### Fixes 3343 3344- `sync::Mutex` deadlock when `lock()` future is dropped early ([#1898]). 3345 3346[#1898]: https://github.com/tokio-rs/tokio/pull/1898 3347 3348# 0.2.3 (December 6, 2019) 3349 3350### Added 3351 3352- read / write integers using `AsyncReadExt` and `AsyncWriteExt` ([#1863]). 3353- `read_buf` / `write_buf` for reading / writing `Buf` / `BufMut` ([#1881]). 3354- `TcpStream::poll_peek` - pollable API for performing TCP peek ([#1864]). 3355- `sync::oneshot::error::TryRecvError` provides variants to detect the error 3356 kind ([#1874]). 3357- `LocalSet::block_on` accepts `!'static` task ([#1882]). 3358- `task::JoinError` is now `Sync` ([#1888]). 3359- impl conversions between `tokio::time::Instant` and 3360 `std::time::Instant` ([#1904]). 3361 3362### Fixes 3363 3364- calling `spawn_blocking` after runtime shutdown ([#1875]). 3365- `LocalSet` drop infinite loop ([#1892]). 3366- `LocalSet` hang under load ([#1905]). 3367- improved documentation ([#1865], [#1866], [#1868], [#1874], [#1876], [#1911]). 3368 3369[#1863]: https://github.com/tokio-rs/tokio/pull/1863 3370[#1864]: https://github.com/tokio-rs/tokio/pull/1864 3371[#1865]: https://github.com/tokio-rs/tokio/pull/1865 3372[#1866]: https://github.com/tokio-rs/tokio/pull/1866 3373[#1868]: https://github.com/tokio-rs/tokio/pull/1868 3374[#1874]: https://github.com/tokio-rs/tokio/pull/1874 3375[#1875]: https://github.com/tokio-rs/tokio/pull/1875 3376[#1876]: https://github.com/tokio-rs/tokio/pull/1876 3377[#1881]: https://github.com/tokio-rs/tokio/pull/1881 3378[#1882]: https://github.com/tokio-rs/tokio/pull/1882 3379[#1888]: https://github.com/tokio-rs/tokio/pull/1888 3380[#1892]: https://github.com/tokio-rs/tokio/pull/1892 3381[#1904]: https://github.com/tokio-rs/tokio/pull/1904 3382[#1905]: https://github.com/tokio-rs/tokio/pull/1905 3383[#1911]: https://github.com/tokio-rs/tokio/pull/1911 3384 3385# 0.2.2 (November 29, 2019) 3386 3387### Fixes 3388 3389- scheduling with `basic_scheduler` ([#1861]). 3390- update `spawn` panic message to specify that a task scheduler is required ([#1839]). 3391- API docs example for `runtime::Builder` to include a task scheduler ([#1841]). 3392- general documentation ([#1834]). 3393- building on illumos/solaris ([#1772]). 3394- panic when dropping `LocalSet` ([#1843]). 3395- API docs mention the required Cargo features for `Builder::{basic, threaded}_scheduler` ([#1858]). 3396 3397### Added 3398 3399- impl `Stream` for `signal::unix::Signal` ([#1849]). 3400- API docs for platform specific behavior of `signal::ctrl_c` and `signal::unix::Signal` ([#1854]). 3401- API docs for `signal::unix::Signal::{recv, poll_recv}` and `signal::windows::CtrlBreak::{recv, poll_recv}` ([#1854]). 3402- `File::into_std` and `File::try_into_std` methods ([#1856]). 3403 3404[#1772]: https://github.com/tokio-rs/tokio/pull/1772 3405[#1834]: https://github.com/tokio-rs/tokio/pull/1834 3406[#1839]: https://github.com/tokio-rs/tokio/pull/1839 3407[#1841]: https://github.com/tokio-rs/tokio/pull/1841 3408[#1843]: https://github.com/tokio-rs/tokio/pull/1843 3409[#1849]: https://github.com/tokio-rs/tokio/pull/1849 3410[#1854]: https://github.com/tokio-rs/tokio/pull/1854 3411[#1856]: https://github.com/tokio-rs/tokio/pull/1856 3412[#1858]: https://github.com/tokio-rs/tokio/pull/1858 3413[#1861]: https://github.com/tokio-rs/tokio/pull/1861 3414 3415# 0.2.1 (November 26, 2019) 3416 3417### Fixes 3418 3419- API docs for `TcpListener::incoming`, `UnixListener::incoming` ([#1831]). 3420 3421### Added 3422 3423- `tokio::task::LocalSet` provides a strategy for spawning `!Send` tasks ([#1733]). 3424- export `tokio::time::Elapsed` ([#1826]). 3425- impl `AsRawFd`, `AsRawHandle` for `tokio::fs::File` ([#1827]). 3426 3427[#1733]: https://github.com/tokio-rs/tokio/pull/1733 3428[#1826]: https://github.com/tokio-rs/tokio/pull/1826 3429[#1827]: https://github.com/tokio-rs/tokio/pull/1827 3430[#1831]: https://github.com/tokio-rs/tokio/pull/1831 3431 3432# 0.2.0 (November 26, 2019) 3433 3434A major breaking change. Most implementation and APIs have changed one way or 3435another. This changelog entry contains a highlight 3436 3437### Changed 3438 3439- APIs are updated to use `async / await`. 3440- most `tokio-*` crates are collapsed into this crate. 3441- Scheduler is rewritten. 3442- `tokio::spawn` returns a `JoinHandle`. 3443- A single I/O / timer is used per runtime. 3444- I/O driver uses a concurrent slab for allocating state. 3445- components are made available via feature flag. 3446- Use `bytes` 0.5 3447- `tokio::codec` is moved to `tokio-util`. 3448 3449### Removed 3450 3451- Standalone `timer` and `net` drivers are removed, use `Runtime` instead 3452- `current_thread` runtime is removed, use `tokio::runtime::Runtime` with 3453 `basic_scheduler` instead. 3454 3455# 0.1.21 (May 30, 2019) 3456 3457### Changed 3458 3459- Bump `tokio-trace-core` version to 0.2 ([#1111]). 3460 3461[#1111]: https://github.com/tokio-rs/tokio/pull/1111 3462 3463# 0.1.20 (May 14, 2019) 3464 3465### Added 3466 3467- `tokio::runtime::Builder::panic_handler` allows configuring handling 3468 panics on the runtime ([#1055]). 3469 3470[#1055]: https://github.com/tokio-rs/tokio/pull/1055 3471 3472# 0.1.19 (April 22, 2019) 3473 3474### Added 3475 3476- Re-export `tokio::sync::Mutex` primitive ([#964]). 3477 3478[#964]: https://github.com/tokio-rs/tokio/pull/964 3479 3480# 0.1.18 (March 22, 2019) 3481 3482### Added 3483 3484- `TypedExecutor` re-export and implementations ([#993]). 3485 3486[#993]: https://github.com/tokio-rs/tokio/pull/993 3487 3488# 0.1.17 (March 13, 2019) 3489 3490### Added 3491 3492- Propagate trace subscriber in the runtime ([#966]). 3493 3494[#966]: https://github.com/tokio-rs/tokio/pull/966 3495 3496# 0.1.16 (March 1, 2019) 3497 3498### Fixed 3499 3500- async-await: track latest nightly changes ([#940]). 3501 3502### Added 3503 3504- `sync::Watch`, a single value broadcast channel ([#922]). 3505- Async equivalent of read / write file helpers being added to `std` ([#896]). 3506 3507[#896]: https://github.com/tokio-rs/tokio/pull/896 3508[#922]: https://github.com/tokio-rs/tokio/pull/922 3509[#940]: https://github.com/tokio-rs/tokio/pull/940 3510 3511# 0.1.15 (January 24, 2019) 3512 3513### Added 3514 3515- Re-export tokio-sync APIs ([#839]). 3516- Stream enumerate combinator ([#832]). 3517 3518[#832]: https://github.com/tokio-rs/tokio/pull/832 3519[#839]: https://github.com/tokio-rs/tokio/pull/839 3520 3521# 0.1.14 (January 6, 2019) 3522 3523- Use feature flags to break up the crate, allowing users to pick & choose 3524 components ([#808]). 3525- Export `UnixDatagram` and `UnixDatagramFramed` ([#772]). 3526 3527[#772]: https://github.com/tokio-rs/tokio/pull/772 3528[#808]: https://github.com/tokio-rs/tokio/pull/808 3529 3530# 0.1.13 (November 21, 2018) 3531 3532- Fix `Runtime::reactor()` when no tasks are spawned ([#721]). 3533- `runtime::Builder` no longer uses deprecated methods ([#749]). 3534- Provide `after_start` and `before_stop` configuration settings for 3535 `Runtime` ([#756]). 3536- Implement throttle stream combinator ([#736]). 3537 3538[#721]: https://github.com/tokio-rs/tokio/pull/721 3539[#736]: https://github.com/tokio-rs/tokio/pull/736 3540[#749]: https://github.com/tokio-rs/tokio/pull/749 3541[#756]: https://github.com/tokio-rs/tokio/pull/756 3542 3543# 0.1.12 (October 23, 2018) 3544 3545- runtime: expose `keep_alive` on runtime builder ([#676]). 3546- runtime: create a reactor per worker thread ([#660]). 3547- codec: fix panic in `LengthDelimitedCodec` ([#682]). 3548- io: re-export `tokio_io::io::read` function ([#689]). 3549- runtime: check for executor re-entry in more places ([#708]). 3550 3551[#660]: https://github.com/tokio-rs/tokio/pull/660 3552[#676]: https://github.com/tokio-rs/tokio/pull/676 3553[#682]: https://github.com/tokio-rs/tokio/pull/682 3554[#689]: https://github.com/tokio-rs/tokio/pull/689 3555[#708]: https://github.com/tokio-rs/tokio/pull/708 3556 3557# 0.1.11 (September 28, 2018) 3558 3559- Fix `tokio-async-await` dependency ([#675]). 3560 3561[#675]: https://github.com/tokio-rs/tokio/pull/675 3562 3563# 0.1.10 (September 27, 2018) 3564 3565- Fix minimal versions 3566 3567# 0.1.9 (September 27, 2018) 3568 3569- Experimental async/await improvements ([#661]). 3570- Re-export `TaskExecutor` from `tokio-current-thread` ([#652]). 3571- Improve `Runtime` builder API ([#645]). 3572- `tokio::run` panics when called from the context of an executor 3573 ([#646]). 3574- Introduce `StreamExt` with a `timeout` helper ([#573]). 3575- Move `length_delimited` into `tokio` ([#575]). 3576- Re-organize `tokio::net` module ([#548]). 3577- Re-export `tokio-current-thread::spawn` in current_thread runtime 3578 ([#579]). 3579 3580[#548]: https://github.com/tokio-rs/tokio/pull/548 3581[#573]: https://github.com/tokio-rs/tokio/pull/573 3582[#575]: https://github.com/tokio-rs/tokio/pull/575 3583[#579]: https://github.com/tokio-rs/tokio/pull/579 3584[#645]: https://github.com/tokio-rs/tokio/pull/645 3585[#646]: https://github.com/tokio-rs/tokio/pull/646 3586[#652]: https://github.com/tokio-rs/tokio/pull/652 3587[#661]: https://github.com/tokio-rs/tokio/pull/661 3588 3589# 0.1.8 (August 23, 2018) 3590 3591- Extract tokio::executor::current_thread to a sub crate ([#370]) 3592- Add `Runtime::block_on` ([#398]) 3593- Add `runtime::current_thread::block_on_all` ([#477]) 3594- Misc documentation improvements ([#450]) 3595- Implement `std::error::Error` for error types ([#501]) 3596 3597[#370]: https://github.com/tokio-rs/tokio/pull/370 3598[#398]: https://github.com/tokio-rs/tokio/pull/398 3599[#450]: https://github.com/tokio-rs/tokio/pull/450 3600[#477]: https://github.com/tokio-rs/tokio/pull/477 3601[#501]: https://github.com/tokio-rs/tokio/pull/501 3602 3603# 0.1.7 (June 6, 2018) 3604 3605- Add `Runtime::block_on` for concurrent runtime ([#391]). 3606- Provide handle to `current_thread::Runtime` that allows spawning tasks from 3607 other threads ([#340]). 3608- Provide `clock::now()`, a configurable source of time ([#381]). 3609 3610[#340]: https://github.com/tokio-rs/tokio/pull/340 3611[#381]: https://github.com/tokio-rs/tokio/pull/381 3612[#391]: https://github.com/tokio-rs/tokio/pull/391 3613 3614# 0.1.6 (May 2, 2018) 3615 3616- Add asynchronous filesystem APIs ([#323]). 3617- Add "current thread" runtime variant ([#308]). 3618- `CurrentThread`: Expose inner `Park` instance. 3619- Improve fairness of `CurrentThread` executor ([#313]). 3620 3621[#308]: https://github.com/tokio-rs/tokio/pull/308 3622[#313]: https://github.com/tokio-rs/tokio/pull/313 3623[#323]: https://github.com/tokio-rs/tokio/pull/323 3624 3625# 0.1.5 (March 30, 2018) 3626 3627- Provide timer API ([#266]) 3628 3629[#266]: https://github.com/tokio-rs/tokio/pull/266 3630 3631# 0.1.4 (March 22, 2018) 3632 3633- Fix build on FreeBSD ([#218]) 3634- Shutdown the Runtime when the handle is dropped ([#214]) 3635- Set Runtime thread name prefix for worker threads ([#232]) 3636- Add builder for Runtime ([#234]) 3637- Extract TCP and UDP types into separate crates ([#224]) 3638- Optionally support futures 0.2. 3639 3640[#214]: https://github.com/tokio-rs/tokio/pull/214 3641[#218]: https://github.com/tokio-rs/tokio/pull/218 3642[#224]: https://github.com/tokio-rs/tokio/pull/224 3643[#232]: https://github.com/tokio-rs/tokio/pull/232 3644[#234]: https://github.com/tokio-rs/tokio/pull/234 3645 3646# 0.1.3 (March 09, 2018) 3647 3648- Fix `CurrentThread::turn` to block on idle ([#212]). 3649 3650[#212]: https://github.com/tokio-rs/tokio/pull/212 3651 3652# 0.1.2 (March 09, 2018) 3653 3654- Introduce Tokio Runtime ([#141]) 3655- Provide `CurrentThread` for more flexible usage of current thread executor ([#141]). 3656- Add Lio for platforms that support it ([#142]). 3657- I/O resources now lazily bind to the reactor ([#160]). 3658- Extract Reactor to dedicated crate ([#169]) 3659- Add facade to sub crates and add prelude ([#166]). 3660- Switch TCP/UDP fns to poll\_ -> Poll<...> style ([#175]) 3661 3662[#141]: https://github.com/tokio-rs/tokio/pull/141 3663[#142]: https://github.com/tokio-rs/tokio/pull/142 3664[#160]: https://github.com/tokio-rs/tokio/pull/160 3665[#166]: https://github.com/tokio-rs/tokio/pull/166 3666[#169]: https://github.com/tokio-rs/tokio/pull/169 3667[#175]: https://github.com/tokio-rs/tokio/pull/175 3668 3669# 0.1.1 (February 09, 2018) 3670 3671- Doc fixes 3672 3673# 0.1.0 (February 07, 2018) 3674 3675- Initial crate released based on [RFC](https://github.com/tokio-rs/tokio-rfcs/pull/3). 3676