Suggestion: Make Real-world Tier 1 platforms at least Tier 2

I believe @hanna-kruppe's point above is spot on, nothing is intentionally not a tier 1/2/3 platform in Rust, it essentially just means that no work has been done to promote it just yet. Platform support typically just starts out as a PR for all the initial changes, eventually we then add some builders and CI to keep it building, and then the final step of moving to Tier 1 is a bit hazy as it's never happened before, but I suspect it's a case of "we'll know it when we see it".

Along those lines most of these platforms in question likely just need a PR to rust-lang/rust-buildbot to add an auto builder to start gating on the platform. Unfortunately this isn't a trivial task as our buildbot config file is pretty sprawling, but lots of the target-specific configuration has been refactored to be somewhat easily readable. If a platform fits in one of those buckets, then it should be easy to add!

PRs are of course always welcome to rust-buildbot! Unfortunately testing out changes isn't always the easiest thing so there may be a bit of a delay to pushing it into production for us, but hopefully it won't take too long. Most of our cross compilation happens in docker images so you can run 90% of the build locally (and I can audit the last 10% hopefully).

To address some specific points brought up about a few platforms in this thread:

As @lambda's PR shows this is essentially almost a tier 2 platform. My hesitation here is simply that we have no CI preventing us from accidentally requiring a Windows 7+ API. We'll likely always have a similar story about how the standard library is somewhat hamstrung on XP, but this seems suitable for simply being XP's tier 2 platform story.

The tl;dr; is basically that we need a bot that compiles hello world on XP and ensures there are no link errors.

This, and all other iOS targets, should already have nightlies!

This is basically 90% of the way there. As with XP above we just need a builder actually producing these artifacts. We in fact already install the NDK on the Android image and we even tell the build system where it is! All that's likely needed is adding a line somewhere around here and testing it out.

We'll probably also want to ensure that the NDK is the right (read, "oldest") version, but that's also easy to verify later.


As another note, the rustc/cargo working on a platform is not currently a threshold for Tier 2. It's not even a requirement for Tier 1! Each platform gets to decide what's in scope for tier 1/2/3, where this of course always includes the standard library and then optionally includes rustc/cargo as appropriate.

Also note that any new platform takes some time to move into the stable channel, so once we add support it'll have to ride the trains into beta and then stable before it's actually available in release.

Hope that all makes sense! If you've got any questions about any of this, feel free to ask :slight_smile:

2 Likes