Use new hints.mostly-unused#1491
Merged
sunfishcode merged 2 commits intoJul 13, 2025
Merged
Conversation
Most users of the `rustix` crate will use a fraction of its API surface area. Nightly rustc provides an option `-Zhint-mostly-unused` to tell it to defer as much compilation as possible, which provides a substantial performance improvement if most of that compilation doesn't end up happening. Cargo plumbs this option through using the new `[hints]` table. This will cause users of the `rustix` crate to default to setting `hint-mostly-unused`. (Top-level crates can override this if they wish, using a new profile option.) Note that setting this hint does not increase the MSRV of the rustix crate, as old versions of Cargo will ignore it. New versions of Cargo will respect it automatically (and, until we stabilize it, Cargo will do nothing unless you pass `-Zprofile-hint-mostly-unused` to cargo). Some sample performance numbers: this takes `rustix` compilation time with `all-apis` enabled from 5.9s to 4.3s (a 27% improvement).
Member
Author
|
The FreeBSD test failure looks entirely unrelated. |
Member
|
Cool! Could you also add a comment, like "most users use a fraction of our API surface area, so this reduces compile times"? |
Member
Author
|
@sunfishcode Done. |
sunfishcode
pushed a commit
that referenced
this pull request
Jul 15, 2025
* Use new `hints.mostly-unused` Most users of the `rustix` crate will use a fraction of its API surface area. Nightly rustc provides an option `-Zhint-mostly-unused` to tell it to defer as much compilation as possible, which provides a substantial performance improvement if most of that compilation doesn't end up happening. Cargo plumbs this option through using the new `[hints]` table. This will cause users of the `rustix` crate to default to setting `hint-mostly-unused`. (Top-level crates can override this if they wish, using a new profile option.) Note that setting this hint does not increase the MSRV of the rustix crate, as old versions of Cargo will ignore it. New versions of Cargo will respect it automatically (and, until we stabilize it, Cargo will do nothing unless you pass `-Zprofile-hint-mostly-unused` to cargo). Some sample performance numbers: this takes `rustix` compilation time with `all-apis` enabled from 5.9s to 4.3s (a 27% improvement). * Add comment to the mostly-unused hint
sunfishcode
pushed a commit
that referenced
this pull request
Jul 15, 2025
* Use new `hints.mostly-unused` Most users of the `rustix` crate will use a fraction of its API surface area. Nightly rustc provides an option `-Zhint-mostly-unused` to tell it to defer as much compilation as possible, which provides a substantial performance improvement if most of that compilation doesn't end up happening. Cargo plumbs this option through using the new `[hints]` table. This will cause users of the `rustix` crate to default to setting `hint-mostly-unused`. (Top-level crates can override this if they wish, using a new profile option.) Note that setting this hint does not increase the MSRV of the rustix crate, as old versions of Cargo will ignore it. New versions of Cargo will respect it automatically (and, until we stabilize it, Cargo will do nothing unless you pass `-Zprofile-hint-mostly-unused` to cargo). Some sample performance numbers: this takes `rustix` compilation time with `all-apis` enabled from 5.9s to 4.3s (a 27% improvement). * Add comment to the mostly-unused hint
Member
|
This is now released in rustix 1.0.8. |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Most users of the
rustixcrate will use a fraction of its API surfacearea.
Nightly rustc provides an option
-Zhint-mostly-unusedto tell it todefer as much compilation as possible, which provides a substantial
performance improvement if most of that compilation doesn't end up
happening. Cargo plumbs this option through using the new
[hints]table. This will cause users of the
rustixcrate to default to settinghint-mostly-unused. (Top-level crates can override this if they wish,using a new profile option.)
Note that setting this hint does not increase the MSRV of the rustix
crate, as old versions of Cargo will ignore it. New versions of Cargo
will respect it automatically (and, until we stabilize it, Cargo will do
nothing unless you pass
-Zprofile-hint-mostly-unusedto cargo).Some sample performance numbers: this takes
rustixcompilation timewith
all-apisenabled from 5.9s to 4.3s (a 27% improvement).