[slime-devel] Re: Slime behavior different (SBCL vs CMUCL)?

Helmut Eller heller at common-lisp.net
Thu Nov 22 23:29:20 UTC 2007


* Jeff Cunningham [2007-11-22 18:05+0100] writes:

> Clearly I don't fully understand the interactions between Slime, Swank
> and the inferior lisp. Is there another way I can launch SBCL from
> within Slime so it works the way CMUCL used to?

If you set swank:*communication-style* to :sigio you should get the
same behavior. :sigio is a bit dangerous though, because most code
isn't reentrant and it's possible that data-structures are in a
inconsistent state when the interrupt occurs.  And :sigio isn't very
useful if your application uses threads.

As a safer alternative you could stop and debug the thread with `M-x
slime-list-threads' and pressing d in the right line.  If you press :
in the debugger buffer, you can evaluate an expression in the debugged
thread.

C-c C-c in source buffers usually spawns a new thread.  If you
(re)compile a defun it's visible in all threads.  Setting a global
variable is of course also visible in all threads.  The new value is
not visible in those threads which have a local dynamic binding for
the variable.  (You can set those local bindings in the debugger.)

Also note that SBCL can optimize tail recursive functions to loops,
i.e. a thread executing such a loop never calls the new definition.

Helmut.




More information about the slime-devel mailing list