* Marco Baringer 87bq6waeto.fsf@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