On Wed, Sep 21, 2016 at 9:22 AM, Robert Goldman <rpgold...@sift.net> wrote: > Per my recent post to launchpad, I don't think dependency updating is > the fatal flaw in D-D-O. D-D-O's bad interaction with the package > system is worse. > > Specifically, D-D-O cannot be used to introduce ASDF extensions unless > those ASDF extensions live in the ASDF package. Otherwise, by the time > a DEFSYSTEM form is read, the enclosing package's imports are already > established. This means that ASDF has no protection against namespace > pollution, since extenders are practically forced to add symbols to ASDF. > > For example, we have a FIVEAM-ASDF extension that introduces a new > defsystem class that has features for using 5AM as an implementation for > the TEST-OP. But we cannot put a DEFSYSTEM-DEPENDS-ON for FIVEAM-ASDF > in a system and reference FIVEAM-ASDF:FIVEAM-TESTER-SYSTEM as the system > class, because the FIVEAM-ASDF package does not (in general) exist when > the enclosing DEFSYSTEM is read. > > I can think of three ways of handling this: > > 1. Deprecate and remove D-D-O. This seems undesirable, since D-D-O is > commonly used. > > 2. Replace the use of the lisp reader for processing DEFSYSTEM forms, > and introduce some kind of parser. This seems like an enormous amount > of work and difficult to get right. > > 3. In some way extend the keyword-processing features of DEFSYSTEM to > allow it to reference symbols that are not only in the current package > and ASDF, but also programmer-specified packages. Unfortunately, > processing of keyword symbols in DEFSYSTEM is very case-specific -- we > know particular locations where there use is permitted, and handle each > one specifically. Without a cleaner way to handle this, we are likely > to simply be backing ourselves into alternative #2. OTOH, if we *could* > do this, it would be a great solution, because it would maintain the > maximal amount of backwards-compatibility. > > This is the problem I would most like to see solved in ASDF. > (defsystem "foo-test" :defsystem-depends-on ("fiveam") :depends-on ("foo") :class "fiveam-asdf:fiveam-tester-system" :components (("some-system:its-component-class" "myfile" ...) ...) ...)
This has been working since 2.31.4. IIRC, it was Stelian who prodded me to get D-D-O working properly. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Those who speak of "post-scarcity economy" thereby illustrate the irreducible scarcity of the single most important resource, human intelligence.