Re:A regression is the kernel not giving the same result wit...
by the_why_of_y on Saturday November 04, 2017 @08:20AM
(#15624686)
> C++: recompile the world when you change ABIs or when the ABI changes (My understanding is that MSVC++ changes the ABI every ~2 years? I could be wrong.)
This is only half true: every new release, the ABI of the runtime library changes. But the Visual C++ compiler ABI hasn't changed in decades.
If you design your own library ABIs so they don't pass std::foobars around, you can link C++ libraries built with VC++6 with ones built with the latest version, and the whole thing is going to work fine - the trick is that multiple versions of the runtime DLLs can coexist in the same process.
GCC/libstdc++ hasn't changed its ABI in more than a decade, since release 3.3 or 3.4; they even did incompatible changes to std::string in GCC 5 without breaking ABI:
https://developers.redhat.com/blog/2015/02/05/gcc5-and-the-c...
Re:A regression is the kernel not giving the same result wit...
by steveklabnik on Monday November 06, 2017 @05:31AM
(#15634545)
Great, thank you for the clarification.
It's a spectrum:
Rust: recompile the world when you update the compiler
C++: recompile the world when you change ABIs or when the ABI changes (My understanding is that MSVC++ changes the ABI every ~2 years? I could be wrong.)
C: never recompile the world
It's not that we don't want the benefits of a stable ABI, but it's a monumental task, and there are more important things for now.
Don't forget that you can get a stable ABI today by using the C ABI. You just lose out on the fancier features Rust has.