[slime-devel] Re: Using the REPL when a computation is running.
Luke Gorrie
luke at bluetail.com
Fri Jul 9 16:03:40 UTC 2004
Howdy Dirk,
Dirk Gerrits <dirk at dirkgerrits.com> writes:
> Not only did I find a nice manual, but to my amazement, the
> following actually works:
>
> CL-USER> (defvar *stop-damnit* nil)
> *STOP-DAMNIT*
> CL-USER> (loop until *stop-damnit*)
> (setq *stop-damnit* t)
> NIL
> CL-USER>
> T
>
> Great job guys! Keep it up. :)
We're glad you like it :-)
> I'd just like to ask if there's anything else I need to know about this
> functionality. Are there any limitations? Dangers? Which Lisp
> implementations does it work with?
We've added the concept of "communication styles" to incorporate the
ideas from that January thread you cited. There's some discussion of
them in the "Lisp-side configuration" part of the manual, though I
think we should make it more prominent because it's pretty important.
The defaults are:
CMUCL uses a signal handler to process RPCs. If you issue two at
once then the second will run "inside" the first on a signal
handler, which looks like what your example does.
LispWorks, ACL, and SBCL-with-threads use a separate thread for each
request. (Well, almost: the REPL always uses the same thread.)
The rest use either something select()-based or a loop.
Not every style is supported by every backend, but some do support
more than one. Exactly which ones is not currently precisely
documented :-)
-Luke
More information about the slime-devel
mailing list