[asdf-devel] About asdf:*compile-file-failure-behaviour* and its value on SBCL

Chun Tian (binghe) binghe.lisp at gmail.com
Sun Mar 20 00:54:06 UTC 2011

Hi, Fare

Thanks you for your explanation ... it seems that you're suggesting a general WARN condition should never been signaled on compile-time.

Most of the compile-time warnings in my program comes from cl-yacc [1], because I'm trying to do LALR parsing for a very ambiguous language called ASN.1 [1], there're 28 Shift/Reduce, and 1 Reduce/Reduce conflicts in my LALR grammar rules and it produce correct result.  Fortunately I used a modified version of cl-yacc and directly include it as vendor code (and changed its package), so I can change all these warnings into style-warnings, to make SBCL happy.

There's another compile-time warning in my CLOS related code, something like this:

(defclass a-class ()
  ((slot :type 'a-subclass)))

(defclass a-subclass (a-class)

When compiling the first class definition, SBCL warn that the type A-SUBCLASS haven't been defined (this is true, but I defined it immediately in next form).  I think, to make SBCL happy, again, I have to reorder above two definitions, putting the definition of A-SUBCLASS before A-CLASS, and CLOS does support this, using a MOP feature called FORWARDED-REFERENCE-CLASS.

I still don't think these coding styles are wrong according ANSI Common Lisp standards, but if ASDF insist to do so, I have to modify my code.


Chun Tian (binghe)

[1] http://www.pps.jussieu.fr/~jch/software/cl-yacc/

在 2011-3-20,07:53, Faré 写道:

> On 19 March 2011 14:51, Chun Tian (binghe) <binghe.lisp at gmail.com> wrote:
>> Hi, ASDF developers
>> I think asdf:*compile-file-failure-behaviour* should never been set to :error, just :warn is good.
> Well, SBCL is known for its anal attitude towards declaring as an
> error or failure anything that could be possibly interpreted as such
> by the standard, the idea being that a program that works in SBCL
> should work anywhere. Traditionally, a warning in SBCL counts as a
> failure in compilation.
>> I don't know why SBCL here is special, but this definition caused my project (cl-net-snmp 6.0) failed to be compiled by ASDF "only" on SBCL.  Just try to put following lines in your ASDF based project and try to build it:
>> (eval-when (:compile-toplevel)
>>  (warn "xxx"))
>> you'll find how ludicrous the current setting of asdf:*compile-file-failure-behaviour* are.
> What about using alexandria:simple-style-warning ? Maybe there should
> be a short-hand alexandria:style-warn? Meh. Or if that's what you
> want, just format something to the error-output. In any case, it's a
> long tradition for SBCL to behave that way, and other library authors,
> including I, have accepted that fact. I'm sorry that the answer isn't
> completely satisfactory to you. Been there, done that.
> [ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
> You don't have to like everything about me, but if you don't love me
> the way I am, it's not me you love, only some fantasy of yours.

More information about the asdf-devel mailing list