Skip to content

[libc++] Updates the compilers used post LLVM-20 branching. #126564

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
Feb 18, 2025
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 16 additions & 12 deletions .github/workflows/libcxx-build-and-test.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -37,7 +37,7 @@ jobs:
stage1:
if: github.repository_owner == 'llvm'
runs-on: libcxx-self-hosted-linux
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
continue-on-error: false
strategy:
fail-fast: false
Expand All @@ -48,8 +48,8 @@ jobs:
'generic-cxx26',
'generic-modules'
]
cc: [ 'clang-20' ]
cxx: [ 'clang++-20' ]
cc: [ 'clang-21' ]
cxx: [ 'clang++-21' ]
include:
- config: 'generic-gcc'
cc: 'gcc-14'
Expand All @@ -75,7 +75,7 @@ jobs:
stage2:
if: github.repository_owner == 'llvm'
runs-on: libcxx-self-hosted-linux
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
needs: [ stage1 ]
continue-on-error: false
strategy:
Expand All @@ -88,18 +88,22 @@ jobs:
'generic-cxx20',
'generic-cxx23'
]
cc: [ 'clang-20' ]
cxx: [ 'clang++-20' ]
cc: [ 'clang-21' ]
cxx: [ 'clang++-21' ]
include:
- config: 'generic-gcc-cxx11'
cc: 'gcc-14'
cxx: 'g++-14'
- config: 'generic-cxx23'
cc: 'clang-18'
cxx: 'clang++-18'
- config: 'generic-cxx26'
cc: 'clang-20'
cxx: 'clang++-20'
- config: 'generic-cxx26'
cc: 'clang-19'
cxx: 'clang++-19'
# Release transition
- config: 'generic-cxx23'
cc: 'clang-18'
cxx: 'clang++-18'
Comment on lines +103 to +106
Copy link
Contributor

Choose a reason for hiding this comment

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

Do we really need this? I don't think there is much code that requires clang-18-specific workarounds currently and it's really not clear to me when we should drop it otherwise.

Copy link
Member Author

Choose a reason for hiding this comment

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

Yes we need this. At the moment patches get actively backported to the release branch. Testing clang-18 enures that backporting is easy to do. Once LLVM 20.1.0 is released we can drop clang-18. (We've been doing this is the past too.)

Copy link
Member

Choose a reason for hiding this comment

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

I agree with @mordante, this is easy to keep around for a few weeks and it reduces friction when backporting.

Copy link
Contributor

Choose a reason for hiding this comment

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

I don't remember any rules on this and I though it was around for quite a while sometimes. If we agree that it can go after the initial release I'm fine with it, but I really don't want to keep it around for the whole cycle, since that would effectively extend our supported compilers by one version.

Copy link
Member Author

Choose a reason for hiding this comment

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

It's indeed only for the release transition.

steps:
- uses: actions/checkout@v4
- name: ${{ matrix.config }}
Expand Down Expand Up @@ -163,14 +167,14 @@ jobs:
- config: 'generic-msan'
machine: libcxx-self-hosted-linux
runs-on: ${{ matrix.machine }}
container: ghcr.io/llvm/libcxx-linux-builder:d8a0709b1090350a7fe3604d8ab78c7d62f10698
container: ghcr.io/llvm/libcxx-linux-builder:b319dfef21f6c7b0bc6a356d6b9f41a3b3b98ae9
steps:
- uses: actions/checkout@v4
- name: ${{ matrix.config }}
run: libcxx/utils/ci/run-buildbot ${{ matrix.config }}
env:
CC: clang-20
CXX: clang++-20
CC: clang-21
CXX: clang++-21
- uses: actions/upload-artifact@26f96dfa697d77e81fd5907df203aa23a56210a8 # v4.3.0
if: always()
with:
Expand Down
16 changes: 8 additions & 8 deletions libcxx/docs/index.rst
Original file line number Diff line number Diff line change
Expand Up @@ -128,14 +128,14 @@ Libc++ aims to support common compilers that implement the C++11 Standard. In or
good balance between stability for users and maintenance cost, testing coverage and development
velocity, libc++ drops support for older compilers as newer ones are released.

============ =============== ========================== =====================
Compiler Versions Restrictions Support policy
============ =============== ========================== =====================
Clang 17, 18, 19-git latest two stable releases per `LLVM's release page <https://releases.llvm.org>`_ and the development version
AppleClang 15 latest stable release per `Xcode's release page <https://developer.apple.com/documentation/xcode-release-notes>`_
Open XL 17.1 (AIX) latest stable release per `Open XL's documentation page <https://www.ibm.com/docs/en/openxl-c-and-cpp-aix>`_
GCC 14 In C++11 or later only latest stable release per `GCC's release page <https://gcc.gnu.org/releases.html>`_
============ =============== ========================== =====================
============ =================== ========================== =====================
Compiler Versions Restrictions Support policy
============ =================== ========================== =====================
Clang 18, 19, 20, 21-git latest two stable releases per `LLVM's release page <https://releases.llvm.org>`_ and the development version
Copy link
Contributor

Choose a reason for hiding this comment

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

I don't think we should document that we support more versions than we plan to support when this gets released.

Copy link
Member Author

Choose a reason for hiding this comment

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

I prefer to keep this as is, and drop 18 when we no longer support it.

Copy link
Contributor

Choose a reason for hiding this comment

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

But we don't support it anymore. This is purely around for ease of migration.

AppleClang 15 latest stable release per `Xcode's release page <https://developer.apple.com/documentation/xcode-release-notes>`_
Open XL 17.1 (AIX) latest stable release per `Open XL's documentation page <https://www.ibm.com/docs/en/openxl-c-and-cpp-aix>`_
GCC 14 In C++11 or later only latest stable release per `GCC's release page <https://gcc.gnu.org/releases.html>`_
============ =================== ========================== =====================

Libc++ also supports common platforms and architectures:

Expand Down
2 changes: 1 addition & 1 deletion libcxx/test/libcxx/gdb/gdb_pretty_printer_test.sh.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
// UNSUPPORTED: c++03

// TODO: Investigate these failures which break the CI.
// UNSUPPORTED: clang-18, clang-19, clang-20
// UNSUPPORTED: clang-18, clang-19, clang-20, clang-21
Copy link
Member

Choose a reason for hiding this comment

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

Let's revive the patch to remove this. It's been broken for 1.5 years. If nobody cares about it, we should get rid of it.

Copy link
Contributor

Choose a reason for hiding this comment

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

It's not been broken. Our CI is. This actually works for every clang version listed here, except in the CI.

Copy link
Member Author

Choose a reason for hiding this comment

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

Do we know why it does not work in our CI?

Copy link
Contributor

Choose a reason for hiding this comment

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

IIRC the last time it mostly worked except in the optimized build. I've disabled it for everything, since it was already the same day as the LLVM 20 branch and the test was already disabled for all the other versions. We should look into it and maybe just disable it for the optimized build.


// The Android libc++ tests are run on a non-Android host, connected to an
// Android device over adb. gdb needs special support to make this work (e.g.
Expand Down