incremental linking?

Simon Marlow
Wed, 27 Nov 2002 09:50:56 -0000

> More fun with Haskell-in-the-large: linking time has become the
> main bottleneck in our development cycle. The standard solution
> would be to use an incremental linker, but it seems that gnu does
> not yet support this:-|

Hmm, I've never heard of linking being a bottleneck.  Even GHC itself
links in about 3-4 seconds here.  One common problem is that linking on
a network filesystem takes a *lot* longer than linking objects from a
local disk.  It's always a good idea to keep the build tree on the local
disk, even if the sources are NFS-mounted.

> Alternative a: use someone else's incremental linker, e.g., Sun's
> ild (ghc's -pgml option appears to have its own idea about option
> formatting, btw) - this doesn't seem to work - should it?

You'd probably want to call the incremental linker directly rather than
using GHC - what exactly does it do, BTW?  What files does it generate?

> Alternative b: convince ghc to link objects in stages, e.g., on a
> per-directory basis - gnu's ld seems to support at least this kind
> of partial linking (-i/-r). Not quite as nice as a fully incremental
> linker, but would probably save our day..

Yes, this works fine.  We use it to build the libraries for GHCi.