External Publication
Visit Post

Why is `RUSTC_BOOTSTRAP` so actively discouraged?

Rust Internals [Unofficial] April 1, 2026
Source

My thought process is as follows:

  1. Many people with more experience than me have thought about this more than I have, so I'm probably missing something ...
  2. Rust has very strict and reliable stability guarantees for very good reasons. This does, however, mean that it can take a very long time for very useful features to become fully stabilised. For example ! has been ongoing since 2016; try_v2 since 2021; assert_matches was in progress from 2021 until 2026. It's understandable that true stabilisation takes years for big complex topics & changes - this is in no way a complaint.
  3. As a developer I have three options:
    1. don't use new features which would be really helpful and wait a few years.
    2. use nightly
    3. use stable with RUSTC_BOOTSTRAP

Why I personally tend towards choosing option 3:

  • I don't want to use nightly as I don't want the instability of daily changes and the risk of breakage at any time.
  • I can trust that stable will not accidentally break something given the wonderful nightly-beta-stable release process that's in place. That means my only risk is of a deliberate breaking change in an unstable feature I've chosen to use. That's a risk I can better estimate and weigh against the value of using that feature.
  • I can set up automation to test my crate with each new release and take action on failure (although to my knowledge I have no way of enforcing a maximum supported rust version).
  • Running automated checks daily is a much bigger use of resources, both natural and personal. I can plan better around a quick check every 6 weeks.
  • I'm effectively forced to have RUSTC_BOOTSTRAP set on my local machine while coding if I want to have rust-analyzer support for testing and linting without huge delays every time I run a test. See: Issue #17149 · rust-lang/rust-analyzer

To my mind that means I get much more limited instability at zero cost vs nightly and I can choose to opt in to a feature where I believe it is worth the cost of instability in that specific feature

So why is this approach so actively discouraged?

The last discussions I can find are from 2021 here & here; they are focussed on slightly different use cases and revolve around making additional changes to the language while taking "RUSTC_BOOTSTRAP is bad" as a given.

Discussion in the ATmosphere

Loading comments...