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

Confusing MSRV #866

Open
Kixunil opened this issue Dec 15, 2021 · 6 comments
Open

Confusing MSRV #866

Kixunil opened this issue Dec 15, 2021 · 6 comments

Comments

@Kixunil
Copy link

Kixunil commented Dec 15, 2021

Bug Report

Version

0.6.2 - all of them

Platform

Irrelevant

Description

MSRV was previously 1.39, then it switched to 1.56 and later the edition was updated but not the version. This doesn't seem intended.

The CI also doesn't enforce MSRV, and it's not configured in clippy.toml.

I've previously said I'd like MSRV to be no greater than 1.48.0 but this specific request wasn't explicitly accepted nor denied.
tonic-build fails to compile on 1.48 due to #805 (it succeeds after patching it), which was cosmetic so hopefully this can be reverted?

If 1.48.0 or lower is accepted I'm willing to make a PR to:

  • Fix compilation
  • Add clippy.toml
  • Improve CI to enforce MSRV
  • Update the documentation
@LucioFranco
Copy link
Member

Yeah, tonic did not previously have a "msrv". I think it probably makes sense to adopt one now. We should follow the msrv that tokio is on.

@davidpdrsn
Copy link
Member

davidpdrsn commented Dec 31, 2021

I agree that adopting an MSRV is good :) However Tower and Axum both have an MSRV higher than tokio.

@LucioFranco
Copy link
Member

We can likely wait to set a MSRV until tokio reaches this higher MSRV :) Obviously since tower has a higher MSRv then we need to follow that.

@olix0r
Copy link
Contributor

olix0r commented Jan 3, 2022

@LucioFranco @davidpdrsn Just noting that tonic is going to have the latest of MSRV of all of its dependencies.

tonic v0.5.0 (/home/ver/b/tonic/tonic)
├── async-stream v0.3.2
│   ├── async-stream-impl v0.3.2 (proc-macro)
│   │   ├── proc-macro2 v1.0.36
│   │   │   └── unicode-xid v0.2.2
│   │   ├── quote v1.0.14
│   │   │   └── proc-macro2 v1.0.36 (*)
│   │   └── syn v1.0.84
│   │       ├── proc-macro2 v1.0.36 (*)
│   │       ├── quote v1.0.14 (*)
│   │       └── unicode-xid v0.2.2
│   └── futures-core v0.3.19
├── async-trait v0.1.52 (proc-macro)
│   ├── proc-macro2 v1.0.36 (*)
│   ├── quote v1.0.14 (*)
│   └── syn v1.0.84 (*)
├── base64 v0.13.0
├── bytes v1.1.0
├── flate2 v1.0.22
│   ├── cfg-if v1.0.0
│   ├── crc32fast v1.3.0
│   │   └── cfg-if v1.0.0
│   ├── libc v0.2.112
│   └── miniz_oxide v0.4.4
│       └── adler v1.0.2
│       [build-dependencies]
│       └── autocfg v1.0.1
├── futures-core v0.3.19
├── futures-util v0.3.19
│   ├── futures-core v0.3.19
│   ├── futures-task v0.3.19
│   ├── pin-project-lite v0.2.8
│   └── pin-utils v0.1.0
├── h2 v0.3.9
│   ├── bytes v1.1.0
│   ├── fnv v1.0.7
│   ├── futures-core v0.3.19
│   ├── futures-sink v0.3.19
│   ├── futures-util v0.3.19 (*)
│   ├── http v0.2.6
│   │   ├── bytes v1.1.0
│   │   ├── fnv v1.0.7
│   │   └── itoa v1.0.1
│   ├── indexmap v1.7.0
│   │   └── hashbrown v0.11.2
│   │   [build-dependencies]
│   │   └── autocfg v1.0.1
│   ├── slab v0.4.5
│   ├── tokio v1.15.0
│   │   ├── bytes v1.1.0
│   │   ├── libc v0.2.112
│   │   ├── memchr v2.4.1
│   │   ├── mio v0.7.14
│   │   │   ├── libc v0.2.112
│   │   │   └── log v0.4.14
│   │   │       └── cfg-if v1.0.0
│   │   ├── pin-project-lite v0.2.8
│   │   └── tokio-macros v1.7.0 (proc-macro)
│   │       ├── proc-macro2 v1.0.36 (*)
│   │       ├── quote v1.0.14 (*)
│   │       └── syn v1.0.84 (*)
│   ├── tokio-util v0.6.9
│   │   ├── bytes v1.1.0
│   │   ├── futures-core v0.3.19
│   │   ├── futures-sink v0.3.19
│   │   ├── log v0.4.14 (*)
│   │   ├── pin-project-lite v0.2.8
│   │   └── tokio v1.15.0 (*)
│   └── tracing v0.1.29
│       ├── cfg-if v1.0.0
│       ├── log v0.4.14 (*)
│       ├── pin-project-lite v0.2.8
│       ├── tracing-attributes v0.1.18 (proc-macro)
│       │   ├── proc-macro2 v1.0.36 (*)
│       │   ├── quote v1.0.14 (*)
│       │   └── syn v1.0.84 (*)
│       └── tracing-core v0.1.21
│           └── lazy_static v1.4.0
├── http v0.2.6 (*)
├── http-body v0.4.4
│   ├── bytes v1.1.0
│   ├── http v0.2.6 (*)
│   └── pin-project-lite v0.2.8
├── hyper v0.14.16
│   ├── bytes v1.1.0
│   ├── futures-channel v0.3.19
│   │   └── futures-core v0.3.19
│   ├── futures-core v0.3.19
│   ├── futures-util v0.3.19 (*)
│   ├── h2 v0.3.9 (*)
│   ├── http v0.2.6 (*)
│   ├── http-body v0.4.4 (*)
│   ├── httparse v1.5.1
│   ├── httpdate v1.0.2
│   ├── itoa v0.4.8
│   ├── pin-project-lite v0.2.8
│   ├── socket2 v0.4.2
│   │   └── libc v0.2.112
│   ├── tokio v1.15.0 (*)
│   ├── tower-service v0.3.1
│   ├── tracing v0.1.29 (*)
│   └── want v0.3.0
│       ├── log v0.4.14 (*)
│       └── try-lock v0.2.3
├── hyper-timeout v0.4.1
│   ├── hyper v0.14.16 (*)
│   ├── pin-project-lite v0.2.8
│   ├── tokio v1.15.0 (*)
│   └── tokio-io-timeout v1.2.0
│       ├── pin-project-lite v0.2.8
│       └── tokio v1.15.0 (*)
├── percent-encoding v2.1.0
├── pin-project v1.0.10
│   └── pin-project-internal v1.0.10 (proc-macro)
│       ├── proc-macro2 v1.0.36 (*)
│       ├── quote v1.0.14 (*)
│       └── syn v1.0.84 (*)
├── prost v0.8.0
│   ├── bytes v1.1.0
│   └── prost-derive v0.8.0 (proc-macro)
│       ├── anyhow v1.0.52
│       ├── itertools v0.10.3
│       │   └── either v1.6.1
│       ├── proc-macro2 v1.0.36 (*)
│       ├── quote v1.0.14 (*)
│       └── syn v1.0.84 (*)
├── prost-derive v0.8.0 (proc-macro) (*)
├── rustls-native-certs v0.5.0
│   ├── openssl-probe v0.1.4
│   └── rustls v0.19.1
│       ├── base64 v0.13.0
│       ├── log v0.4.14 (*)
│       ├── ring v0.16.20
│       │   ├── libc v0.2.112
│       │   ├── once_cell v1.9.0
│       │   ├── spin v0.5.2
│       │   └── untrusted v0.7.1
│       │   [build-dependencies]
│       │   └── cc v1.0.72
│       ├── sct v0.6.1
│       │   ├── ring v0.16.20 (*)
│       │   └── untrusted v0.7.1
│       └── webpki v0.21.4
│           ├── ring v0.16.20 (*)
│           └── untrusted v0.7.1
├── tokio v1.15.0 (*)
├── tokio-rustls v0.22.0
│   ├── rustls v0.19.1 (*)
│   ├── tokio v1.15.0 (*)
│   └── webpki v0.21.4 (*)
├── tokio-stream v0.1.8
│   ├── futures-core v0.3.19
│   ├── pin-project-lite v0.2.8
│   └── tokio v1.15.0 (*)
├── tokio-util v0.6.9 (*)
├── tower v0.4.11
│   ├── futures-core v0.3.19
│   ├── futures-util v0.3.19 (*)
│   ├── hdrhistogram v6.3.4
│   │   ├── base64 v0.10.1
│   │   │   └── byteorder v1.4.3
│   │   ├── byteorder v1.4.3
│   │   ├── crossbeam-channel v0.3.9
│   │   │   └── crossbeam-utils v0.6.6
│   │   │       ├── cfg-if v0.1.10
│   │   │       └── lazy_static v1.4.0
│   │   ├── flate2 v1.0.22 (*)
│   │   ├── nom v4.2.3
│   │   │   └── memchr v2.4.1
│   │   │   [build-dependencies]
│   │   │   └── version_check v0.1.5
│   │   └── num-traits v0.2.14
│   │       [build-dependencies]
│   │       └── autocfg v1.0.1
│   ├── indexmap v1.7.0 (*)
│   ├── pin-project v1.0.10 (*)
│   ├── pin-project-lite v0.2.8
│   ├── rand v0.8.4
│   │   ├── libc v0.2.112
│   │   ├── rand_chacha v0.3.1
│   │   │   ├── ppv-lite86 v0.2.16
│   │   │   └── rand_core v0.6.3
│   │   │       └── getrandom v0.2.3
│   │   │           ├── cfg-if v1.0.0
│   │   │           └── libc v0.2.112
│   │   └── rand_core v0.6.3 (*)
│   ├── slab v0.4.5
│   ├── tokio v1.15.0 (*)
│   ├── tokio-stream v0.1.8 (*)
│   ├── tokio-util v0.6.9 (*)
│   ├── tower-layer v0.3.1
│   ├── tower-service v0.3.1
│   └── tracing v0.1.29 (*)
├── tower-layer v0.3.1
├── tower-service v0.3.1
├── tracing v0.1.29 (*)
├── tracing-futures v0.2.5
│   ├── pin-project v1.0.10 (*)
│   └── tracing v0.1.29 (*)
└── webpki-roots v0.21.1
    └── webpki v0.21.4 (*)

I'm assuming that hyper/h2 are the same as Tokio? But there could be other crates in here that require a higher MSRV. I'm not aware of any way to figure this out programmatically, unfortunately...

@LucioFranco
Copy link
Member

lol fair, this is probably why we don't have one already too 😂

@davidpdrsn
Copy link
Member

But there could be other crates in here that require a higher MSRV. I'm not aware of any way to figure this out programmatically, unfortunately...

When I fixed tower's MSRV a few months ago I just binary searched through the rust versions until I found the lower number that worked 😜

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

No branches or pull requests

4 participants