Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: prepare Tokio v1.17.0 release #4504

Merged
merged 4 commits into from
Feb 16, 2022
Merged

chore: prepare Tokio v1.17.0 release #4504

merged 4 commits into from
Feb 16, 2022

Conversation

hawkw
Copy link
Member

@hawkw hawkw commented Feb 15, 2022

1.17.0 (February 15, 2022)

This release updates the minimum supported Rust version (MSRV) to 1.49,
the mio dependency to v0.8, and the (optional) parking_lot
dependency to v0.12. Additionally, it contains several bug fixes, as
well as internal refactoring and performance improvements.

Fixed

  • time: prevent panicking in sleep with large durations (#4495)
  • time: eliminate potential panics in Instant arithmetic on platforms
    where Instant::now is not monotonic (#4461)
  • io: fix DuplexStream not participating in cooperative yielding
    (#4478)
  • rt: fix potential double panic when dropping a JoinHandle (#4430)

Changed

  • update minimum supported Rust version to 1.49 (#4457)
  • update parking_lot dependency to v0.12.0 (#4459)
  • update mio dependency to v0.8 (#4449)
  • rt: remove an unnecessary lock in the blocking pool (#4436)
  • rt: remove an unnecessary enum in the basic scheduler (#4462)
  • time: use bit manipulation instead of modulo to improve performance
    (#4480)
  • net: use std::future::Ready instead of our own Ready future
    (#4271)
  • replace deprecated atomic::spin_loop_hint with hint::spin_loop
    (#4491)
  • fix miri failures in intrusive linked lists (#4397)

Documented

  • io: add an example for tokio::process::ChildStdin (#4479)

Unstable

The following changes only apply when building with --cfg tokio_unstable:

  • task: fix missing location information in tracing spans generated by
    spawn_local (#4483)
  • task: add JoinSet for managing sets of tasks (#4335)
  • metrics: fix compilation error on MIPS (#4475)
  • metrics: fix compilation error on arm32v7 (#4453)

# 1.16.2 (February 15, 2022)

This release updates the minimum supported Rust version (MSRV) to 1.49,
the `mio` dependency to v0.8, and the (optional) `parking_lot`
dependency to v0.12. Additionally, it contains several bug fixes, as
well as internal refactoring and performance improvements.

### Fixed

- time: prevent panicking in `sleep` with large durations ([#4495])
- time: eliminate potential panics in `Instant` arithmetic on platforms
  where `Instant::now` is not monotonic ([#4461])
- io: fix `DuplexStream` not participating in cooperative yielding
  ([#4478])
- rt: fix potential double panic when dropping a `JoinHandle` ([#4430])

### Changed

- update minimum supported Rust version to 1.49 ([#4457])
- update `parking_lot` dependency to v0.12.0 ([#4459])
- update `mio` dependency to v0.8 ([#4449])
- rt: remove an unnecessary lock in the blocking pool ([#4436])
- rt: remove an unnecessary enum in the basic scheduler ([#4462])
- time: use bit manipulation instead of modulo to improve performance
  ([#4480])
- net: use `std::future::Ready` instead of our own `Ready` future
  ([#4271])
- replace deprecated `atomic::spin_loop_hint` with `hint::spin_loop`
  ([#4491])
- fix miri failures in intrusive linked lists ([#4397])

### Documented

- io: add an example for `tokio::process::ChildStdin` ([#4479])

### Unstable

The following changes only apply when building with `--cfg
tokio_unstable`:

- task: fix missing location information in `tracing` spans generated by
  `spawn_local` ([#4483])
- task: add `JoinSet` for managing sets of tasks ([#4335])
- metrics: fix compilation error on MIPS ([#4475])
- metrics: fix compilation error on arm32v7 ([#4453])

[#4495]: #4495
[#4461]: #4461
[#4478]: #4478
[#4430]: #4430
[#4457]: #4457
[#4459]: #4459
[#4449]: #4449
[#4462]: #4462
[#4436]: #4436
[#4480]: #4480
[#4271]: #4271
[#4491]: #4491
[#4397]: #4397
[#4479]: #4479
[#4483]: #4483
[#4335]: #4335
[#4475]: #4475
[#4453]: #4453
@hawkw
Copy link
Member Author

hawkw commented Feb 15, 2022

This PR also includes the results of running the bin/update-doc script. It looks like that hasn't happened in...a while. Should those changes be backed out?

@Darksonn
Copy link
Contributor

A patch release? I'm not sure things like upgrading mio should be a patch release.

@hawkw
Copy link
Member Author

hawkw commented Feb 15, 2022

@Darksonn

A patch release? I'm not sure things like upgrading mio should be a patch release.

I wasn't sure if this should be 1.17 or 1.16.2 either; my thinking was that the release doesn't actually add any APIs (outside of unstable features), so it isn't technically a minor version release. I agree that the Mio bump is a big change, but it doesn't actually touch Tokio's public API surface. This might be kind of a literalist interpretation of semver, though.

I'd be happy to change this to 1.17 if you and @carllerche think that would be more appropriate?

@carllerche
Copy link
Member

Patches are only for high priority bug fixes. Everything else is minor.

@hawkw hawkw changed the title chore: prepare Tokio v1.16.2 release chore: prepare Tokio v1.17.0 release Feb 15, 2022
@hawkw
Copy link
Member Author

hawkw commented Feb 15, 2022

Okay, changed the version to 1.17.0!

//! [`AsyncWrite`]: https://docs.rs/tokio/1.0/tokio/io/trait.AsyncWrite.html
//! [`tokio::io`]: https://docs.rs/tokio/1.17.0/tokio/io/index.html
//! [`AsyncRead`]: https://docs.rs/tokio/1.17.0/tokio/io/trait.AsyncRead.html
//! [`AsyncWrite`]: https://docs.rs/tokio/1.17.0/tokio/io/trait.AsyncWrite.html
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder if this should just be using latest rather than a specific version?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think that changing this might cause problems for IDEs that provide links to the docs when you hover over an item, as if a user was working with an older version of the library, the link might confusingly take them to the docs for the latest version if the IDE used this string to get the root url for the docs.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh nvm I see. I mistakenly thought we were referring to the one in Cargo.toml. Yeah I actually agree with you here, this probably should link to the latest.

It would be nice if we could get links that were semver aware, i.e. 1.X releases would have a dedicated latest so that API changes in a 2.X release wouldn't break older docs though.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

most READMEs and stuff are using latest; but the point Noah makes is also valid. it looks like we haven't been very good at keeping these up to date, even though there's a script for doing it, maybe we're better off switching to latest? idk.

i'm also happy to just back those changes out of this PR.

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice if we could get links that were semver aware, i.e. 1.X releases would have a dedicated latest so that API changes in a 2.X release wouldn't break older docs though.

i believe you can do that: https://docs.rs/tokio/1/tokio should take you to the latest v1.x.y version.

i can change these to do that in a separate branch?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

...oh, huh, https://docs.rs/tokio/1.0/tokio also links to 1.16.1. that's...not what i would have expected! but, i guess it means these are actually fine as-is.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I did not realize that we could do this! Yeah, I it would be good to open an issue and separate PR to change all cases where we do this to point to the 1.X latest, but that shouldn't block this release.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@hawkw apparently these strings are semver.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm sitting right next to one of the docs.rs maintainers so I asked him 😆

as per the discussion [here][1], we should probably address these
separately.

[1]: #4504 (comment)
@hawkw hawkw merged commit 43c224f into master Feb 16, 2022
@hawkw hawkw deleted the eliza/tokio-1.16.2 branch February 16, 2022 18:50
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants