-
-
Notifications
You must be signed in to change notification settings - Fork 318
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
gixref 0.41 fails to compile in CI #1309
Comments
Also cargo install cargo-binstall is failing due to this, I suppose many projects are affected |
This should be fixed now. I investigated the update issue of Since I wasn't really able to produce a The culprit here is that an upgrade to In future, and it's something I usually do, I have to treat breaking My greatest apologies for the disruption this has caused :/. |
Thx a lot @Byron such a fast response is really great; right now I m testing with the script which is already working; later I will re-test with what caused the break and give short feedback here of the outcomes. |
Thanks a ton for the fast reply: this wasn't too disruptive for us in the end. Just glad to be able to help catch this stuff :) Might be worth looking into running cargo-semver in CI: these sort of issues are really tricky to spot manually. |
Thanks @Byron for shipping a fix so quickly. For projects that hadn't updated gix or winnow, and didn't change their dependencies, do you know how the release of gix v0.59 caused builds that had Cargo.lock files present and dependent on gix v0.58 / gix-actor v0.30.0 / gix-object v0.41.0 to pickup the new versions gix v0.59 / gix-actor v0.30.1 / gix-object v0.41.1? |
Because |
I agree. Previously I was repelled by the anticipated CI cost of this, how much would it be able to do within a 30min window at most? But that was admittedly based mostly on feeling, not at all on data. I also know it can't detect everything yet, and in order to catch this, you'd really have to compile the current version of |
@obi1kenobi, the tool author, will have better answers for you here :) |
Thanks for the ping @alice-i-cecile, I appreciate it ❤️
I don't think c-s-c would have caught this right now. We don't do any checking of trait bounds right now, and likely won't for at least another 9-12 months.
On my laptop,
A best estimate of c-s-c runtime is "one I suspect we can drag these numbers down further by improving our cargo cache hit rate while building rustdoc. But this would require finding some more funding. IMHO a stronger argument against using cargo-semver-checks here at the moment is how we handle (or fail to handle) complex edge cases in workspaces, like the addition of a new crate that hasn't been published yet (which currently would cause a "failed to find a baseline version to compare against" error and exit 1). More details on these edge cases + a concrete proposal for addressing them can be found here.
I've been mulling over writing an extension to cargo-semver-checks that could allow users to define custom lints for situations like that, to tackle cases of "I know this is breaking due to some circumstances unique to this project." It could be used to write a rule like "consider Is that something you'd find useful and might be interested in trying? I haven't started building such a tool yet and I don't have a concrete timeline — but if there's interest in the community and if I can find some funding, I'd love to give it a shot. |
Thanks for chiming in, it's much appreciated, and apologies for the late response. It took me a while to organise my thoughts about this.
Without fully understanding what's written there, let me just share what I think c-s-c would have to do to be truly sure that a change isn't breaking after it was published. First, I think it would have to understand the version that the crate would be published at which is project specific and based on 'git-conventional' commit messages. And then it would actually have to check all changed crates (in a PR, for example) against the currently published versions of all remaining crates, possibly with a controllable variety of feature toggles. In case of When reading the above, it truly feels like I am describing a different tool, and one that is either very specific to
I think I'd want a tool that leaves no room for error, and in principle I believe it can be done but only if Like I mentioned earlier, ideally And there is probably a ton of details I am missing which would make such a tool even harder to realise, but… if you think there is a chance, please let me know :). A true solution to this problem is definitely something I'd want to sponsor. |
Quick thoughts:
The bottom line is that with a steady source of funding, I think we have a very solid shot at all this — in a way where the entire Rust ecosystem could win, not just I'd love your thoughts! Might you be up for a chat sometime in the next couple of weeks? |
Yes, and I sent you an email hoping we can schedule that call this week even :D. |
Spotted in https://github.com/bevyengine/bevy/actions/runs/8041691846/job/21961284606#step:4:409. This sort of spontaneous failure is generally caused by a semver violation somewhere.
The text was updated successfully, but these errors were encountered: