[Haskell-cafe] Re: Non-technical Haskell question
Robert Dockins
robdockins at fastmail.fm
Mon Dec 6 12:08:34 EST 2004
Ketil Malde wrote:
> John Goerzen <jgoerzen at complete.org> writes:
>
>
>>>sensibly share libraries between apps. Anyway, disc is cheap.
>
>
>>Memory not so much, though. One advantage of having something in .so
>>form is that every instance of every application that uses it shares the
>>same in-memory image of the code.
>
>
> Well, a 5 Mbyte [1] overhead isn't really that much, IMHO. You'd need to
> run a lot of (different; if they're the same, the text will be shared)
> applications to get any measurable benefit. Eventually, it would be
> nice to have dynamic linkage, but I can see why it isn't a priority.
>
> -kzm
>
> [1] On my Linux system, the overhead seems to be less than 2
> Mbyte. 5 Mb is the figure used by the OP.
If we assume that Haskell programs are a) uncommon and b) the top of a
solution stack (ie, not the OS, not the GUI toolkit, not the network
stack) then this reasoning is sound, and we don't really need dynamic
linking. IF, on the other hand, you imageine Haskell wideing its
borders and moving into other nitches, the value of dynamic linking
becomes apparent.
The problem, of course, is that Haskell likes to tightly bind with the
libraries it uses (inlineing across modules and other optimizations).
So imaging if the "package" unit was a barrier to those kinds of
optimizations. Then, no knowledge of the internals of the package are
needed by importing modules, and "sufficently" compatable pacakges could
be drop in replacements, .so or .dll style.
I suppose I am suggesting that we consider the "package" as a unit which
has a stable ABI. Is this possible/easy to do? Could we then implement
dynamic linking w/ packages?
More information about the Haskell-Cafe
mailing list