Lispworks. It contains compile-file; but the delivered EXEs it produces do not (this is by design). Slime has to connect to a delivered EXE in my situation.
It seems *intended* to compile if the source is newer than the FASL file. But due to the problem I see, it is rebuilding elements that I know have already been compiled in from latest.
The ability to use compile-file at runtime would be sufficient to mask the problem. Indeed, the logic I mentioned could be broken completely (to recompile everything every time) and most users wouldn't notice it.
Helmut Eller wrote:
- Matt Lamari [2010-02-13 16:43+0100] writes:
I believe for many this is concealed by having their lisp implementation able to call "compile-file" and load the affected modules in at runtime
- the contribs it determines as missing (right or wrong) will compile
the elements it percieves as missing - my implementation (commercial) does not allow this; but it then highlights an inconsistency in the implementation.
Your implemenation doesn't allow (load (compile-file ...)) ? I've never heard of such an implemenation. How do you compile/load Swank in the first place?
This may explain it:
I configure slime in my .emacs as so: (slime-setup '(slime-repl slime-fancy slime-banner slime-asdf slime-indentation))
Now, due to my implementation, I want my app to include all of the relevant contribs. To achieve this, I needed to do 2 things.
1: In Swank-loader.lisp, add swank-indentation to defvar *contribs*
That will compile it if the the source is newer the the fasl file.
2: Address another problem in Swank.lisp. . .
Swank uses REQUIRE in this case and the filename is determined by calling the hook function swank:*find-module*. You could customize that or perhaps swank:*load-path*.
Whether REQUIRE invokes COMPILE-file before loading the file is beyound our control.
This is where the compile-file was being decided on and triggered. Basically, despite being present, this test was determining that ASDF and Indentation have to be reincluded. ASDF and Indentation were being passed in as as :swank-indentation and :swank-asdf, then looking for them in *modules* via a string search. However, the string for asdf was "ASDF" not "SWANK-ASDF", and nothing for INDENTATION is present at all despite being loaded.
SWANK-ASDF depends on ASDF that would explain it. swank-indentation.lisp is missing the corresponing PROVIDE, that's a bug.
Helmut
slime-devel site list slime-devel@common-lisp.net http://common-lisp.net/mailman/listinfo/slime-devel