GH-45885: [C++] Require C++20 - #48414

Merged
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20
Dec 18, 2025
Merged

GH-45885: [C++] Require C++20#48414
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20

Conversation

@pitrou

@pitroupitrou commented Dec 9, 2025

Copy link
Copy Markdown
Member

Rationale for this change

We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj

What changes are included in this PR?

  1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17

  2. C++-level fixes to ensure compilation succeeds:

    • Workarounds for deprecation of atomic access on std::shared_ptr<T> (the replacement std::atomic<std::shared_ptr<T>> is unfortunately not supported in all standard library implementations)
    • Workaround for Abseil ABI issues
    • Trivial update to arrow/util/string.h to call a C++20 API (to validate that C++20 is actually enabled)
  3. CI configuration updates to get enough C++20 support on the various platforms:

    • Bump default clang and LLVM versions to 18
    • Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes, Arrow C++ will now require a C++20-compliant compiler.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitroupitrou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Dec 9, 2025
@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit wheelcp313*

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g python

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g r

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g c-glib -g ruby -g r

@pitrou

Copy link
Copy Markdown
MemberAuthor

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-debian-experimental-cpp-gcc-15

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-93c23edec8

TaskStatus
test-debian-experimental-cpp-gcc-15GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp -g python

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-e5d2f93e4c

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
example-python-minimal-build-fedora-condaGitHub Actions
example-python-minimal-build-ubuntu-venvGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions
test-cuda-cpp-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-cpp-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-cuda-python-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-python-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-12-python-3-amd64GitHub Actions
test-debian-12-python-3-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-fedora-42-python-3GitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-22.04-python-3GitHub Actions
test-ubuntu-22.04-python-313-freethreadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions
test-ubuntu-24.04-python-3GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

Well, let's merge this now.

@pitrou
pitrou merged commit 30809c6 into apache:mainDec 18, 2025
66 of 68 checks passed
@pitroupitrou removed the awaiting change review Awaiting change review label Dec 18, 2025
@pitrou
pitrou deleted the gh45885-cxx20 branch December 18, 2025 16:17
@@ -1181,7 +1181,7 @@ endif()
foreach(LIB_TARGET ${ARROW_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
# C++17 is required to compile against Arrow C++ headers and libraries

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this "C++17" too?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oops, sorry, it's intriguing that I overlooked these two occurrences.

@@ -131,7 +131,7 @@ libmexclass_client_add_proxy_library(
LINK_LIBRARIES arrow_shared
)
# Use C++17

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this too?

@github-actionsgithub-actionsBot added the awaiting changes Awaiting changes label Dec 19, 2025
@kou

kou commented Dec 19, 2025

Copy link
Copy Markdown
Member

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

It's for the latest GCC. We should bump this GCC version when new GCC is released. Debian experimental will provide it. For example, GCC 16 isn't released yet but it's already provided: https://packages.debian.org/search?keywords=gcc-16

thisisnic pushed a commit that referenced this pull request Dec 19, 2025
### Rationale for this change
As a followup to #48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
jonahkel pushed a commit to jonahkel/arrow that referenced this pull request Dec 22, 2025
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 30809c6.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 474 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd pushed a commit that referenced this pull request Jan 7, 2026
…tup-rhel-rebuilds.sh` for wheel verification (#48748)
### Rationale for this change
GH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
# include <opentelemetry/context/propagation/text_map_propagator.h>
# include <opentelemetry/trace/context.h>
# include <opentelemetry/trace/propagation/http_trace_context.h>
# include <opentelemetry/trace/semantic_conventions.h>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@pitrou, this change looks more or less completely unrelated to the move to C++20? Presumably it's just because you started building against newer otel which doesn't have this header anymore? We're hitting this on all versions before v23 when building against otel 1.25

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, you're right, I hit this while working on the PR. But the otel bump might have been tied to some other dependency changes required for the PR as well.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj
### What changes are included in this PR?
1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17
2. C++-level fixes to ensure compilation succeeds:
* Workarounds for deprecation of atomic access on `std::shared_ptr<T>` (the replacement `std::atomic<std::shared_ptr<T>>` is unfortunately not supported in all standard library implementations)
* Workaround for [Abseil ABI issues](abseil/abseil-cpp#1624)
* Trivial update to `arrow/util/string.h` to call a C++20 API (to validate that C++20 is actually enabled)
3. CI configuration updates to get enough C++20 support on the various platforms:
* Bump default clang and LLVM versions to 18
* Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes, Arrow C++ will now require a C++20-compliant compiler.
* GitHub Issue: apache#45885
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ase/setup-rhel-rebuilds.sh` for wheel verification (apache#48748)
### Rationale for this change
apacheGH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: apache#48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@pitrou@jonkeane@WillAyd@kou@zanmato1984@mapleFU@h-vetinari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

GH-45885: [C++] Require C++20 - #48414

Merged
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20
Dec 18, 2025
Merged

GH-45885: [C++] Require C++20#48414
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20

Conversation

@pitrou

@pitroupitrou commented Dec 9, 2025

Copy link
Copy Markdown
Member

Rationale for this change

We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj

What changes are included in this PR?

  1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17

  2. C++-level fixes to ensure compilation succeeds:

    • Workarounds for deprecation of atomic access on std::shared_ptr<T> (the replacement std::atomic<std::shared_ptr<T>> is unfortunately not supported in all standard library implementations)
    • Workaround for Abseil ABI issues
    • Trivial update to arrow/util/string.h to call a C++20 API (to validate that C++20 is actually enabled)
  3. CI configuration updates to get enough C++20 support on the various platforms:

    • Bump default clang and LLVM versions to 18
    • Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes, Arrow C++ will now require a C++20-compliant compiler.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitroupitrou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Dec 9, 2025
@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit wheelcp313*

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g python

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g r

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g c-glib -g ruby -g r

@pitrou

Copy link
Copy Markdown
MemberAuthor

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-debian-experimental-cpp-gcc-15

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-93c23edec8

TaskStatus
test-debian-experimental-cpp-gcc-15GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp -g python

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-e5d2f93e4c

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
example-python-minimal-build-fedora-condaGitHub Actions
example-python-minimal-build-ubuntu-venvGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions
test-cuda-cpp-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-cpp-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-cuda-python-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-python-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-12-python-3-amd64GitHub Actions
test-debian-12-python-3-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-fedora-42-python-3GitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-22.04-python-3GitHub Actions
test-ubuntu-22.04-python-313-freethreadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions
test-ubuntu-24.04-python-3GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

Well, let's merge this now.

@pitrou
pitrou merged commit 30809c6 into apache:mainDec 18, 2025
66 of 68 checks passed
@pitroupitrou removed the awaiting change review Awaiting change review label Dec 18, 2025
@pitrou
pitrou deleted the gh45885-cxx20 branch December 18, 2025 16:17
@@ -1181,7 +1181,7 @@ endif()
foreach(LIB_TARGET ${ARROW_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
# C++17 is required to compile against Arrow C++ headers and libraries

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this "C++17" too?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oops, sorry, it's intriguing that I overlooked these two occurrences.

@@ -131,7 +131,7 @@ libmexclass_client_add_proxy_library(
LINK_LIBRARIES arrow_shared
)
# Use C++17

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this too?

@github-actionsgithub-actionsBot added the awaiting changes Awaiting changes label Dec 19, 2025
@kou

kou commented Dec 19, 2025

Copy link
Copy Markdown
Member

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

It's for the latest GCC. We should bump this GCC version when new GCC is released. Debian experimental will provide it. For example, GCC 16 isn't released yet but it's already provided: https://packages.debian.org/search?keywords=gcc-16

thisisnic pushed a commit that referenced this pull request Dec 19, 2025
### Rationale for this change
As a followup to #48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
jonahkel pushed a commit to jonahkel/arrow that referenced this pull request Dec 22, 2025
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 30809c6.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 474 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd pushed a commit that referenced this pull request Jan 7, 2026
…tup-rhel-rebuilds.sh` for wheel verification (#48748)
### Rationale for this change
GH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
# include <opentelemetry/context/propagation/text_map_propagator.h>
# include <opentelemetry/trace/context.h>
# include <opentelemetry/trace/propagation/http_trace_context.h>
# include <opentelemetry/trace/semantic_conventions.h>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@pitrou, this change looks more or less completely unrelated to the move to C++20? Presumably it's just because you started building against newer otel which doesn't have this header anymore? We're hitting this on all versions before v23 when building against otel 1.25

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, you're right, I hit this while working on the PR. But the otel bump might have been tied to some other dependency changes required for the PR as well.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj
### What changes are included in this PR?
1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17
2. C++-level fixes to ensure compilation succeeds:
* Workarounds for deprecation of atomic access on `std::shared_ptr<T>` (the replacement `std::atomic<std::shared_ptr<T>>` is unfortunately not supported in all standard library implementations)
* Workaround for [Abseil ABI issues](abseil/abseil-cpp#1624)
* Trivial update to `arrow/util/string.h` to call a C++20 API (to validate that C++20 is actually enabled)
3. CI configuration updates to get enough C++20 support on the various platforms:
* Bump default clang and LLVM versions to 18
* Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes, Arrow C++ will now require a C++20-compliant compiler.
* GitHub Issue: apache#45885
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ase/setup-rhel-rebuilds.sh` for wheel verification (apache#48748)
### Rationale for this change
apacheGH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: apache#48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@pitrou@jonkeane@WillAyd@kou@zanmato1984@mapleFU@h-vetinari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-45885: [C++] Require C++20 - #48414

Merged
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20
Dec 18, 2025
Merged

GH-45885: [C++] Require C++20#48414
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20

Conversation

@pitrou

@pitroupitrou commented Dec 9, 2025

Copy link
Copy Markdown
Member

Rationale for this change

We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj

What changes are included in this PR?

  1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17

  2. C++-level fixes to ensure compilation succeeds:

    • Workarounds for deprecation of atomic access on std::shared_ptr<T> (the replacement std::atomic<std::shared_ptr<T>> is unfortunately not supported in all standard library implementations)
    • Workaround for Abseil ABI issues
    • Trivial update to arrow/util/string.h to call a C++20 API (to validate that C++20 is actually enabled)
  3. CI configuration updates to get enough C++20 support on the various platforms:

    • Bump default clang and LLVM versions to 18
    • Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes, Arrow C++ will now require a C++20-compliant compiler.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitroupitrou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Dec 9, 2025
@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit wheelcp313*

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g python

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g r

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g c-glib -g ruby -g r

@pitrou

Copy link
Copy Markdown
MemberAuthor

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-debian-experimental-cpp-gcc-15

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-93c23edec8

TaskStatus
test-debian-experimental-cpp-gcc-15GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp -g python

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-e5d2f93e4c

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
example-python-minimal-build-fedora-condaGitHub Actions
example-python-minimal-build-ubuntu-venvGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions
test-cuda-cpp-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-cpp-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-cuda-python-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-python-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-12-python-3-amd64GitHub Actions
test-debian-12-python-3-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-fedora-42-python-3GitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-22.04-python-3GitHub Actions
test-ubuntu-22.04-python-313-freethreadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions
test-ubuntu-24.04-python-3GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

Well, let's merge this now.

@pitrou
pitrou merged commit 30809c6 into apache:mainDec 18, 2025
66 of 68 checks passed
@pitroupitrou removed the awaiting change review Awaiting change review label Dec 18, 2025
@pitrou
pitrou deleted the gh45885-cxx20 branch December 18, 2025 16:17
@@ -1181,7 +1181,7 @@ endif()
foreach(LIB_TARGET ${ARROW_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
# C++17 is required to compile against Arrow C++ headers and libraries

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this "C++17" too?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oops, sorry, it's intriguing that I overlooked these two occurrences.

@@ -131,7 +131,7 @@ libmexclass_client_add_proxy_library(
LINK_LIBRARIES arrow_shared
)
# Use C++17

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this too?

@github-actionsgithub-actionsBot added the awaiting changes Awaiting changes label Dec 19, 2025
@kou

kou commented Dec 19, 2025

Copy link
Copy Markdown
Member

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

It's for the latest GCC. We should bump this GCC version when new GCC is released. Debian experimental will provide it. For example, GCC 16 isn't released yet but it's already provided: https://packages.debian.org/search?keywords=gcc-16

thisisnic pushed a commit that referenced this pull request Dec 19, 2025
### Rationale for this change
As a followup to #48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
jonahkel pushed a commit to jonahkel/arrow that referenced this pull request Dec 22, 2025
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 30809c6.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 474 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd pushed a commit that referenced this pull request Jan 7, 2026
…tup-rhel-rebuilds.sh` for wheel verification (#48748)
### Rationale for this change
GH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
# include <opentelemetry/context/propagation/text_map_propagator.h>
# include <opentelemetry/trace/context.h>
# include <opentelemetry/trace/propagation/http_trace_context.h>
# include <opentelemetry/trace/semantic_conventions.h>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@pitrou, this change looks more or less completely unrelated to the move to C++20? Presumably it's just because you started building against newer otel which doesn't have this header anymore? We're hitting this on all versions before v23 when building against otel 1.25

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, you're right, I hit this while working on the PR. But the otel bump might have been tied to some other dependency changes required for the PR as well.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj
### What changes are included in this PR?
1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17
2. C++-level fixes to ensure compilation succeeds:
* Workarounds for deprecation of atomic access on `std::shared_ptr<T>` (the replacement `std::atomic<std::shared_ptr<T>>` is unfortunately not supported in all standard library implementations)
* Workaround for [Abseil ABI issues](abseil/abseil-cpp#1624)
* Trivial update to `arrow/util/string.h` to call a C++20 API (to validate that C++20 is actually enabled)
3. CI configuration updates to get enough C++20 support on the various platforms:
* Bump default clang and LLVM versions to 18
* Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes, Arrow C++ will now require a C++20-compliant compiler.
* GitHub Issue: apache#45885
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ase/setup-rhel-rebuilds.sh` for wheel verification (apache#48748)
### Rationale for this change
apacheGH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: apache#48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@pitrou@jonkeane@WillAyd@kou@zanmato1984@mapleFU@h-vetinari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-45885: [C++] Require C++20 - #48414

Merged
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20
Dec 18, 2025
Merged

GH-45885: [C++] Require C++20#48414
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20

Conversation

@pitrou

@pitroupitrou commented Dec 9, 2025

Copy link
Copy Markdown
Member

Rationale for this change

We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj

What changes are included in this PR?

  1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17

  2. C++-level fixes to ensure compilation succeeds:

    • Workarounds for deprecation of atomic access on std::shared_ptr<T> (the replacement std::atomic<std::shared_ptr<T>> is unfortunately not supported in all standard library implementations)
    • Workaround for Abseil ABI issues
    • Trivial update to arrow/util/string.h to call a C++20 API (to validate that C++20 is actually enabled)
  3. CI configuration updates to get enough C++20 support on the various platforms:

    • Bump default clang and LLVM versions to 18
    • Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes, Arrow C++ will now require a C++20-compliant compiler.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitroupitrou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Dec 9, 2025
@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit wheelcp313*

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g python

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g r

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g c-glib -g ruby -g r

@pitrou

Copy link
Copy Markdown
MemberAuthor

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-debian-experimental-cpp-gcc-15

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-93c23edec8

TaskStatus
test-debian-experimental-cpp-gcc-15GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp -g python

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-e5d2f93e4c

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
example-python-minimal-build-fedora-condaGitHub Actions
example-python-minimal-build-ubuntu-venvGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions
test-cuda-cpp-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-cpp-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-cuda-python-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-python-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-12-python-3-amd64GitHub Actions
test-debian-12-python-3-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-fedora-42-python-3GitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-22.04-python-3GitHub Actions
test-ubuntu-22.04-python-313-freethreadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions
test-ubuntu-24.04-python-3GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

Well, let's merge this now.

@pitrou
pitrou merged commit 30809c6 into apache:mainDec 18, 2025
66 of 68 checks passed
@pitroupitrou removed the awaiting change review Awaiting change review label Dec 18, 2025
@pitrou
pitrou deleted the gh45885-cxx20 branch December 18, 2025 16:17
@@ -1181,7 +1181,7 @@ endif()
foreach(LIB_TARGET ${ARROW_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
# C++17 is required to compile against Arrow C++ headers and libraries

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this "C++17" too?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oops, sorry, it's intriguing that I overlooked these two occurrences.

@@ -131,7 +131,7 @@ libmexclass_client_add_proxy_library(
LINK_LIBRARIES arrow_shared
)
# Use C++17

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this too?

@github-actionsgithub-actionsBot added the awaiting changes Awaiting changes label Dec 19, 2025
@kou

kou commented Dec 19, 2025

Copy link
Copy Markdown
Member

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

It's for the latest GCC. We should bump this GCC version when new GCC is released. Debian experimental will provide it. For example, GCC 16 isn't released yet but it's already provided: https://packages.debian.org/search?keywords=gcc-16

thisisnic pushed a commit that referenced this pull request Dec 19, 2025
### Rationale for this change
As a followup to #48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
jonahkel pushed a commit to jonahkel/arrow that referenced this pull request Dec 22, 2025
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 30809c6.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 474 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd pushed a commit that referenced this pull request Jan 7, 2026
…tup-rhel-rebuilds.sh` for wheel verification (#48748)
### Rationale for this change
GH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
# include <opentelemetry/context/propagation/text_map_propagator.h>
# include <opentelemetry/trace/context.h>
# include <opentelemetry/trace/propagation/http_trace_context.h>
# include <opentelemetry/trace/semantic_conventions.h>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@pitrou, this change looks more or less completely unrelated to the move to C++20? Presumably it's just because you started building against newer otel which doesn't have this header anymore? We're hitting this on all versions before v23 when building against otel 1.25

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, you're right, I hit this while working on the PR. But the otel bump might have been tied to some other dependency changes required for the PR as well.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj
### What changes are included in this PR?
1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17
2. C++-level fixes to ensure compilation succeeds:
* Workarounds for deprecation of atomic access on `std::shared_ptr<T>` (the replacement `std::atomic<std::shared_ptr<T>>` is unfortunately not supported in all standard library implementations)
* Workaround for [Abseil ABI issues](abseil/abseil-cpp#1624)
* Trivial update to `arrow/util/string.h` to call a C++20 API (to validate that C++20 is actually enabled)
3. CI configuration updates to get enough C++20 support on the various platforms:
* Bump default clang and LLVM versions to 18
* Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes, Arrow C++ will now require a C++20-compliant compiler.
* GitHub Issue: apache#45885
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ase/setup-rhel-rebuilds.sh` for wheel verification (apache#48748)
### Rationale for this change
apacheGH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: apache#48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@pitrou@jonkeane@WillAyd@kou@zanmato1984@mapleFU@h-vetinari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

GH-45885: [C++] Require C++20 - #48414

Merged
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20
Dec 18, 2025
Merged

GH-45885: [C++] Require C++20#48414
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20

Conversation

@pitrou

@pitroupitrou commented Dec 9, 2025

Copy link
Copy Markdown
Member

Rationale for this change

We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj

What changes are included in this PR?

  1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17

  2. C++-level fixes to ensure compilation succeeds:

    • Workarounds for deprecation of atomic access on std::shared_ptr<T> (the replacement std::atomic<std::shared_ptr<T>> is unfortunately not supported in all standard library implementations)
    • Workaround for Abseil ABI issues
    • Trivial update to arrow/util/string.h to call a C++20 API (to validate that C++20 is actually enabled)
  3. CI configuration updates to get enough C++20 support on the various platforms:

    • Bump default clang and LLVM versions to 18
    • Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes, Arrow C++ will now require a C++20-compliant compiler.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitroupitrou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Dec 9, 2025
@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit wheelcp313*

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g python

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g r

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g c-glib -g ruby -g r

@pitrou

Copy link
Copy Markdown
MemberAuthor

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-debian-experimental-cpp-gcc-15

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-93c23edec8

TaskStatus
test-debian-experimental-cpp-gcc-15GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp -g python

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-e5d2f93e4c

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
example-python-minimal-build-fedora-condaGitHub Actions
example-python-minimal-build-ubuntu-venvGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions
test-cuda-cpp-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-cpp-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-cuda-python-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-python-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-12-python-3-amd64GitHub Actions
test-debian-12-python-3-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-fedora-42-python-3GitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-22.04-python-3GitHub Actions
test-ubuntu-22.04-python-313-freethreadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions
test-ubuntu-24.04-python-3GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

Well, let's merge this now.

@pitrou
pitrou merged commit 30809c6 into apache:mainDec 18, 2025
66 of 68 checks passed
@pitroupitrou removed the awaiting change review Awaiting change review label Dec 18, 2025
@pitrou
pitrou deleted the gh45885-cxx20 branch December 18, 2025 16:17
@@ -1181,7 +1181,7 @@ endif()
foreach(LIB_TARGET ${ARROW_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
# C++17 is required to compile against Arrow C++ headers and libraries

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this "C++17" too?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oops, sorry, it's intriguing that I overlooked these two occurrences.

@@ -131,7 +131,7 @@ libmexclass_client_add_proxy_library(
LINK_LIBRARIES arrow_shared
)
# Use C++17

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this too?

@github-actionsgithub-actionsBot added the awaiting changes Awaiting changes label Dec 19, 2025
@kou

kou commented Dec 19, 2025

Copy link
Copy Markdown
Member

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

It's for the latest GCC. We should bump this GCC version when new GCC is released. Debian experimental will provide it. For example, GCC 16 isn't released yet but it's already provided: https://packages.debian.org/search?keywords=gcc-16

thisisnic pushed a commit that referenced this pull request Dec 19, 2025
### Rationale for this change
As a followup to #48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
jonahkel pushed a commit to jonahkel/arrow that referenced this pull request Dec 22, 2025
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 30809c6.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 474 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd pushed a commit that referenced this pull request Jan 7, 2026
…tup-rhel-rebuilds.sh` for wheel verification (#48748)
### Rationale for this change
GH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
# include <opentelemetry/context/propagation/text_map_propagator.h>
# include <opentelemetry/trace/context.h>
# include <opentelemetry/trace/propagation/http_trace_context.h>
# include <opentelemetry/trace/semantic_conventions.h>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@pitrou, this change looks more or less completely unrelated to the move to C++20? Presumably it's just because you started building against newer otel which doesn't have this header anymore? We're hitting this on all versions before v23 when building against otel 1.25

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, you're right, I hit this while working on the PR. But the otel bump might have been tied to some other dependency changes required for the PR as well.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj
### What changes are included in this PR?
1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17
2. C++-level fixes to ensure compilation succeeds:
* Workarounds for deprecation of atomic access on `std::shared_ptr<T>` (the replacement `std::atomic<std::shared_ptr<T>>` is unfortunately not supported in all standard library implementations)
* Workaround for [Abseil ABI issues](abseil/abseil-cpp#1624)
* Trivial update to `arrow/util/string.h` to call a C++20 API (to validate that C++20 is actually enabled)
3. CI configuration updates to get enough C++20 support on the various platforms:
* Bump default clang and LLVM versions to 18
* Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes, Arrow C++ will now require a C++20-compliant compiler.
* GitHub Issue: apache#45885
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ase/setup-rhel-rebuilds.sh` for wheel verification (apache#48748)
### Rationale for this change
apacheGH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: apache#48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@pitrou@jonkeane@WillAyd@kou@zanmato1984@mapleFU@h-vetinari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-45885: [C++] Require C++20 - #48414

Merged
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20
Dec 18, 2025
Merged

GH-45885: [C++] Require C++20#48414
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20

Conversation

@pitrou

@pitroupitrou commented Dec 9, 2025

Copy link
Copy Markdown
Member

Rationale for this change

We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj

What changes are included in this PR?

  1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17

  2. C++-level fixes to ensure compilation succeeds:

    • Workarounds for deprecation of atomic access on std::shared_ptr<T> (the replacement std::atomic<std::shared_ptr<T>> is unfortunately not supported in all standard library implementations)
    • Workaround for Abseil ABI issues
    • Trivial update to arrow/util/string.h to call a C++20 API (to validate that C++20 is actually enabled)
  3. CI configuration updates to get enough C++20 support on the various platforms:

    • Bump default clang and LLVM versions to 18
    • Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes, Arrow C++ will now require a C++20-compliant compiler.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitroupitrou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Dec 9, 2025
@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit wheelcp313*

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g python

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g r

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g c-glib -g ruby -g r

@pitrou

Copy link
Copy Markdown
MemberAuthor

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-debian-experimental-cpp-gcc-15

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-93c23edec8

TaskStatus
test-debian-experimental-cpp-gcc-15GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp -g python

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-e5d2f93e4c

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
example-python-minimal-build-fedora-condaGitHub Actions
example-python-minimal-build-ubuntu-venvGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions
test-cuda-cpp-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-cpp-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-cuda-python-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-python-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-12-python-3-amd64GitHub Actions
test-debian-12-python-3-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-fedora-42-python-3GitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-22.04-python-3GitHub Actions
test-ubuntu-22.04-python-313-freethreadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions
test-ubuntu-24.04-python-3GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

Well, let's merge this now.

@pitrou
pitrou merged commit 30809c6 into apache:mainDec 18, 2025
66 of 68 checks passed
@pitroupitrou removed the awaiting change review Awaiting change review label Dec 18, 2025
@pitrou
pitrou deleted the gh45885-cxx20 branch December 18, 2025 16:17
@@ -1181,7 +1181,7 @@ endif()
foreach(LIB_TARGET ${ARROW_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
# C++17 is required to compile against Arrow C++ headers and libraries

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this "C++17" too?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oops, sorry, it's intriguing that I overlooked these two occurrences.

@@ -131,7 +131,7 @@ libmexclass_client_add_proxy_library(
LINK_LIBRARIES arrow_shared
)
# Use C++17

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this too?

@github-actionsgithub-actionsBot added the awaiting changes Awaiting changes label Dec 19, 2025
@kou

kou commented Dec 19, 2025

Copy link
Copy Markdown
Member

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

It's for the latest GCC. We should bump this GCC version when new GCC is released. Debian experimental will provide it. For example, GCC 16 isn't released yet but it's already provided: https://packages.debian.org/search?keywords=gcc-16

thisisnic pushed a commit that referenced this pull request Dec 19, 2025
### Rationale for this change
As a followup to #48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
jonahkel pushed a commit to jonahkel/arrow that referenced this pull request Dec 22, 2025
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 30809c6.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 474 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd pushed a commit that referenced this pull request Jan 7, 2026
…tup-rhel-rebuilds.sh` for wheel verification (#48748)
### Rationale for this change
GH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
# include <opentelemetry/context/propagation/text_map_propagator.h>
# include <opentelemetry/trace/context.h>
# include <opentelemetry/trace/propagation/http_trace_context.h>
# include <opentelemetry/trace/semantic_conventions.h>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@pitrou, this change looks more or less completely unrelated to the move to C++20? Presumably it's just because you started building against newer otel which doesn't have this header anymore? We're hitting this on all versions before v23 when building against otel 1.25

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, you're right, I hit this while working on the PR. But the otel bump might have been tied to some other dependency changes required for the PR as well.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj
### What changes are included in this PR?
1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17
2. C++-level fixes to ensure compilation succeeds:
* Workarounds for deprecation of atomic access on `std::shared_ptr<T>` (the replacement `std::atomic<std::shared_ptr<T>>` is unfortunately not supported in all standard library implementations)
* Workaround for [Abseil ABI issues](abseil/abseil-cpp#1624)
* Trivial update to `arrow/util/string.h` to call a C++20 API (to validate that C++20 is actually enabled)
3. CI configuration updates to get enough C++20 support on the various platforms:
* Bump default clang and LLVM versions to 18
* Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes, Arrow C++ will now require a C++20-compliant compiler.
* GitHub Issue: apache#45885
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ase/setup-rhel-rebuilds.sh` for wheel verification (apache#48748)
### Rationale for this change
apacheGH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: apache#48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@pitrou@jonkeane@WillAyd@kou@zanmato1984@mapleFU@h-vetinari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

GH-45885: [C++] Require C++20 - #48414

Merged
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20
Dec 18, 2025
Merged

GH-45885: [C++] Require C++20#48414
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20

Conversation

@pitrou

@pitroupitrou commented Dec 9, 2025

Copy link
Copy Markdown
Member

Rationale for this change

We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj

What changes are included in this PR?

  1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17

  2. C++-level fixes to ensure compilation succeeds:

    • Workarounds for deprecation of atomic access on std::shared_ptr<T> (the replacement std::atomic<std::shared_ptr<T>> is unfortunately not supported in all standard library implementations)
    • Workaround for Abseil ABI issues
    • Trivial update to arrow/util/string.h to call a C++20 API (to validate that C++20 is actually enabled)
  3. CI configuration updates to get enough C++20 support on the various platforms:

    • Bump default clang and LLVM versions to 18
    • Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes, Arrow C++ will now require a C++20-compliant compiler.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitroupitrou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Dec 9, 2025
@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit wheelcp313*

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g python

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g r

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g c-glib -g ruby -g r

@pitrou

Copy link
Copy Markdown
MemberAuthor

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-debian-experimental-cpp-gcc-15

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-93c23edec8

TaskStatus
test-debian-experimental-cpp-gcc-15GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp -g python

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-e5d2f93e4c

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
example-python-minimal-build-fedora-condaGitHub Actions
example-python-minimal-build-ubuntu-venvGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions
test-cuda-cpp-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-cpp-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-cuda-python-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-python-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-12-python-3-amd64GitHub Actions
test-debian-12-python-3-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-fedora-42-python-3GitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-22.04-python-3GitHub Actions
test-ubuntu-22.04-python-313-freethreadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions
test-ubuntu-24.04-python-3GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

Well, let's merge this now.

@pitrou
pitrou merged commit 30809c6 into apache:mainDec 18, 2025
66 of 68 checks passed
@pitroupitrou removed the awaiting change review Awaiting change review label Dec 18, 2025
@pitrou
pitrou deleted the gh45885-cxx20 branch December 18, 2025 16:17
@@ -1181,7 +1181,7 @@ endif()
foreach(LIB_TARGET ${ARROW_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
# C++17 is required to compile against Arrow C++ headers and libraries

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this "C++17" too?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oops, sorry, it's intriguing that I overlooked these two occurrences.

@@ -131,7 +131,7 @@ libmexclass_client_add_proxy_library(
LINK_LIBRARIES arrow_shared
)
# Use C++17

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this too?

@github-actionsgithub-actionsBot added the awaiting changes Awaiting changes label Dec 19, 2025
@kou

kou commented Dec 19, 2025

Copy link
Copy Markdown
Member

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

It's for the latest GCC. We should bump this GCC version when new GCC is released. Debian experimental will provide it. For example, GCC 16 isn't released yet but it's already provided: https://packages.debian.org/search?keywords=gcc-16

thisisnic pushed a commit that referenced this pull request Dec 19, 2025
### Rationale for this change
As a followup to #48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
jonahkel pushed a commit to jonahkel/arrow that referenced this pull request Dec 22, 2025
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 30809c6.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 474 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd pushed a commit that referenced this pull request Jan 7, 2026
…tup-rhel-rebuilds.sh` for wheel verification (#48748)
### Rationale for this change
GH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
# include <opentelemetry/context/propagation/text_map_propagator.h>
# include <opentelemetry/trace/context.h>
# include <opentelemetry/trace/propagation/http_trace_context.h>
# include <opentelemetry/trace/semantic_conventions.h>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@pitrou, this change looks more or less completely unrelated to the move to C++20? Presumably it's just because you started building against newer otel which doesn't have this header anymore? We're hitting this on all versions before v23 when building against otel 1.25

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, you're right, I hit this while working on the PR. But the otel bump might have been tied to some other dependency changes required for the PR as well.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj
### What changes are included in this PR?
1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17
2. C++-level fixes to ensure compilation succeeds:
* Workarounds for deprecation of atomic access on `std::shared_ptr<T>` (the replacement `std::atomic<std::shared_ptr<T>>` is unfortunately not supported in all standard library implementations)
* Workaround for [Abseil ABI issues](abseil/abseil-cpp#1624)
* Trivial update to `arrow/util/string.h` to call a C++20 API (to validate that C++20 is actually enabled)
3. CI configuration updates to get enough C++20 support on the various platforms:
* Bump default clang and LLVM versions to 18
* Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes, Arrow C++ will now require a C++20-compliant compiler.
* GitHub Issue: apache#45885
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ase/setup-rhel-rebuilds.sh` for wheel verification (apache#48748)
### Rationale for this change
apacheGH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: apache#48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@pitrou@jonkeane@WillAyd@kou@zanmato1984@mapleFU@h-vetinari
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

GH-45885: [C++] Require C++20 - #48414

Merged
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20
Dec 18, 2025
Merged

GH-45885: [C++] Require C++20#48414
pitrou merged 1 commit into
apache:mainfrom
pitrou:gh45885-cxx20

Conversation

@pitrou

@pitroupitrou commented Dec 9, 2025

Copy link
Copy Markdown
Member

Rationale for this change

We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj

What changes are included in this PR?

  1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17

  2. C++-level fixes to ensure compilation succeeds:

    • Workarounds for deprecation of atomic access on std::shared_ptr<T> (the replacement std::atomic<std::shared_ptr<T>> is unfortunately not supported in all standard library implementations)
    • Workaround for Abseil ABI issues
    • Trivial update to arrow/util/string.h to call a C++20 API (to validate that C++20 is actually enabled)
  3. CI configuration updates to get enough C++20 support on the various platforms:

    • Bump default clang and LLVM versions to 18
    • Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)

Are these changes tested?

Yes.

Are there any user-facing changes?

Yes, Arrow C++ will now require a C++20-compliant compiler.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp

@github-actions

This comment was marked as outdated.

@pitroupitrou added the CI: Extra: Package: Linux Run extra Linux Packages CI label Dec 9, 2025
@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit wheelcp313*

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g python

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g r

@github-actions

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

This comment was marked as outdated.

@github-actions

This comment was marked as outdated.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g c-glib -g ruby -g r

@pitrou

Copy link
Copy Markdown
MemberAuthor

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit test-debian-experimental-cpp-gcc-15

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-93c23edec8

TaskStatus
test-debian-experimental-cpp-gcc-15GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

@github-actions crossbow submit -g cpp -g python

@github-actions

Copy link
Copy Markdown

Revision: 6fa77b0

Submitted crossbow builds: ursacomputing/crossbow @ actions-e5d2f93e4c

TaskStatus
example-cpp-minimal-build-staticGitHub Actions
example-cpp-minimal-build-static-system-dependencyGitHub Actions
example-cpp-tutorialGitHub Actions
example-python-minimal-build-fedora-condaGitHub Actions
example-python-minimal-build-ubuntu-venvGitHub Actions
test-build-cpp-fuzzGitHub Actions
test-conda-cppGitHub Actions
test-conda-cpp-valgrindGitHub Actions
test-conda-python-3.10GitHub Actions
test-conda-python-3.10-hdfs-2.9.2GitHub Actions
test-conda-python-3.10-hdfs-3.2.1GitHub Actions
test-conda-python-3.10-pandas-1.3.4-numpy-1.21.2GitHub Actions
test-conda-python-3.11GitHub Actions
test-conda-python-3.11-dask-latestGitHub Actions
test-conda-python-3.11-dask-upstream_develGitHub Actions
test-conda-python-3.11-hypothesisGitHub Actions
test-conda-python-3.11-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.11-spark-masterGitHub Actions
test-conda-python-3.12GitHub Actions
test-conda-python-3.12-cpython-debugGitHub Actions
test-conda-python-3.12-pandas-latest-numpy-1.26GitHub Actions
test-conda-python-3.12-pandas-latest-numpy-latestGitHub Actions
test-conda-python-3.13GitHub Actions
test-conda-python-3.13-pandas-nightly-numpy-nightlyGitHub Actions
test-conda-python-3.13-pandas-upstream_devel-numpy-nightlyGitHub Actions
test-conda-python-3.14GitHub Actions
test-conda-python-emscriptenGitHub Actions
test-cuda-cpp-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-cpp-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-cuda-python-ubuntu-22.04-cuda-11.7.1GitHub Actions
test-cuda-python-ubuntu-24.04-cuda-13.0.2GitHub Actions
test-debian-12-cpp-amd64GitHub Actions
test-debian-12-cpp-i386GitHub Actions
test-debian-12-python-3-amd64GitHub Actions
test-debian-12-python-3-i386GitHub Actions
test-debian-experimental-cpp-gcc-15GitHub Actions
test-fedora-42-cppGitHub Actions
test-fedora-42-python-3GitHub Actions
test-ubuntu-22.04-cppGitHub Actions
test-ubuntu-22.04-cpp-20GitHub Actions
test-ubuntu-22.04-cpp-bundledGitHub Actions
test-ubuntu-22.04-cpp-emscriptenGitHub Actions
test-ubuntu-22.04-cpp-no-threadingGitHub Actions
test-ubuntu-22.04-python-3GitHub Actions
test-ubuntu-22.04-python-313-freethreadingGitHub Actions
test-ubuntu-24.04-cppGitHub Actions
test-ubuntu-24.04-cpp-bundled-offlineGitHub Actions
test-ubuntu-24.04-cpp-gcc-13-bundledGitHub Actions
test-ubuntu-24.04-cpp-gcc-14GitHub Actions
test-ubuntu-24.04-cpp-minimal-with-formatsGitHub Actions
test-ubuntu-24.04-cpp-thread-sanitizerGitHub Actions
test-ubuntu-24.04-python-3GitHub Actions

@pitrou

Copy link
Copy Markdown
MemberAuthor

Well, let's merge this now.

@pitrou
pitrou merged commit 30809c6 into apache:mainDec 18, 2025
66 of 68 checks passed
@pitroupitrou removed the awaiting change review Awaiting change review label Dec 18, 2025
@pitrou
pitrou deleted the gh45885-cxx20 branch December 18, 2025 16:17
@@ -1181,7 +1181,7 @@ endif()
foreach(LIB_TARGET ${ARROW_LIBRARIES})
target_compile_definitions(${LIB_TARGET} PRIVATE ARROW_EXPORTING)
# C++17 is required to compile against Arrow C++ headers and libraries

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this "C++17" too?

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Oops, sorry, it's intriguing that I overlooked these two occurrences.

@@ -131,7 +131,7 @@ libmexclass_client_add_proxy_library(
LINK_LIBRARIES arrow_shared
)
# Use C++17

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

Could you update this too?

@github-actionsgithub-actionsBot added the awaiting changes Awaiting changes label Dec 19, 2025
@kou

kou commented Dec 19, 2025

Copy link
Copy Markdown
Member

I'm not sure what it's for, but I've re-enabled the test-debian-experimental-cpp-gcc-15 job.

It's for the latest GCC. We should bump this GCC version when new GCC is released. Debian experimental will provide it. For example, GCC 16 isn't released yet but it's already provided: https://packages.debian.org/search?keywords=gcc-16

thisisnic pushed a commit that referenced this pull request Dec 19, 2025
### Rationale for this change
As a followup to #48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
jonahkel pushed a commit to jonahkel/arrow that referenced this pull request Dec 22, 2025
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
@conbench-apache-arrow

Copy link
Copy Markdown

After merging your PR, Conbench analyzed the 3 benchmarking runs that have been run so far on merge-commit 30809c6.

There were no benchmark performance regressions. 🎉

The full Conbench report has more details. It also includes information about 474 possible false positives for unstable benchmarks that are known to sometimes produce them.

raulcd pushed a commit that referenced this pull request Jan 7, 2026
…tup-rhel-rebuilds.sh` for wheel verification (#48748)
### Rationale for this change
GH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: #48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
# include <opentelemetry/context/propagation/text_map_propagator.h>
# include <opentelemetry/trace/context.h>
# include <opentelemetry/trace/propagation/http_trace_context.h>
# include <opentelemetry/trace/semantic_conventions.h>

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

@pitrou, this change looks more or less completely unrelated to the move to C++20? Presumably it's just because you started building against newer otel which doesn't have this header anymore? We're hitting this on all versions before v23 when building against otel 1.25

Copy link
Copy Markdown
MemberAuthor

Choose a reason for hiding this comment

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

Yes, you're right, I hit this while working on the PR. But the otel bump might have been tied to some other dependency changes required for the PR as well.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
We decided to migrate Arrow C++ to C++20 in this discussion: https://lists.apache.org/thread/48zlj0dn2y0f53y2k37qsr90y781wfnj
### What changes are included in this PR?
1. Build configuration updates (CMake files etc.) to build with C++20 instead of C++17
2. C++-level fixes to ensure compilation succeeds:
* Workarounds for deprecation of atomic access on `std::shared_ptr<T>` (the replacement `std::atomic<std::shared_ptr<T>>` is unfortunately not supported in all standard library implementations)
* Workaround for [Abseil ABI issues](abseil/abseil-cpp#1624)
* Trivial update to `arrow/util/string.h` to call a C++20 API (to validate that C++20 is actually enabled)
3. CI configuration updates to get enough C++20 support on the various platforms:
* Bump default clang and LLVM versions to 18
* Use AlmaLinux 10 for release verification (AlmaLinux 8 is still tested on other CI builds)
### Are these changes tested?
Yes.
### Are there any user-facing changes?
Yes, Arrow C++ will now require a C++20-compliant compiler.
* GitHub Issue: apache#45885
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Antoine Pitrou <antoine@python.org>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
### Rationale for this change
As a followup to apache#48414, fix the comments that I had forgotten to update.
### Are these changes tested?
No testing required.
### Are there any user-facing changes?
No.
Authored-by: Antoine Pitrou <antoine@python.org>
Signed-off-by: Nic Crane <thisisnic@gmail.com>
Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
…ase/setup-rhel-rebuilds.sh` for wheel verification (apache#48748)
### Rationale for this change
apacheGH-48414 removed AlmaLinux 8 support from `dev/release/setup-rhel-rebuilds.sh`. But we need to restore it for wheel verification. ### What changes are included in this PR?
* Enable `powertools` repository for some development packages
* Use Python 3.12 explicitly
### Are these changes tested?
Yes.
### Are there any user-facing changes?
No.
* GitHub Issue: apache#48736
Lead-authored-by: Sutou Kouhei <kou@clear-code.com>
Co-authored-by: Sutou Kouhei <kou@cozmixng.org>
Signed-off-by: Raúl Cumplido <raulcumplido@gmail.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants

@pitrou@jonkeane@WillAyd@kou@zanmato1984@mapleFU@h-vetinari