Required prerequisites
Problem description
Based on the extensive discussion in conda-forge plus offline discussion with @isuruf, we think there may be a better approach to ABI compatibility with respect to compilers and c++ runtimes.
Currently, pybind11 uses a combination of various things. The one of interest here is the __GXX_ABI_VERSION. This appears to be too strict, especially for forward-compatible libraries commonly in use.
The suggestion is to replace __GXX_ABI_VERSION with
__GLIBCXX_USE_CXX11_ABI
__GLIBCXX_USE_DEPRECATED
__SEH__ (only in clang I think)
__SJLJ_EXCEPTIONS__
These capture the fine-grained, core ABI changes without being overly prescriptive. The last two are related to exception handling. There may be more macros to use to capture dwarf2 exceptions explicitly.
Thoughts @henryiii @isuruf?
Reproducible example code
No response
Required prerequisites
Problem description
Based on the extensive discussion in conda-forge plus offline discussion with @isuruf, we think there may be a better approach to ABI compatibility with respect to compilers and c++ runtimes.
Currently, pybind11 uses a combination of various things. The one of interest here is the
__GXX_ABI_VERSION. This appears to be too strict, especially for forward-compatible libraries commonly in use.The suggestion is to replace
__GXX_ABI_VERSIONwith__GLIBCXX_USE_CXX11_ABI__GLIBCXX_USE_DEPRECATED__SEH__(only in clang I think)__SJLJ_EXCEPTIONS__These capture the fine-grained, core ABI changes without being overly prescriptive. The last two are related to exception handling. There may be more macros to use to capture dwarf2 exceptions explicitly.
Thoughts @henryiii @isuruf?
Reproducible example code
No response