[asdf-devel] The issue at hand

Robert P. Goldman rpgoldman at sift.info
Sat Jan 25 23:50:58 UTC 2014


Faré wrote:
>> OK, will do.  I will try to get all of the new operations written up,
>> but I don't believe I will have time until after the 31st (conference
>> deadlines, and end of contract dates mean that the ASDF manual has to
>> wait...).
>>
> Take your time. We're all impatient about it.
> 
>> I do not yet the proposal.  How can OPERATION keep the old semantics and
>> still be the root?  There are 11 direct subclasses of OPERATION now, and
>> some fan out from there (e.g., a fair sized subgraph under BUNDLE-OP).
>> How is the overriding to be managed?
>>
> I suppose the trick is as follows:
> 1- move the crucial behavior of downward-operation, sideway-operation,
>   selfward-operation, in separate defun's that are called by the
> respective defmethods.
> 2- have methods on operation that check whether the operation is
>   a subtype of any of the three above or non-propagating-operation.
>   If not — then apply the methods for all of them.
> 3- at instantiation-time, call the same detection function, and issue a WARNING.
>   In six months or a year, it will be replaced by a CERROR, then an ERROR,
>   at which point the defuns can be merged back into the respective defmethods.
> 
> This way, people are warned now already, but ASDF keeps working,
> and we don't break either all the software in quicklisp until later.
> 
> Congratulations to Anton V. for this clever suggestion.
> 
>> My
>> understanding was that the behavior of the new dependency-propagating
>> classes was strictly additive.  Is that not true?  To make this new
>> proposal work, as I understand it, we have to add *subtractive*, or
>> non-monotonic behavior inheritance.
>>
> Yes, the above is essentially emulating non-monotonic behavior inheritance,
> but it needs only rely on typep as introspection mechanism.
> 
>> Unless I'm missing something, it seems like this new proposal will be
>> much more complex than the current approach, which just involves two
>> checks, and no modifications to core ASDF code.
>>
> This proposal adds a small bit of complexity, but only local changes,
> and maximally preserves compatibility.
> 
>> I'm happy to see an approach that would provide no breakage, but I'd
>> like to see a more detailed proposal before we proceed.
>>
> *If* we have time tomorrow, I could do that live during the walkthrough —
> that could be a good exercise.

If you are satisfied that this can be done cleanly, I am satisfied.

I agree -- congratulations to Anton for a clever solution to a knotty
problem.

Best,
Robert





More information about the asdf-devel mailing list