Ahoy,
Did some improvements to the inferior-slime-mode based on helpful feedback: now it's careful about preserving history with multi-line input, and it also indents it as Lisp code. There's also a command on C-RET that closes all your open parenthesis and sends the input to Lisp.
More significantly, I started on The Great Backend Refactoring. This is ultra-disruptive, so I (gag) made a branch: backhackattack-1. The idea is to violently hack things into shape, initially only with the CMUCL backend, and then, only when it's right, update the other backends too. Meanwhile normal use/development can continue on the trunk. The hope is to only be branched for less than a week.
So far all I've done is split swank.lisp and swank-cmucl.lisp into separate packages, so that the interface is more explicit. It currently gets through the test suite.
The code looks pretty much like a pair of Siamese twins separated by a chainsaw -- lots of internal stuff shared all around the place with no logical division, but with the connections laid bare for the eye to see.
The next step is to jumble things around so that the backend implements a small and well-defined interface, and swank.lisp exports as little as possible to support it. AFAICS the best general strategy is moving code from the backend into swank.lisp. Anyone who wants to get muddy is welcome to join in :-)
For the callbacks, I'm currently defining the symbols and placeholder-functions in the SWANK package. Then swank-cmucl.lisp contains a bunch of "(defun swank:foobar ..)" forms to properly define the callbacks. May or may not be a good idea.
Cheers, Luke