large binaries

Simon Marlow simonmar@microsoft.com
Fri, 19 Jul 2002 10:22:23 +0100


> > Is there some reason haskell binaries have to be statically linked?
> > I can't seem to find a way to make them otherwise, at least with
> > ghc.
>=20
> The ELF dynamic linking format seems to be designed on the assumption
> of poor code reuse (e.g., C code) where calls from one module to
> another are rare and can therefore be expensive.
>=20
> Haskell code has very high levels of reuse and calls from one module
> to another (especially calls into Prelude, List, Monad, etc) are very
> common so dynamic linking imposes a very high overhead.
>=20
> This isn't a reason to not support dynamic linking but it's a reason
> to make it a low priority.  Incidentally, it avoids confusion between
> the performance overhead of lazy evaluation and the performance
> overhead of dynamic linking of modular code.

Yes, and there are various other reasons too.  There's a FAQ question in
GHC's (rather well hidden) FAQ:

  http://www.haskell.org/ghc/docs/latest/html/users_guide/faq.html

and a search through the glasgow-haskell-users archives will turn up
previous discussions.

Also, we do (or did) have support for dynamic libraries on Windows.

Cheers,
	Simon