[asdf-devel] :ASDF-DEPENDENCIES implemented
james anderson
james.anderson at setf.de
Tue Apr 20 16:17:42 UTC 2010
good afternoon;
On 2010-04-20, at 15:26 , Faré wrote:
> I think defsystem-depends-on fits the current interface better indeed.
> If no one complains today, I'll commit that as 1.705.
please understand this note as a complaint.
>
> [ François-René ÐVB Rideau | Reflection&Cybernethics | http://
> fare.tunes.org ]
> May your desire to be correct overcome your desire to have been
> correct
> (which you were not, anyway).
>
>
> On 20 April 2010 04:10, Juan Jose Garcia-Ripoll
> <juanjose.garciaripoll at googlemail.com> wrote:
>> On Mon, Apr 19, 2010 at 8:01 PM, Faré <fahree at gmail.com> wrote:
>>>
>>> I pushed Juanjo's patch for :ASDF-DEPENDENCIES as 1.704, except
>>> that I
>>> renamed the feature :SYSTEM-DEPENDENCIES. Maybe it should have been
>>> :SYSTEM-DEPENDS-ON. Ahem. You tell me what you think.
>>
>> There is obviously a naming problem.
>>
>> :system-dependencies looks like the dependencies are equivalent to
>> :depends-on
>> :asdf-dependencies is ugly and does not give much information
>>
>> I could suggest,
>>
>> :meta-dependencies which is ugly, but may ring a bell (AMOP)
>> :defsystem-depends-on which is more like a sentence (current spirit)
that there is such difficulty to select a stable term indicates that
the form of the expression is wrong.
the mechanism[1] which hard-wires parameter segregation in the
defsystem macro is a tell-tale.
the implementation note[2] did not offer any reasons for the change,
but it is possible to infer some functional requirements from earlier
messages[3,4]:
it should be possible to interpret a system definition without
performing arbitrary computation
the interpretation includes constructing and/or interrogating
the intra- and inter-system dependency graph
it includes identifying designated files
it should be possible to extend asdf operations on system, module,
and file model components declaratively, in a manner such that the
declaration still yield a valid definition in the absence of any
extension
this includes to specify additional initargs in the specification
this includes to specify classes which are not defined in the
asdf core.
the asdf defsystem protocol fails these requirements in several ways:
the declaration syntax is a "single level" expression - (name .
properties), which permits attributes with respect to the application
source components - file, packages, external libraries only, while
any extension specifications are intended with respect to the system
definition itself, eg.
- the system, module, and file component classes;
- permissible arguments
the instantiation protocol provides limited support for non-core
class designators and requires that
- all packages must exist before the declaration is read,
- all classes must be defined before the declarations is interpreted.
note that all of these issues apply to the model itself, not to the
modeled application. in which case, the pertinent declaration forms
should be distinct from those which apply to the system components.
there are at least two ways to accomplish the syntactic machinations.
one would be to follow the standard source patterns and standardize
an independent expression - either in the same file or elsewhere. in
the sense that the requirement is on the same order as a in/use-
package, it should stand alone. a second form would be to elaborate
the system name by attaching the annotations to it. in this second
case, one could also consider formailzinf the protocol in an
operator, eg ensure-system, with an interface which captured the
three aspects - identity, implementation, and constituency.
there are several ways to support the late-binding for the system/
module/implementation classes. the existing asdf implementation
already delays the process somewhat in the way it resolved classes by
permitting the use of keywords. one can conceive of a protocol which
relied on the same search process as applies to systems to be applied
to the classes themselves during system construction. this would,
however. mean that the current suggested practice of interpreting
system declarations in a null package would be replaced with one in
which the package was significant.
some such thing would be much preferred to editing the declaration
argument list and implementing the protocol as a progn. these are
just initial thoughts as to how to approach the problem. they should
be elaborated before one commits to a solution.
---
[1] : http://tinyurl.com/y7q3ca4
[2] : http://common-lisp.net/pipermail/asdf-devel/2010-April/001374.html
[3] : http://common-lisp.net/pipermail/asdf-devel/2010-March/001099.html
[4] : http://groups.google.com/group/comp.lang.lisp/msg/f99a69797eda1caf
More information about the asdf-devel
mailing list