Hi all,
I've been trying to implement a set of classes that can do warning
control in asdf, and have been a bit surprised by some of the design
decisions in there. Could someone please explain why some things are the
way they are?
1. A new package created each time an asdf system definition is loaded.
These packages are not flushed when the system is redefined or deleted.
Even if you throw in an in-package in the system definition a new
package is created. Why is this? If you don't want to use the cl-user
package, why not create a single asdf-systems package? By the way, a new
package is created even if we have a definition being reloaded? Why not
reuse the previously defined package?
2. If you have a specialized operation class that adds slots, and you
set values in those slots, then redefining the system does not get rid
of the slot values. The problem appears to be that asdf always tries to
reuse existing system objects when redefining a class. There is explicit
code to unset some of the slot values in parse-component-form. If you
add a subclass that defines additional slots, there is no interface for
unsetting those slots at the right time. This whole problem could be
avoided if new object instances were *always* created when definitions
were reloaded, and the necessary data were copied over from the old
definition. Is there any reason this approach has not been used? It
would also correctly address the issue of handling components that have
been removed from a redefined system definition.
3. parse-component-form is a poorly commented monolithic function, and
for no apprent reason. Makes it rather hard to read. In general, it
appears that asdf source does not document even key functions such as
perform and operate.
4. It appears that perform is only called on files, and not on higher
level objects such as systems and modules. Why is that? If there is a
property of the system that I want to define at the system level, then I
want that property to affect the components within the system.
Presently, asdf does not seem to be set up to accomodate such closure.
I've had to make some minor changes to asdf to accomodate the extensions
I'm making, I'll pass everything by the mailing list once I have them
working. (2) and (4) above are larger issues getting in the way of the
implementation of my extension. The fix for (2) isn't that hard. For (4)
you will likely have to rethink the present traverse-then-perform
approach that asdf uses.
Sunil
-------------------------------------------------------
This SF.Net email is sponsored by: IBM Linux Tutorials
Free Linux tutorial presented by Daniel Robbins, President and CEO of
GenToo technologies. Learn everything from fundamentals to system
administration.http://ads.osdn.com/?ad_id=1470&alloc_id=3638&op=click
lmpx.com only provides a reader for public news (NNTP) servers. It is not
affiliated with the servers or forums shown here and is not responsible for
the content of articles, which is written by their respective authors.