External Publication
Visit Post

Why is `RUSTC_BOOTSTRAP` so actively discouraged?

Rust Internals [Unofficial] April 4, 2026
Source

The OP does correctly mention the merits of versioned nightly.

Indeed, I do think version nightly, assuming it's interpreted as x.y.z-nightly in Cargo-Semver parlance (i.e. , breaking even when just bumping z), can be preferable to "dated nightly", barring patches:

  • version numbers are way more memorable than arbitrary cut-off dates,

  • especially when cross-referencing with stabilized APIs.

e.g. , do I need a feature to use ::core::fmt::from_fn()?

* if you were using `x.y.z-nightly` versioned nightly, then you'd be able to answer this directly: since the cut-off version stabilizing it is `1.93.0` as per the docs, then on `1.92.0-nightly` or below you'd need the feature, and `1.93.0-nightly` and onwards you would not.

* but if you're using `nightly-yyyy-mm-dd`, how do you quickly answer this question for `nightly-2025-11-23` _vs._ `nightly-2025-01-03`, for instance?

The answer is that, as a first approximation, you'd need to identify the cut-off date of the 1.93.0 nightly, using, for instance, https://releases.rs, from which we can observe it was December the 5th 2025 for 1.93.0,

and October the 24th for 1.92.0; so we know that prior to 2025-10-24 it will for sure be unstable, and 2025-12-05 onwards it will be stable; but for my november date example it remains unclear :

So the more accurate approach is actually to find the stabilization PR and look at the merge date (not too difficult, but definitely more hassle than "just" going to https://releases.rs, itself more hassle than checking a version number on https://docs.rs/std:

Which gives us the date of November the 4th (for GMT+1); so nightly-2025-11-05 and onwards ought to do it?

So yeah, it would be quite handy to get some form of versioned nightly.


And it just turns out that, for now, since we don't have that in any form, the only way to hackily DIY-polyfill such a thing is through RUSTC_BOOTSTRAP=1 +stable.

And this is socially problematic, since it has the name stable in its name (it sounds like "nightlied stable" more than "versioned nightly").

I personally, and at work, use this in certain scenarios (whilst being willing to exceptionally use pinned nightly for a hotfix), and to great success, out of the value of versioned nightly as a concept. But it is very important to be aware of the tradeoffs and limitations that come with it.

TL,DR

We'd probably benefit from an official support of versioned nightly so as to supersede this hacky but legitimate usage of RUSTC_BOOTSTRAP=1 +stable.

Discussion in the ATmosphere

Loading comments...