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...]