[asdf-devel] New features in ASDF 2.27

Robert Goldman rpgoldman at sift.info
Fri Jan 25 00:50:25 UTC 2013


I am heartened to see the many fixes to long-deferred bugs, particularly
the system dependency fail.

However, this ASDF is not ready for prime time, at least for use with
ACL.  Its behavior with ACL, because of getting rid of the
WITH-COMPILATION-UNIT, is simply unacceptable.

On all our well-formed ASDF systems, compilation now spews out huge
numbers of false-positive undefined function warnings that used to be
handled acceptably by the WITH-COMPILATION-UNIT.

I really don't like the removal of W-C-U: it takes the normal ASDF
use-case of single-process compilation and loading, and deprecates
correct behavior there in order to achieve some improvements in a
non-standard case of compiling lisp files in different processes, and to
fix a problem with the less often used TEST-OP.

So far, the fix here is worse than the disease, since it fails any
number of good ACL systems.  For example, I believe every one of my
company's systems would fail its continuous integration testing using
the new ASDF, because of the spurious warnings.

At this point, I would have to advise implementations other than CCL and
SBCL to decline to adopt 2.27, or to restore the WITH-COMPILATION-UNIT
with some :AROUND methods.

I don't like to see divergence among implementations like this, so I can
think of two short-term expedients

1. push the WITH-COMPILATION-UNIT removal out onto a topic branch until
the community can ensure that all supported implementations defer the
warnings correctly, or
2. keep a single ASDF, and restore the WITH-COMPILATION-UNIT in a #-(or
sbcl ccl) block.  Add more implementations to the #- as we can support them.

The advantage of 2 is that we can continue to test the new behavior on
systems where it is implemented, and we have a single ASDF version; no
forking.

The advantage of 1 is that it better handles the situation if there are
implementations where warning throttling *cannot* be made to work
properly.  In that case, I believe it's better to have a single
behavior, even if suboptimal, instead of having a divergence in ASDF
semantics between different implementations.  Another reason we might
prefer alternative 1 is that it is robust to finding other behaviors
that require W-C-U.  I don't understand the semantics thoroughly enough
to know whether undefined entity warnings are all that we need to worry
about.

I will try to make a test that shows the bad behavior on ACL.  Then we
could see if this behavior happens on other CL implementations, and
would have a criterion for good performance.

Best,
r






More information about the asdf-devel mailing list