CXX-3187 Extend ABI stability tasks to C++20 and C++23 #1294
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Resolves CXX-3187. Verified by this patch.
Extends the ABI Stability Checks matrix to include C++20 and C++23 for compilation coverage. This PR does not include extension of execution or test coverage.
Tasks were mostly migrated to the
rhel9-latest
distro to obtain Clang 17, which has the most C++23 feature coverage across compilers currently available on Evergreen (see: Compiler Support). Theabidiff-*
tasks remain onubuntu2204
(which provide Clang 12) due to lack ofabidiff
availability (could not find an appropriate package). The latest comparable GCC compiler version appears to be GCC 13.Note
There should be no issues with mixing GCC (abi-compliance-checker) and Clang (C++ Driver libraries) in these circumstances due to the consistent use of libstdc++ for ABI consistency.
Note
FWIW I do not believe there is anything in our codebase at the moment which risks forward compatibility with C++20 or C++23. Despite partial support for C++20 or C++23 by the compilers being used, I believe we are currently fully forward compatible.
Switched from
--symbols-only
to--portability
for compatibility withnm
on RHEL.Compilation output is now uploaded as
ABI Compatibility Setup: old.txt
andABI Compatibility Setup: new.txt
to help verify the build behaves as expected on success.Tasks in the task group are explicitly listed rather than matched via tags to avoid task scheduling issues (DEVPROD-13210).