On Thu, Jul 05, 2007 at 01:42:09PM +0200, Florian Weimer wrote:
> * Bruno Daniel:
> >> No, the kernel needs some address space for itself, and the remaining
> >> address space is fragmented by dynamic shared objects.
> > Is this the same in all languages/implementations or is it special
> > to sbcl?
> The 3 GB limit affects everyone. There are implementations which can
> deal with the fragmentation issue, though. Some garbage collectors do
> not require a continuous heap, for instance.
Yes, what he said, and then some. SBCL expects not just a continuous
heap, but a continuous heap at a fixed address range known to SBCL at
compile time. Both the continuity requirement and the
predictable-address requirement require SBCL to use conservative
strategies to avoid shared libraries, and thus they make it difficult
use every last bit of address space.
We'd be pretty unlikely to make the fixed-address-space design
decision today, but since I'm one of the most elderly maintainers and
even I was only entering high school around the time that I think the
design decision was made, none of us had much say in the matter.:-| I
think there's broad agreement that fixing it today would be a good
thing, but also that it would be a complicated matter of programming.
All sorts of things depend on it: not just the way the garbage
collector works, but stuff like the way the system saves and loads
.core files, and the way the system tests whether a value is NIL.
William Harold Newman <william.newman@...>
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C
The Difficult is that which can be done immediately;
the Impossible that which takes a little longer. -- George Santayana