Faré wrote:
On Fri, Jun 6, 2014 at 5:46 PM, Robert P. Goldman rpgoldman@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?
thanks,
r