Commit 27b9196c authored by Robert P. Goldman's avatar Robert P. Goldman
Browse files

Better explanation of changes to TRAVERSE.

parent 490d9f72
......@@ -1313,7 +1313,7 @@ or for test files only loaded when doing a \lisp{test-op}, not a simple \lisp{lo
Conditional system dependencies could also be added,
such as test libraries, or support systems.
Currently, implementation-specific changes are typically implemented
with \lisp{\#+} reader-conditions that are invisible to {\ASDF},
with ``\lisp{\#+}'' reader-conditions that are invisible to {\ASDF},
and test files are typically handled by defining a separate test system.
%Fixing composite component dependencies
......@@ -1324,13 +1324,27 @@ and the somewhat unsatisfactory partial solution we came up with.
Further fixing this problem would involve addressing the semantic problems
of operations on composite components.
% \ftor{I don't get it}
Currently, it is possible for a system definer to define a \perform{} method on
a composite component (a module or system), to perform some additional,
``synergistic'' operations, confident that this method will be run only after
all of the sub-components have been processed.
For example, one might have a \perform{} method on a module that would build a
hash-table by iterating over the exported symbols of a package created and
populated by the module's sub-components.
It follows from this that the \emph{meaning} of {\perform}ing a \lisp{load-op} on a
\module{} is ``perform what needs to be done for \lisp{load-op} \emph{over and
above} the operations on my components.''
In turn, it follows from \emph{that} that the semantics of \opdonep{},
\lisp{input-files}, \lisp{output-files}, etc. on composite components have
non-obvious semantics.
One way of cutting this knot might be to add a new sort of operation
that would represent operations on the composite as a whole,
rather than the \emph{synergistic} operations as in the current {\ASDF}.
This would permit backwards compatibility, but it would do so
at the cost of introducing a new operation, and
requiring system definers to understand the semantic oddity.
An alternative, possibly for {\ASDFiii} would be
An alternative, possibly for {\ASDFiii}, would be
to simply abandon backwards compatibility in this regard
(we do not know how many systems rely on it), and
redefining the semantics of operations on composites to have the more intuitive meaning.
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment