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

Change CI to build with Rust 1.32 and document that as MSRV #433

Merged
merged 4 commits into from
Jun 30, 2020
Merged

Conversation

adamgreig
Copy link
Member

This PR adds a documented MSRV, per rust-embedded/wg#445

As far as I can tell none of the Azure pipelines use Xargo or nightly Rust, so I think this small change should be sufficient, but we'll see what CI makes of it.

@adamgreig adamgreig requested review from Dylan-DPC-zz and a team as code owners June 9, 2020 17:23
@adamgreig
Copy link
Member Author

bors try

bors bot added a commit that referenced this pull request Jun 9, 2020
@bors
Copy link
Contributor

bors bot commented Jun 9, 2020

try

Build failed:

@adamgreig
Copy link
Member Author

Looks like we need at least 1.34 for riscv64gc, so I will update the CI to use 1.34 for that target. Not sure what we need to fix the asmjs or x86_64-pc-windows-msvc though, will investigate.

@reitermarkus
Copy link
Member

Does an MSRV make sense for a binary-only crate?

@adamgreig adamgreig force-pushed the msrv branch 2 times, most recently from b93c4e4 to ee91870 Compare June 16, 2020 23:08
@adamgreig
Copy link
Member Author

Okay, looks like riscv64 really needs a very modern Rust. Now we have everything working on 1.32.0 except for:

  • riscv64-gc-unknown-linux-gnu: 1.42.0
  • asmjs-unknown-emscripten: 1.40.0
  • x86_64-pc-windows-msvc: 1.38.0

Does an MSRV make sense for a binary-only crate?

I think it's worth having; I think there are two good reasons:

  • Users with older Rust, both today and in the future, are able to build and use cross
    • I appreciate these days lots of users use their own Rust install from rustup so often have the latest version, but already there are people using distro-provided or custom builds for new targets like AVR or Xtensa, and I think as Rust becomes more stable it's likely a larger fraction will use older versions
    • I think some of the main advantages of Rust's careful backwards compatibility promises and widespread use of semver are lost if many useful libraries and executables just keep using the latest stable
  • We get to find out if we've unintentionally made a change that requires a much newer Rust. I think today it's not a problem to just increase the MSRV when there's a new feature we'd like to use, since as mentioned many people are tracking stable releases, but at least we have to do it deliberately rather than finding out we've accidentally started using a feature released yesterday.

The current WG policy means it shouldn't be restrictive to have the MSRV, since if a new feature is required we can easily increase the MSRV; it therefore serves as documentation and a check that we're only bumping it deliberately.

Do you think there are reasons to not have MSRV for a binary-only crate compared to a library? I appreciate it adds a maintenance burden to occasionally increase MSRV when a new feature is used, but I'd like to know if there are other downsides I'm missing.

@reitermarkus
Copy link
Member

Now we have everything working on 1.32.0 except for:

I don't think the MSRV should apply to specific targets, it should only pertain to the compilation of the cross binary.

The current WG policy means it shouldn't be restrictive to have the MSRV

I think if that remains the case, it's fine to add an MSRV for documentation purposes.

@adamgreig
Copy link
Member Author

I don't think the MSRV should apply to specific targets, it should only pertain to the compilation of the cross binary.

That makes sense, though it might still be useful for users to know what the MSRV is for the target(s) they're interested in. In any event we need to pick a version of Rust for each target; why not its MSRV? There's no reason to expect them to increase per-target now and the majority (all but 3) are 1.32. Otherwise we'll have to add a separate build step to build and test cross on the MSRV in addition to testing each target.

I could also imagine updating the three standouts to use 'stable' instead of specific versions if that seems better?

@reitermarkus
Copy link
Member

if that seems better

I think it's fine as is.

reitermarkus
reitermarkus previously approved these changes Jun 18, 2020
@adamgreig
Copy link
Member Author

Are there any other changes you'd like me to make or are we OK to merge this?

@reitermarkus
Copy link
Member

Ready to merge.

@adamgreig
Copy link
Member Author

bors r=reitermarkus

bors bot added a commit that referenced this pull request Jun 29, 2020
433: Change CI to build with Rust 1.32 and document that as MSRV r=reitermarkus a=adamgreig

This PR adds a documented MSRV, per rust-embedded/wg#445

As far as I can tell none of the Azure pipelines use Xargo or nightly Rust, so I think this small change should be sufficient, but we'll see what CI makes of it.

Co-authored-by: Adam Greig <adam@adamgreig.com>
@bors
Copy link
Contributor

bors bot commented Jun 29, 2020

Build failed:

  • rust-embedded.cross

@adamgreig
Copy link
Member Author

bors retry

bors bot added a commit that referenced this pull request Jun 30, 2020
433: Change CI to build with Rust 1.32 and document that as MSRV r=reitermarkus a=adamgreig

This PR adds a documented MSRV, per rust-embedded/wg#445

As far as I can tell none of the Azure pipelines use Xargo or nightly Rust, so I think this small change should be sufficient, but we'll see what CI makes of it.

Co-authored-by: Adam Greig <adam@adamgreig.com>
@reitermarkus
Copy link
Member

@adamgreig, some Docker images don't build anymore.

@reitermarkus
Copy link
Member

bors r-

@bors
Copy link
Contributor

bors bot commented Jun 30, 2020

Canceled.

@reitermarkus
Copy link
Member

bors r+

bors bot added a commit that referenced this pull request Jun 30, 2020
433: Change CI to build with Rust 1.32 and document that as MSRV r=reitermarkus a=adamgreig

This PR adds a documented MSRV, per rust-embedded/wg#445

As far as I can tell none of the Azure pipelines use Xargo or nightly Rust, so I think this small change should be sufficient, but we'll see what CI makes of it.

Co-authored-by: Adam Greig <adam@adamgreig.com>
@bors
Copy link
Contributor

bors bot commented Jun 30, 2020

Build failed:

@reitermarkus
Copy link
Member

Seems like updating the dependencies broke the MSRV. Maybe we should just switch to 1.42.0 for all targets for simplicity's sake?

@adamgreig
Copy link
Member Author

Sounds good, let's try that.

@reitermarkus
Copy link
Member

bors r+

@bors
Copy link
Contributor

bors bot commented Jun 30, 2020

Build succeeded:

@bors bors bot merged commit acf83a5 into master Jun 30, 2020
@bors bors bot deleted the msrv branch June 30, 2020 21:07
@Alexhuszagh Alexhuszagh added the meta issues/PRs related to the maintenance of the crate. label Nov 6, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
meta issues/PRs related to the maintenance of the crate.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants