[slime-devel] SLIME48: a Swank back end in Scheme48

Taylor Campbell campbell at bloodandcoffee.net
Tue Aug 23 18:47:43 UTC 2005


About a month ago, as I was thinking about building a comprehensive
development environment for Scheme (& Scheme48 in particular), akin to
SLIME, the notion occurred to me that Scheme48 might actually provide
the necessary facilities for a realistic Swank back end (as compared to
the mostly toy back end Helmut Eller sent here a while ago).  So I
started working on it a bit in small increments, and pretty soon Emacs
was successfully talking to it over TCP to evaluate simple REPL
expressions.  Last week I implemented SLDB support, after rewriting it
from scratch once my initial prototype worked; I spent the whole
weekend fixing a really obscure bug involving threads, continuations, &
DYNAMIC-WIND; and just today I've gotten it into an almost usable state
for REPL work (though not file & module loading & such yet).

Currently, I'm not using any source control yet, and I haven't released
the code anywhere, but Marco Baringer and several others recommended
that I simply add the Scheme48 back end to the main SLIME CVS source
repository.  If everyone relevant would be OK with this, I'd like to do
it, but I see one potential problem with it, assuming that no one would
object to including Scheme code in SLIME: I've organized my Scheme48
back end into about a dozen different files, which is pretty different
from the existing organization of SLIME code (one monolithic file for
the Emacs side; one monolithic file for the bulk of the CL side; one
monolithic file for each back end).  Would this bother anyone?

(I intend, by the way, not to change the Emacs side of SLIME to add
anything Scheme-specific; if anything, I'd want only to make slime.el
work better with both Scheme & CL -- e.g., Marco Baringer just kindly
committed a change I suggested that makes the definition locator code
look for definitions where a sequence of parentheses might precede the
name being defined, such as in (DEFINE (FOO X) ...) to define FOO in
Scheme, or (DEFSTRUCT (BAR ...) ...) to define a BAR structure in CL.
There are a few other minor changes like these that would be convenient
for Scheme48's back end, but which would not get in the way of the CL
back ends, too.)

Obligatorily, here's some SLIME48 porn, by the way:

  <http://www.bloodandcoffee.net/campbell/slime48-sldb-porn.png>

(The CL-USER prompt and the mention of a COMMON-LISP-USER package are
due to slime.el's hard-coded initial package of COMMON-LISP-USER --
another small change I'd like to make is to allow customization of the
initial package.  (The temporary solution was for me just to define a
COMMON-LISP-USER package in Scheme48, of course.))




More information about the slime-devel mailing list