1 2==================== 3Libc++ ABI stability 4==================== 5 6Libc++ aims to preserve stable ABI to avoid subtle bugs when code built to the old ABI 7is linked with the code build to the new ABI. At the same time, libc++ allows ABI-breaking 8improvements and bugfixes for the scenarios when ABI change is not a issue. 9 10To support both cases, libc++ allows specifying the ABI version at the 11build time. The version is defined with a cmake option 12LIBCXX_ABI_VERSION. Another option LIBCXX_ABI_UNSTABLE can be used to 13include all present ABI breaking features. These options translate 14into C++ macro definitions _LIBCPP_ABI_VERSION, _LIBCPP_ABI_UNSTABLE. 15 16Any ABI-changing feature is placed under it's own macro, _LIBCPP_ABI_XXX, which is enabled 17based on the value of _LIBCPP_ABI_VERSION. _LIBCPP_ABI_UNSTABLE, if set, enables all features at once. 18