On Mon, 17 Jul 2006 at 01:08:44 -0400, Alan Ruttenberg wrote:
> Hmm. Given that correctness is better than performance, perhaps the
> compiler should punt on compiling functions with labels in them,
> warn, and leave them interpreted. I spent too much of a day tracking
> this down, and it would be a shame if others had to also....
ABCL has lots of bugs, which is only to be expected at version 0.0.9.
At this point I'd rather not disable buggy code, on the off chance that
someone who runs into a bug might end up fixing it, particularly since
I'm not doing much work on ABCL myself these days.
> If you sent me some of the other examples that fail, and give me any
> hints about what you've discovered so far, perhaps I can take a look
> at it.
The only other example I remember was in proprietary code, but it was
quite complicated and involved both inlining and recursion as well as
LABELS per se; disabling the inlining was enough to make it work
> Are there other compiler bugs I should be aware of? There were a
> couple of other funninesses when using snark(http://www.ai.sri.com/
> ~stickel/snark.html), compiled.
If you run pfdietz's random tester long enough, compiler bugs show up,
but almost all of them are in contrived generated code that you're
unlikely to encounter in a real program (even one involving generated
code). Of course those bugs should still be fixed, but there are only
so many hours in the day.
In addition, pfdietz's random tester doesn't randomly test everything;
I'm sure there are more compiler bugs in areas it doesn't cover.
I loved this line from the SNARK web page:
Note that SNARK is still largely unfinished, undocumented, and
You could say the same thing about ABCL.
> Even leaving the couple of functions that cause a hang interpreted,
> this system doesn't work correctly (gives wrong answers) when
> compiled. (I suppose this is more than a "funniness")
It took me a number of months (and this is no exaggeration at all) to
get ABCL to be able to build SBCL correctly for the first time. Not
long ago the SBCL builds started breaking, and it took me another
day or so to find and fix the two previously unnoticed ABCL bugs
that recent changes in SBCL had run into.
ABCL is still at the stage of immaturity where every big system exposes
a number of new bugs in the implementation.