[Ecls-list] Question #2

Tobias C. Rittweiler tcr at freebits.de
Mon Feb 15 20:38:16 UTC 2010


Juan Jose Garcia-Ripoll writes:

> I have been asked to make FASL files incompatible between releases -- or
> even between commits if we follow Question #1 in previous email --. That
> means if a FASL is created with a given version, such as 10.2.1.124, a later
> version of ECL, say 10.2.1.125 should refuse to load the file.
>
> How many of you would find this problematic?
>
> Juanjo

That suggestion came from me. It is very clear to Juan (which is the
reason he forgot to mention it) but other people may not be aware of the
following:

LOADing fasls created by earlier versions of ECL into a more current
version results in _undefined behaviour_. It might work, or might not.

It's in fact worse that than. Even though the LOAD operation as such
succeeded, does not imply that executing the code of the fasl is safe.

When Juan said "make FASL files incompatible between releases", he meant
that version information is stored into fasl files (which may already be
the case) -- and LOAD would be modified to check whether that version in
the fasl matches with (LISP-IMPLEMENTATION-VERSION); in case it does not
match, an error would be signalled (ideally one with two restarts: one
which results in recompilation, the other which forces loading.)

  -T.






More information about the ecl-devel mailing list