[slime-devel] Partial multiprocessing support, take 2

Luke Gorrie luke at bluetail.com
Thu Jan 15 12:17:22 UTC 2004


Ahoy,

I checked in some very basic multiprocessing support. It works with
SBCL and CMUCL and it should be easy to port.

Threads automatically create new connections on-demand and can all
talk to Emacs at the same time. There is no flow-control, so if 20
threads hit the debugger at once then you can expect 20 layers of SLDB
buffers to pop up :-). There is no real policy for standard I/O
streams or for interrupting yet -- "it does what it does".

There is some commentary in swank.lisp about how multiple-connections
work from the Lisp side (short version: one per thread created on
demand). I also changed (shrunk) the multiprocessing interface in
swank-backend, it should be implementable in 20 lines or so and all
that's needed for a port.

For people already using threads it should be a great improvement. For
people not using threads it shouldn't break anything.

There's a caveat for SBCL: spawning threads from SLIME (e.g. the REPL)
doesn't work properly. When you spawn a thread in SBCL it inherits the
dynamic bindings from its parent, but it seems to get some things that
were supposed to be thread-specific/temporary in the bargain. I'll ask
Dan about this stuff when he gets back online.

BTW, there is a job opening for a threads user-interface
designer/hacker. Helmut and I aren't threads users, so we're not the
guys to do this stuff. It would be better for some threads hacker(s)
to muck around and figure out a good UI, and we can help with the
infrastructure (which is hopefully mostly there now).

Cheers,
Luke






More information about the slime-devel mailing list