Update rust ci version to be explicitly numbered#76
Conversation
|
What's the rationale for this? We've been doing quite fine with using the latest stable version. Edit: Aha I see that your branch is named |
|
As you can see from the now failing build of this PR, the main branch is failing CI because clippy lints are very not stable between Rust versions. I think it's a frustrating contributor experience to first have to fix unrelated clippy lints before getting your change in, and so this is a proposal to switch to upgrading the Rust version used in CI manually. |
|
I think the cost of having a slightly older version of Rust running in CI is very low, and the cost of having the build randomly break once a month is somewhat higher. Although it sounds like maybe you prefer auto-updating to the latest stable? |
|
I'm in favor of pinning a version for CI. (We can also run latest stable, but not have it be required for merging.) With the current level of activity on this repo, a significant fraction of PRs get blocked on clippy complaining about issues not related to that PR. |
|
What you're saying has some merit, but unfortunately it doesn't fully resolve the issue. It just shifts it. If the CI is pinned to an older version, then all contributors also need to be using an older Rust version on their own machines. I think the Rust culture is heavily biased towards people doing The issue of CI failing is still real though. The solution I've been moving towards is solving clippy issues with the beta toolchain. This very same issue for example was resolved during beta for Druid in druid#2363. |
|
There is another issue with pinning the CI. It doesn't actually introduce a brand new issue, but it greatly increases its scope. Imagine a PR that is waiting for review for some time. As long as the modified files don't conflict with changes in Meanwhile 1.69 has come out and Because there is no conflict with the PR branch, all changes to the PR continue to run with clippy 1.68. Once merged, suddenly If the CI config has |
Could you elaborate on this? I don't see why it's a problem: if I'm using a newer rustc than CI, I might get a few clippy warnings and then I have the option to fix them or not. And if the clippy warnings are in code that I'm not touching, I can fix and PR them later instead of having to fix them first. The other thing that happened to me fairly regularly in |
It's not uncommon to have 10 warnings, sometimes even 30. A real warning that is part of your new code is among them. I don't think it's trivial to see which are which. You have to read through the output every time or use some sort of IDE that does squigglies.
That's also an important point. These hooks don't differentiate between your code and old code, they just treat all warnings the same. I'm not saying that it's impossible, but I am saying it would be a brand new annoyance to deal with. Ultimately my perspective here is that I would advocate for a more systematic approach across repos. A train schedule based on the Rust release schedule. Ensuring that |
|
How about a compromise here? A proactive, train-like upgrade schedule based on Rust releases sounds like a good idea, and I'd be in favor. But it would be great if, were we to slip and take an extra couple of weeks to do the fix, we don't break the main CI build for everybody. Perhaps we could keep the upgrade schedule as you propose, but rather than upgrading and releasing the week before the Rust release, we upgrade and release within a couple days after the Rust version bumps. The version of Rust would be explicitly specified in CI, and the scheduled release would bump this version number as well as fix any associated clippy lints. |
I think this is a valid concern. Perhaps we should use commit queues or bors or something like that? |
Maybe. I'll allocate some time for thinking this stuff through more thoroughly on Monday, including looking at merge queues etc. Then I can give a more informed reply. |
|
Sounds good, thanks for considering all this! |
|
This is the kind of thing that might be worth bringing up at the office hours. |
|
I've been looking into the merge queues and initial impressions are promising. I haven't found as much time to think about this as I'd like, but hopefully that will happen soon. It does look like we might be able to change policies in a way that will alleviate the issues of pinning a version. Unfortunately we ran into technical difficulties during office hours today, so couldn't talk about it in any depth. Will try again next week to bring up this topic for discussion and meanwhile I'll continue gathering my thoughts. |
|
We talked about this at the office hours. Unfortunately instead of simple convergence there were even more differences in takes added to the list. That said, we still managed to decide to test run a variant of the compromise we talked here. If it works out, the policy can be applied to other linebender repos as well. So to be more explicit, what we'll test run here is:
So to align this PR here with the new plan, please do the following:
|
a7355d1 to
871a603
Compare
|
Sounds good to me! How does this look? |
xStrom
left a comment
There was a problem hiding this comment.
This is good for merging, thanks!
No description provided.