Public, Stable Rust Services


#1

Following the recent confusion over rust-lang-ci buckets not being stable/public, the infra team has met regarding what public services we currently provide. By public, we mean services which can be expected to be stable and shouldn’t change without (at least) prior notice.

Today, we will only guarantee that the resources behind static.rust-lang.org are stable, and public. All other Rust infrastructure (e.g., various S3 buckets, other APIs) is considered private and unstable — use at your own risk.

With this announcement, we’re also interested in hearing from the community: What services do you use? What do you use them for? This will help us decide if there’s any other services that we may want to expose public APIs or provide guarantees around. Feel free to ask in #rust-infra on IRC if you have any questions.

Some of Rust’s infrastructure is documented on the forge but be aware that the page is rather outdated. Pull requests are welcome!


#2

Thank you for starting this thread. It is good to make this kind of thing explicit.

Servo currently also relies on https://static-rust-lang-org.s3.amazonaws.com because old Python versions without support for TLS Server Name Indication fail to connect to https://static.rust-lang.org. If I remember correctly this was a problem both on Travis-CI and for some contributors using old OS distributions.


#3

It appears that there’s still a number of systems out there where Python does not support SNI, and Python is what Servo bootstraps from.

Is the infra team willing to support (as “stable and public”) some hostname that proxies to or mirrors static.rust-lang.org and supports TLS without SNI? We can make Servo default to the CDN and only use the fallback hostname when needed.


#4

Update: when both

  • llvm-assertions = true is configured in the [build] section of .servobuild (which is not the default)
  • The Python 2 version is 2.7.9 or more recent, and has ssl.HAS_SNI == True (which has been the case in modern distros for a couple years, but is still far from universal)

… then Servo will now only use resources from static.rust-lang.org. So commits after this change will stay easy to compile in the future (e.g. when using git bisect).

With older Python it will fall back to static-rust-lang-org.s3.amazonaws.com, which we understand is non-official and might go away at some point. (But since this is the same data as static.rust-lang.org and I’m not aware of any plan to move away from S3, I’m happy to keep this as a fallback.)

In the default config Servo will still download rustc (but not std or other resources) from S3 rust-lang-ci/rustc-builds-alt. We’re considering instead copying the subset of files that we use to an S3 bucket controlled by the Servo team, but are still figuring out how to make that semi-automated.

(That last point becomes moot if Rust teams are willing to publish these resources at stable URLs, or make them easy to use in rustup.)