when we already see ways we could improve the situation beyond “oh just split up your crates into more crates.”
The tracking issue about compiling a single crate with multiple rustc process is not as postivie as you are although @michaelwoerister sounds very positive here. IIUC the issue correctly, and michael please correct me, everything inside a crate can depend on everything else, so every process needs to have the whole crate in memory (increases memory consumption linearly), lot of frontend work must be done twice (parsing, macro expansion, …), and extra work must be done to join the results. What can be done in parallel is LLVM codegen which Rust already does.
From all the approaches to speed up compile-times, compiling a crate using multiple rustc processes simultaneously is the one that looks less promising to me (lot of work for unknown wins).
If Rust projects tended to have as many crates as C++ projects have source files, we wouldn’t be having this conversation to begin with.
This is a cultural issue.
FWIW my Rust programs compile way quicker than my equivalent C++ programs, maybe because, just as in C++, I structure my code in such a way that it can be compiled in isolation (using crates in the 1-5kLOC range).
I really don’t know what the people writing 30kLOC crates (rustc, I am looking at you) are actually expecting. They write code that must be compiled serially, and then complain that is not compiled in parallel, suffering huge compile-times in the meantime. Maybe one day the magical FTL compiler arrives and code that must be compiled serially will be compiled in parallel.