When I try to reproduce compilation of Ilya's system (renaming it undef-var, to prevent any clash) using sbcl-1.2.3.62-989a1d6-linux-x64, it "works" exactly as expected:
1- if deferred warnings are disabled (the default), then the compilation succeeds, and I get an undefined variable warning at the end of the build but that doesn't cause a build failure, because operate's with-compilation-unit doesn't catch these warnings (and can't replay those from previous sessions, anyway).
2- if deferred warnings are enabled via (uiop:enable-deferred-warnings), then the compilation fails while perform'ing a compile-op on the system, because it replays the undefined-warnings and checks that the variable still doesn't exist afterwards.
It could be argued that undefined-variable warnings, unlike undefined-function warnings, should not be deferrable, and that it's always a warning to use a special variable that wasn't declared as such. But that's not what SBCL does.
I can't explain why you have a different result, unless your setup somehow configures some conditions as uninteresting.
On the other hand, differences between compilers easily explain variations between condition reported by ASDF, since they depend both on what conditions the compiler reports, that are not portable, and on the *compile-file-warnings-behaviour* and *compile-file-failure-behaviour* values, that are also unportable. Note that unless you :force t, non-fatal warnings can disappear the second time around.
NB: Back when I first pre-released ASDF3, I wanted to enable deferred-warnings by default, but this turned out to be a community-wide coordination nightmare, and I had to bail out. If someone wants to make it happen, he'll have to make sure that it doesn't break quicklisp and then still have to convince the community and the ASDF maintainer that the change is worth it and that enough publicity is made that random users don't get badly surprised.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org The meta-Turing test counts a thing as intelligent if it seeks to apply Turing tests to objects of its own creation. — Lew Mammel, Jr.
On Wed, Oct 29, 2014 at 6:27 PM, Ilya Perminov iperminov@dwavesys.com wrote:
"Robert P. Goldman" rpgoldman@sift.info writes:
I cannot replicate this, but this may be a new behavior introduced by recent changes to SBCL, and I'm not on the latest release yet.
Very strange. I can reproduce the problem with all the SBCL versions I have: 1.1.4, 1.1.18, 1.2.4. SBCL 1.2.4 includes the latest version of ASDF. Do you see any difference in behavior between deferred and normal warnings, i.e. (defun foo () (+ a b)) vs (defun foo () (foo 3))?
Asdf-devel mailing list Asdf-devel@common-lisp.net http://mailman.common-lisp.net/cgi-bin/mailman/listinfo/asdf-devel