[Asdf-devel] :AROUND methods

Robert P. Goldman rpgoldman at sift.info
Sat Jun 7 20:02:38 UTC 2014

Faré wrote:
> On Fri, Jun 6, 2014 at 5:46 PM, Robert P. Goldman <rpgoldman at sift.info> wrote:
>> Trying to identify what's breaking my system in the syntax-case branch,
>> I found a bunch of around methods in ASDF.
>> IIRC once upon a time we had removed all the :AROUND methods on exported
>> generic functions, on the grounds that they could unpredictably interact
>> with programmers' extensions.
>> I think we experimented with using a bespoke method combination method
>> to allow ourselves to have our own around methods and "arounder" methods
>> for programmers.
>> Even more vaguely, I think I remember that the method-combination
>> extension didn't work reliably on all implementations, so it was
>> stripped out.  But I thought when that happened, we tried to excise the
>> use of method combination in ASDF.
>> Am I hallucinating this?
>> I'd be grateful to anyone whose memory of this stuff is better.
> At some point during ASDF1 days (aa52ad2 from 2008-09-09 by csr21), a
> new asdf:around method combination was introduced so that ASDF's own
> :around methods would override any user-provided :around method, all
> the while allowing such user-provided :around method. This was removed
> in the lead up to ASDF2 (826b12b0 aka 1.636 from 2010-03-15 by me),
> for better portability to implementations that didn't support the
> "long" method combination format (I believe CLISP and ABCL at the
> time, though they added them since, possibly others).
> So we *are* using the regular :around method combination, but in one
> case, I've split a gf in two: perform became perform and
> perform-with-restarts.

I was wondering about the :AROUND methods for OUTPUT-FILES and
INPUT-FILES, which are exported and which we invite programmers to
provide methods for.

I don't think this is necessarily a big deal: we explain pretty
carefully the contract for these functions (I need to check on the
discussion in the manual).  But we *could* add a wrapper function around
OUTPUT-FILES (resp. INPUT-FILES) and put the :AROUND logic in that, and
have ASDF internally call the wrapper function instead of OUTPUT-FILES
(resp. INPUT-FILES).

Would this be a worthwhile clean-up?



More information about the asdf-devel mailing list