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