github: update compiler toolchains#3368
Conversation
nyh
left a comment
There was a problem hiding this comment.
Does this mean our tests will run only on clang-22? Shouldn't we also build on clang-21, which Seastar users are far more likely to use and we would care more if it generates bad code?
Yes
Far more likely?!
The tests aren't to verify the compiler. They are to verify Seastar itself builds on the supported compiler/library combinations. In principle we should build on the last two compiler versions, since that's our compatibility promise. Usually newer compilers are more strict (they catch violations that previous compilers did not) and older libraries are more strict (they implement fewer features). But the test environment allows testing only one, for now, and this changes from clang-20 (which we no longer support) to clang-22 (which we do). |
c0aceb5 to
5abc5d7
Compare
|
v2: drop sudo; isn't supplied by the container, and now unneeded |
5abc5d7 to
2b909ef
Compare
|
v3:
|
2b909ef to
65996e8
Compare
|
v4:
|
I use the latest Fedora officially released (Fedora 43) and it has clang 21.1.8, not clang 22. I didn't do a survey on how many developers using what, so I can't prove my hunch, but my hunch is that most of the Seastar users have not yet switched to clang 22. |
For a few more days.
Seastar should be leading, not trailing, its users, so we encounter and fix the problems early. |
65996e8 to
85a6ca7
Compare
|
v5: switch to Fedora 44 instead of Ubuntu 26.04. Ubuntu 26.04 had too-old libfmt which contained an unfixed bug wrt newer clang. We have more expertise in Fedora, and Fedora tracks upstream releases better. |
85a6ca7 to
ed501df
Compare
|
v6: rebased past 2891a4b |
ed501df to
1db6d6d
Compare
|
v7: rebased past 6be1e64 |
nyh
left a comment
There was a problem hiding this comment.
Looks good but one silly nitpick: The last pagraph of the commit message doesn't look correct. Maybe it was relevant for some earlier version of this patch?
Also, there seem to be some tests failing with the new compiler/library combination, please take a look. |
Yes, forgot to trim it. |
2e28b1e to
4be44ec
Compare
|
v8:
|
4be44ec to
246f81b
Compare
|
v9:
|
Switch to Fedora 44 (in a container, as github doesn't support it directly yet), Clang 22, and gcc 16. This lets us test with modern toolchains and sets the stage for bumping the standard to C++26. Since we're running in a container, drop sudo, which isn't provided by the container and also isn't needed. Disable the g++ debug mode combination due to https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124584.
246f81b to
c8b0ffb
Compare
|
v10:
|
|
@scylladb/seastar-maint please review |
Is there a good to reason to switch away from Ubuntu? My impression is this is the most commonly used distro and probably the most common distro for seastar use and has long-lived LTS versions. |
Ubuntu 26.04 has clang 21 and gcc 15, and I want 22/16. If we want recent compiler versions (and I do), LTS doesn't help. |
Dunno about gcc side but you can trivially install any clang version with llvm.sh. |
What is llvm.sh? But we do want gcc. |
The installer script maintained by the llvm project, it installs any version of llvm/clang/etc you'd like "side by side". |
Nice, we can use it later to test multiple clang versions. gcc is trickier though. |
ubuntu 26.04 offers gcc-16 as an installable option, so that can be used via contianer if Ubuntu is preferred (26.04 not offered as "runner" yet) on the runner itself gcc seems pretty easy with the toolchain ppa which is how I've done this many times That said is there any interest in staying on ubuntu, and/or directly using the runner instead of container mode? If so I could do that, but trying to read the room here. |
I don't have any love for Ubuntu, but also no motivation for the change other than it was the path of least resistance for me. Ubuntu 26.04 isn't yet available as a runner, so we have to use a container. The goal is to update on a half-year cadence like clang. Fedora offers this and also has mid-life updates. I don't know enough about Ubuntu. If it's possible to do this on Ubuntu, and it is also advantageous (for example, supporting the last two compilers instead of just one), then by all means, post a patch. |
I will |
Switch to Fedora 44 (in a container, as github doesn't support it
directly yet), Clang 22, and gcc 16. This lets us test with modern
toolchains and sets the stage for bumping the standard to C++26.
Since we're running in a container, drop sudo, which isn't provided
by the container and also isn't needed.
Disable the g++ debug mode combination due to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=124584.