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