Skip to content

DISCUSS: use clang 20#7839

Closed
h-vetinari wants to merge 1 commit into
conda-forge:mainfrom
h-vetinari:clang
Closed

DISCUSS: use clang 20#7839
h-vetinari wants to merge 1 commit into
conda-forge:mainfrom
h-vetinari:clang

Conversation

@h-vetinari

@h-vetinari h-vetinari commented Oct 13, 2025

Copy link
Copy Markdown
Member

Clang has a 6 month release cadence, and the last few years we've updated to an even release in the fall (#6571, #4991, #3261, #2010).

In particular, development on LLVM 19 has stopped completely. The same is true for LLVM 20 actually, but at least it contains 6 months more of features & fixes. Upstream is currently doing point-releases for 21.x, which will stop with the release of v22 early next year. We can then do a bump to GCC 15 & Clang 21 in the spring again (after the release of GCC 16 resp. the corresponding 15.x point-release).

However, due to two ABI breaks in LLVM v20.1, we might want to skip this release

Also, one of the two ABI breaks might need a more comprehensive rebuild anyway (hopefully not "full rebuild..."). This PR is for discussion purposes, and remains a draft until these points are resolved one way or another.

To-Do list based on docs

Previously: #7421 #6571 #4890 #4991 #4215 #3731 #3290 #3261 #2802 #2010

CC @conda-forge/core

@conda-forge-admin

Copy link
Copy Markdown
Contributor

Hi! This is the friendly automated conda-forge-linting service.

I just wanted to let you know that I linted all conda-recipes in your PR (recipe/meta.yaml) and found it was in an excellent condition.

@h-vetinari

Copy link
Copy Markdown
Member Author

Any thoughts on this @isuruf @xhochy @mgorny?

@mgorny

mgorny commented Oct 15, 2025

Copy link
Copy Markdown
Contributor

I don't know what a "construction vtable" is, but vtables are very common, so we might have to do a bigger rebuild, or permanently add -fclang-abi-compat=19 to the compiler flags, which also isn't a very appealing idea.

Me neither, but I've just tested the included example, and confirmed that the Clang-19 mangling was different than GCC, so another point worth considering is that the new behavior aligns it with GCC.


Are you aware if more ABI breaks are coming in 21? Perhaps it would then make sense to skip it indeed and do a single rebuild for both. Watching from the sidelines, I didn't notice any "killer features" in Clang 20, but I wasn't watching very carefully.

@h-vetinari

h-vetinari commented Oct 15, 2025

Copy link
Copy Markdown
Member Author

Are you aware if more ABI breaks are coming in 21?

Clang 21 fixes the libcxx ABI break at least. I guess we'll have to deal with the vtable one either way.

The only other ABI change mentioned in the v21 release notes is: llvm/llvm-project#120670, which shouldn't affect us AFAICT, since (outside of a handful microarch-enabled feedstocks), we're generally not using AVX.

@mgorny

mgorny commented Oct 15, 2025

Copy link
Copy Markdown
Contributor

Yeah. Technically we could also backport the fix to 20.x, but then we'd be incompatible with vanilla libc++.

@h-vetinari

Copy link
Copy Markdown
Member Author

but then we'd be incompatible with vanilla libc++.

OTOH, we'd be compatible with libcxx 19 and 21 again... 🤔

But clearly not appealing to preempt upstream on this, especially if they would have bumped the minor version for it. That's why I thought we might want to skip this release...

@h-vetinari

Copy link
Copy Markdown
Member Author

@isuruf, any thoughts about the "construction vtable" issue here? If it's not a break-the-world event, then I think we can just do a regular update to clang 21 together with GCC 15 next spring.

@isuruf

isuruf commented Oct 22, 2025

Copy link
Copy Markdown
Member

Let's wait for clang 21. I don't think this is going to be a big issue

@h-vetinari

Copy link
Copy Markdown
Member Author

Let's wait for clang 21. I don't think this is going to be a big issue

Thanks for your opinion. I agree.

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.

4 participants