2019 Strategy for Rustc and the RLS

So here is an example that came up recently. I suspect we all know the experience of building some crate for the first time and spending a long time building a long chain of dependencies. This can be a real issue — often, it may be the case that only a small fraction of that code winds up really needed in the final binary.

If we pushed hard on the query system, we might be able to do much better here. We've often thought about liberating rustc from the "crate at a time" mindset that it currently has, and instead having it be able to compile across many crates at once. Then you might (for example) only type-check/trans/build those parts of your dependencies that you actually use, etc. You would also get to the point of compilation errors much faster, since those don't depend on building machine code at all. etc