[asdf-devel] MCL issue

Faré fahree at gmail.com
Fri May 20 21:12:55 UTC 2011


>: sds
> I, for one, am severely disappointed with the size of asdf.
>
To be frank, so am I. I hate it every time I add a line.

But I couldn't find any other way to make it seamlessly configurable
across 13 implementations that we support over 4 families of OSes.

Which is quite a few more than were fully supported before I started.
I'm not even sure CLISP was supported back then, by lack of long-form
define-method-combination.

> Now that you told me that Fare reimplemented pathnames, I am starting to
> understand why.
>
I conspicuously did NOT "reimplement pathnames".
But I certainly did build a lot of abstractions on top of them,
for the sake of portability and robustness. Just take a look at
subdirectories, merge-pathnames* or truenamize.

> A brief look at asdf.lisp appalled me.
>
And it appals me, too. You're welcome to do better.

> I even tried to simplify it a little bit, e.g.:
>
> diff -r 0195ae274543 modules/asdf/asdf.lisp
> --- a/modules/asdf/asdf.lisp    Fri May 20 15:45:46 2011 -0400
> +++ b/modules/asdf/asdf.lisp    Fri May 20 16:40:47 2011 -0400
> @@ -387,6 +387,8 @@ a list for each collection, in order.
>              \(foo \(first x\)\)
>              \(bar \(second x\)\)\)\)
>  Returns two values: \(A B C\) and \(1 2 3\)."
> +  #+clisp `(ext:with-collect ,collectors . ,body)
> +  #-clisp
>   (let ((vars (mapcar #'(lambda (x) (gensym (symbol-name x))) collectors))
>         (initial-values (mapcar (constantly nil) collectors)))
>     `(let ,(mapcar #'list vars initial-values)
>
> but soon gave up.
>
You add two lines. How is that a simplification? Does it provide a big
performance boost on CLISP to justify two lines of code? Or does it
fix some strange corner case? That said, if you insist that it does
matter, I will gladly take your word for it and apply that patch.

I do welcome actual simplifications to the code. So far as I know
there is no superfluous line of code in ASDF — and if you find one, I'll be
glad to remove it or refactor it away.

By all means, if you think you're able to support ASDF better than I do,
and make it work on all the implementations that it does work —
go ahead and do it! You may find, as I did, and still do to this date,
that's it easier said than done.

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Don't expect coherence from a loosely-defined group of people. Even
individuals have trouble with coherence. Argue issues. Change incentives.




More information about the asdf-devel mailing list