Promote i586-unknown-linux-gnu to Tier 2 with Host Tools · Issue #543 · rust-lang/compiler-team (original) (raw)

Proposal

Promote the i586-unknown-linux-gnu target to Tier 2 with Host Tools.

Requirements for Tier 2 with Host Tools

Depending on the target, its capabilities, its performance, and the likelihood of use for any given tool, the host tools provided for a tier 2 target may include only rustc and cargo, or may include additional tools such as clippy and rustfmt.

This is not technically a requirement, but I would be satisfied to have only rustc and cargo.

Approval of host tools will take into account the additional time required to build the host tools, and the substantial additional storage required for the host tools.

The infrastructure team will have to comment on this.

The host tools must have direct value to people other than the target's maintainers. (It may still be a niche target, but the host tools must not be exclusively useful for an inherently closed group.) This requirement will be evaluated independently from the corresponding tier 2 requirement.

There must be a reasonable expectation that the host tools will be used, for purposes other than to prove that they can be used.

I am not a maintainer for this target, and I do not in fact directly use or contribute to Rust at all. I do sometimes do light maintenance work for Linux distributions, or build software myself, which results in indirect usage of Rust and software written in it.

I have computers that predate the Pentium 4, and the SSE2 instruction set. For some reason, rust defines the i686 target as meaning pentium4, despite that being i786 in other contexts, and i686 never having had SSE2 (see rust-lang/rust#82435). The suggestion I have received when asking about this is to use the i586 target instead. however, there are no host tools for i586, so I have no easy way to use Rust on my system.

Alpine Linux provides an i586-unknown-linux-musl version of Rust in its x86 port, and Debian patches its version of Rust so that i686 means pentium-pro, as has traditionally been the case. I prefer to use source-based distributions such as Gentoo or NixOS, but I cannot easily bootstrap Rust with either of those distributions on this system without having official host tools available.

At this point in time, Rust is now a de-facto requirement to be able to build a usable Linux distribution with a graphical environment, as several core dependencies have been rewritten to use Rust. Without this change, I am forced either to use old software, switch to a binary-based distro that provides a customized Rust toolchain, stop using Linux on my computers, or find a way - again, noting that I am an end user in this context, and not a developer - to cross-compile the toolchain on my own from another machine, as some others have before me.

this would nearly immediately benefit myself and others like me who, whether by choice (as i do) or by necessity (as i know factually that some others do), continue to use older hardware.

The host tools must build and run reliably in CI (for all components that Rust's CI considers mandatory), though they may or may not pass tests.

I believe the infrastructure team will have to address this.

Building host tools for the target must not take substantially longer than building host tools for other targets, and should not substantially raise the maintenance burden of the CI infrastructure.

My understanding from others who have built this target is that it does not take substantially more resources than the currently tier-1 i686-unknown-linux-gnu target.

The host tools must provide a substantively similar experience as on other targets, subject to reasonable target limitations.

I have no reason to believe that these tools would not provide a substantively similar experience to i686-unknown-linux-gnu, or to i586-unknown-linux-musl which is currently distributed and used by Alpine Linux (though is still Tier 2 here as well).

If the host tools for the platform would normally be expected to be signed or equivalent (e.g. if running unsigned binaries or similar involves a "developer mode" or an additional prompt), it must be possible for the Rust project's automated builds to apply the appropriate signature process, without any manual intervention by either Rust developers, target maintainers, or a third party. This process must meet the approval of the infrastructure team.

This target does not expect signed binaries.

Providing host tools does not exempt a target from requirements to support cross-compilation if at all possible.

This target is already well-supported by cross compilation in my experience.

All requirements for tier 2 apply.

This target is already supported in Tier 2.

Mentors or Reviewers

None listed

Process

The main points of the Major Change Process are as follows:

You can read more about Major Change Proposals on forge.

Comments

This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.