Subject: Re: Managing many small libraries
From: (Rob Warnock)
Date: Sun, 23 Mar 2008 21:11:47 -0500
Newsgroups: comp.lang.lisp
Message-ID: <>
Richard M Kreuter  <> wrote:
| SBCL at least has a peculiar mechanism for resolving this, which will
| signal an error if there's both a compiled file and a source file and
| the source is newer than the compiled one, on the assumption that the
| fasl file is out of date.  So it can sometimes happen that a stray
| edit or file system manipulation can mess things up.

I like the ":IF-SOURCE-NEWER :COMPILE" extension to LOAD that's
in CMUCL. My own LOAD*[1] wraps a loop around this that compares
the modify times of both the source and compiled versions and
LOADs only if at least one is more recent than a saved timestamp
of the last time LOAD* was run. So you edit one or more of the
current set of LOAD* files, then say "(LOAD*)", and just the
"newer" ones get recompiled/reloaded.[2]


[1] Convenience function for use only in exploratory programming
    in the REPL. I use ASDF for any productin code.

[2] It was a personal design decision that LOAD* would recompile
    source files only if *some* compiled version already existed.
    That way LOAD* can be used on a mix of interpreted and compiled

Rob Warnock			<>
627 26th Avenue			<URL:>
San Mateo, CA 94403		(650)572-2607