On 2/16/16 Feb 16 -10:12 AM, Eric Timmons wrote:
On Mon, Feb 15, 2016 at 3:34 PM, Robert Goldman rpgoldman@sift.net wrote:
Sorry, I'm not trying to be difficult, but that solution is unacceptable to me. From my POV as maintainer, it seems like the worst of all worlds. We would be introducing yet more moving parts -- a new package, ASDF-EXTENSIONS, that we would have to keep track of -- without solving the problem of name collisions. This seems strictly worse than the status quo.
If someone wants to *fix* the double-parsing solution, that's fine. But I'm not going to keep around the broken double-parsing solution.
Would there be anything wrong with saying everyone should use strings to name symbols from ASDF extensions? Component types and :class already seem to support this. A quick glance through the code makes me think :in-order-to and inline methods would be fairly easy to modify to support it as well. I'd be happy to send in a patch for it.
It seems this would solve the issue with namespace clashes and get rid of the need for load-systems before the defsystem. There's still a lot of work if someone wants a completely declarative version of defsystem, but at least it's a step in that direction.
I don't see that strings make an obvious improvement over the way we use keywords. Here's the situation:
Keywords are interpreted as follows: i. names in current package (this is how we get in extensions, if we have imported the extension package into the current package) ii. names in ASDF (this is how we get in extensions if we have done the Bad Thing and imported our extension names there).
I would like to avoid adding further complications.
Note that strings would make processing the operation names more complicated than they are now. If you want to reference an extension operator, and you import that extension into the current package, then everything will work fine. There's no need to add anything -- unless you want to keep the current DEFSYSTEM-DEPENDS-ON. If you do, then complications ensue.
What I am looking for is a way to leave as much as possible of the work to Common Lisp, and as little as possible to additional code in ASDF.
That's why I want to have people use ASDF extensions the way they would use any other library: - Load it. - Import the symbols into the current package (either through selective import or use-package) - parse as normal.
I appreciate your offer, but I would prefer not to take it because:
1. It adds complexity, instead of removing it 2. It still doesn't handle the namespace collision problem, because you would still need some magic to decide where to look for the referents of the strings.
loading the required extension systems "by hand" makes all these complications -- and the namespace problems -- go away, by letting Common Lisp do its normal Common Lisp thing.
Best, r