1# 1.14.0 (November 15, 2021) 2 3### Fixed 4 5- macros: fix compiler errors when using `mut` patterns in `select!` ([#4211]) 6- sync: fix a data race between `oneshot::Sender::send` and awaiting a 7 `oneshot::Receiver` when the oneshot has been closed ([#4226]) 8- sync: make `AtomicWaker` panic safe ([#3689]) 9- runtime: fix basic scheduler dropping tasks outside a runtime context 10 ([#4213]) 11 12### Added 13 14- stats: add `RuntimeStats::busy_duration_total` ([#4179], [#4223]) 15 16### Changed 17 18- io: updated `copy` buffer size to match `std::io::copy` ([#4209]) 19 20### Documented 21 22- io: rename buffer to file in doc-test ([#4230]) 23- sync: fix Notify example ([#4212]) 24 25[#4211]: https://github.com/tokio-rs/tokio/pull/4211 26[#4226]: https://github.com/tokio-rs/tokio/pull/4226 27[#3689]: https://github.com/tokio-rs/tokio/pull/3689 28[#4213]: https://github.com/tokio-rs/tokio/pull/4213 29[#4179]: https://github.com/tokio-rs/tokio/pull/4179 30[#4223]: https://github.com/tokio-rs/tokio/pull/4223 31[#4209]: https://github.com/tokio-rs/tokio/pull/4209 32[#4230]: https://github.com/tokio-rs/tokio/pull/4230 33[#4212]: https://github.com/tokio-rs/tokio/pull/4212 34 35# 1.13.1 (November 15, 2021) 36 37### Fixed 38 39- sync: fix a data race between `oneshot::Sender::send` and awaiting a 40 `oneshot::Receiver` when the oneshot has been closed ([#4226]) 41 42[#4226]: https://github.com/tokio-rs/tokio/pull/4226 43 44# 1.13.0 (October 29, 2021) 45 46### Fixed 47 48- sync: fix `Notify` to clone the waker before locking its waiter list ([#4129]) 49- tokio: add riscv32 to non atomic64 architectures ([#4185]) 50 51### Added 52 53- net: add `poll_{recv,send}_ready` methods to `udp` and `uds_datagram` ([#4131]) 54- net: add `try_*`, `readable`, `writable`, `ready`, and `peer_addr` methods to split halves ([#4120]) 55- sync: add `blocking_lock` to `Mutex` ([#4130]) 56- sync: add `watch::Sender::send_replace` ([#3962], [#4195]) 57- sync: expand `Debug` for `Mutex<T>` impl to unsized `T` ([#4134]) 58- tracing: instrument time::Sleep ([#4072]) 59- tracing: use structured location fields for spawned tasks ([#4128]) 60 61### Changed 62 63- io: add assert in `copy_bidirectional` that `poll_write` is sensible ([#4125]) 64- macros: use qualified syntax when polling in `select!` ([#4192]) 65- runtime: handle `block_on` wakeups better ([#4157]) 66- task: allocate callback on heap immediately in debug mode ([#4203]) 67- tokio: assert platform-minimum requirements at build time ([#3797]) 68 69### Documented 70 71- docs: conversion of doc comments to indicative mood ([#4174]) 72- docs: add returning on the first error example for `try_join!` ([#4133]) 73- docs: fixing broken links in `tokio/src/lib.rs` ([#4132]) 74- signal: add example with background listener ([#4171]) 75- sync: add more oneshot examples ([#4153]) 76- time: document `Interval::tick` cancel safety ([#4152]) 77 78[#3797]: https://github.com/tokio-rs/tokio/pull/3797 79[#3962]: https://github.com/tokio-rs/tokio/pull/3962 80[#4072]: https://github.com/tokio-rs/tokio/pull/4072 81[#4120]: https://github.com/tokio-rs/tokio/pull/4120 82[#4125]: https://github.com/tokio-rs/tokio/pull/4125 83[#4128]: https://github.com/tokio-rs/tokio/pull/4128 84[#4129]: https://github.com/tokio-rs/tokio/pull/4129 85[#4130]: https://github.com/tokio-rs/tokio/pull/4130 86[#4131]: https://github.com/tokio-rs/tokio/pull/4131 87[#4132]: https://github.com/tokio-rs/tokio/pull/4132 88[#4133]: https://github.com/tokio-rs/tokio/pull/4133 89[#4134]: https://github.com/tokio-rs/tokio/pull/4134 90[#4152]: https://github.com/tokio-rs/tokio/pull/4152 91[#4153]: https://github.com/tokio-rs/tokio/pull/4153 92[#4157]: https://github.com/tokio-rs/tokio/pull/4157 93[#4171]: https://github.com/tokio-rs/tokio/pull/4171 94[#4174]: https://github.com/tokio-rs/tokio/pull/4174 95[#4185]: https://github.com/tokio-rs/tokio/pull/4185 96[#4192]: https://github.com/tokio-rs/tokio/pull/4192 97[#4195]: https://github.com/tokio-rs/tokio/pull/4195 98[#4203]: https://github.com/tokio-rs/tokio/pull/4203 99 100# 1.12.0 (September 21, 2021) 101 102### Fixed 103 104- mpsc: ensure `try_reserve` error is consistent with `try_send` ([#4119]) 105- mpsc: use `spin_loop_hint` instead of `yield_now` ([#4115]) 106- sync: make `SendError` field public ([#4097]) 107 108### Added 109 110- io: add POSIX AIO on FreeBSD ([#4054]) 111- io: add convenience method `AsyncSeekExt::rewind` ([#4107]) 112- runtime: add tracing span for `block_on` futures ([#4094]) 113- runtime: callback when a worker parks and unparks ([#4070]) 114- sync: implement `try_recv` for mpsc channels ([#4113]) 115 116### Documented 117 118- docs: clarify CPU-bound tasks on Tokio ([#4105]) 119- mpsc: document spurious failures on `poll_recv` ([#4117]) 120- mpsc: document that `PollSender` impls `Sink` ([#4110]) 121- task: document non-guarantees of `yield_now` ([#4091]) 122- time: document paused time details better ([#4061], [#4103]) 123 124[#4027]: https://github.com/tokio-rs/tokio/pull/4027 125[#4054]: https://github.com/tokio-rs/tokio/pull/4054 126[#4061]: https://github.com/tokio-rs/tokio/pull/4061 127[#4070]: https://github.com/tokio-rs/tokio/pull/4070 128[#4091]: https://github.com/tokio-rs/tokio/pull/4091 129[#4094]: https://github.com/tokio-rs/tokio/pull/4094 130[#4097]: https://github.com/tokio-rs/tokio/pull/4097 131[#4103]: https://github.com/tokio-rs/tokio/pull/4103 132[#4105]: https://github.com/tokio-rs/tokio/pull/4105 133[#4107]: https://github.com/tokio-rs/tokio/pull/4107 134[#4110]: https://github.com/tokio-rs/tokio/pull/4110 135[#4113]: https://github.com/tokio-rs/tokio/pull/4113 136[#4115]: https://github.com/tokio-rs/tokio/pull/4115 137[#4117]: https://github.com/tokio-rs/tokio/pull/4117 138[#4119]: https://github.com/tokio-rs/tokio/pull/4119 139 140# 1.11.0 (August 31, 2021) 141 142### Fixed 143 144 - time: don't panic when Instant is not monotonic ([#4044]) 145 - io: fix panic in `fill_buf` by not calling `poll_fill_buf` twice ([#4084]) 146 147### Added 148 149 - watch: add `watch::Sender::subscribe` ([#3800]) 150 - process: add `from_std` to `ChildStd*` ([#4045]) 151 - stats: initial work on runtime stats ([#4043]) 152 153### Changed 154 155 - tracing: change span naming to new console convention ([#4042]) 156 - io: speed-up waking by using uninitialized array ([#4055], [#4071], [#4075]) 157 158### Documented 159 160 - time: make Sleep examples easier to find ([#4040]) 161 162[#3800]: https://github.com/tokio-rs/tokio/pull/3800 163[#4040]: https://github.com/tokio-rs/tokio/pull/4040 164[#4042]: https://github.com/tokio-rs/tokio/pull/4042 165[#4043]: https://github.com/tokio-rs/tokio/pull/4043 166[#4044]: https://github.com/tokio-rs/tokio/pull/4044 167[#4045]: https://github.com/tokio-rs/tokio/pull/4045 168[#4055]: https://github.com/tokio-rs/tokio/pull/4055 169[#4071]: https://github.com/tokio-rs/tokio/pull/4071 170[#4075]: https://github.com/tokio-rs/tokio/pull/4075 171[#4084]: https://github.com/tokio-rs/tokio/pull/4084 172 173# 1.10.1 (August 24, 2021) 174 175### Fixed 176 177 - runtime: fix leak in UnownedTask ([#4063]) 178 179[#4063]: https://github.com/tokio-rs/tokio/pull/4063 180 181# 1.10.0 (August 12, 2021) 182 183### Added 184 185 - io: add `(read|write)_f(32|64)[_le]` methods ([#4022]) 186 - io: add `fill_buf` and `consume` to `AsyncBufReadExt` ([#3991]) 187 - process: add `Child::raw_handle()` on windows ([#3998]) 188 189### Fixed 190 191 - doc: fix non-doc builds with `--cfg docsrs` ([#4020]) 192 - io: flush eagerly in `io::copy` ([#4001]) 193 - runtime: a debug assert was sometimes triggered during shutdown ([#4005]) 194 - sync: use `spin_loop_hint` instead of `yield_now` in mpsc ([#4037]) 195 - tokio: the test-util feature depends on rt, sync, and time ([#4036]) 196 197### Changes 198 199 - runtime: reorganize parts of the runtime ([#3979], [#4005]) 200 - signal: make windows docs for signal module show up on unix builds ([#3770]) 201 - task: quickly send task to heap on debug mode ([#4009]) 202 203### Documented 204 205 - io: document cancellation safety of `AsyncBufReadExt` ([#3997]) 206 - sync: document when `watch::send` fails ([#4021]) 207 208[#3770]: https://github.com/tokio-rs/tokio/pull/3770 209[#3979]: https://github.com/tokio-rs/tokio/pull/3979 210[#3991]: https://github.com/tokio-rs/tokio/pull/3991 211[#3997]: https://github.com/tokio-rs/tokio/pull/3997 212[#3998]: https://github.com/tokio-rs/tokio/pull/3998 213[#4001]: https://github.com/tokio-rs/tokio/pull/4001 214[#4005]: https://github.com/tokio-rs/tokio/pull/4005 215[#4009]: https://github.com/tokio-rs/tokio/pull/4009 216[#4020]: https://github.com/tokio-rs/tokio/pull/4020 217[#4021]: https://github.com/tokio-rs/tokio/pull/4021 218[#4022]: https://github.com/tokio-rs/tokio/pull/4022 219[#4036]: https://github.com/tokio-rs/tokio/pull/4036 220[#4037]: https://github.com/tokio-rs/tokio/pull/4037 221 222# 1.9.0 (July 22, 2021) 223 224### Added 225 226 - net: allow customized I/O operations for `TcpStream` ([#3888]) 227 - sync: add getter for the mutex from a guard ([#3928]) 228 - task: expose nameable future for `TaskLocal::scope` ([#3273]) 229 230### Fixed 231 232 - Fix leak if output of future panics on drop ([#3967]) 233 - Fix leak in `LocalSet` ([#3978]) 234 235### Changes 236 237 - runtime: reorganize parts of the runtime ([#3909], [#3939], [#3950], [#3955], [#3980]) 238 - sync: clean up `OnceCell` ([#3945]) 239 - task: remove mutex in `JoinError` ([#3959]) 240 241[#3273]: https://github.com/tokio-rs/tokio/pull/3273 242[#3888]: https://github.com/tokio-rs/tokio/pull/3888 243[#3909]: https://github.com/tokio-rs/tokio/pull/3909 244[#3928]: https://github.com/tokio-rs/tokio/pull/3928 245[#3934]: https://github.com/tokio-rs/tokio/pull/3934 246[#3939]: https://github.com/tokio-rs/tokio/pull/3939 247[#3945]: https://github.com/tokio-rs/tokio/pull/3945 248[#3950]: https://github.com/tokio-rs/tokio/pull/3950 249[#3955]: https://github.com/tokio-rs/tokio/pull/3955 250[#3959]: https://github.com/tokio-rs/tokio/pull/3959 251[#3967]: https://github.com/tokio-rs/tokio/pull/3967 252[#3978]: https://github.com/tokio-rs/tokio/pull/3978 253[#3980]: https://github.com/tokio-rs/tokio/pull/3980 254 255# 1.8.3 (July 26, 2021) 256 257This release backports two fixes from 1.9.0 258 259### Fixed 260 261 - Fix leak if output of future panics on drop ([#3967]) 262 - Fix leak in `LocalSet` ([#3978]) 263 264[#3967]: https://github.com/tokio-rs/tokio/pull/3967 265[#3978]: https://github.com/tokio-rs/tokio/pull/3978 266 267# 1.8.2 (July 19, 2021) 268 269Fixes a missed edge case from 1.8.1. 270 271### Fixed 272 273- runtime: drop canceled future on next poll (#3965) 274 275# 1.8.1 (July 6, 2021) 276 277Forward ports 1.5.1 fixes. 278 279### Fixed 280 281- runtime: remotely abort tasks on `JoinHandle::abort` ([#3934]) 282 283[#3934]: https://github.com/tokio-rs/tokio/pull/3934 284 285# 1.8.0 (July 2, 2021) 286 287### Added 288 289- io: add `get_{ref,mut}` methods to `AsyncFdReadyGuard` and `AsyncFdReadyMutGuard` ([#3807]) 290- io: efficient implementation of vectored writes for `BufWriter` ([#3163]) 291- net: add ready/try methods to `NamedPipe{Client,Server}` ([#3866], [#3899]) 292- sync: add `watch::Receiver::borrow_and_update` ([#3813]) 293- sync: implement `From<T>` for `OnceCell<T>` ([#3877]) 294- time: allow users to specify Interval behaviour when delayed ([#3721]) 295 296### Added (unstable) 297 298- rt: add `tokio::task::Builder` ([#3881]) 299 300### Fixed 301 302- net: handle HUP event with `UnixStream` ([#3898]) 303 304### Documented 305 306- doc: document cancellation safety ([#3900]) 307- time: add wait alias to sleep ([#3897]) 308- time: document auto-advancing behaviour of runtime ([#3763]) 309 310[#3163]: https://github.com/tokio-rs/tokio/pull/3163 311[#3721]: https://github.com/tokio-rs/tokio/pull/3721 312[#3763]: https://github.com/tokio-rs/tokio/pull/3763 313[#3807]: https://github.com/tokio-rs/tokio/pull/3807 314[#3813]: https://github.com/tokio-rs/tokio/pull/3813 315[#3866]: https://github.com/tokio-rs/tokio/pull/3866 316[#3877]: https://github.com/tokio-rs/tokio/pull/3877 317[#3881]: https://github.com/tokio-rs/tokio/pull/3881 318[#3897]: https://github.com/tokio-rs/tokio/pull/3897 319[#3898]: https://github.com/tokio-rs/tokio/pull/3898 320[#3899]: https://github.com/tokio-rs/tokio/pull/3899 321[#3900]: https://github.com/tokio-rs/tokio/pull/3900 322 323# 1.7.2 (July 6, 2021) 324 325Forward ports 1.5.1 fixes. 326 327### Fixed 328 329- runtime: remotely abort tasks on `JoinHandle::abort` ([#3934]) 330 331[#3934]: https://github.com/tokio-rs/tokio/pull/3934 332 333# 1.7.1 (June 18, 2021) 334 335### Fixed 336 337- runtime: fix early task shutdown during runtime shutdown ([#3870]) 338 339[#3870]: https://github.com/tokio-rs/tokio/pull/3870 340 341# 1.7.0 (June 15, 2021) 342 343### Added 344 345- net: add named pipes on windows ([#3760]) 346- net: add `TcpSocket` from `std::net::TcpStream` conversion ([#3838]) 347- sync: add `receiver_count` to `watch::Sender` ([#3729]) 348- sync: export `sync::notify::Notified` future publicly ([#3840]) 349- tracing: instrument task wakers ([#3836]) 350 351### Fixed 352 353- macros: suppress `clippy::default_numeric_fallback` lint in generated code ([#3831]) 354- runtime: immediately drop new tasks when runtime is shut down ([#3752]) 355- sync: deprecate unused `mpsc::RecvError` type ([#3833]) 356 357### Documented 358 359- io: clarify EOF condition for `AsyncReadExt::read_buf` ([#3850]) 360- io: clarify limits on return values of `AsyncWrite::poll_write` ([#3820]) 361- sync: add examples to Semaphore ([#3808]) 362 363[#3729]: https://github.com/tokio-rs/tokio/pull/3729 364[#3752]: https://github.com/tokio-rs/tokio/pull/3752 365[#3760]: https://github.com/tokio-rs/tokio/pull/3760 366[#3808]: https://github.com/tokio-rs/tokio/pull/3808 367[#3820]: https://github.com/tokio-rs/tokio/pull/3820 368[#3831]: https://github.com/tokio-rs/tokio/pull/3831 369[#3833]: https://github.com/tokio-rs/tokio/pull/3833 370[#3836]: https://github.com/tokio-rs/tokio/pull/3836 371[#3838]: https://github.com/tokio-rs/tokio/pull/3838 372[#3840]: https://github.com/tokio-rs/tokio/pull/3840 373[#3850]: https://github.com/tokio-rs/tokio/pull/3850 374 375# 1.6.3 (July 6, 2021) 376 377Forward ports 1.5.1 fixes. 378 379### Fixed 380 381- runtime: remotely abort tasks on `JoinHandle::abort` ([#3934]) 382 383[#3934]: https://github.com/tokio-rs/tokio/pull/3934 384 385# 1.6.2 (June 14, 2021) 386 387### Fixes 388 389- test: sub-ms `time:advance` regression introduced in 1.6 ([#3852]) 390 391[#3852]: https://github.com/tokio-rs/tokio/pull/3852 392 393# 1.6.1 (May 28, 2021) 394 395This release reverts [#3518] because it doesn't work on some kernels due to 396a kernel bug. ([#3803]) 397 398[#3518]: https://github.com/tokio-rs/tokio/issues/3518 399[#3803]: https://github.com/tokio-rs/tokio/issues/3803 400 401# 1.6.0 (May 14, 2021) 402 403### Added 404 405- fs: try doing a non-blocking read before punting to the threadpool ([#3518]) 406- io: add `write_all_buf` to `AsyncWriteExt` ([#3737]) 407- io: implement `AsyncSeek` for `BufReader`, `BufWriter`, and `BufStream` ([#3491]) 408- net: support non-blocking vectored I/O ([#3761]) 409- sync: add `mpsc::Sender::{reserve_owned, try_reserve_owned}` ([#3704]) 410- sync: add a `MutexGuard::map` method that returns a `MappedMutexGuard` ([#2472]) 411- time: add getter for Interval's period ([#3705]) 412 413### Fixed 414 415- io: wake pending writers on `DuplexStream` close ([#3756]) 416- process: avoid redundant effort to reap orphan processes ([#3743]) 417- signal: use `std::os::raw::c_int` instead of `libc::c_int` on public API ([#3774]) 418- sync: preserve permit state in `notify_waiters` ([#3660]) 419- task: update `JoinHandle` panic message ([#3727]) 420- time: prevent `time::advance` from going too far ([#3712]) 421 422### Documented 423 424- net: hide `net::unix::datagram` module from docs ([#3775]) 425- process: updated example ([#3748]) 426- sync: `Barrier` doc should use task, not thread ([#3780]) 427- task: update documentation on `block_in_place` ([#3753]) 428 429[#2472]: https://github.com/tokio-rs/tokio/pull/2472 430[#3491]: https://github.com/tokio-rs/tokio/pull/3491 431[#3518]: https://github.com/tokio-rs/tokio/pull/3518 432[#3660]: https://github.com/tokio-rs/tokio/pull/3660 433[#3704]: https://github.com/tokio-rs/tokio/pull/3704 434[#3705]: https://github.com/tokio-rs/tokio/pull/3705 435[#3712]: https://github.com/tokio-rs/tokio/pull/3712 436[#3727]: https://github.com/tokio-rs/tokio/pull/3727 437[#3737]: https://github.com/tokio-rs/tokio/pull/3737 438[#3743]: https://github.com/tokio-rs/tokio/pull/3743 439[#3748]: https://github.com/tokio-rs/tokio/pull/3748 440[#3753]: https://github.com/tokio-rs/tokio/pull/3753 441[#3756]: https://github.com/tokio-rs/tokio/pull/3756 442[#3761]: https://github.com/tokio-rs/tokio/pull/3761 443[#3774]: https://github.com/tokio-rs/tokio/pull/3774 444[#3775]: https://github.com/tokio-rs/tokio/pull/3775 445[#3780]: https://github.com/tokio-rs/tokio/pull/3780 446 447# 1.5.1 (July 6, 2021) 448 449### Fixed 450 451- runtime: remotely abort tasks on `JoinHandle::abort` ([#3934]) 452 453[#3934]: https://github.com/tokio-rs/tokio/pull/3934 454 455# 1.5.0 (April 12, 2021) 456 457### Added 458 459- io: add `AsyncSeekExt::stream_position` ([#3650]) 460- io: add `AsyncWriteExt::write_vectored` ([#3678]) 461- io: add a `copy_bidirectional` utility ([#3572]) 462- net: implement `IntoRawFd` for `TcpSocket` ([#3684]) 463- sync: add `OnceCell` ([#3591]) 464- sync: add `OwnedRwLockReadGuard` and `OwnedRwLockWriteGuard` ([#3340]) 465- sync: add `Semaphore::is_closed` ([#3673]) 466- sync: add `mpsc::Sender::capacity` ([#3690]) 467- sync: allow configuring `RwLock` max reads ([#3644]) 468- task: add `sync_scope` for `LocalKey` ([#3612]) 469 470### Fixed 471 472- chore: try to avoid `noalias` attributes on intrusive linked list ([#3654]) 473- rt: fix panic in `JoinHandle::abort()` when called from other threads ([#3672]) 474- sync: don't panic in `oneshot::try_recv` ([#3674]) 475- sync: fix notifications getting dropped on receiver drop ([#3652]) 476- sync: fix `Semaphore` permit overflow calculation ([#3644]) 477 478### Documented 479 480- io: clarify requirements of `AsyncFd` ([#3635]) 481- runtime: fix unclear docs for `{Handle,Runtime}::block_on` ([#3628]) 482- sync: document that `Semaphore` is fair ([#3693]) 483- sync: improve doc on blocking mutex ([#3645]) 484 485[#3340]: https://github.com/tokio-rs/tokio/pull/3340 486[#3572]: https://github.com/tokio-rs/tokio/pull/3572 487[#3591]: https://github.com/tokio-rs/tokio/pull/3591 488[#3612]: https://github.com/tokio-rs/tokio/pull/3612 489[#3628]: https://github.com/tokio-rs/tokio/pull/3628 490[#3635]: https://github.com/tokio-rs/tokio/pull/3635 491[#3644]: https://github.com/tokio-rs/tokio/pull/3644 492[#3645]: https://github.com/tokio-rs/tokio/pull/3645 493[#3650]: https://github.com/tokio-rs/tokio/pull/3650 494[#3652]: https://github.com/tokio-rs/tokio/pull/3652 495[#3654]: https://github.com/tokio-rs/tokio/pull/3654 496[#3672]: https://github.com/tokio-rs/tokio/pull/3672 497[#3673]: https://github.com/tokio-rs/tokio/pull/3673 498[#3674]: https://github.com/tokio-rs/tokio/pull/3674 499[#3678]: https://github.com/tokio-rs/tokio/pull/3678 500[#3684]: https://github.com/tokio-rs/tokio/pull/3684 501[#3690]: https://github.com/tokio-rs/tokio/pull/3690 502[#3693]: https://github.com/tokio-rs/tokio/pull/3693 503 504# 1.4.0 (March 20, 2021) 505 506### Added 507 508- macros: introduce biased argument for `select!` ([#3603]) 509- runtime: add `Handle::block_on` ([#3569]) 510 511### Fixed 512 513- runtime: avoid unnecessary polling of `block_on` future ([#3582]) 514- runtime: fix memory leak/growth when creating many runtimes ([#3564]) 515- runtime: mark `EnterGuard` with `must_use` ([#3609]) 516 517### Documented 518 519- chore: mention fix for building docs in contributing guide ([#3618]) 520- doc: add link to `PollSender` ([#3613]) 521- doc: alias sleep to delay ([#3604]) 522- sync: improve `Mutex` FIFO explanation ([#3615]) 523- timer: fix double newline in module docs ([#3617]) 524 525[#3564]: https://github.com/tokio-rs/tokio/pull/3564 526[#3613]: https://github.com/tokio-rs/tokio/pull/3613 527[#3618]: https://github.com/tokio-rs/tokio/pull/3618 528[#3617]: https://github.com/tokio-rs/tokio/pull/3617 529[#3582]: https://github.com/tokio-rs/tokio/pull/3582 530[#3615]: https://github.com/tokio-rs/tokio/pull/3615 531[#3603]: https://github.com/tokio-rs/tokio/pull/3603 532[#3609]: https://github.com/tokio-rs/tokio/pull/3609 533[#3604]: https://github.com/tokio-rs/tokio/pull/3604 534[#3569]: https://github.com/tokio-rs/tokio/pull/3569 535 536# 1.3.0 (March 9, 2021) 537 538### Added 539 540- coop: expose an `unconstrained()` opt-out ([#3547]) 541- net: add `into_std` for net types without it ([#3509]) 542- sync: add `same_channel` method to `mpsc::Sender` ([#3532]) 543- sync: add `{try_,}acquire_many_owned` to `Semaphore` ([#3535]) 544- sync: add back `RwLockWriteGuard::map` and `RwLockWriteGuard::try_map` ([#3348]) 545 546### Fixed 547 548- sync: allow `oneshot::Receiver::close` after successful `try_recv` ([#3552]) 549- time: do not panic on `timeout(Duration::MAX)` ([#3551]) 550 551### Documented 552 553- doc: doc aliases for pre-1.0 function names ([#3523]) 554- io: fix typos ([#3541]) 555- io: note the EOF behaviour of `read_until` ([#3536]) 556- io: update `AsyncRead::poll_read` doc ([#3557]) 557- net: update `UdpSocket` splitting doc ([#3517]) 558- runtime: add link to `LocalSet` on `new_current_thread` ([#3508]) 559- runtime: update documentation of thread limits ([#3527]) 560- sync: do not recommend `join_all` for `Barrier` ([#3514]) 561- sync: documentation for `oneshot` ([#3592]) 562- sync: rename `notify` to `notify_one` ([#3526]) 563- time: fix typo in `Sleep` doc ([#3515]) 564- time: sync `interval.rs` and `time/mod.rs` docs ([#3533]) 565 566[#3348]: https://github.com/tokio-rs/tokio/pull/3348 567[#3508]: https://github.com/tokio-rs/tokio/pull/3508 568[#3509]: https://github.com/tokio-rs/tokio/pull/3509 569[#3514]: https://github.com/tokio-rs/tokio/pull/3514 570[#3515]: https://github.com/tokio-rs/tokio/pull/3515 571[#3517]: https://github.com/tokio-rs/tokio/pull/3517 572[#3523]: https://github.com/tokio-rs/tokio/pull/3523 573[#3526]: https://github.com/tokio-rs/tokio/pull/3526 574[#3527]: https://github.com/tokio-rs/tokio/pull/3527 575[#3532]: https://github.com/tokio-rs/tokio/pull/3532 576[#3533]: https://github.com/tokio-rs/tokio/pull/3533 577[#3535]: https://github.com/tokio-rs/tokio/pull/3535 578[#3536]: https://github.com/tokio-rs/tokio/pull/3536 579[#3541]: https://github.com/tokio-rs/tokio/pull/3541 580[#3547]: https://github.com/tokio-rs/tokio/pull/3547 581[#3551]: https://github.com/tokio-rs/tokio/pull/3551 582[#3552]: https://github.com/tokio-rs/tokio/pull/3552 583[#3557]: https://github.com/tokio-rs/tokio/pull/3557 584[#3592]: https://github.com/tokio-rs/tokio/pull/3592 585 586# 1.2.0 (February 5, 2021) 587 588### Added 589 590- signal: make `Signal::poll_recv` method public ([#3383]) 591 592### Fixed 593 594- time: make `test-util` paused time fully deterministic ([#3492]) 595 596### Documented 597 598- sync: link to new broadcast and watch wrappers ([#3504]) 599 600[#3383]: https://github.com/tokio-rs/tokio/pull/3383 601[#3492]: https://github.com/tokio-rs/tokio/pull/3492 602[#3504]: https://github.com/tokio-rs/tokio/pull/3504 603 604# 1.1.1 (January 29, 2021) 605 606Forward ports 1.0.3 fix. 607 608### Fixed 609- io: memory leak during shutdown ([#3477]). 610 611# 1.1.0 (January 22, 2021) 612 613### Added 614 615- net: add `try_read_buf` and `try_recv_buf` ([#3351]) 616- mpsc: Add `Sender::try_reserve` function ([#3418]) 617- sync: add `RwLock` `try_read` and `try_write` methods ([#3400]) 618- io: add `ReadBuf::inner_mut` ([#3443]) 619 620### Changed 621 622- macros: improve `select!` error message ([#3352]) 623- io: keep track of initialized bytes in `read_to_end` ([#3426]) 624- runtime: consolidate errors for context missing ([#3441]) 625 626### Fixed 627 628- task: wake `LocalSet` on `spawn_local` ([#3369]) 629- sync: fix panic in broadcast::Receiver drop ([#3434]) 630 631### Documented 632- stream: link to new `Stream` wrappers in `tokio-stream` ([#3343]) 633- docs: mention that `test-util` feature is not enabled with full ([#3397]) 634- process: add documentation to process::Child fields ([#3437]) 635- io: clarify `AsyncFd` docs about changes of the inner fd ([#3430]) 636- net: update datagram docs on splitting ([#3448]) 637- time: document that `Sleep` is not `Unpin` ([#3457]) 638- sync: add link to `PollSemaphore` ([#3456]) 639- task: add `LocalSet` example ([#3438]) 640- sync: improve bounded `mpsc` documentation ([#3458]) 641 642[#3343]: https://github.com/tokio-rs/tokio/pull/3343 643[#3351]: https://github.com/tokio-rs/tokio/pull/3351 644[#3352]: https://github.com/tokio-rs/tokio/pull/3352 645[#3369]: https://github.com/tokio-rs/tokio/pull/3369 646[#3397]: https://github.com/tokio-rs/tokio/pull/3397 647[#3400]: https://github.com/tokio-rs/tokio/pull/3400 648[#3418]: https://github.com/tokio-rs/tokio/pull/3418 649[#3426]: https://github.com/tokio-rs/tokio/pull/3426 650[#3430]: https://github.com/tokio-rs/tokio/pull/3430 651[#3434]: https://github.com/tokio-rs/tokio/pull/3434 652[#3437]: https://github.com/tokio-rs/tokio/pull/3437 653[#3438]: https://github.com/tokio-rs/tokio/pull/3438 654[#3441]: https://github.com/tokio-rs/tokio/pull/3441 655[#3443]: https://github.com/tokio-rs/tokio/pull/3443 656[#3448]: https://github.com/tokio-rs/tokio/pull/3448 657[#3456]: https://github.com/tokio-rs/tokio/pull/3456 658[#3457]: https://github.com/tokio-rs/tokio/pull/3457 659[#3458]: https://github.com/tokio-rs/tokio/pull/3458 660 661# 1.0.3 (January 28, 2021) 662 663### Fixed 664- io: memory leak during shutdown ([#3477]). 665 666[#3477]: https://github.com/tokio-rs/tokio/pull/3477 667 668# 1.0.2 (January 14, 2021) 669 670### Fixed 671- io: soundness in `read_to_end` ([#3428]). 672 673[#3428]: https://github.com/tokio-rs/tokio/pull/3428 674 675# 1.0.1 (December 25, 2020) 676 677This release fixes a soundness hole caused by the combination of `RwLockWriteGuard::map` 678and `RwLockWriteGuard::downgrade` by removing the `map` function. This is a breaking 679change, but breaking changes are allowed under our semver policy when they are required 680to fix a soundness hole. (See [this RFC][semver] for more.) 681 682Note that we have chosen not to do a deprecation cycle or similar because Tokio 1.0.0 was 683released two days ago, and therefore the impact should be minimal. 684 685Due to the soundness hole, we have also yanked Tokio version 1.0.0. 686 687### Removed 688 689- sync: remove `RwLockWriteGuard::map` and `RwLockWriteGuard::try_map` ([#3345]) 690 691### Fixed 692 693- docs: remove stream feature from docs ([#3335]) 694 695[semver]: https://github.com/rust-lang/rfcs/blob/master/text/1122-language-semver.md#soundness-changes 696[#3335]: https://github.com/tokio-rs/tokio/pull/3335 697[#3345]: https://github.com/tokio-rs/tokio/pull/3345 698 699# 1.0.0 (December 23, 2020) 700 701Commit to the API and long-term support. 702 703### Fixed 704 705- sync: spurious wakeup in `watch` ([#3234]). 706 707### Changed 708 709- io: rename `AsyncFd::with_io()` to `try_io()` ([#3306]) 710- fs: avoid OS specific `*Ext` traits in favor of conditionally defining the fn ([#3264]). 711- fs: `Sleep` is `!Unpin` ([#3278]). 712- net: pass `SocketAddr` by value ([#3125]). 713- net: `TcpStream::poll_peek` takes `ReadBuf` ([#3259]). 714- rt: rename `runtime::Builder::max_threads()` to `max_blocking_threads()` ([#3287]). 715- time: require `current_thread` runtime when calling `time::pause()` ([#3289]). 716 717### Removed 718 719- remove `tokio::prelude` ([#3299]). 720- io: remove `AsyncFd::with_poll()` ([#3306]). 721- net: remove `{Tcp,Unix}Stream::shutdown()` in favor of `AsyncWrite::shutdown()` ([#3298]). 722- stream: move all stream utilities to `tokio-stream` until `Stream` is added to 723 `std` ([#3277]). 724- sync: mpsc `try_recv()` due to unexpected behavior ([#3263]). 725- tracing: make unstable as `tracing-core` is not 1.0 yet ([#3266]). 726 727### Added 728 729- fs: `poll_*` fns to `DirEntry` ([#3308]). 730- io: `poll_*` fns to `io::Lines`, `io::Split` ([#3308]). 731- io: `_mut` method variants to `AsyncFd` ([#3304]). 732- net: `poll_*` fns to `UnixDatagram` ([#3223]). 733- net: `UnixStream` readiness and non-blocking ops ([#3246]). 734- sync: `UnboundedReceiver::blocking_recv()` ([#3262]). 735- sync: `watch::Sender::borrow()` ([#3269]). 736- sync: `Semaphore::close()` ([#3065]). 737- sync: `poll_recv` fns to `mpsc::Receiver`, `mpsc::UnboundedReceiver` ([#3308]). 738- time: `poll_tick` fn to `time::Interval` ([#3316]). 739 740[#3065]: https://github.com/tokio-rs/tokio/pull/3065 741[#3125]: https://github.com/tokio-rs/tokio/pull/3125 742[#3223]: https://github.com/tokio-rs/tokio/pull/3223 743[#3234]: https://github.com/tokio-rs/tokio/pull/3234 744[#3246]: https://github.com/tokio-rs/tokio/pull/3246 745[#3259]: https://github.com/tokio-rs/tokio/pull/3259 746[#3262]: https://github.com/tokio-rs/tokio/pull/3262 747[#3263]: https://github.com/tokio-rs/tokio/pull/3263 748[#3264]: https://github.com/tokio-rs/tokio/pull/3264 749[#3266]: https://github.com/tokio-rs/tokio/pull/3266 750[#3269]: https://github.com/tokio-rs/tokio/pull/3269 751[#3277]: https://github.com/tokio-rs/tokio/pull/3277 752[#3278]: https://github.com/tokio-rs/tokio/pull/3278 753[#3287]: https://github.com/tokio-rs/tokio/pull/3287 754[#3289]: https://github.com/tokio-rs/tokio/pull/3289 755[#3298]: https://github.com/tokio-rs/tokio/pull/3298 756[#3299]: https://github.com/tokio-rs/tokio/pull/3299 757[#3304]: https://github.com/tokio-rs/tokio/pull/3304 758[#3306]: https://github.com/tokio-rs/tokio/pull/3306 759[#3308]: https://github.com/tokio-rs/tokio/pull/3308 760[#3316]: https://github.com/tokio-rs/tokio/pull/3316 761 762# 0.3.6 (December 14, 2020) 763 764### Fixed 765 766- rt: fix deadlock in shutdown ([#3228]) 767- rt: fix panic in task abort when off rt ([#3159]) 768- sync: make `add_permits` panic with usize::MAX >> 3 permits ([#3188]) 769- time: Fix race condition in timer drop ([#3229]) 770- watch: fix spurious wakeup ([#3244]) 771 772### Added 773 774- example: add back udp-codec example ([#3205]) 775- net: add `TcpStream::into_std` ([#3189]) 776 777[#3159]: https://github.com/tokio-rs/tokio/pull/3159 778[#3188]: https://github.com/tokio-rs/tokio/pull/3188 779[#3189]: https://github.com/tokio-rs/tokio/pull/3189 780[#3205]: https://github.com/tokio-rs/tokio/pull/3205 781[#3228]: https://github.com/tokio-rs/tokio/pull/3228 782[#3229]: https://github.com/tokio-rs/tokio/pull/3229 783[#3244]: https://github.com/tokio-rs/tokio/pull/3244 784 785# 0.3.5 (November 30, 2020) 786 787### Fixed 788 789- rt: fix `shutdown_timeout(0)` ([#3196]). 790- time: fixed race condition with small sleeps ([#3069]). 791 792### Added 793 794- io: `AsyncFd::with_interest()` ([#3167]). 795- signal: `CtrlC` stream on windows ([#3186]). 796 797[#3069]: https://github.com/tokio-rs/tokio/pull/3069 798[#3167]: https://github.com/tokio-rs/tokio/pull/3167 799[#3186]: https://github.com/tokio-rs/tokio/pull/3186 800[#3196]: https://github.com/tokio-rs/tokio/pull/3196 801 802# 0.3.4 (November 18, 2020) 803 804### Fixed 805 806- stream: `StreamMap` `Default` impl bound ([#3093]). 807- io: `AsyncFd::into_inner()` should deregister the FD ([#3104]). 808 809### Changed 810 811- meta: `parking_lot` feature enabled with `full` ([#3119]). 812 813### Added 814 815- io: `AsyncWrite` vectored writes ([#3149]). 816- net: TCP/UDP readiness and non-blocking ops ([#3130], [#2743], [#3138]). 817- net: TCP socket option (linger, send/recv buf size) ([#3145], [#3143]). 818- net: PID field in `UCred` with solaris/illumos ([#3085]). 819- rt: `runtime::Handle` allows spawning onto a runtime ([#3079]). 820- sync: `Notify::notify_waiters()` ([#3098]). 821- sync: `acquire_many()`, `try_acquire_many()` to `Semaphore` ([#3067]). 822 823[#2743]: https://github.com/tokio-rs/tokio/pull/2743 824[#3067]: https://github.com/tokio-rs/tokio/pull/3067 825[#3079]: https://github.com/tokio-rs/tokio/pull/3079 826[#3085]: https://github.com/tokio-rs/tokio/pull/3085 827[#3093]: https://github.com/tokio-rs/tokio/pull/3093 828[#3098]: https://github.com/tokio-rs/tokio/pull/3098 829[#3104]: https://github.com/tokio-rs/tokio/pull/3104 830[#3119]: https://github.com/tokio-rs/tokio/pull/3119 831[#3130]: https://github.com/tokio-rs/tokio/pull/3130 832[#3138]: https://github.com/tokio-rs/tokio/pull/3138 833[#3143]: https://github.com/tokio-rs/tokio/pull/3143 834[#3145]: https://github.com/tokio-rs/tokio/pull/3145 835[#3149]: https://github.com/tokio-rs/tokio/pull/3149 836 837# 0.3.3 (November 2, 2020) 838 839Fixes a soundness hole by adding a missing `Send` bound to 840`Runtime::spawn_blocking()`. 841 842### Fixed 843 844- rt: include missing `Send`, fixing soundness hole ([#3089]). 845- tracing: avoid huge trace span names ([#3074]). 846 847### Added 848 849- net: `TcpSocket::reuseport()`, `TcpSocket::set_reuseport()` ([#3083]). 850- net: `TcpSocket::reuseaddr()` ([#3093]). 851- net: `TcpSocket::local_addr()` ([#3093]). 852- net: add pid to `UCred` ([#2633]). 853 854[#2633]: https://github.com/tokio-rs/tokio/pull/2633 855[#3074]: https://github.com/tokio-rs/tokio/pull/3074 856[#3083]: https://github.com/tokio-rs/tokio/pull/3083 857[#3089]: https://github.com/tokio-rs/tokio/pull/3089 858[#3093]: https://github.com/tokio-rs/tokio/pull/3093 859 860# 0.3.2 (October 27, 2020) 861 862Adds `AsyncFd` as a replacement for v0.2's `PollEvented`. 863 864### Fixed 865 866- io: fix a potential deadlock when shutting down the I/O driver ([#2903]). 867- sync: `RwLockWriteGuard::downgrade()` bug ([#2957]). 868 869### Added 870 871- io: `AsyncFd` for receiving readiness events on raw FDs ([#2903]). 872- net: `poll_*` function on `UdpSocket` ([#2981]). 873- net: `UdpSocket::take_error()` ([#3051]). 874- sync: `oneshot::Sender::poll_closed()` ([#3032]). 875 876[#2903]: https://github.com/tokio-rs/tokio/pull/2903 877[#2957]: https://github.com/tokio-rs/tokio/pull/2957 878[#2981]: https://github.com/tokio-rs/tokio/pull/2981 879[#3032]: https://github.com/tokio-rs/tokio/pull/3032 880[#3051]: https://github.com/tokio-rs/tokio/pull/3051 881 882# 0.3.1 (October 21, 2020) 883 884This release fixes an use-after-free in the IO driver. Additionally, the `read_buf` 885and `write_buf` methods have been added back to the IO traits, as the bytes crate 886is now on track to reach version 1.0 together with Tokio. 887 888### Fixed 889 890- net: fix use-after-free ([#3019]). 891- fs: ensure buffered data is written on shutdown ([#3009]). 892 893### Added 894 895- io: `copy_buf()` ([#2884]). 896- io: `AsyncReadExt::read_buf()`, `AsyncReadExt::write_buf()` for working with 897 `Buf`/`BufMut` ([#3003]). 898- rt: `Runtime::spawn_blocking()` ([#2980]). 899- sync: `watch::Sender::is_closed()` ([#2991]). 900 901[#2884]: https://github.com/tokio-rs/tokio/pull/2884 902[#2980]: https://github.com/tokio-rs/tokio/pull/2980 903[#2991]: https://github.com/tokio-rs/tokio/pull/2991 904[#3003]: https://github.com/tokio-rs/tokio/pull/3003 905[#3009]: https://github.com/tokio-rs/tokio/pull/3009 906[#3019]: https://github.com/tokio-rs/tokio/pull/3019 907 908# 0.3.0 (October 15, 2020) 909 910This represents a 1.0 beta release. APIs are polished and future-proofed. APIs 911not included for 1.0 stabilization have been removed. 912 913Biggest changes are: 914 915- I/O driver internal rewrite. The windows implementation includes significant 916 changes. 917- Runtime API is polished, especially with how it interacts with feature flag 918 combinations. 919- Feature flags are simplified 920 - `rt-core` and `rt-util` are combined to `rt` 921 - `rt-threaded` is renamed to `rt-multi-thread` to match builder API 922 - `tcp`, `udp`, `uds`, `dns` are combied to `net`. 923 - `parking_lot` is included with `full` 924 925### Changes 926 927- meta: Minimum supported Rust version is now 1.45. 928- io: `AsyncRead` trait now takes `ReadBuf` in order to safely handle reading 929 into uninitialized memory ([#2758]). 930- io: Internal I/O driver storage is now able to compact ([#2757]). 931- rt: `Runtime::block_on` now takes `&self` ([#2782]). 932- sync: `watch` reworked to decouple receiving a change notification from 933 receiving the value ([#2814], [#2806]). 934- sync: `Notify::notify` is renamed to `notify_one` ([#2822]). 935- process: `Child::kill` is now an `async fn` that cleans zombies ([#2823]). 936- sync: use `const fn` constructors as possible ([#2833], [#2790]) 937- signal: reduce cross-thread notification ([#2835]). 938- net: tcp,udp,uds types support operations with `&self` ([#2828], [#2919], [#2934]). 939- sync: blocking `mpsc` channel supports `send` with `&self` ([#2861]). 940- time: rename `delay_for` and `delay_until` to `sleep` and `sleep_until` ([#2826]). 941- io: upgrade to `mio` 0.7 ([#2893]). 942- io: `AsyncSeek` trait is tweaked ([#2885]). 943- fs: `File` operations take `&self` ([#2930]). 944- rt: runtime API, and `#[tokio::main]` macro polish ([#2876]) 945- rt: `Runtime::enter` uses an RAII guard instead of a closure ([#2954]). 946- net: the `from_std` function on all sockets no longer sets socket into non-blocking mode ([#2893]) 947 948### Added 949 950- sync: `map` function to lock guards ([#2445]). 951- sync: `blocking_recv` and `blocking_send` fns to `mpsc` for use outside of Tokio ([#2685]). 952- rt: `Builder::thread_name_fn` for configuring thread names ([#1921]). 953- fs: impl `FromRawFd` and `FromRawHandle` for `File` ([#2792]). 954- process: `Child::wait` and `Child::try_wait` ([#2796]). 955- rt: support configuring thread keep-alive duration ([#2809]). 956- rt: `task::JoinHandle::abort` forcibly cancels a spawned task ([#2474]). 957- sync: `RwLock` write guard to read guard downgrading ([#2733]). 958- net: add `poll_*` functions that take `&self` to all net types ([#2845]) 959- sync: `get_mut()` for `Mutex`, `RwLock` ([#2856]). 960- sync: `mpsc::Sender::closed()` waits for `Receiver` half to close ([#2840]). 961- sync: `mpsc::Sender::is_closed()` returns true if `Receiver` half is closed ([#2726]). 962- stream: `iter` and `iter_mut` to `StreamMap` ([#2890]). 963- net: implement `AsRawSocket` on windows ([#2911]). 964- net: `TcpSocket` creates a socket without binding or listening ([#2920]). 965 966### Removed 967 968- io: vectored ops are removed from `AsyncRead`, `AsyncWrite` traits ([#2882]). 969- io: `mio` is removed from the public API. `PollEvented` and` Registration` are 970 removed ([#2893]). 971- io: remove `bytes` from public API. `Buf` and `BufMut` implementation are 972 removed ([#2908]). 973- time: `DelayQueue` is moved to `tokio-util` ([#2897]). 974 975### Fixed 976 977- io: `stdout` and `stderr` buffering on windows ([#2734]). 978 979[#1921]: https://github.com/tokio-rs/tokio/pull/1921 980[#2445]: https://github.com/tokio-rs/tokio/pull/2445 981[#2474]: https://github.com/tokio-rs/tokio/pull/2474 982[#2685]: https://github.com/tokio-rs/tokio/pull/2685 983[#2726]: https://github.com/tokio-rs/tokio/pull/2726 984[#2733]: https://github.com/tokio-rs/tokio/pull/2733 985[#2734]: https://github.com/tokio-rs/tokio/pull/2734 986[#2757]: https://github.com/tokio-rs/tokio/pull/2757 987[#2758]: https://github.com/tokio-rs/tokio/pull/2758 988[#2782]: https://github.com/tokio-rs/tokio/pull/2782 989[#2790]: https://github.com/tokio-rs/tokio/pull/2790 990[#2792]: https://github.com/tokio-rs/tokio/pull/2792 991[#2796]: https://github.com/tokio-rs/tokio/pull/2796 992[#2806]: https://github.com/tokio-rs/tokio/pull/2806 993[#2809]: https://github.com/tokio-rs/tokio/pull/2809 994[#2814]: https://github.com/tokio-rs/tokio/pull/2814 995[#2822]: https://github.com/tokio-rs/tokio/pull/2822 996[#2823]: https://github.com/tokio-rs/tokio/pull/2823 997[#2826]: https://github.com/tokio-rs/tokio/pull/2826 998[#2828]: https://github.com/tokio-rs/tokio/pull/2828 999[#2833]: https://github.com/tokio-rs/tokio/pull/2833 1000[#2835]: https://github.com/tokio-rs/tokio/pull/2835 1001[#2840]: https://github.com/tokio-rs/tokio/pull/2840 1002[#2845]: https://github.com/tokio-rs/tokio/pull/2845 1003[#2856]: https://github.com/tokio-rs/tokio/pull/2856 1004[#2861]: https://github.com/tokio-rs/tokio/pull/2861 1005[#2876]: https://github.com/tokio-rs/tokio/pull/2876 1006[#2882]: https://github.com/tokio-rs/tokio/pull/2882 1007[#2885]: https://github.com/tokio-rs/tokio/pull/2885 1008[#2890]: https://github.com/tokio-rs/tokio/pull/2890 1009[#2893]: https://github.com/tokio-rs/tokio/pull/2893 1010[#2897]: https://github.com/tokio-rs/tokio/pull/2897 1011[#2908]: https://github.com/tokio-rs/tokio/pull/2908 1012[#2911]: https://github.com/tokio-rs/tokio/pull/2911 1013[#2919]: https://github.com/tokio-rs/tokio/pull/2919 1014[#2920]: https://github.com/tokio-rs/tokio/pull/2920 1015[#2930]: https://github.com/tokio-rs/tokio/pull/2930 1016[#2934]: https://github.com/tokio-rs/tokio/pull/2934 1017[#2954]: https://github.com/tokio-rs/tokio/pull/2954 1018 1019# 0.2.22 (July 21, 2020) 1020 1021### Fixes 1022 1023- docs: misc improvements ([#2572], [#2658], [#2663], [#2656], [#2647], [#2630], [#2487], [#2621], 1024 [#2624], [#2600], [#2623], [#2622], [#2577], [#2569], [#2589], [#2575], [#2540], [#2564], [#2567], 1025 [#2520], [#2521], [#2493]) 1026- rt: allow calls to `block_on` inside calls to `block_in_place` that are 1027 themselves inside `block_on` ([#2645]) 1028- net: fix non-portable behavior when dropping `TcpStream` `OwnedWriteHalf` ([#2597]) 1029- io: improve stack usage by allocating large buffers on directly on the heap 1030 ([#2634]) 1031- io: fix unsound pin projection in `AsyncReadExt::read_buf` and 1032 `AsyncWriteExt::write_buf` ([#2612]) 1033- io: fix unnecessary zeroing for `AsyncRead` implementors ([#2525]) 1034- io: Fix `BufReader` not correctly forwarding `poll_write_buf` ([#2654]) 1035- io: fix panic in `AsyncReadExt::read_line` ([#2541]) 1036 1037### Changes 1038 1039- coop: returning `Poll::Pending` no longer decrements the task budget ([#2549]) 1040 1041### Added 1042 1043- io: little-endian variants of `AsyncReadExt` and `AsyncWriteExt` methods 1044 ([#1915]) 1045- task: add [`tracing`] instrumentation to spawned tasks ([#2655]) 1046- sync: allow unsized types in `Mutex` and `RwLock` (via `default` constructors) 1047 ([#2615]) 1048- net: add `ToSocketAddrs` implementation for `&[SocketAddr]` ([#2604]) 1049- fs: add `OpenOptionsExt` for `OpenOptions` ([#2515]) 1050- fs: add `DirBuilder` ([#2524]) 1051 1052[`tracing`]: https://crates.io/crates/tracing 1053[#1915]: https://github.com/tokio-rs/tokio/pull/1915 1054[#2487]: https://github.com/tokio-rs/tokio/pull/2487 1055[#2493]: https://github.com/tokio-rs/tokio/pull/2493 1056[#2515]: https://github.com/tokio-rs/tokio/pull/2515 1057[#2520]: https://github.com/tokio-rs/tokio/pull/2520 1058[#2521]: https://github.com/tokio-rs/tokio/pull/2521 1059[#2524]: https://github.com/tokio-rs/tokio/pull/2524 1060[#2525]: https://github.com/tokio-rs/tokio/pull/2525 1061[#2540]: https://github.com/tokio-rs/tokio/pull/2540 1062[#2541]: https://github.com/tokio-rs/tokio/pull/2541 1063[#2549]: https://github.com/tokio-rs/tokio/pull/2549 1064[#2564]: https://github.com/tokio-rs/tokio/pull/2564 1065[#2567]: https://github.com/tokio-rs/tokio/pull/2567 1066[#2569]: https://github.com/tokio-rs/tokio/pull/2569 1067[#2572]: https://github.com/tokio-rs/tokio/pull/2572 1068[#2575]: https://github.com/tokio-rs/tokio/pull/2575 1069[#2577]: https://github.com/tokio-rs/tokio/pull/2577 1070[#2589]: https://github.com/tokio-rs/tokio/pull/2589 1071[#2597]: https://github.com/tokio-rs/tokio/pull/2597 1072[#2600]: https://github.com/tokio-rs/tokio/pull/2600 1073[#2604]: https://github.com/tokio-rs/tokio/pull/2604 1074[#2612]: https://github.com/tokio-rs/tokio/pull/2612 1075[#2615]: https://github.com/tokio-rs/tokio/pull/2615 1076[#2621]: https://github.com/tokio-rs/tokio/pull/2621 1077[#2622]: https://github.com/tokio-rs/tokio/pull/2622 1078[#2623]: https://github.com/tokio-rs/tokio/pull/2623 1079[#2624]: https://github.com/tokio-rs/tokio/pull/2624 1080[#2630]: https://github.com/tokio-rs/tokio/pull/2630 1081[#2634]: https://github.com/tokio-rs/tokio/pull/2634 1082[#2645]: https://github.com/tokio-rs/tokio/pull/2645 1083[#2647]: https://github.com/tokio-rs/tokio/pull/2647 1084[#2654]: https://github.com/tokio-rs/tokio/pull/2654 1085[#2655]: https://github.com/tokio-rs/tokio/pull/2655 1086[#2656]: https://github.com/tokio-rs/tokio/pull/2656 1087[#2658]: https://github.com/tokio-rs/tokio/pull/2658 1088[#2663]: https://github.com/tokio-rs/tokio/pull/2663 1089 1090# 0.2.21 (May 13, 2020) 1091 1092### Fixes 1093 1094- macros: disambiguate built-in `#[test]` attribute in macro expansion ([#2503]) 1095- rt: `LocalSet` and task budgeting ([#2462]). 1096- rt: task budgeting with `block_in_place` ([#2502]). 1097- sync: release `broadcast` channel memory without sending a value ([#2509]). 1098- time: notify when resetting a `Delay` to a time in the past ([#2290]) 1099 1100### Added 1101 1102- io: `get_mut`, `get_ref`, and `into_inner` to `Lines` ([#2450]). 1103- io: `mio::Ready` argument to `PollEvented` ([#2419]). 1104- os: illumos support ([#2486]). 1105- rt: `Handle::spawn_blocking` ([#2501]). 1106- sync: `OwnedMutexGuard` for `Arc<Mutex<T>>` ([#2455]). 1107 1108[#2290]: https://github.com/tokio-rs/tokio/pull/2290 1109[#2419]: https://github.com/tokio-rs/tokio/pull/2419 1110[#2450]: https://github.com/tokio-rs/tokio/pull/2450 1111[#2455]: https://github.com/tokio-rs/tokio/pull/2455 1112[#2462]: https://github.com/tokio-rs/tokio/pull/2462 1113[#2486]: https://github.com/tokio-rs/tokio/pull/2486 1114[#2501]: https://github.com/tokio-rs/tokio/pull/2501 1115[#2502]: https://github.com/tokio-rs/tokio/pull/2502 1116[#2503]: https://github.com/tokio-rs/tokio/pull/2503 1117[#2509]: https://github.com/tokio-rs/tokio/pull/2509 1118 1119# 0.2.20 (April 28, 2020) 1120 1121### Fixes 1122 1123- sync: `broadcast` closing the channel no longer requires capacity ([#2448]). 1124- rt: regression when configuring runtime with `max_threads` less than number of CPUs ([#2457]). 1125 1126[#2448]: https://github.com/tokio-rs/tokio/pull/2448 1127[#2457]: https://github.com/tokio-rs/tokio/pull/2457 1128 1129# 0.2.19 (April 24, 2020) 1130 1131### Fixes 1132 1133- docs: misc improvements ([#2400], [#2405], [#2414], [#2420], [#2423], [#2426], [#2427], [#2434], [#2436], [#2440]). 1134- rt: support `block_in_place` in more contexts ([#2409], [#2410]). 1135- stream: no panic in `merge()` and `chain()` when using `size_hint()` ([#2430]). 1136- task: include visibility modifier when defining a task-local ([#2416]). 1137 1138### Added 1139 1140- rt: `runtime::Handle::block_on` ([#2437]). 1141- sync: owned `Semaphore` permit ([#2421]). 1142- tcp: owned split ([#2270]). 1143 1144[#2270]: https://github.com/tokio-rs/tokio/pull/2270 1145[#2400]: https://github.com/tokio-rs/tokio/pull/2400 1146[#2405]: https://github.com/tokio-rs/tokio/pull/2405 1147[#2409]: https://github.com/tokio-rs/tokio/pull/2409 1148[#2410]: https://github.com/tokio-rs/tokio/pull/2410 1149[#2414]: https://github.com/tokio-rs/tokio/pull/2414 1150[#2416]: https://github.com/tokio-rs/tokio/pull/2416 1151[#2420]: https://github.com/tokio-rs/tokio/pull/2420 1152[#2421]: https://github.com/tokio-rs/tokio/pull/2421 1153[#2423]: https://github.com/tokio-rs/tokio/pull/2423 1154[#2426]: https://github.com/tokio-rs/tokio/pull/2426 1155[#2427]: https://github.com/tokio-rs/tokio/pull/2427 1156[#2430]: https://github.com/tokio-rs/tokio/pull/2430 1157[#2434]: https://github.com/tokio-rs/tokio/pull/2434 1158[#2436]: https://github.com/tokio-rs/tokio/pull/2436 1159[#2437]: https://github.com/tokio-rs/tokio/pull/2437 1160[#2440]: https://github.com/tokio-rs/tokio/pull/2440 1161 1162# 0.2.18 (April 12, 2020) 1163 1164### Fixes 1165 1166- task: `LocalSet` was incorrectly marked as `Send` ([#2398]) 1167- io: correctly report `WriteZero` failure in `write_int` ([#2334]) 1168 1169[#2334]: https://github.com/tokio-rs/tokio/pull/2334 1170[#2398]: https://github.com/tokio-rs/tokio/pull/2398 1171 1172# 0.2.17 (April 9, 2020) 1173 1174### Fixes 1175 1176- rt: bug in work-stealing queue ([#2387]) 1177 1178### Changes 1179 1180- rt: threadpool uses logical CPU count instead of physical by default ([#2391]) 1181 1182[#2387]: https://github.com/tokio-rs/tokio/pull/2387 1183[#2391]: https://github.com/tokio-rs/tokio/pull/2391 1184 1185# 0.2.16 (April 3, 2020) 1186 1187### Fixes 1188 1189- sync: fix a regression where `Mutex`, `Semaphore`, and `RwLock` futures no 1190 longer implement `Sync` ([#2375]) 1191- fs: fix `fs::copy` not copying file permissions ([#2354]) 1192 1193### Added 1194 1195- time: added `deadline` method to `delay_queue::Expired` ([#2300]) 1196- io: added `StreamReader` ([#2052]) 1197 1198[#2052]: https://github.com/tokio-rs/tokio/pull/2052 1199[#2300]: https://github.com/tokio-rs/tokio/pull/2300 1200[#2354]: https://github.com/tokio-rs/tokio/pull/2354 1201[#2375]: https://github.com/tokio-rs/tokio/pull/2375 1202 1203# 0.2.15 (April 2, 2020) 1204 1205### Fixes 1206 1207- rt: fix queue regression ([#2362]). 1208 1209### Added 1210 1211- sync: Add disarm to `mpsc::Sender` ([#2358]). 1212 1213[#2358]: https://github.com/tokio-rs/tokio/pull/2358 1214[#2362]: https://github.com/tokio-rs/tokio/pull/2362 1215 1216# 0.2.14 (April 1, 2020) 1217 1218### Fixes 1219 1220- rt: concurrency bug in scheduler ([#2273]). 1221- rt: concurrency bug with shell runtime ([#2333]). 1222- test-util: correct pause/resume of time ([#2253]). 1223- time: `DelayQueue` correct wakeup after `insert` ([#2285]). 1224 1225### Added 1226 1227- io: impl `RawFd`, `AsRawHandle` for std io types ([#2335]). 1228- rt: automatic cooperative task yielding ([#2160], [#2343], [#2349]). 1229- sync: `RwLock::into_inner` ([#2321]). 1230 1231### Changed 1232 1233- sync: semaphore, mutex internals rewritten to avoid allocations ([#2325]). 1234 1235[#2160]: https://github.com/tokio-rs/tokio/pull/2160 1236[#2253]: https://github.com/tokio-rs/tokio/pull/2253 1237[#2273]: https://github.com/tokio-rs/tokio/pull/2273 1238[#2285]: https://github.com/tokio-rs/tokio/pull/2285 1239[#2321]: https://github.com/tokio-rs/tokio/pull/2321 1240[#2325]: https://github.com/tokio-rs/tokio/pull/2325 1241[#2333]: https://github.com/tokio-rs/tokio/pull/2333 1242[#2335]: https://github.com/tokio-rs/tokio/pull/2335 1243[#2343]: https://github.com/tokio-rs/tokio/pull/2343 1244[#2349]: https://github.com/tokio-rs/tokio/pull/2349 1245 1246# 0.2.13 (February 28, 2020) 1247 1248### Fixes 1249 1250- macros: unresolved import in `pin!` ([#2281]). 1251 1252[#2281]: https://github.com/tokio-rs/tokio/pull/2281 1253 1254# 0.2.12 (February 27, 2020) 1255 1256### Fixes 1257 1258- net: `UnixStream::poll_shutdown` should call `shutdown(Write)` ([#2245]). 1259- process: Wake up read and write on `EPOLLERR` ([#2218]). 1260- rt: potential deadlock when using `block_in_place` and shutting down the 1261 runtime ([#2119]). 1262- rt: only detect number of CPUs if `core_threads` not specified ([#2238]). 1263- sync: reduce `watch::Receiver` struct size ([#2191]). 1264- time: succeed when setting delay of `$MAX-1` ([#2184]). 1265- time: avoid having to poll `DelayQueue` after inserting new delay ([#2217]). 1266 1267### Added 1268 1269- macros: `pin!` variant that assigns to identifier and pins ([#2274]). 1270- net: impl `Stream` for `Listener` types ([#2275]). 1271- rt: `Runtime::shutdown_timeout` waits for runtime to shutdown for specified 1272 duration ([#2186]). 1273- stream: `StreamMap` merges streams and can insert / remove streams at 1274 runtime ([#2185]). 1275- stream: `StreamExt::skip()` skips a fixed number of items ([#2204]). 1276- stream: `StreamExt::skip_while()` skips items based on a predicate ([#2205]). 1277- sync: `Notify` provides basic `async` / `await` task notification ([#2210]). 1278- sync: `Mutex::into_inner` retrieves guarded data ([#2250]). 1279- sync: `mpsc::Sender::send_timeout` sends, waiting for up to specified duration 1280 for channel capacity ([#2227]). 1281- time: impl `Ord` and `Hash` for `Instant` ([#2239]). 1282 1283[#2119]: https://github.com/tokio-rs/tokio/pull/2119 1284[#2184]: https://github.com/tokio-rs/tokio/pull/2184 1285[#2185]: https://github.com/tokio-rs/tokio/pull/2185 1286[#2186]: https://github.com/tokio-rs/tokio/pull/2186 1287[#2191]: https://github.com/tokio-rs/tokio/pull/2191 1288[#2204]: https://github.com/tokio-rs/tokio/pull/2204 1289[#2205]: https://github.com/tokio-rs/tokio/pull/2205 1290[#2210]: https://github.com/tokio-rs/tokio/pull/2210 1291[#2217]: https://github.com/tokio-rs/tokio/pull/2217 1292[#2218]: https://github.com/tokio-rs/tokio/pull/2218 1293[#2227]: https://github.com/tokio-rs/tokio/pull/2227 1294[#2238]: https://github.com/tokio-rs/tokio/pull/2238 1295[#2239]: https://github.com/tokio-rs/tokio/pull/2239 1296[#2245]: https://github.com/tokio-rs/tokio/pull/2245 1297[#2250]: https://github.com/tokio-rs/tokio/pull/2250 1298[#2274]: https://github.com/tokio-rs/tokio/pull/2274 1299[#2275]: https://github.com/tokio-rs/tokio/pull/2275 1300 1301# 0.2.11 (January 27, 2020) 1302 1303### Fixes 1304 1305- docs: misc fixes and tweaks ([#2155], [#2103], [#2027], [#2167], [#2175]). 1306- macros: handle generics in `#[tokio::main]` method ([#2177]). 1307- sync: `broadcast` potential lost notifications ([#2135]). 1308- rt: improve "no runtime" panic messages ([#2145]). 1309 1310### Added 1311 1312- optional support for using `parking_lot` internally ([#2164]). 1313- fs: `fs::copy`, an async version of `std::fs::copy` ([#2079]). 1314- macros: `select!` waits for the first branch to complete ([#2152]). 1315- macros: `join!` waits for all branches to complete ([#2158]). 1316- macros: `try_join!` waits for all branches to complete or the first error ([#2169]). 1317- macros: `pin!` pins a value to the stack ([#2163]). 1318- net: `ReadHalf::poll()` and `ReadHalf::poll_peak` ([#2151]) 1319- stream: `StreamExt::timeout()` sets a per-item max duration ([#2149]). 1320- stream: `StreamExt::fold()` applies a function, producing a single value. ([#2122]). 1321- sync: impl `Eq`, `PartialEq` for `oneshot::RecvError` ([#2168]). 1322- task: methods for inspecting the `JoinError` cause ([#2051]). 1323 1324[#2027]: https://github.com/tokio-rs/tokio/pull/2027 1325[#2051]: https://github.com/tokio-rs/tokio/pull/2051 1326[#2079]: https://github.com/tokio-rs/tokio/pull/2079 1327[#2103]: https://github.com/tokio-rs/tokio/pull/2103 1328[#2122]: https://github.com/tokio-rs/tokio/pull/2122 1329[#2135]: https://github.com/tokio-rs/tokio/pull/2135 1330[#2145]: https://github.com/tokio-rs/tokio/pull/2145 1331[#2149]: https://github.com/tokio-rs/tokio/pull/2149 1332[#2151]: https://github.com/tokio-rs/tokio/pull/2151 1333[#2152]: https://github.com/tokio-rs/tokio/pull/2152 1334[#2155]: https://github.com/tokio-rs/tokio/pull/2155 1335[#2158]: https://github.com/tokio-rs/tokio/pull/2158 1336[#2163]: https://github.com/tokio-rs/tokio/pull/2163 1337[#2164]: https://github.com/tokio-rs/tokio/pull/2164 1338[#2167]: https://github.com/tokio-rs/tokio/pull/2167 1339[#2168]: https://github.com/tokio-rs/tokio/pull/2168 1340[#2169]: https://github.com/tokio-rs/tokio/pull/2169 1341[#2175]: https://github.com/tokio-rs/tokio/pull/2175 1342[#2177]: https://github.com/tokio-rs/tokio/pull/2177 1343 1344# 0.2.10 (January 21, 2020) 1345 1346### Fixes 1347 1348- `#[tokio::main]` when `rt-core` feature flag is not enabled ([#2139]). 1349- remove `AsyncBufRead` from `BufStream` impl block ([#2108]). 1350- potential undefined behavior when implementing `AsyncRead` incorrectly ([#2030]). 1351 1352### Added 1353 1354- `BufStream::with_capacity` ([#2125]). 1355- impl `From` and `Default` for `RwLock` ([#2089]). 1356- `io::ReadHalf::is_pair_of` checks if provided `WriteHalf` is for the same 1357 underlying object ([#1762], [#2144]). 1358- `runtime::Handle::try_current()` returns a handle to the current runtime ([#2118]). 1359- `stream::empty()` returns an immediately ready empty stream ([#2092]). 1360- `stream::once(val)` returns a stream that yields a single value: `val` ([#2094]). 1361- `stream::pending()` returns a stream that never becomes ready ([#2092]). 1362- `StreamExt::chain()` sequences a second stream after the first completes ([#2093]). 1363- `StreamExt::collect()` transform a stream into a collection ([#2109]). 1364- `StreamExt::fuse` ends the stream after the first `None` ([#2085]). 1365- `StreamExt::merge` combines two streams, yielding values as they become ready ([#2091]). 1366- Task-local storage ([#2126]). 1367 1368[#1762]: https://github.com/tokio-rs/tokio/pull/1762 1369[#2030]: https://github.com/tokio-rs/tokio/pull/2030 1370[#2085]: https://github.com/tokio-rs/tokio/pull/2085 1371[#2089]: https://github.com/tokio-rs/tokio/pull/2089 1372[#2091]: https://github.com/tokio-rs/tokio/pull/2091 1373[#2092]: https://github.com/tokio-rs/tokio/pull/2092 1374[#2093]: https://github.com/tokio-rs/tokio/pull/2093 1375[#2094]: https://github.com/tokio-rs/tokio/pull/2094 1376[#2108]: https://github.com/tokio-rs/tokio/pull/2108 1377[#2109]: https://github.com/tokio-rs/tokio/pull/2109 1378[#2118]: https://github.com/tokio-rs/tokio/pull/2118 1379[#2125]: https://github.com/tokio-rs/tokio/pull/2125 1380[#2126]: https://github.com/tokio-rs/tokio/pull/2126 1381[#2139]: https://github.com/tokio-rs/tokio/pull/2139 1382[#2144]: https://github.com/tokio-rs/tokio/pull/2144 1383 1384# 0.2.9 (January 9, 2020) 1385 1386### Fixes 1387 1388- `AsyncSeek` impl for `File` ([#1986]). 1389- rt: shutdown deadlock in `threaded_scheduler` ([#2074], [#2082]). 1390- rt: memory ordering when dropping `JoinHandle` ([#2044]). 1391- docs: misc API documentation fixes and improvements. 1392 1393[#1986]: https://github.com/tokio-rs/tokio/pull/1986 1394[#2044]: https://github.com/tokio-rs/tokio/pull/2044 1395[#2074]: https://github.com/tokio-rs/tokio/pull/2074 1396[#2082]: https://github.com/tokio-rs/tokio/pull/2082 1397 1398# 0.2.8 (January 7, 2020) 1399 1400### Fixes 1401 1402- depend on new version of `tokio-macros`. 1403 1404# 0.2.7 (January 7, 2020) 1405 1406### Fixes 1407 1408- potential deadlock when dropping `basic_scheduler` Runtime. 1409- calling `spawn_blocking` from within a `spawn_blocking` ([#2006]). 1410- storing a `Runtime` instance in a thread-local ([#2011]). 1411- miscellaneous documentation fixes. 1412- rt: fix `Waker::will_wake` to return true when tasks match ([#2045]). 1413- test-util: `time::advance` runs pending tasks before changing the time ([#2059]). 1414 1415### Added 1416 1417- `net::lookup_host` maps a `T: ToSocketAddrs` to a stream of `SocketAddrs` ([#1870]). 1418- `process::Child` fields are made public to match `std` ([#2014]). 1419- impl `Stream` for `sync::broadcast::Receiver` ([#2012]). 1420- `sync::RwLock` provides an asynchonous read-write lock ([#1699]). 1421- `runtime::Handle::current` returns the handle for the current runtime ([#2040]). 1422- `StreamExt::filter` filters stream values according to a predicate ([#2001]). 1423- `StreamExt::filter_map` simultaneously filter and map stream values ([#2001]). 1424- `StreamExt::try_next` convenience for streams of `Result<T, E>` ([#2005]). 1425- `StreamExt::take` limits a stream to a specified number of values ([#2025]). 1426- `StreamExt::take_while` limits a stream based on a predicate ([#2029]). 1427- `StreamExt::all` tests if every element of the stream matches a predicate ([#2035]). 1428- `StreamExt::any` tests if any element of the stream matches a predicate ([#2034]). 1429- `task::LocalSet.await` runs spawned tasks until the set is idle ([#1971]). 1430- `time::DelayQueue::len` returns the number entries in the queue ([#1755]). 1431- expose runtime options from the `#[tokio::main]` and `#[tokio::test]` ([#2022]). 1432 1433[#1699]: https://github.com/tokio-rs/tokio/pull/1699 1434[#1755]: https://github.com/tokio-rs/tokio/pull/1755 1435[#1870]: https://github.com/tokio-rs/tokio/pull/1870 1436[#1971]: https://github.com/tokio-rs/tokio/pull/1971 1437[#2001]: https://github.com/tokio-rs/tokio/pull/2001 1438[#2005]: https://github.com/tokio-rs/tokio/pull/2005 1439[#2006]: https://github.com/tokio-rs/tokio/pull/2006 1440[#2011]: https://github.com/tokio-rs/tokio/pull/2011 1441[#2012]: https://github.com/tokio-rs/tokio/pull/2012 1442[#2014]: https://github.com/tokio-rs/tokio/pull/2014 1443[#2022]: https://github.com/tokio-rs/tokio/pull/2022 1444[#2025]: https://github.com/tokio-rs/tokio/pull/2025 1445[#2029]: https://github.com/tokio-rs/tokio/pull/2029 1446[#2034]: https://github.com/tokio-rs/tokio/pull/2034 1447[#2035]: https://github.com/tokio-rs/tokio/pull/2035 1448[#2040]: https://github.com/tokio-rs/tokio/pull/2040 1449[#2045]: https://github.com/tokio-rs/tokio/pull/2045 1450[#2059]: https://github.com/tokio-rs/tokio/pull/2059 1451 1452# 0.2.6 (December 19, 2019) 1453 1454### Fixes 1455 1456- `fs::File::seek` API regression ([#1991]). 1457 1458[#1991]: https://github.com/tokio-rs/tokio/pull/1991 1459 1460# 0.2.5 (December 18, 2019) 1461 1462### Added 1463 1464- `io::AsyncSeek` trait ([#1924]). 1465- `Mutex::try_lock` ([#1939]) 1466- `mpsc::Receiver::try_recv` and `mpsc::UnboundedReceiver::try_recv` ([#1939]). 1467- `writev` support for `TcpStream` ([#1956]). 1468- `time::throttle` for throttling streams ([#1949]). 1469- implement `Stream` for `time::DelayQueue` ([#1975]). 1470- `sync::broadcast` provides a fan-out channel ([#1943]). 1471- `sync::Semaphore` provides an async semaphore ([#1973]). 1472- `stream::StreamExt` provides stream utilities ([#1962]). 1473 1474### Fixes 1475 1476- deadlock risk while shutting down the runtime ([#1972]). 1477- panic while shutting down the runtime ([#1978]). 1478- `sync::MutexGuard` debug output ([#1961]). 1479- misc doc improvements ([#1933], [#1934], [#1940], [#1942]). 1480 1481### Changes 1482 1483- runtime threads are configured with `runtime::Builder::core_threads` and 1484 `runtime::Builder::max_threads`. `runtime::Builder::num_threads` is 1485 deprecated ([#1977]). 1486 1487[#1924]: https://github.com/tokio-rs/tokio/pull/1924 1488[#1933]: https://github.com/tokio-rs/tokio/pull/1933 1489[#1934]: https://github.com/tokio-rs/tokio/pull/1934 1490[#1939]: https://github.com/tokio-rs/tokio/pull/1939 1491[#1940]: https://github.com/tokio-rs/tokio/pull/1940 1492[#1942]: https://github.com/tokio-rs/tokio/pull/1942 1493[#1943]: https://github.com/tokio-rs/tokio/pull/1943 1494[#1949]: https://github.com/tokio-rs/tokio/pull/1949 1495[#1956]: https://github.com/tokio-rs/tokio/pull/1956 1496[#1961]: https://github.com/tokio-rs/tokio/pull/1961 1497[#1962]: https://github.com/tokio-rs/tokio/pull/1962 1498[#1972]: https://github.com/tokio-rs/tokio/pull/1972 1499[#1973]: https://github.com/tokio-rs/tokio/pull/1973 1500[#1975]: https://github.com/tokio-rs/tokio/pull/1975 1501[#1977]: https://github.com/tokio-rs/tokio/pull/1977 1502[#1978]: https://github.com/tokio-rs/tokio/pull/1978 1503 1504# 0.2.4 (December 6, 2019) 1505 1506### Fixes 1507 1508- `sync::Mutex` deadlock when `lock()` future is dropped early ([#1898]). 1509 1510[#1898]: https://github.com/tokio-rs/tokio/pull/1898 1511 1512# 0.2.3 (December 6, 2019) 1513 1514### Added 1515 1516- read / write integers using `AsyncReadExt` and `AsyncWriteExt` ([#1863]). 1517- `read_buf` / `write_buf` for reading / writing `Buf` / `BufMut` ([#1881]). 1518- `TcpStream::poll_peek` - pollable API for performing TCP peek ([#1864]). 1519- `sync::oneshot::error::TryRecvError` provides variants to detect the error 1520 kind ([#1874]). 1521- `LocalSet::block_on` accepts `!'static` task ([#1882]). 1522- `task::JoinError` is now `Sync` ([#1888]). 1523- impl conversions between `tokio::time::Instant` and 1524 `std::time::Instant` ([#1904]). 1525 1526### Fixes 1527 1528- calling `spawn_blocking` after runtime shutdown ([#1875]). 1529- `LocalSet` drop inifinite loop ([#1892]). 1530- `LocalSet` hang under load ([#1905]). 1531- improved documentation ([#1865], [#1866], [#1868], [#1874], [#1876], [#1911]). 1532 1533[#1863]: https://github.com/tokio-rs/tokio/pull/1863 1534[#1864]: https://github.com/tokio-rs/tokio/pull/1864 1535[#1865]: https://github.com/tokio-rs/tokio/pull/1865 1536[#1866]: https://github.com/tokio-rs/tokio/pull/1866 1537[#1868]: https://github.com/tokio-rs/tokio/pull/1868 1538[#1874]: https://github.com/tokio-rs/tokio/pull/1874 1539[#1875]: https://github.com/tokio-rs/tokio/pull/1875 1540[#1876]: https://github.com/tokio-rs/tokio/pull/1876 1541[#1881]: https://github.com/tokio-rs/tokio/pull/1881 1542[#1882]: https://github.com/tokio-rs/tokio/pull/1882 1543[#1888]: https://github.com/tokio-rs/tokio/pull/1888 1544[#1892]: https://github.com/tokio-rs/tokio/pull/1892 1545[#1904]: https://github.com/tokio-rs/tokio/pull/1904 1546[#1905]: https://github.com/tokio-rs/tokio/pull/1905 1547[#1911]: https://github.com/tokio-rs/tokio/pull/1911 1548 1549# 0.2.2 (November 29, 2019) 1550 1551### Fixes 1552 1553- scheduling with `basic_scheduler` ([#1861]). 1554- update `spawn` panic message to specify that a task scheduler is required ([#1839]). 1555- API docs example for `runtime::Builder` to include a task scheduler ([#1841]). 1556- general documentation ([#1834]). 1557- building on illumos/solaris ([#1772]). 1558- panic when dropping `LocalSet` ([#1843]). 1559- API docs mention the required Cargo features for `Builder::{basic, threaded}_scheduler` ([#1858]). 1560 1561### Added 1562 1563- impl `Stream` for `signal::unix::Signal` ([#1849]). 1564- API docs for platform specific behavior of `signal::ctrl_c` and `signal::unix::Signal` ([#1854]). 1565- API docs for `signal::unix::Signal::{recv, poll_recv}` and `signal::windows::CtrlBreak::{recv, poll_recv}` ([#1854]). 1566- `File::into_std` and `File::try_into_std` methods ([#1856]). 1567 1568[#1772]: https://github.com/tokio-rs/tokio/pull/1772 1569[#1834]: https://github.com/tokio-rs/tokio/pull/1834 1570[#1839]: https://github.com/tokio-rs/tokio/pull/1839 1571[#1841]: https://github.com/tokio-rs/tokio/pull/1841 1572[#1843]: https://github.com/tokio-rs/tokio/pull/1843 1573[#1849]: https://github.com/tokio-rs/tokio/pull/1849 1574[#1854]: https://github.com/tokio-rs/tokio/pull/1854 1575[#1856]: https://github.com/tokio-rs/tokio/pull/1856 1576[#1858]: https://github.com/tokio-rs/tokio/pull/1858 1577[#1861]: https://github.com/tokio-rs/tokio/pull/1861 1578 1579# 0.2.1 (November 26, 2019) 1580 1581### Fixes 1582 1583- API docs for `TcpListener::incoming`, `UnixListener::incoming` ([#1831]). 1584 1585### Added 1586 1587- `tokio::task::LocalSet` provides a strategy for spawning `!Send` tasks ([#1733]). 1588- export `tokio::time::Elapsed` ([#1826]). 1589- impl `AsRawFd`, `AsRawHandle` for `tokio::fs::File` ([#1827]). 1590 1591[#1733]: https://github.com/tokio-rs/tokio/pull/1733 1592[#1826]: https://github.com/tokio-rs/tokio/pull/1826 1593[#1827]: https://github.com/tokio-rs/tokio/pull/1827 1594[#1831]: https://github.com/tokio-rs/tokio/pull/1831 1595 1596# 0.2.0 (November 26, 2019) 1597 1598A major breaking change. Most implementation and APIs have changed one way or 1599another. This changelog entry contains a highlight 1600 1601### Changed 1602 1603- APIs are updated to use `async / await`. 1604- most `tokio-*` crates are collapsed into this crate. 1605- Scheduler is rewritten. 1606- `tokio::spawn` returns a `JoinHandle`. 1607- A single I/O / timer is used per runtime. 1608- I/O driver uses a concurrent slab for allocating state. 1609- components are made available via feature flag. 1610- Use `bytes` 0.5 1611- `tokio::codec` is moved to `tokio-util`. 1612 1613### Removed 1614 1615- Standalone `timer` and `net` drivers are removed, use `Runtime` instead 1616- `current_thread` runtime is removed, use `tokio::runtime::Runtime` with 1617 `basic_scheduler` instead. 1618 1619# 0.1.21 (May 30, 2019) 1620 1621### Changed 1622 1623- Bump `tokio-trace-core` version to 0.2 ([#1111]). 1624 1625[#1111]: https://github.com/tokio-rs/tokio/pull/1111 1626 1627# 0.1.20 (May 14, 2019) 1628 1629### Added 1630 1631- `tokio::runtime::Builder::panic_handler` allows configuring handling 1632 panics on the runtime ([#1055]). 1633 1634[#1055]: https://github.com/tokio-rs/tokio/pull/1055 1635 1636# 0.1.19 (April 22, 2019) 1637 1638### Added 1639 1640- Re-export `tokio::sync::Mutex` primitive ([#964]). 1641 1642[#964]: https://github.com/tokio-rs/tokio/pull/964 1643 1644# 0.1.18 (March 22, 2019) 1645 1646### Added 1647 1648- `TypedExecutor` re-export and implementations ([#993]). 1649 1650[#993]: https://github.com/tokio-rs/tokio/pull/993 1651 1652# 0.1.17 (March 13, 2019) 1653 1654### Added 1655 1656- Propagate trace subscriber in the runtime ([#966]). 1657 1658[#966]: https://github.com/tokio-rs/tokio/pull/966 1659 1660# 0.1.16 (March 1, 2019) 1661 1662### Fixed 1663 1664- async-await: track latest nightly changes ([#940]). 1665 1666### Added 1667 1668- `sync::Watch`, a single value broadcast channel ([#922]). 1669- Async equivalent of read / write file helpers being added to `std` ([#896]). 1670 1671[#896]: https://github.com/tokio-rs/tokio/pull/896 1672[#922]: https://github.com/tokio-rs/tokio/pull/922 1673[#940]: https://github.com/tokio-rs/tokio/pull/940 1674 1675# 0.1.15 (January 24, 2019) 1676 1677### Added 1678 1679- Re-export tokio-sync APIs ([#839]). 1680- Stream enumerate combinator ([#832]). 1681 1682[#832]: https://github.com/tokio-rs/tokio/pull/832 1683[#839]: https://github.com/tokio-rs/tokio/pull/839 1684 1685# 0.1.14 (January 6, 2019) 1686 1687- Use feature flags to break up the crate, allowing users to pick & choose 1688 components ([#808]). 1689- Export `UnixDatagram` and `UnixDatagramFramed` ([#772]). 1690 1691[#772]: https://github.com/tokio-rs/tokio/pull/772 1692[#808]: https://github.com/tokio-rs/tokio/pull/808 1693 1694# 0.1.13 (November 21, 2018) 1695 1696- Fix `Runtime::reactor()` when no tasks are spawned ([#721]). 1697- `runtime::Builder` no longer uses deprecated methods ([#749]). 1698- Provide `after_start` and `before_stop` configuration settings for 1699 `Runtime` ([#756]). 1700- Implement throttle stream combinator ([#736]). 1701 1702[#721]: https://github.com/tokio-rs/tokio/pull/721 1703[#736]: https://github.com/tokio-rs/tokio/pull/736 1704[#749]: https://github.com/tokio-rs/tokio/pull/749 1705[#756]: https://github.com/tokio-rs/tokio/pull/756 1706 1707# 0.1.12 (October 23, 2018) 1708 1709- runtime: expose `keep_alive` on runtime builder ([#676]). 1710- runtime: create a reactor per worker thread ([#660]). 1711- codec: fix panic in `LengthDelimitedCodec` ([#682]). 1712- io: re-export `tokio_io::io::read` function ([#689]). 1713- runtime: check for executor re-entry in more places ([#708]). 1714 1715[#660]: https://github.com/tokio-rs/tokio/pull/660 1716[#676]: https://github.com/tokio-rs/tokio/pull/676 1717[#682]: https://github.com/tokio-rs/tokio/pull/682 1718[#689]: https://github.com/tokio-rs/tokio/pull/689 1719[#708]: https://github.com/tokio-rs/tokio/pull/708 1720 1721# 0.1.11 (September 28, 2018) 1722 1723- Fix `tokio-async-await` dependency ([#675]). 1724 1725[#675]: https://github.com/tokio-rs/tokio/pull/675 1726 1727# 0.1.10 (September 27, 2018) 1728 1729- Fix minimal versions 1730 1731# 0.1.9 (September 27, 2018) 1732 1733- Experimental async/await improvements ([#661]). 1734- Re-export `TaskExecutor` from `tokio-current-thread` ([#652]). 1735- Improve `Runtime` builder API ([#645]). 1736- `tokio::run` panics when called from the context of an executor 1737 ([#646]). 1738- Introduce `StreamExt` with a `timeout` helper ([#573]). 1739- Move `length_delimited` into `tokio` ([#575]). 1740- Re-organize `tokio::net` module ([#548]). 1741- Re-export `tokio-current-thread::spawn` in current_thread runtime 1742 ([#579]). 1743 1744[#548]: https://github.com/tokio-rs/tokio/pull/548 1745[#573]: https://github.com/tokio-rs/tokio/pull/573 1746[#575]: https://github.com/tokio-rs/tokio/pull/575 1747[#579]: https://github.com/tokio-rs/tokio/pull/579 1748[#645]: https://github.com/tokio-rs/tokio/pull/645 1749[#646]: https://github.com/tokio-rs/tokio/pull/646 1750[#652]: https://github.com/tokio-rs/tokio/pull/652 1751[#661]: https://github.com/tokio-rs/tokio/pull/661 1752 1753# 0.1.8 (August 23, 2018) 1754 1755- Extract tokio::executor::current_thread to a sub crate ([#370]) 1756- Add `Runtime::block_on` ([#398]) 1757- Add `runtime::current_thread::block_on_all` ([#477]) 1758- Misc documentation improvements ([#450]) 1759- Implement `std::error::Error` for error types ([#501]) 1760 1761[#370]: https://github.com/tokio-rs/tokio/pull/370 1762[#398]: https://github.com/tokio-rs/tokio/pull/398 1763[#450]: https://github.com/tokio-rs/tokio/pull/450 1764[#477]: https://github.com/tokio-rs/tokio/pull/477 1765[#501]: https://github.com/tokio-rs/tokio/pull/501 1766 1767# 0.1.7 (June 6, 2018) 1768 1769- Add `Runtime::block_on` for concurrent runtime ([#391]). 1770- Provide handle to `current_thread::Runtime` that allows spawning tasks from 1771 other threads ([#340]). 1772- Provide `clock::now()`, a configurable source of time ([#381]). 1773 1774[#340]: https://github.com/tokio-rs/tokio/pull/340 1775[#381]: https://github.com/tokio-rs/tokio/pull/381 1776[#391]: https://github.com/tokio-rs/tokio/pull/391 1777 1778# 0.1.6 (May 2, 2018) 1779 1780- Add asynchronous filesystem APIs ([#323]). 1781- Add "current thread" runtime variant ([#308]). 1782- `CurrentThread`: Expose inner `Park` instance. 1783- Improve fairness of `CurrentThread` executor ([#313]). 1784 1785[#308]: https://github.com/tokio-rs/tokio/pull/308 1786[#313]: https://github.com/tokio-rs/tokio/pull/313 1787[#323]: https://github.com/tokio-rs/tokio/pull/323 1788 1789# 0.1.5 (March 30, 2018) 1790 1791- Provide timer API ([#266]) 1792 1793[#266]: https://github.com/tokio-rs/tokio/pull/266 1794 1795# 0.1.4 (March 22, 2018) 1796 1797- Fix build on FreeBSD ([#218]) 1798- Shutdown the Runtime when the handle is dropped ([#214]) 1799- Set Runtime thread name prefix for worker threads ([#232]) 1800- Add builder for Runtime ([#234]) 1801- Extract TCP and UDP types into separate crates ([#224]) 1802- Optionally support futures 0.2. 1803 1804[#214]: https://github.com/tokio-rs/tokio/pull/214 1805[#218]: https://github.com/tokio-rs/tokio/pull/218 1806[#224]: https://github.com/tokio-rs/tokio/pull/224 1807[#232]: https://github.com/tokio-rs/tokio/pull/232 1808[#234]: https://github.com/tokio-rs/tokio/pull/234 1809 1810# 0.1.3 (March 09, 2018) 1811 1812- Fix `CurrentThread::turn` to block on idle ([#212]). 1813 1814[#212]: https://github.com/tokio-rs/tokio/pull/212 1815 1816# 0.1.2 (March 09, 2018) 1817 1818- Introduce Tokio Runtime ([#141]) 1819- Provide `CurrentThread` for more flexible usage of current thread executor ([#141]). 1820- Add Lio for platforms that support it ([#142]). 1821- I/O resources now lazily bind to the reactor ([#160]). 1822- Extract Reactor to dedicated crate ([#169]) 1823- Add facade to sub crates and add prelude ([#166]). 1824- Switch TCP/UDP fns to poll\_ -> Poll<...> style ([#175]) 1825 1826[#141]: https://github.com/tokio-rs/tokio/pull/141 1827[#142]: https://github.com/tokio-rs/tokio/pull/142 1828[#160]: https://github.com/tokio-rs/tokio/pull/160 1829[#166]: https://github.com/tokio-rs/tokio/pull/166 1830[#169]: https://github.com/tokio-rs/tokio/pull/169 1831[#175]: https://github.com/tokio-rs/tokio/pull/175 1832 1833# 0.1.1 (February 09, 2018) 1834 1835- Doc fixes 1836 1837# 0.1.0 (February 07, 2018) 1838 1839- Initial crate released based on [RFC](https://github.com/tokio-rs/tokio-rfcs/pull/3). 1840