[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