I've just spent a couple of hours getting CLX to build (and
work :-) under SBCL again. The only things I had to change this time
round were due to the change in behaviour of defconstant - I had to
use sb-int:defconstant-eqx instead.
Actually, I suspect that there is something wrong with the
current behaviour of defconstant. Given a file containing only
(defconstant *foo* :foo)
If I compile this file, using (compile-file "test"), I can
then evaluate *foo* to :foo. I.e, the defconstant from the compiled
file modifies the running Lisp. This means that it is impossible to
compile a file containing, say
(defconstant *bar* '#(1 2 3))
and subsequently loading this file.
Is this the correct behaviour?
While investigating this, I looked at the definition of
sb-int:defconstant-eqx in src/code/primordial-extensions.lisp. It
seems that there is a bug there; the main body of the macro evaluates
expr twice (it should use expr-tmp in the defconstant form).
CLX currently builds and works (for some of the demos, at
least). It requires a working internet.lisp, which I've also worked
on. This is possibly something that other SBCL users may have an
interest in - should I put it on a web server somewhere?
Alternatively, should it be put under SBCL's "contrib" directory?
Note that, with CLX and Gray-streams available, it should be
possible to build FreeCLIM (aka McCLIM) under SBCL...