On Thu, Nov 21, 2013 at 3:56 PM, Anton Vodonosov avodonosov@yandex.ru wrote:
Fare, I do not understand how you think about versioning.
Why do you say semantic versioning is for binary libraries?
Because that's what it was designed for: binary releases of C libraries, such as /usr/lib/libmagic.1.0.0
The version string identifies the version of the API, not the version of the source code. It is for use by the compiler, but by the linker. By the time you link compiled C code, there can be no adaptation of code API, it's all hardwired. Therefore, you need strict binary compatibility, and that's what the linker version system tries to enforce.
When you compile, you can detect API discrepancy, etc. In the C world, you do that with autoconf, #ifdef, etc. A same piece of source code will happily compile against a wide range of versions of the C library, and usually doesn't check version numbers, only the availability of given functions and CPP macros. Most of my C programs can compile unmodified against linux libc4, libc5, libc6 and whichever BSD libc, etc. Once compiled, though, the code can only link against an ABI-compatible version of its dependencies.
The situation with CL is much more like the situation with C source code: you load the code as either source or precompiled fasls, then you introspect for functions and macros if needed, and compile your own code. At no point is there distribution of precompiled provider libraries that you load together precompiled consumer libraries that were compiled with maybe different versions of the provider libraries. Therefore, we don't care at all about linker versions.
I even suppose you mean something different than me, Robert and others. Because semantic versioning as described at http://semver.org/ focuses on distinction between API compatible changes in libraries, and changes which break API.
This framework just isn't meaningful in the context of Lisp code, or of any source code based code release system. And even in the context of precompiled code release system, it is primitive and stupid as compared to the one and only real solution, which is NixOS.
—♯ƒ • François-René ÐVB Rideau •Reflection&Cybernethics• http://fare.tunes.org Pacifism is a shifty doctrine under which a man accepts the benefits of the social group without being willing to pay — and claims a halo for his dishonesty. — Robert Heinlein