Friday, June 24, 2005
Upgrades resolved
I finally got my Slime/CLISP thing worked out. For whatever reason, it turns out that Slime 1.0 and 1.2.1 are not compatible with CLISP 2.33.2. When I did my upgrade, I took the opportunity to move from Slime 1.0 to Slime 1.2.1 and from CLISP 2.33.1 to CLISP 2.33.2. Previously, Slime 1.0 and CLISP 2.33.1 had been playing nicely. Last night, I had tried reverting back to Slime 1.0, thinking that this was basically a Slime issue. I figured that CLISP hadn't changed that much between 2.33.1 and 2.33.2 and so that couldn't have been the problem. But neither Slime 1.0 or 1.2.1 worked with CLISP 2.33.2. Of course, the problem is always the last thing you check. Tonight, I tried it with the older CLISP and things fired right up.
I haven't fully tracked down the problem, but it's somewhere in the Swank bootstrapping, probably something in the CLISP backend, somewhere. Basically, Swank gets loaded, but never creates the server socket. Slime is left polling for the temp file in which Swank should write the socket number used by the server so Slime can connect. Only that file is never written and Slime is left jilted at the altar. I have no idea if this is XP-specific or simply CLISP 2.33.2-specific.
Further debugging will have to wait. After a couple of days of ILC, I want to hack some Lisp!
This is a bug with clisp.
The function COPY-PPRINT-DISPATCH called in the swank.lisp file of slime should take nil as its argument and return the value of *print-pprint-dispatch* but it returns an error instead.
Earlier versions of SLIME don't call this function so they work.
You can place a dirty hack in the latest version of SLIME to fix it,
in the file swank.lisp change the line
(*print-pprint-dispatch* . ,(copy-pprint-dispatch nil))
to
(*print-pprint-dispatch* . ,*print-pprint-dispatch*)
the function just returns the initial value of *print-pprint-dispatch* anyway so this shouldn't cause any trouble, I hope : )
BTW I'm using OSX so this is just clisp not the OS.
Actually a better idea is to change the line to
(*print-pprint-dispatch* . ,(copy-pprint-dispatch))
as the program calls the function to get a copy of *print-pprint-dispatch* using the original might break something.
There is still a bug in clisp though as it should do this anyway when given nil as an argument.
I've spent most part of yesterday in trying to get latest versions of SLIME, CLISP and XEmacs work together. After a lot of googling I've found a hack that gets the Swank to actually create the socket. Tried, and it worked for me. Maybe it will work for you too.
clisp cvs + slime cvs + windows XP works fine iff the following change
is done
(defun regex-compile (..)
...
(t
;;
;; This is a subgroup repeated so I must build
;; the loop using several values.
;;
;;; clisp barfs without the t
t
))
Post a Comment
Links to this post: