[asdf-devel] new asdf does not like matlisp.asd

Faré fahree at gmail.com
Sun Apr 11 16:42:22 UTC 2010


1- Would making unix-dso a subclass of component but not of module
   somehow help solve the problem?

2- I admit I have little familiarity with TRAVERSE. Looking at it
   makes me shudder. I really don't want to try understanding it enough
   to be able to modify it in ways that I can say for sure will be
   backwards compatible with all previous reasonable uses.
   It's one of the reasons I'd rather spend time on XCVB.

3- To debug with a 32-bit implementation on a 64-bit architecture,
   give the -m32 flag to gcc. Dunno exactly about ld; same flag or different
   flag might be needed. Otherwise, you can install a 32-bit chroot
   installation and run stuff inside it.

4- Is there an ILC this year? Where, when? I could talk about ASDF 2,
   but I wouldn't be able to talk competently about TRAVERSE. If some
   kind soul would co-present a paper with me, we could do the whole thing.

[ François-René ÐVB Rideau | Reflection&Cybernethics | http://fare.tunes.org ]
	        Every task involves constraint,
	      Solve the thing without complaint;
                There are magic links and chains
               Forged to loose our rigid brains.
	   Structures, strictures, though they bind,
	         Strangely liberate the mind.



On 11 April 2010 17:04, Robert Goldman <rpgoldman at sift.info> wrote:
> On 4/11/10 Apr 11 -10:28 AM, james anderson wrote:
>> good afternoon;
>>
>> reading traverse is not my idea of a good time, but when i persevere,
>> i do not arrive at the same conclusion.
>
> Here is the logic as I understand it.  I will cite line numbers.  I wish
> I knew how to do this reliably --- I can only say that these numbers
> work for me as of this writing (git pull done).
>
> Jargon:
> I think of this as a tree walk, so use the term "node" and "component"
> interchangeably.
> Plan = return value of TRAVERSE; an ordered sequences (specifically a
> list) of Planops
> Planop = a piece of a plan:  a dotted pair whose car is an operation and
> whose cdr is a component.
>
> 1.  L1400:  make sure we don't visit the same nodes in the tree > 1.  If
> we have already visited this, skip.  A pruned-op may be returned.  Check
> for circular dependencies, and mark this node (component) as in progress
> (visiting).
>
> 2.  loop at 1414: check all of the current nodes dependencies.  This
> loop side-effects onto the local variable FORCED.  FORCED is going to
> accumulate all the operations needed for this sub-plan (i.e., the part
> of the TRAVERSE plan that is generated from the current component).
>
> 3.  1421:  block that is run only for the benefit of components of type
> MODULE (which includes SYSTEMs).  Note that at the top we bind a number
> of variables, including the FORCED special, which is the only way to
> permit us to call do-one-dep here [someday, in my fantasy world,
> traverse will be rewritten to be purely functional and not side-effect
> onto FORCED everywhere.].  As a result of running the code in this
> block, we will bind the MODULE-OPS lexical variable, which tells us what
> operations need to be performed on the current module.
>
>   3.1  1428: MUST-OPERATE is bound to tell us whether the components of
> the current module must be operated on.  The check is whether there is
> *FORCING* bound around us, or if the component is not a system.  This is
> my attempt to see if the component IS a module simpliciter.  [In my
> ideal world, ASDF would be refactored so that there are three classes
> --- HAS-COMPONENTS, MODULE and SYSTEM, and MODULE isa HAS-COMPONENTS and
> SYSTEM isa HAS-COMPONENTS but SYSTEM is no longer a sub-class of
> MODULE...  Currently there is no really reliable way to tell that
> something is "just" an internal module, since the class hierarchy is
> mutable...]:
>  (and (not (typep c 'system)) forced)
> recall that FORCED was bound earlier to the set of planops that must be
> performed on this node's dependencies.
>
> This was done for backward compatibility, and because we don't have good
> tests for a system being operated on.  Space does not permit me to
> explain this here.
>
> Note that there is no check here for OPERATION-DONE-P on the module
> itself.  That test is performed downstream.
>
>  3.2  1435:  Foreach of the module's components, bind *FORCING* to
> MUST-OPERATE.  This ensures that all the modules components will be
> operated on if any of the module's dependencies have changed.  Then
> traverse each of the component's children, checking for component
> dependency failures.
>
> 4.  1456:  If we have a module as our node, then we are done here
> operating on the module's components and are now working on the module
> object proper.  So you see what I have been saying about the module
> object representing, at one and the same time, both the module as thing
> with components AND any post-operations on the module, after the
> operation has been done on its components (postorder tree traversal).
>
>   4.1 Do we need to operate on the object?  OR:
>       1456: are there upstream operations done (FORCED) or were
> operations done on this components children (if any --- MODULE-OPS)?
>       1457: are all operations forced (*FORCING*)?
>       1458: is this operation as yet not done (OPERATION-DONE-P)?  As
> you see, the OPERATION-DONE-P test on a module will be performed AFTER
> working on its children in step 3.  Note that *it must be this way* for
> backward compatibility.  This is a consequence of the double-meaning of
> MODULE.
>       1459 - 1470: A test that I do not understand and was too
> frightened of to remove or rewrite.
>       1471-1473: The op x component's DO-FIRSTs are processed.
>       1475-7:  accumulate the return values.
>       1478-9:  update the visiting logic
>
> 5.  Mark the node as visited and return the sub-plan.
>
> I think this analysis bears out my claim.  I can't pretend to respond to
> your experience with this particular system; I can't make MATLISPBUG run
> on my linux box.  Currently, if I try to do load-system on it a second
> time, it crashes my lisp hard, taking down SLIME.  I am updating SLIME
> and SBCL now, and will try again when I have time.
>
> Hope this analysis helps.  Fare, maybe it would be worth writing an
> article about ASDF and the ASDF2-ing for ILC.  This reconstruction might
> be an important part of such an article.
>
> best,
> r




More information about the asdf-devel mailing list