5 ms·
It is indeed early to say, but the design of the compiler pipeline is very different to rustc, it is a more traditional pass based system with plenty of side ta
by philberty 5y ago
It is indeed early to say, but the design of the compiler pipeline is very different to rustc, it is a more traditional pass based system with plenty of side table lookups. Some of the notions are similar we are using HIR but we are not using MIR, GCC's generic IR is very similar.
So we have
AST->HIR->GCC-Generic->GCC
where as rustc is:
AST->HIR->THIR->MIR->LLVM-IR->LLVM
- fnord77 5y agoisn't there basically some sort of static analysis going on during the rust compilation to ensure memory is accounted for?
- kibwen 5y agoThere are a variety of static checks that Rust performs in order to ensure memory safety. rustc might perform these checks at various parts of the pipeline, but it might be possible for a different compiler to perform these checks at other points depending on what information its chosen IRs encode (for example, borrow checking requires a control-flow graph, which only exists at the MIR stage in rustc).
- pornel 5y agoHow are you going to do borrow checking without MIR? Is GCC-Generic suitable for that? Rust moved it from HIR to MIR to handle more edge cases.
- est31 5y agoThe rust compiler used to be pass based too, but then became on-demand as that architecture is more amenable for incremental compilation. In that time the performance has improved, although I'm not sure how much this architectural change was responsible for it, I think it were mostly unrelated changes.