On 29 May 2018, at 22:51, Eric Timmons wrote:

Looks like SBCL 1.4.7 changed the slots of
sb-c::compiler-error-context (in particular enclosing-source ->
%enclosing-source, source -> %source, and original-source was
removed). As a result, deferred warnings are broken. Attached is the
output of `./run-tests.sh sbcl test-deferred-warnings.script`

-Eric

Thanks for letting me know. Looks like there was a change to lazily compute some of these, and now there is an API to get their values, instead of directly poking into the structure.

I'll have a look at fixing this bug, ideally today.

If anyone knows how to identify SBCL version reliably, that would help. I see I can use sb-ext:assert-version->= but it claims to use subversion revision numbers, based on the manual, which suggests it's probably broken now. I guess I can use version-satisfies and (uiop/os:lisp-version-string) (which uses lisp-implementation-version).

Does anyone have any suggestions about testing against multiple versions of SBCL? This brings to a head a problem that has been pending for a long time -- how should I be keeping around old versions of lisp implementations so that I can check that a fix needed to handle a new release doesn't break an old one? I can try putting an extra version of SBCL into the linux box that runs the ASDF tests, but can't possibly do this for multiple different lisp implementations, nor can I handle more than a limited number of versions per implementation. Any suggestions very welcome.

Dave Cooper developed a partial solution for the multiple versions of Allegro, but only for the multiple concurrent versions. Similarly, I'm testing on only 64-bit CCL, not 32, etc.

[The irony of Stas B being the one who introduced this backward-incompatible change is not lost on me...]