-
Notifications
You must be signed in to change notification settings - Fork 1.6k
build-std: always #3874
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
base: master
Are you sure you want to change the base?
build-std: always #3874
Conversation
|
|
||
| - [*Allow reusing sysroot artifacts if available*][future-reuse-sysroot] | ||
|
|
||
| [Opaque dependencies]: https://hackmd.io/@epage/ByGfPtRell |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This has moved to a more official place
| [Opaque dependencies]: https://hackmd.io/@epage/ByGfPtRell | |
| [Opaque dependencies]: https://github.com/rust-lang/cargo/issues/3573#issuecomment-3498262549 |
|
|
||
| > [!NOTE] | ||
| > | ||
| > Inspired by the concept of [opaque dependencies][Opaque dependencies], the |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@nicoburns brought up on reddit the idea of cargo clean not affecting opaque dependencies, requiring some other step to clean them (maybe a cargo clean -p std). Alternatively, we may get this "for free" with rust-lang/cargo#5931.
I lean towards keeping cargo clean the same for now but might be worth calling this question out somewhere.
Add a new Cargo configuration option,
build-std = "always|never", which will unconditionally rebuild standard library dependencies. The set of standard library dependencies can optionally be customised with a newbuild-std-cratesoption. It also describes how Cargo (or external tools) should build the standard library crates on stable (i.e., which flags to pass and features to enable).This proposal limits the ways the built standard library can be customised (such as by settings in the profile) and intends that the build standard library matches the prebuilt one (if available) as closely as possible.
This RFC is is part of the build-std project goal and a series of build-std RFCs:
build-std="always"(this RFC)build-std="compatible"(RFC not opened yet)build-std="match-profile"(RFC not opened yet)There is also a Zulip channel where you can ask questions about any of the build-std RFCs. This series of RFCs was drafted over many months with the help of stakeholders from many Rust project teams, we thank them for their help!
Rendered