Commit 9724191c authored by Francois-Rene Rideau's avatar Francois-Rene Rideau
Browse files

A rule broken by ASDF. Other tweaks.

parent 8270db5e
......@@ -900,10 +900,11 @@ the last version by Daniel Barlow, in 2004, was 38881 byte long.
On a positive note, {\CL} helped us keep things simple.
Andreas Fuchs wrote {\POIU}~\cite{QITAB},
an extension for {\ASDF} implementing parallel compilation.
He had to redefine many internals of {\ASDF} for {\POIU},
and we broke much of it when we wrote {\ASDFii}.
Because {\ASDF} was lacking appropriate hooks,
he had to redefine many internals of {\ASDF}.
These redefinitions were broken by our {\ASDFii} modifications.
One of us (\fare) became suddenly the maintainer of \emph{both} pieces of software,
so took the opportunity to provide from {\ASDF} all the pieces needed
and took the opportunity to provide from {\ASDF} all the pieces needed
for {\POIU} to work without having to redefine anything.
This required exposing a new function \lisp{component-operation-time};
making {\operate} a generic function rather than a simple function,
......@@ -971,9 +972,9 @@ was a problem with dependencies
involving composite components (modules and systems).
%% What are we compatible with and why?
%% See lp#479522
It illustrates both design issues in {\ASDF}
and limits imposed on us by backward compatibility in solving those issues.
However, ours was a partial fix, and we will have to tackle
This bug illustrates issues in the original design of {\ASDF}
as well as limitations in our rewrite of it.
Ours was a partial fix, and we will have to tackle
a full solution in the future.
% Why introduce name ``composite'' instead of just telling that systems are modules?
......@@ -986,8 +987,9 @@ and reload the system,
{\ASDFi} would fail to recompile \file{file2.lisp} or \file{file3.lisp}
the second time around.
The problem arises because composite components
are not like other, simple {\ASDF} components such as a {\clSourceFile}
The problem arises because of the way that {\ASDF} models
composite components such as {\system} or {\module},
that contain other components.
% ``Never ascribe to decisions what can be ascribed to lack thereof.''
As per the original design of {\ASDF},
{\traverse} generates a plan made of
......@@ -1022,7 +1024,16 @@ the answer would be ``no''
Trying to fix composite dependencies in {\traverse}, therefore,
opened a big can of worms.
{\ASDFi} originally contained special-purpose, \textit{ad hoc}, logic
The rule of good engineering that {\ASDF} fails to adhere to is,
\moneyquote{thou shall tailor thy datastructures to the target problem,
not pick them based on how is easy their are
in the underlying programming language.}
{\CL}, with its strong support for cons cells as lists and sets,
is certainly misleading here; however {\ASDF} gets some excuse for being
a piece of software that cannot use datastructure libraries
because it is the one responsible for loading libraries.
{\ASDFi} originally contained spe\-cial-pur\-po\-se, \textit{ad hoc}, logic
for modules to decide when their components needed to be operated on
(since {\opdonep} could not be used), and this
special-purpose logic had some bugs.
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