Robert Goldman | 5 Jan 2012 03:22

Differences between lisps

I find that ACL 8.2 gets 4 failed tests on the latest iterate from darcs:

4 out of 261 total tests failed: ITERATE.TEST::CODE-MOVEMENT.ELSE,
   ITERATE.TEST::CODE-MOVEMENT.FINALLY,
   ITERATE.TEST::CODE-MOVEMENT.FINALLY-PROTECTED,
   ITERATE.TEST::BUG/WALK.2.

where SBCL seems to get only 1.  I say "seems to," since the call to
ASDF:TEST-SYSTEM does not print gracefully in SBCL, probably because of
the compiler being chatty:

1 out of 261 total tests failed: ITERATE.TEST::BUG/WALK.2.

For CODE-MOVEMENT.ELSE, I see a problem on ACL -- the function
local-binding-check does not raise an error on ACL, although it *IS*
invoked.

The bug seems to further be localized to the fact that the following
returns NIL on ACL:

(free-variables form)

looking further, this suggests that something goes wrong in the
code-walker in FREE-VARS.

Looking further, I think I have identified the divergence --- in ACL,
CL:RETURN is a special-operator, and in SBCL, it is not:

Allegro:
CL-USER> (special-operator-p 'return)
(Continue reading)

Robert Goldman | 5 Jan 2012 03:30

Re: Differences between lisps

On 1/4/12 Jan 4 -8:22 PM, Robert Goldman wrote:
> I find that ACL 8.2 gets 4 failed tests on the latest iterate from darcs:

...snip...

> Looking further, I think I have identified the divergence --- in ACL,
> CL:RETURN is a special-operator, and in SBCL, it is not:
> 
> Allegro:
> CL-USER> (special-operator-p 'return)
> #<special operator RETURN  <at>  #x1000054c32>
> 
> SBCL:
> CL-USER> (special-operator-p 'return)
> NIL
> 
> I believe the appropriate fix is to include RETURN in the first list of
> special symbols in the case statement.  This will be benign for SBCL (it
> won't visit that, since RETURN is not a special-operator), but should
> fix things for ACL.
> 
> Making that change, I see that now both ACL and SBCL have only one test
> failure.

Oh, dear.  Looking further into the hyperspec, I see that this seems to
be a case where ACL collides with the ANSI spec....

I will report this to Franz as a bug.

Best,
(Continue reading)


Gmane