[slime-devel] Re: make swank safe if loaded into an image with an older version of swank in the image

Madhu enometh at meer.net
Tue Feb 5 00:41:47 UTC 2008


* Marco Baringer <87bq6waeto.fsf at arsenic.bese.it> :
Wrote on Mon, 04 Feb 2008 17:04:03 +0100:
| well, the entire point of the patch is remove defvars from the swank
| package. if you have an older slime in an image and attempt to load a
| newer slime and the defvars don't get reset you'll a totally broken
| slime and very confusing error messages.
|
| do you often load slime into an image which already has slime built-in?

No, I stopped putting swank into images I build (this turned out to be a
bad idea for various reasons), but frequently (at least every every
month or two) update slime and reload onto an image containing slime.
This has not caused problems recently.  In these cases, I want to
maintain the state of my session, (in defvars) not have it written over.

Another use case: -- typically I start lisp at a tty, and have a repl
thread running
 (loop (load "/path/to/swank-loader") (swank::setup-server 4005 ...))
and attach to swank from emacs with M-x slime-connect

In this case any changes to swank files get recompiled the next time the
slime connection is broken.  Putting restarts in swank-loader (as Helmut
suggested) would make this use case painful, and impossible in an
unattended lisp.

I think the cases where a defvar changes and causes package deletion is
sufficiently small to warrant explicit user intervention, where the user
can say
  (delete-package ...) (load "/path/to-swank-loader")

This could be wrapped up and supplied as a function.  So the
functionality of loading is separated, and swank-loader.lisp can be used
as before -- as a single entry point to load swank.
--
Madhu




More information about the slime-devel mailing list