Rust CI and submodule crates


When we did the clippy survey, most people not using clippy did so because it had too much breakage. On the other hand, folks new to rust tend to turn to clippy for some automated mentoring (well, when it works, which it luckily does more often than not).

So in the spirit of improving on boarding new users, I think a clippy that works on stable is priority number one. So stable should gate on clippy and we clippy maintainers are prepared to put in the work to make it ok.

Gating beta on clippy would be an easy way to ensure clippy will work on the next stable, but not strictly necessary. I don’t see much beta usage anyway.

With nightly, we have a kind of special situation, because some use it for other reasons than clippy, so they are likely to keep a nightly. Giving them a choice between the newest nightly and the newest nightly with working clippy may be the second best solution if we cannot make it work, provided we can make the rustup UX palatable.

Of course, also gating nightly on clippy would make for the best UX for clippy users, so we may want to try that route first and back off if we find problems with it.


The discussion above treats rustup as a “Rust” installer that installs one singular product that has optional components and therefore everything is tied down to a singular release schedule.

Has it been considered to instead treat the additional tools as independent products that are just bundled together as a convenience for the user? In other words, Clippy and rustfmt need to have their own independent release schedules/management/versioning that rustup will just learn to keep track of.


Clippy has to be bundled via rustup for it to work on stable.

Clippy has to use the same trick as libstd to be a crate that you can use with the stable compiler despite being unstable. This means tying it to a stable version and using the bootstrap trick; which means that it has to be distributed via rustup or some tool aware of the rustc version.

Clippy will continue to have its own versioning, presumably, but it won’t matter as much.