ABIVersioning.rst 849 B

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