There are several places where ASDF relies on *DEFAULT-PATHNAME-DEFAULTS* to provide a default path. The value of this variable is "An implementation-dependent pathname, typically in the working directory that was current when Common Lisp was started up." [ http://www.lispworks.com/documentation/HyperSpec/Body/v_defaul.htm ] I think it would be better to define a variable, like asdf:*pathname-defaults*, asdf:*registry-pathname-defaults, etc., that is explicitly set using feature expressions. The biggest argument for not making this change is that some systems may rely on the value of *DEFAULT-PATHNAME-DEFAULTS*. I don't think it would be too difficult to correct those systems, but admit that it might not be worth the effort.

My motivation for making this change was prompted by the function default-source-registry. It creates a :directory entry in the source registry that is constructed from the TRUENAME of the value returned by *DEFAULT-PATHNAME-DEFAULTS*. The first point is that the value *DEFAULT-PATHNAME-DEFAULTS* is implementation dependent. For the cases I tested using CCL 1.6 and LispWorks 6.0.1 on Windows 7, the value is the empty path #P"". The second point is that the pathname returned by TRUENAME when it is given the empty path is implementation dependent. In the case of CCL, (TRUENAME #P"") returns the working directory that was current when Common Lisp was executed. In the case of LispWorks, (TRUENAME #P"") returns #P"C:/Windows/system32/". This may be the working directory that was current when LispWorks was started, but it is clearly not a desirable place for ASDF systems. In either case, the result is a :directory entry in the source registry that is not well defined. I think it is better to have the default pathname well defined.

Thank you,

~ Tom
----------------------------------------------------------------
Thomas M. Hermann
Odonata Research LLC
http://www.odonata-research.com/
http://www.linkedin.com/in/thomasmhermann