>>>> "Glynn" == Glynn Clements
<glynn(a)sensei.co.uk> writes:
Glynn> Either you would need to relocate
all of the pointers (and
Glynn> Lisp code is primarily pointers) when you load the library,
Isn't this exactly what all the gung-ho stuff is all about.
Glynn> or every object which is referenced from the library would
Glynn> have to have a specific address, which was known when the
Glynn> Lisp was compiled.
This is is about what 'a.out' style shared libraries where all about?
May I propose a third option
We introduce a new "internal" pointer type, that is basically just
relative to the base adress of the packages. If the OS supports COW
that would allow loading to be a simple mmap followed by a link of the
external references. Furthermore it would increase the amount of
shared data between XEmacsen.
Of course this would also introduce a runtime penalty but I would like
to see how big this is. Moreover the XEmacs could do some kind of
just-in-time rewriting of the adress to the real pointer.
Jan
P.S. I have no experience with lisp implementation, but suppose we had
lexical scoping wouldn't most of the references be stack relative anyway?