-
Notifications
You must be signed in to change notification settings - Fork 74
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
Enable building with non-nightly complier #205
Conversation
CC @glandium who made the Firefox build system change. |
Looks like the Travis failures are unrelated to the change made in this PR: error: unrecognized platform-specific intrinsic function: (Etc.) |
I'm guessing that the compiler change that broke the |
See #203 (comment) |
I'm not sure I agree with a change like this. It explicitly subverts Rust's stability system, and I would prefer not to see it gain traction in the ecosystem. @glandium Is there another way to make this work that doesn't involve changing the crate itself? |
Can you say more about those problems? That Firefox abuses this flag is already not good IMO, but making this hack part of a (popular!) crate on crates.io feel like another significant step toward breaking the language’s stability story for everyone. |
Iff we were to add this hack to |
Depends on what kind of compatibility across compiler releases
@glandium can probably give you a more comprehensive response, but the most obvious thing is that the |
Can we at least make it so that the build script only sets this flag if a different flag is set? That way you can set that flag globally but crate usere aren't misled into thinking this is stable. |
Works for me. That's how |
I still disagree with doing this, even if it's behind an additional flag. It sets a dangerous precedent in the ecosystem. If Firefox needs this for whatever reason, then I'd rather see this solved on the Firefox side rather than establish this as an idiom in the ecosystem. |
FWIW there is an RFC open for stabilizing most of this. The RFC could use an update with the latest features here, and AFAIK the only couple of things blocking it are:
There are two optional things that we also wanted to do:
So if using these on stable Rust is a priority / wish for Firefox, they should let the Rust core, library, and compiler teams know so that they can prioritize stabilizing this. 95% of the work is done, but finishing this has extremely low priority in general, and for me as well, since this work has no champion in the libs team, so there is no way for me to push it to completion. Basically this was on hold because Rust2018 had higher priority, and now that Rust2018 shipped it is still on hold because we haven't prioritized what to focus on in 2019. Without a minimum level of commitment from at least one T-libs member, this will never ship. |
I considered doing this in a fork, but I though that forking without offering the patch to the upstream first would have been impolite.
I have raised the issue in every Oxidation meeting in every Mozilla All Hands (except the latest one that I didn't attend) since the London meeting in the summer of 2016. I've also included it in both my blog posts in response to both the Rust 2018 and Rust 2019 calls for blog posts. |
I'm sorry to close this henry because I can't really solve this problem here for you. The cargo PR shows that this is a complex topic. If you want to keep a fork of As I mentioned in the cargo issue, I don't think this is a good solution to this problem, and I'll prefer if this wouldn't need to be done, but I don't fully understand all the constraints that Firefox has. About stabilizing this, thank you for pushing. I hope we will get this done in 2019. It's been a long time coming. Somebody reported that Rust is now in first place in the nbody benchmark in the benchmarks game, but that the packed_simd implementation of the benchmark in this repo beats that one by a large margin: https://www.reddit.com/r/rust/comments/akgmef/rust_nbody_benchmark_ranks_1/effftr2 That is, the best version in the benchmarks game takes 3.4 seconds on their machine, and the one using packed_simd takes 2.2 seconds. That's a very significant improvement that we should try to land to stable Rust. |
A recent compiler change removed support for compiling the
simd
crate. As a result, it seems that Firefox needs to migrate topacked_simd
beforepacked_simd
becomescore::simd
.The Firefox build system previously had problems with setting
RUSTC_BOOTSTRAP=1
on the build system level and, as a result, migrated to relying on individual crates settingRUSTC_BOOTSTRAP=1
in theirbuild.rs
(first in order to use a custom allocator, but at present the only use case is thesimd
crate).I believe this PR makes
packed_simd
compatible with the Firefox build system.