13.3.7 Many bugs have been fixed
The following issues and many others have been fixed:
- The infamous TRAVERSE function has been revamped completely
between ASDF 1 and ASDF 2, with many bugs squashed.
In particular, dependencies were not correctly propagated
across modules but now are.
It has been completely rewritten many times over
between ASDF 2.000 and ASDF 3,
with fundamental issues in the original model being fixed.
Timestamps were not propagated at all, and now are.
The internal model of how actions depend on each other
is now both consistent and complete.
As of ASDF 3.3, multiple phases of loading are well supported,
wherein correctly interpreting ‘defsystem‘ statements in some ‘.asd‘ files
itself depends on loading other systems, e.g. via ‘:defsystem-depends-on‘.
The
:version
and
the :force (system1 .. systemN)
features have been fixed.
- Performance has been notably improved for large systems
(say with thousands of components) by using
hash-tables instead of linear search,
and linear-time list accumulation instead of cubic time recursive append,
for an overall O(n) complexity vs O(n^4).
- Many features used to not be portable,
especially where pathnames were involved.
Windows support was notably quirky because of such non-portability.
- The internal test suite used to massively fail on many implementations.
While still incomplete, it now fully passes
on all implementations supported by the test suite,
though some tests are commented out on a few implementations.
- Support was lacking for some implementations.
ABCL and GCL were notably wholly broken.
ECL extensions were not integrated with ASDF release.
- The documentation was grossly out of date.