Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
asdf
ilc2010
Commits
9724191c
Commit
9724191c
authored
Aug 28, 2010
by
Francois-Rene Rideau
Browse files
A rule broken by ASDF. Other tweaks.
parent
8270db5e
Changes
1
Hide whitespace changes
Inline
Side-by-side
main.tex
View file @
9724191c
...
...
@@ -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
}
a
nd limits imposed on us by backward compatibility in solving those issues
.
However, o
urs was a partial fix, and we will have to tackle
This bug
illustrates
issues in the original design of
{
\ASDF
}
a
s well as limitations in our rewrite of it
.
O
urs 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.
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment