On Wed, Nov 20, 2013 at 12:54 PM, Pascal Costanza <p...@p-cos.net> wrote: > Just to chime in in the middle: There is no known solution to the so-called > "DLL hell" problem. Yes there is. http://nixos.org/nixos/
> Libraries interact badly because of their interactions, > not because one or the other is "bad." Even with the best of intentions, a > library author cannot predict what changes will break existing clients and > what changes won't, because that author doesn't know about all possible > interactions. When APIs change, telling clients that they are now > incompatible may be a lie, because they may not depend on the specific > change. (For example, is the addition of a keyword argument an incompatible > change or not? It may, or it may not be...) > > You are basically trying to solve the halting problem for a program where > you don't know significant parts of the program. ;) > Good analogy. > There is a field of research about component-oriented programming where this > was a hot topic for quite some time, and nothing ever came out of it. The > only practical working solution was that of Microsoft COM, where you need to > change a GUID when APIs change, and since it's a black box model, that > covers a lot of ground. Common Lisp libraries are definitely not black box, > so even this solution will probably not work that well. (Changing the name > of the library or the system definition, as Vsevolod suggests, would be > similar.) > > If you want to give control to developers, you could provide a way that > depends-on specifications are list designators, with some form of > declarative way of precisely specifying which versions are compatible and > which aren't. (Then you could describe situations like, compatible with > everything up to and including 0.9.x, and everything above 1.0.0, but > excluding 1.0.0 - a situation that actually occurred when Closer to MOP was > incompatible with SBCL 1.0.0 for a brief moment in history... ;) > I didn't see any response to my proposal of letting libraries declare how far backward compatible they purport to be. —♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org A politician divides mankind into two classes: tools and enemies. — Nietzsche