[asdf-devel] ASDF-USER ?

Robert Goldman rpgoldman at sift.info
Sun Jan 27 19:16:03 UTC 2013


On 1/27/13 Jan 27 -11:33 AM, Faré wrote:
> On Sun, Jan 27, 2013 at 12:13 PM, Robert Goldman <rpgoldman at sift.info> wrote:
>> On 1/26/13 Jan 26 -6:12 PM, Faré wrote:
>>> I think the whole "temporary package" thing is a failure, and we
>>> should just have
>>> an ASDF-USER package that uses ASDF.
>>>
>>> Does anyone have any objection to having .asd files be loaded in
>>> a shared ASDF-USER rather than a temporary ASDF~D package?
>>>
>>> If you want to define your own private functions in their private namespace,
>>> there's defpackage for you.
>>
>> I am sympathetic to your concerns here, but I am worried that it will
>> cause lots of breakage.
>>
>> I have always done the old-school thing and defined a new package for my
>> system definition.  This makes for a pleasing symmetry between behavior
>> where I incrementally evaluate forms, and when I load the system into an
>> image.
>>
>> *HOWEVER*, some CL pundits seem to think that making extra packages is
>> bad, and in a spirit of (to me, misguided) parsimony, strongly
>> encouraged people to rely on the creation of the temporary packages.
>>
>> I fear that this means that loading all the package definitions into a
>> single ASDF-USER package is likely to cause breakage from namespace
>> collisions.
>>
>> Also, I fear that this will be a nuisance to catch in testing, because
>> it is likely to require testing large numbers of *combinations* of
>> loaded systems to simulate behavior downstream programmers might see.
>>
>> In my customary role as backward compatibility buzz-kill, I suggest that
>> we keep the old behavior.
>>
> I know that quicklisp is not *everything*, but I did a quick survey
> and found nothing clashy:
> 
> A=( $(grep -L in-package ~/quicklisp/dists/quicklisp/software/**/*.asd) )
> fgrep '(def' $A | grep -v 'defsystem\|defpackage\|defmethod
> \(asdf:\)\?\(perform\|operation-done-p\)' | less
> 
> The most clashy thing I found was hemlock defining variables
> the name of which start with *hemlock-
> which actually seem perfectly fine to me.
> There are plenty of scary-looking definitions in optima.asd,
> but that's actually documentation in #| |#.
> 
> I say anyone who does something clashy deserves the lossage he gets,
> and so do people who use his software.
> There is already plenty of namespace management around,
> ASDF cannot substitute to using proper namespace management techniques.
> And if Common Lisp is lacking in this regard, let's fix Common Lisp,
> not add a crock to ASDF.

Good point.  I went back and checked some of the postings that said "you
don't need a package in your system definition file," and any that I
found pointed out that if you were defining new classes, etc., you
*should* put a new package in.  So I suspect we will be OK, after all,
or at least we will find that code that breaks is pretty clearly deprecated.

best,
r






More information about the asdf-devel mailing list