Subject: Re: Managing many small libraries
From: rpw3@rpw3.org (Rob Warnock)
Date: Sun, 23 Mar 2008 21:11:47 -0500
Newsgroups: comp.lang.lisp
Message-ID: <p7adnel4ja5-kHranZ2dnUVZ_jednZ2d@speakeasy.net>
Richard M Kreuter  <kreuter@progn.net> 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]


-Rob

[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
    sources.

-----
Rob Warnock			<rpw3@rpw3.org>
627 26th Avenue			<URL:http://rpw3.org/>
San Mateo, CA 94403		(650)572-2607