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