
I would like to add a request to Thomas list of lacking features of ghc --make:
When caching information between the compilation of different modules, use weak pointers.
With large projects, ghc runs out of heapspace because of too much caching.
I think it's more likely that GHC has some space leaks which cause it to hang on to too much memory between compilations. In theory, it only caches the contents of interface files (in a pre-processed state), but due to leakage it may end up hanging on to more stuff. This is high up on our list of things to investigate. I'm not sure what you have in mind w.r.t. weak pointers - could you elaborate? In GHC there isn't a kind of pointer that says "hold on this unless we run out of heap", which is perhaps what you were after. Cheers, Simon