Skip to content

CXX-3187 Extend ABI stability tasks to C++20 and C++23 #1294

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Dec 4, 2024

Conversation

eramongodb
Copy link
Contributor

@eramongodb eramongodb commented Dec 3, 2024

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). The abidiff-* tasks remain on ubuntu2204 (which provide Clang 12) due to lack of abidiff 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 with nm on RHEL.

Compilation output is now uploaded as ABI Compatibility Setup: old.txt and ABI 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).

@eramongodb eramongodb requested a review from kevinAlbs December 3, 2024 18:15
@eramongodb eramongodb self-assigned this Dec 3, 2024
@eramongodb
Copy link
Contributor Author

eramongodb commented Dec 3, 2024

Investigating why Clang 17 is not being selected/used as expected on RHEL 9 distros.

@eramongodb
Copy link
Contributor Author

eramongodb commented Dec 3, 2024

Excuse the force-push; the initial PR branch did not contain the intended changes.

It seems the default Clang installed on the system is Clang 12, not Clang 17 as indicated by the distro image visibility page. Explicitly qualifying with -17 fixes the issue. Latest changes verified by this patch.

@eramongodb
Copy link
Contributor Author

On further inspection, the build output log files were being overwritten by subsequent tasks being executed due to using the same remote file path across tasks. Log files are now distinct across tasks as intended by adding ${task_id} to the remote file path. The compiler version suffix is preserved for readability.

Copy link
Collaborator

@kevinAlbs kevinAlbs left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM. Thank you for the added tasks.

@eramongodb eramongodb merged commit d4089a6 into mongodb:master Dec 4, 2024
16 of 18 checks passed
@eramongodb eramongodb deleted the cxx-3187 branch December 4, 2024 16:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants