• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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