As I mentioned above, there shouldn't be a bootstrapping issue because the compiler is never reading any previously compiled crates. Each compiler only reads crates that it itself built.

Having a host/target distinction complicates filesearch/loading quite a bit to the point that I believe it would be much easier if there were a host filesearch and a target filesearch structure. When searching for procedural macros, the host filesearch can be queried, and when searching for macro_rules macros the target filesearch can be queries (plus it can load crates to be linked)