On 5/4/17 May 4 -11:01 AM, Alan Ruttenberg wrote:
Here is what I see a problem is: ASDF only resolves dependencies on a system by system basis. The cross-system link is that if system B depends on system A we can avoid loading A if it has already been loaded. If an identical source file happens to be in both B and A that isn't recognized, but also doesn't have consequence - the functions in it are redefined.
That's correct. If you want to build a composite system with A and B, you should create a system C that depends on both.
Note that this problem you cite for Maven really exists for ASDF anyway. If you have two lisp systems that collide with each other (e.g., package collision), then you lose with ASDF.
So I think what you have to do here is track the Maven dependencies, detect incompatible versions of a single library, and throw an error for the programmer to fix if it happens.
Note that this reminds me that ASDF currently (for Lisp) doesn't support a maximum version number, only a minimum. I keep meaning to fix that, but never get around to it.
I believe this would be doubling down on the error of specifying versions in ASDF.
And yes, it does happen, I have had systems that relied on, e.g., older versions of XMLS. For now we handled that by pinning revisions in the RCS, but that can be problematic if you get the ASDF config wrong.
Getting it wrong in what sense ?