Our x86-32 target names are inconsistent
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.2k
- PR merge metrics
- PR metrics pending
Description
The typical naming scheme we use for x86-32 targets is:
- i686 means Pentium 4 (yes that makes no sense but, well, it's too disruptive to change now and i786 didn't catch on as a name anywhere), which in particular have SSE2
- i586 means "original Pentium" (no SSE)
We have some targets that violate this:
- i686-linux-android is actually PentiumPro with SSE, but that seems sufficiently close to Pentium 4 that it's still the right name IMO (in particular, it does have more vector extensions than Pentium 4; not sure why we are using "Pentium Pro" as the baseline) (resolved by https://github.com/rust-lang/rust/pull/136885)
- i386-apple-ios uses Penryn as baseline, way newer than Pentium 4, so of course it has SSE (this target is ancient, it predates Rust 1.0)
- i586-pc-nto-qnx700 uses Pentium 4 as baseline (resolved by https://github.com/rust-lang/rust/pull/137324)
- i686-unknown-hurd-gnu uses PentiumPro without SSE as baseline (resolved by https://github.com/rust-lang/rust/pull/136700)
- i686-unknown-redox uses PentiumPro without SSE as baseline (resolved by https://github.com/rust-lang/rust/pull/136698)
If we want to establish the pattern that "i686 has SSE and the rest does not", then the last four of these should be renamed. (These are all tier 3 targets.) I wonder if there is a specific reason that these names were picked diverging from our usual naming scheme, or is it just an oversight because our naming scheme is admittedly not very self-explaining?
- The Apple target is ancient and I assume was picked for consistency with how Apple calls this -- not sure if that should overwrite our own naming scheme.
- For Hurd and Redox, we have no other targets that use PentiumPro without SSE as baseline, so it's a bit unclear what one would even use -- they are somewhere between
i586(original Pentium) and what we calli686(Pentium 4). The most consistent outcome here would be to use Pentium 4 as the baseline like we use for all other OSes; not sure why Hurd and Redox should be special. - The
i586-pc-nto-qnx700one however should almost certainly be calledi686.
Pinging the listed target maintainers and some other folks:
Cc @bjorn3 @workingjubilee @badboy @deg4uss3r @madsmtm @sthibaul @jackpot51 @flba-eb @gh-tr @jonathanpallant @japaric
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Review the target definitions for i386-apple-ios, i686-unknown-hurd-gnu, and i686-unknown-redox, and compare them with the naming convention described in the issue. Read the linked pull requests for the already-resolved targets before deciding which remaining names and baselines are appropriate. Done means the maintainers agree on the naming and the remaining target inconsistencies are addressed.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust
- Domain
- compilers, operating-systems
- Issue type
- Refactor
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 28/100