On 2021/02/17 09:34, Jan Engelhardt wrote:
On Wednesday 2021-02-17 16:19, L A Walsh wrote:
Windows gets around it by having multiple so's -- installing the 'so' that each program compiled with.
Which is a problematic approach too, because
(a) even functions that are unchanged between two versions now occupy extra disk space.
Back when disks were sized in MB, I was more concerned about that. However it doesn't seem to be an issue on today's disks.
(b) when a program loads two or more versions, possibly indirectly (and thus can't control it), the libraries compete on who gets to provide what symbol.
Why would 1 program load two or more versions? It only binds with 1.
And then things can crash because oh the library with the slightly different ABI won the dlopen competition.
--- The program binds with the lib it was built against in a similar way as binding with a static lib, but if that library is already installed, on a given machine, it can be shared with other programs that use the same version. Ultimately MS uses GUID's for describing uniq libraries. I've never heard of a program binding to 2 different libraries, but that seems like some sort of quantum binding where something can be 2 things at once. But once the program binds, it decays into 1 fixed state, no?
That said, the repositories ship multiple SOs when the dependency tree needs it.
Satisfying dependencies within 1 daily TW release is 1 thing, but I'm talking about satisfying dependencies for all programs the user has built or installed during the life of the OS's installation on the machine. I shouldn't have to wipe my machine's OS during it's lifetime unless there is a problem, but given that I build my own packages and rebuild my own versions of some from included sources, that means there are dependencies on my machine for some library versions that wouldn't be listed in a repository's manifest. I would expect that the libraries I build with aren't going to suddenly become unavailable for programs I've built myself. Not being able to build and install your own SW makes a personal computer a bit less useful, especially where open source is involved.