[asdf-devel] patch system-source-file

Robert Goldman rpgoldman at sift.info
Tue Jul 14 17:35:43 UTC 2009

james anderson wrote:
> On 2009-07-14, at 18:56 , Robert Goldman wrote:
>> james anderson wrote:
>>> hello;
>>> [...]
>> This is a good description of the general problem, but it overstates the
>> problem here.  Nobody should be setting these slots after they are set
>> (or not) in the defsystem form, so a slot-unbound error will not be
>> difficult to resolve.  However, it /might/ create a cumbersome nuisance
>> for code that wishes to process asdf components.
> my experience is that you can change "might" to "did".
>> [...]
>>> 4. if one would like to see the code at the version which constitutes  
>>> the current approach to this issue, which revision should one pull?
>> I don't have a good answer for this, sorry.
>> I think that James clearly states the issues.  I propose we just try to
>> come to consensus on something like the following:
>> 1.  We specify which of the system string initargs are actually optional.
>> then either
>> 2a.  We specify these as being of type string and specify that they take
>> "" as a default.  Supplying NIL would be a type error.  For the benefit
>> of non-type-checking lisps, we could add :after methods on
>> initialize-instance to reject non-string values.
>> 2b.  We specify that the type is (or null string) because we want to be
>> able to distinguish unsupplied from explicitly empty.
>> These both seem reasonable alternatives, as long as we state one of them
>> clearly.
>> If someone will express a clear preference that isn't shouted down, I'd
>> be happy to provide help either documenting or coding up support.
> i propose, 2b iff some operator depends on the distinction. otherwise 2a.

Here are the initargs from which we have to choose:

:licence :license :maintainer :author :long-description :description
:default-component-class :if-component-dep-fails :components :properties
:pathname :parent :do-first :in-order-to :name :version

Of these, I believe our discussion pertains primarily to

:description and :long-description

Are these all truly optional?  Personally, I wish that :version wasn't,
and/or that we enforced some standard on values supplied there, since
it's easy to put in something that will cause version-satisfies to choke.

How about we confine our attention to all of these EXCEPT :version,
which is worthy of a discussion of its own.

These are all going to be used primarily by software which simply
displays information about the systems, and all of that software (unless
there's a 'describe' method) is going to be external to ASDF proper,
which means it's hard for me to answer James' "some operator depends on
the distinction" question.


More information about the asdf-devel mailing list