mcpiroman
12/01/2022, 5:30 PMdmitriy.novozhilov
12/02/2022, 9:48 AMBindingContext
and immutable PSI, but still)
• bad code locality: no phases, so any call in frontend can trigger execution of any other piece of frontedn. This leads to the problem when code cache of CPU is overflows and CPU just waits when it will be loaded from RAM instead of doing something useful (it's partially fixed with phased approach, but the problem still exists on big phases like body resolve, because it's just a lot of stuff we need to do during this phase)
• with lazy approach it's extremely hard to depevelop compiler. You don't have any restricted contracts on code, so your mind just blows during debugging. Also it leads to bugs which are quite hard to discover
• it is impossible to make K1 parallel with all this deferred computations
Most likely developers of rustc resolved some of those problems, IDK