[asdf-devel] MCL issue

Faré fahree at gmail.com
Sun May 22 22:17:03 UTC 2011


> The setup is not that hard. Here is what I have in my .sbclrc
>
> (setf (logical-pathname-translations "costanza")
>      `(("**;*.fasl.*" ,(format nil "/Users/costanza/.cache/common-lisp/~A ~A/**/*.fasl"
>                               (lisp-implementation-type)
>                               (lisp-implementation-version)))
>        ("**;*.*.*" "/Users/costanza/**/*.*")))
>
> This is all that is necessary, and it looks pretty much the same for all CL implementations. This can probably very easily be abstracted to make it even easier to set up.
>
But ASDF can't require each and every user to learn about
logical pathnames and how to set them up in their specific implementation,
each and every system writer to adhere to naming limitations of
"logical pathnames", etc. That would raise the bar to adoption, not lower it.

> I don't have anything against the support for Unix-style pathnames,
> but I don't think that ASDF is the right place to define them.
>
We needed *some* syntax for relative pathnames, to allow things like
   (:module "baz/quux" :components ((:file "foo/bar-V1.200")))
And considering their limitations, logical pathnames didn't cut it.

> Either they are useful for people who only care for Unix-like environments,
>
No they are NOT. Systems defined with the above syntax will compile
just fine on RMCL or Genera, not to talk about Windows-based implementations
or implementations will URL pathnames (such as SCL or ABCL).
Wherever ASDF uses this "Unix-like" syntax,
it is translated into appropriate calls to make-pathname,
ASDF does NOT rely on parse-namestring being Unix-like.

> In my opinion, this speaks for separating them out of ASDF (and ASDF could take advantage of them in case it detects they are present).
>
Please explain what you want to separate from ASDF, and how you propose
users of ASDF to portably specify relative pathnames.

In the bad old days of ASDF 1, I've done my lot of
	(:module "foo-bar" :pathname
	#.(merge-pathnames (make-pathname :directory '(:relative "foo" "bar")
:defaults *some-directory* #| required for the :host and :device slots
|#) *some-directory*) ...)

NO, THANKS! Now it's just (:module "foo/bar" ...)

> I know this is all difficult to set up and requires a lot of time and energy, so I also understand why you may not want to go the extra mile to work on such a separation.
>
Since you seem to be the only one here with a clue what you mean,
why don't you come with a proposal and/or a patch?

—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org
Slogans rarely convince the unconvinced. However, they do rally the troops
already on your side. — John McCarthy




More information about the asdf-devel mailing list