On 13/05/2011 19:55, Neil Mitchell wrote:
Hi

We've talked before about the need to bootstrap occasionally, which as I
understand was one of the reasons for using make. I agree that something
like Neil's Shake system would be nice if it didn't require a working
Haskell implementation to build the driver.

With Shake, it's possible to run it single threaded and dump a list of
all system commands performed. With a little bit of care (you couldn't
use your Haskell Shake code to query the global environment in
non-obvious ways), this could be used as the initial bootstrap. It's
not been done before, but I see no reason it won't work.

I hate working on build systems as much as the next person, but I'm also
conscious of the fact that the YHC basically died under the weight of its
broken build system. I don't think that'll happen with GHC, but it is still
causing me acute pain.

Yhc died because of build system choice, but I'm sure that won't
happen to GHC - it will just suck away fun and valuable Haskell
hacking time. But Shake has other benefits, such as profiling. With
detailed profile statistics about your build system you can usually
make sensible modifications and get some build time performance
improvement. Similarly, I'm sure Shake would increase the parallelism
of the build.

I remember you made that claim before, but I don't remember the reasoning for it - why do you think there's more parallelism to be extracted? As far as I know we already give make a pretty accurate dependency graph, the only place where we are a bit innaccurate is in the dependencies between the configure steps for packages, but those are quite a small part of the overall build time. Oh, and we could calcualte dependencies on Haskell source files individually rather than all at once, but that really only impacts rebuilds, and it could be fixed.

Perhaps make's scheduling algorithm is suboptimal for our graph. I seem to recall Shake does some kind of random scheduling, is that right?

Cheers,
        Simon

_______________________________________________
Cvs-ghc mailing list
Cvs-ghc@haskell.org
http://www.haskell.org/mailman/listinfo/cvs-ghc

Reply via email to