[Larceny-users] on porting to larceny

William D Clinger will at ccs.neu.edu
Sun Dec 28 10:26:49 EST 2008


Marco Maggi wrote:
> Can you confirm that only the timestamps are
> involved? I ask this because maybe it is my
> laptop (I had a calendar clock reset, so maybe
> some timestamp is broken somewhere in the
> file systems).

Timestamps are involved, but it's more complicated
than that.

Every compiled library or top-level program contains
a unique hash number.  This hash number could be
computed by a random number generator, but in Larceny
it happens to be computed from the time at which the
library or program was compiled.  I don't think that
matters, however; you might as well think of the hash
as randomly generated.

Every compiled library or top-level program also
remembers the hash numbers for all libraries that
it imported at compile time.  When those same
libraries are imported at run time, all of those
hash numbers are checked to make sure the run-time
hash matches the compile-time hash.

Your clock reset probably affected a different part
of the system: Larceny's mapping from library names
to file names.  Larceny normally prefers .slfasl
files over .sls files, but it will use the .sls
file if it's newer than the .slfasl file.  If a
clock reset caused the modification date for a .sls
file to be more recent than the modification date
for a .slfasl file compiled from it, then all
compiled files that imported that library, directly
or indirectly, will act stale.

Another possible cause of the problem you're seeing
is that you may have removed a .slfasl file without
removing all of the .slfasl files that imported it
at compile time, whether directly or indirectly.
When you remove a compiled file, you have to remove
all compiled files that import from it, directly or
indirectly.

It sounds as though you should remove all compiled
(.slfasl) files, recompile Larceny's R6RS runtime,
and then recompile everything else.  Before you do
that, you should check all of the source files to
see whether any of them have a bad modification
date; you should touch that up before compiling
anything.

Will



More information about the Larceny-users mailing list