* Add some comments on TRAVERSE-ACTION; expand those on SOURCE-FILE-TYPE.
* Remove a few unnecessary input-files or output-files methods
* Remove (declare (ignorable ...)) for specialized arguments. Specialize a few arguments to T.
* Remove most when-upgrading methods, since we drop data on old incompatible ASDFs.

* load-op needn't be sideway, its sideway dependencies are already provided by prepare-op
* compile-op should use compile-op (default) not load-op as its downward-operation.
* no need for an input-files method for prepare-op, nil is the global default.
* Some documentation for compute-action-stamp.
* Don't skip upgrade from 1.x on Allegro anymore, since we now correctly punt.
* Instead of asdf/package:define-package, use the canonical name uiop/package:define-package

* it handles INPUT and ERROR-OUTPUT, not just OUTPUT.
* it accepts PATHNAMEs as I/O designators
* it works on ECL under SLIME (fixes lp#1232225)
* SLIGHT API CHANGE!
At the suggestion of stassats, we're always returning an exit code,
and in a predictable return value position.
However, both for backward compatibility and usability,
the OUTPUT slurping results remain the primary return value,
followed by the ERROR-OUTPUT slurping results, followed by the exit code.
So far, no one was using multiple values in SLURP-INPUT-STREAM methods,
so no one will regret that, except people who might have somehow expected
the old weird behavior of a return code when OUTPUT is NIL or :INTERACTIVE.
* As another API tweak and improvement, keyword options are now specified
separately for each of your I/O designators, by putting them your designator
in a list. A list also distinguishes a string as input from a namestring
to designate a pathname, i.e. :input '("bar") is the string literal,
whereas :input "bar" is the file named bar.
Several fixes and extensions to stream support.
Only tested so far on Linux x64 with
ccl clisp sbcl ecl ecl_bytecodes cmucl abcl allegro allegromodern xcl

Rename sibling-operation sideway-operation,
sibling-dependencies sideway-dependencies.
No one in quicklisp was using the old name.
Introduce selfward-operation for the common pattern.
Have a prepare-fasl-op to gracefully propagate fasl-op.
Reset component-depends-on when upgrading.
Refactor concatenate-source-op in a likewise fashion.

1- To make life easier on Xach, stop requiring asdf.lisp to be loaded as source
before it's compiled. Instead, wrap each and every single form in an eval-when,
most of the time via the with-upgradability macro that also transforms
defun into defun* and defgeneric into defgeneric*.
Causes massive reindentation :-(
2- Have a proper :version for fallback systems.
Will make systems that check the version happier.
3- protect a condition with #+sb-eval. Fixes lp#1116408.
4- Protect warnings-file methods with dynamic when *warnings-file-type*
rather than static #+.

1- To make life easier on Xach, stop requiring asdf.lisp to be loaded as source
before it's compiled. Instead, wrap each and every single form in an eval-when,
most of the time via the with-upgradability macro that also transforms
defun into defun* and defgeneric into defgeneric*.
Causes massive reindentation :-(
2- Have a proper :version for fallback systems.
Will make systems that check the version happier.
3- protect a condition with #+sb-eval. Fixes lp#1116408.
4- Protect warnings-file methods with dynamic when *warnings-file-type*
rather than static #+.

Had to refactor the asdf-pathname-test by decomposing it into small bits
before I could understand what was going on.
Some more robustness in find-system.
Also, no build-report output-file when no *warnings-file-type*,
and ABL support for build-report.
Deprecate *asdf-verbose*.
Have *verbose-out* be NIL (which is testable) rather than
(make-broadcast-stream), which isn't quite, to signal no verbosity.
That's both more useful while remaining backward-compatible.

Optimize probe-file* in the case we do not care for truename.
Have truenamize iterate from pathname up to root rather than the other way,
to minimize the number of calls to truename.
Refactor pathname absolutization.
Shuffle functions around os, pathname, stream.
Shuffle functions around common-lisp, utility.
Remove root-pathname and sane-physical-pathname.

Introduce some backward incompatibility with features unused in quicklisp:
* Don't create a temporary package every time you load a .asd;
instead, load everything from same package ASDF-USER,
that :use's asdf/common-lisp asdf/package asdf/interface
That's the Common Lisp way, what with COMMON-LISP-USER.
If you want a private package, use DEFPACKAGE or DEFINE-PACKAGE.
* operation-description is renamed action-description.
No one was using it in quicklisp, and no one was specializing it
except cl-protobufs, which I'll fix.
* component-properties and component-property are gone.
If you want a new property, create your own subclass of component.
Also, have a load-asd function with name in keyword arguments,
rather than load-sysdef function that requires the name.

A better asdf.asd.
Refactor the preloaded system mechanism, use it for cl-launch 3.21.2.
Rename bundle-pathname to build-pathname, move it from bundle-system to system.
Rename the gcl<2.7 feature gcl2.6. Die on gcl2.5 and earlier.
Don't even try to compile-file asdf using gcl 2.6, just load the .lisp.
Rename asdf/compatibility to asdf/common-lisp, exporting only CL symbols.
Fix define-package to correctly handle exporting of NIL.
Also, make it work with Genera, with #'(lambda instead of (lambda,
and using lisp:loop (via a macro loop*) when destructuring is required.
Document more 2.27 changes in changelog.
If there is no :pathname and no load-pathname,
do NOT have a system pathname take defaults from *default-pathname-defaults*,
but make it NIL.

Rename RUN-PROGRAM/ to RUN-PROGRAM.
Can't export it from ASDF because it causes a clash in SB-GROVEL.
Rename SUB-OBJECT and :PATH to ACCESS-AT and :AT.
Get rid of TRANSLATE-OUTPUT-P.
Instead, check whether the component's BUILD-OPERATION
is the same as the current operation.

* Pathname support has been cleaned up, yet again,
extending and renaming COERCE-PATHNAME into PARSE-UNIX-NAMESTRING,
also ENSURE-PATHNAME, many docstrings, and plenty of small enhancements.
* Bundles were refactored to take advantage of the new, more sensible,
component-depends-on semantics.
* Image support was cleaned up again, and program-op was implemented
to produce a standalone executable on supported platforms;
a working hello-world-example is included amongst tests.
* The *compile-file-function* indirection was removed, with the
ECL and MKCL object file support
being folded into compile-file* instead.
* systems now can have NIL as component-pathname,
instead of providing a non-sensible bogus pathname
when no sensible pathname was determined.
Most of our pathname functions have sensible default behavior
when provided NIL instead of a pathname as an argument.

Package cleanup: every file in asdf itself now :use's asdf/driver asdf/upgrade.
Test script fix:
Allegro, like ECL *really* hates that we close *standard-input*,
so stop trying at all.
Tweak some utilities and debug utilities.

Package tweaks to make CLISP complain less.
run-program/ and run-shell-command fixes and test updates.
wildening fix to issue found by CLISP.
! is used by EXT on CLISP, so use !p for defparameter.
More pathname madness for allegro.
Better upgrade.

Make default-directory a root pathname, remove it from source-registry.
Have it use lisp-implementation-directory.
Remove any attempt to use the "current directory".
Users who want that can still try to
(pushnew '*default-pathname-defaults* asdf:*central-registry*)
Rename tmp/ to build/ and move asdf.lisp there. Update asdf.asd.
Rename implementation.lisp to compatibility.lisp.
Move *asdf-verbose* and asdf-message to upgrade.lisp