Impact on modifying the current planning code (was Re: Plans for ASDF 3.3)
rpgoldman at sift.net
Thu May 4 17:32:43 UTC 2017
On 5/4/17 May 4 -11:41 AM, Stelian Ionescu wrote:
>> 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.
No, I comprehensively disagree. If you have a stable system that people
are using, and one of your libraries changes incompatibly, until you
have the time to update to the new API, you should be able to
declaratively specify that the new API will break your system, so that
users don't get incomprehensible errors.
In a perfect world, all systems would be updated to the latest versions
of their dependencies.
This is not a perfect world.
>> 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 ?
If you work on multiple projects, so have multiple different ASDF
configurations, and one leaks into another. I had this with a novice
user who was told to put in a shell config file, then forgot, and didn't
understand why they got the wrong libraries.
More information about the asdf-devel