Originally posted by Weasel
View Post
This here has been running for over a decade tracking the stability of the Linux userspace ABI. Just like the wine test project. When you compare compare the collected data Linux user space is more stable with less small differences in behaviour.
This is also shown with flatpak where you can force applications to run with a different runtime to what they were made with an as long as the runtime is newer over 99% of the time it works without issue as long as a particular handful of .so files are not in the mix. Yes there is a white paper out there were a person test this. They went in with the mistake idea they would prove Linux was totally faulty and I give them credit for being truthful.
Now this changes the question. If Linus userspace is technically more ABI stable than Windows why is it worse for application developers?
1) Segregated Dynamic Linking is default under windows. Under Linux its there but developers have to go out of their way to have it by creating wrapper libraries. Yes glibc provide dlmopen that is core functionality to-do this.
2) Lack of a SXS system to allow handful of .so files to have multi versions.
ABI stability is high on Linux. The toolkit on Linux to handle the cases when its not stable is very poor. Windows ABI is not as stable that kind of surprise to lot but it has great tools to handle the cases when its not as long as people follow the build instructions.
Yes there is even tooling built into the Microsoft MSVC C++ runtimes this is why if you application is built with newer version of C++ runtime it has less dealing with libraries using MSVC older but that does not hold for the reverse.
Its really annoying when from the data you can see how close Linux user space ABI is to developer friendly one yet its not one. Its over 90% there. Its the key 10% that is missing causing 90% of the problem. Yes that key 10% is the little bit of toolkiting to handle the cases of incompatibility well.
Comment