It's regrettable that C++ currently has an advantage over Rust in this regard...
It's regrettable that C++ currently has an advantage over Rust in this regard...
The C++ ABI of Microsoft Visual Studio is stable since practically forever, albeit with a severe restriction: the language ABI is stable, but not the C++ (or even C) standard library ABI - every Visual Studio release comes with a new incompatible msvcrNNN.dll. But you can load as many different runtime libraries into a process as you like, the big practical restriction is that you can't pass standard library objects allocated by one runtime to a different one.
The C++ ABI of GCC is stable since version 3.2, released in 2002, on x86 platforms (there were numerous fixes in later releases for other platforms). They even managed to retrofit new incompatible C++11 requirements on std::string with some preprocessor hackery and namespace mangling, without bumping the libstdc++ SONAME.
As usual, on macOS the situation isn't as good because they threw out libstdc++ for some clang reinvention of the wheel.
In summary, if you're writing a C API/ABI, source compatibility is still a major advantage, there is no two ways around it.