• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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