-
Notifications
You must be signed in to change notification settings - Fork 653
unable to compile futures v0.3.31 with unstable write-all-vectored feature enabled with Rust < 1.81 with RUSTC_BOOTSTRAP=1 #2892
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
Comments
Ah, after bisecting git history between 1.80 and 1.81, I found the issue. We build our packages with The feature is only stable on Rust 1.81+, but does require the This is likely a very niche edge case, and I understand if you don't want to add this cfg_attr back, but I'll likely need to patch it in for our builds downstream to un-break stuff until RHEL 9 ships Rust 1.81 or later (in like ... a year 😫 ). |
First, write-all-vectored is unstable and any breakage in patch versions is allowed. Lines 44 to 49 in 7211cb7
futures-rs/futures-util/Cargo.toml Lines 26 to 31 in 7211cb7
And using RUSTC_BOOTSTRAP=1 is to opt out of the various Rust stability guarantees. RUSTC_BOOTSTRAP has never been officially recommended to users, and there is no possibility of preferring users who use it over those who wish to use the opt-in feature in the latest stable Rust. In this case it could probably work by just passing |
Also, when sticking with a particular older Rust, I strongly recommend that you commit the lockfile to prevent newer versions of dependencies from being automatically obtained. This issue's case is a bit of a special case that depends on an unstable feature, but usually, in Rust ecosystem, increasing the minimum supported compiler version is not considered a breaking change. |
Yup, that's usually good advice, but not something we can do in our particular circumstances. And we're not sticking with older rust voluntarily, we just need to use the one that is shipped by Red Hat "Enterprise" Linux :D |
I'm trying to update futures-rs crates in Fedora Linux to version 0.3.31, but I'm hitting a problem that I can't compile them with Rust 1.75 (for EPEL on RHEL 9). futures v0.3.30 with the same features enabled compiles fine on Rust 1.75 and 1.79, but v0.3.31 now fails with:
As far as I can tell, the code in
futures_util
hasn't changed since v0.3.30, andIoSlice
infutures_io::IoSlice
is a reexport ofstd::io::IoSlice
in both v0.3.30 and v0.3.31, so I have no idea why this would suddenly break (or why it previously worked? theIoSlice::advance_slices
method was unstable for years and this worked...)And, well, I can't reproduce this "upstream" with crates from crates.io, because futures-util v0.3.30 was yanked from crates.io, and cargo won't let me pick that version to compare with.
The text was updated successfully, but these errors were encountered: