[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