# Public, Stable Rust Services

**URL:** <https://internals.rust-lang.org/t/public-stable-rust-services/6072>\
**Category:** announcements\
**Created:** [October 18, 2017, 2:59am UTC](https://internals.rust-lang.org/t/public-stable-rust-services/6072 "2017-10-18T02:59:16Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Mark\_Simulacrum](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/mark_simulacrum/32/2853_2.png) [@Mark\_Simulacrum](https://internals.rust-lang.org/u/Mark_Simulacrum)\
**Post date:** [October 18, 2017, 2:59am UTC](https://internals.rust-lang.org/t/public-stable-rust-services/6072/1 "2017-10-18T02:59:16Z")

</div>

Following the [recent confusion](https://internals.rust-lang.org/t/updates-on-rusts-ci-uploads/6062) 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](https://forge.rust-lang.org/infrastructure.html) but be aware that the page is rather outdated. [Pull requests](https://github.com/rust-lang-nursery/rust-forge) are welcome!

---

<div class="post-metadata">

**Author:** ![SimonSapin](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/simonsapin/32/3158_2.png) [@SimonSapin](https://internals.rust-lang.org/u/SimonSapin)\
**Post date:** [October 18, 2017, 8:40am UTC](https://internals.rust-lang.org/t/public-stable-rust-services/6072/2 "2017-10-18T08:40:38Z")

</div>

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](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](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.

---

<div class="post-metadata">

**Author:** ![SimonSapin](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/simonsapin/32/3158_2.png) [@SimonSapin](https://internals.rust-lang.org/u/SimonSapin)\
**Post date:** [October 18, 2017, 8:13pm UTC](https://internals.rust-lang.org/t/public-stable-rust-services/6072/3 "2017-10-18T20:13:02Z")

</div>

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](http://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.

---

<div class="post-metadata">

**Author:** ![SimonSapin](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/simonsapin/32/3158_2.png) [@SimonSapin](https://internals.rust-lang.org/u/SimonSapin)\
**Post date:** [October 23, 2017, 2:58pm UTC](https://internals.rust-lang.org/t/public-stable-rust-services/6072/4 "2017-10-23T14:58:09Z")

</div>

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](https://github.com/rust-lang/rust/issues/45334), or [make them easy to use in rustup](https://github.com/rust-lang/rust/issues/45334).)

---

<div class="post-metadata">

**Author:** ![Mark\_Simulacrum](https://sea2.discourse-cdn.com/flex002/user_avatar/internals.rust-lang.org/mark_simulacrum/32/2853_2.png) [@Mark\_Simulacrum](https://internals.rust-lang.org/u/Mark_Simulacrum)\
**Post date:** [March 25, 2019, 8:29am UTC](https://internals.rust-lang.org/t/public-stable-rust-services/6072/5 "2019-03-25T08:29:07Z")

</div>

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.
