
On 6 Dec 2004, at 21:56, Sven Panne wrote:
Jules Bean wrote:
I don't think it does, actually. You can imagine a compiler which has access to not *only* the .so files, but also the haskell source. Therefore it can still unroll (from the source), but it can choose to link to an exported symbol if unrolling isn't worth it.
But that's not dynamic linking... Imagine a bug in version X of your lib, simply using version X+1 with your already compiled program won't fix that bug. Again, this is just like C++.
Absolutely. And, as such, it's a possible solution. You don't get all the advantages of dynamic linking: you can't get in-place upgrades on bugfix libraries. You do get other advantages though: reduced disk space and shared in-memory images. To get a more sophisticated solution you need to have a more instrumented object format, and move various optimisations either just-in-time or launch-time. (And then you lose the shared in-memory advantage, again...) Jules