[slime-devel] Refactoring, take two

Luke Gorrie luke at bluetail.com
Sun Nov 23 07:43:39 UTC 2003


Ahoy,

I'm having another crack at backend refactoring. This time I'm going
"by the book" and doing it incrementally on CVS HEAD.

The plan is to move to James's plan [1], roughly:

  swank.lisp:             shared, portable code
  swank-backend.lisp:     defines the interface to non-portable code
  swank-{cmucl,...}.lisp: implements the interface from swank-backend.lisp

Ultimately each file will be a different package, but for now all
files are in the SWANK package. The advantage is that nothing breaks
by default - some things are now working via swank-backend.lisp, but
the rest (not refactored yet) is just like before and still works.

The most significant refactoring so far is the compiler-note
reportage: now each backend detects a compiler note in whatever
non-portable way is appropriate, then resignals it as a
`swank:compiler-condition' which is handled in swank.lisp. So all the
notes-database business is shared now.

I also switched to using generic functions to define callbacks and
methods to implement them. This seems like a neat fit compared with my
ugly macro hacks from last time.

Still hacking, so things may be a little unstable. Currently

NB: I updated the FAIRLY-STABLE tag incase I'm breaking
things. Currently HEAD should be okay on all platforms AFAIK.

NB2: SLIME's surprisingly nice for doing major surgery on itself, at
least when not breaking the debugger and repl :-)

NB3: Thanks James, Dan, and Brian for helping me with OpenMCL access!

Cheers,
Luke

1: http://jamesjb.com/slime/slime-impl.txt





More information about the slime-devel mailing list