On Tue, Aug 28, 2001 at 03:57:33PM +0100, Daniel Barlow wrote:
> (It's possible that you might not have to worry about this on x86,
> because I'm not sure that the x86 garbage collector moves functions.
> Other ports (Alpha, nascent PPC) do/will
The x86 garbage collector does move functions. Early in the X86 port,
it didn't, but by the time of SBCL's fork from CMU CL, it did.
(However (1) the at-the-time-of-the-fork code was still littered with
many confusing comments and conditionals that made it look as though
it didn't, and though I've tried to clean that up, there might still
be some left; and (2) the interaction of movable function objects with
the conservative GC is still pretty horrible, and very likely it's
overwhelmingly the largest source of bogusly uncollectable garbage.)
I think all the solutions I proposed assume that calls from other
languages into Lisp aren't time critical. If that assumption holds,
you might be solve the problem by main force by basically doing INTERN
and FDEFINITION every single time you call from C into Lisp:
call_sbcl("CL" /*packagename*/, "CLOSE"/*symbolname*/, args);
That'd certainly be faster than what my Perl scripts are doing.:-|
But as Dan wrote above and below, it's easier to structure your
program so it calls C, or so that it listens for socket input.
> William wrote:
> > You could set up SBCL to use CORBA. However, first you'd probably have
> > to port CMU CL's CORBA support, since I don't think anyone has done
> > this with SBCL yet. See CLiki again for pointers on CORBA stuff.
> Be aware that the CMUCL CORBA support is itself pretty ugly unless
> it's changed a lot since I last looked (which admittedly was a while
> ago). At the time it only really supported client-side corba; servers
> kind of worked but only using a fairly grotesque busy-waiting scheme.
Yeah, I was just looking wistfully at this stuff after I wrote the
message, and my superficial impression matches your more knowledgeable
one: "not for the faint of heart". Alas.
> If you can accomplish what you need using sockets or other IPC, that
> would save you an awful lot of time mucking about with SBCL internals.
> SBCL internals are more fun when you're more practised in Lisp and
> know where to look for the problems.
William Harold Newman <william.newman@...>
"Root canals are more fun than major third degree burns."
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C