| ▲ | AshamedCaptain 3 hours ago | |||||||||||||||||||||||||
> Windows dlls are forward compatible in that sense. If you want to go to such level, ELF is also forward compatible in that sense. This is completely irrelevant, because what the developer is going to see is the binaries he builts in XP SP3 no longer work in XP SP2 because of a link error: the _statically linked_ runtime is going to call symbols that are not in XP SP2 DLLs (e.g. the DecodePointer debacle). > If you use the Linux kernel directly, it is forward compatible in that sense. Or not, because there will be a note in the ELF headers with the minimum kernel version required, which is going to be set to a recent version even if you do not use any newer feature. (unless you play with the toolchain) (PE has similar field too, leading to the "not a valid win32 executable" messages). > And, of course, there is no issue at all with statically linked code. I would say statically linked code is precisely the root of all these problems. In addition to bring more problems of its own. E.g. games that dynamically link with SDL can be patched to have any other SDL version, including one with bugfixes for X support, audio, etc. Games that statically link with SDL? Sorry.. > And you can circumvent it by freezing your glibc abstraction interface, so that if you need to add another function, you do so by making another library entirely. But I don't know if musl does that. Funnily, I think that is exactly the same as the solution I'm proposing for this conundrum: just (dynamically) link with the older glibc ! Voila: your binary now works with glibc from 1996 and glibc from 2026. Frankly, glibc is already the project with the best binary compatibility of the entire Linux desktop , if not the only one with a binary compatibility story at all . The kernel is _not_ better in this regard (e.g. /dev/dsp). | ||||||||||||||||||||||||||
| ▲ | marcosdumay 3 hours ago | parent [-] | |||||||||||||||||||||||||
If you use only features available on the older version, for sure, you can compile your software in Win-7 and have it run in Win-2000. Without following any special procedure. I know, I've done that. > just (dynamically) link with the older glibc! Except that the older glibc is unmaintained and very hard to get a hold of and use. If you solve that, yeah, it's the same. | ||||||||||||||||||||||||||
| ||||||||||||||||||||||||||