
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

On Mon, 15 Oct 2001, Simon Marlow wrote:
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.
Ok, I see. I thought the memory consumption was high just because there were so many interface files to cache and that they simply take up a lot of memory. Anyway, it's good to hear that you're working on it.
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.
My suggestion to use weak pointers was just a confusion on my side. Sorry for that. What I had in mind was the kind of pointer that you suggest. Cheers /Josef
participants (2)
-
Josef Svenningsson
-
Simon Marlow