Lazy sem'checking has been discussed for years before that PR. Unfortunately 
it's inherently incompatible with separate compilation and modularity. Consider 
a module A offering two concrete procs p1, p2. Module B only uses p1. So when 
the compile order is B -> A only p1 would be compiled. Now a module C is added 
that uses p2. So now p2 needs to be compiled but if we assume that we want to 
compile A only once and save the result on disk in an intermediate format 
that's impossible. So we need to recompile A even though it didn't change at 
all.

Now there are ways to compensate for these problems, but the solution is hardly 
elegant nor particularly peformant -- and you pay for this complex logic even 
for programs that don't contain too much dead code.

Reply via email to