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