C++ adheres to Itanium C++ ABI [1] which in turn adheres to SystemV ABI [2].
> to the degree that even C++ compilers struggle to maintain compatibility between themselves.
"Struggle" is to follow the Itanium C++ ABI spec.
> For a language to work with C++, its compiler basically needs to contain a C++ compiler as well (as Carbon does). Moreover, simply being "compatible with C++17" is only the very first step to practical usage, e.g. consider how much work the Clang developers put into reverse engineering GCCisms.
I think you're conflating different terms. Carbon and other similar C++-like frontends are essentially transpilers from C++-like grammar to C++.
Being "compatible" requires no reverse engineering but as I said above it's just a matter of following the C++ ABI spec (for interop between C++ compilers) and following the SystemV ABI spec (for interop between fundamentally different languages).
[1] https://itanium-cxx-abi.github.io/cxx-abi/abi.html
[2] https://raw.githubusercontent.com/wiki/hjl-tools/x86-psABI/x...