GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20 - #43094

Merged
kou merged 2 commits into
apache:mainfrom
ben-freist:main
Jul 12, 2024
Merged

GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20#43094
kou merged 2 commits into
apache:mainfrom
ben-freist:main

Conversation

@ben-freist

@ben-freistben-freist commented Jul 1, 2024

Copy link
Copy Markdown
Contributor

Rationale for this change

We can't build with libc++ and C++20:

CMake command line:

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Error log:

In file included from ~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz.cpp:90:
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz_private.h:295:12: error: use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'const sys_seconds' (aka 'const time_point<std::chrono::system_clock, std::chrono::duration<long long, std::ratio<1, 1>>>'))
295 | os << t.timepoint << "Z ";
| ~~ ^ ~~~~~~~~~~~
/usr/lib/llvm-17/bin/../include/c++/v1/__chrono/ostream.h:46:1: note: candidate function [with _CharT = char, _Traits = std::char_traits<char>, _Duration = std::chrono::duration<long long>]
46 | operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) {
| ^
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/date.h:4214:1: note: candidate function [with CharT = char, Traits = std::char_traits<char>, Duration = std::chrono::duration<long long>]
4214 | operator<<(std::basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp)

What changes are included in this PR?

Update the bundled vendor/datetime because the upstream has changes for this case:
HowardHinnant/date#827

Are these changes tested?

Are there any user-facing changes?

@github-actions

Copy link
Copy Markdown

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

@ben-freistben-freist changed the title fix c++20 buildGH-43095: [C++] unblock arrow for C++ 20Jul 1, 2024
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #43095has been automatically assigned in GitHub to PR creator.

@kou

kou commented Jul 2, 2024

Copy link
Copy Markdown
Member

Hmm. Our C++20 CI job doesn't report this error: https://github.com/ursacomputing/crossbow/actions/runs/9736169142/job/26866418106

What is the difference between the job and you? g++ and clang++?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Thank you for the quick response! I can reproduce the behaviour like this

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Where toolchain.cmake looks like this:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR X86)
set(CMAKE_C_COMPILER clang-17 CACHE INTERNAL "C compiler")
set(CMAKE_CXX_COMPILER clang++-17 CACHE INTERNAL "C++ compiler")

Looks like libstdc++ doesn't have the stream insertion operators yet.

@ben-freist

ben-freist commented Jul 2, 2024

Copy link
Copy Markdown
ContributorAuthor

And it doesn't look like they are coming to libstdc++ soon, this compiles with gcc trunk, but fails when you select clang and use libc++: https://godbolt.org/z/ehnTdsK1e

Somehow reproducing it like this only works for clang-17, but the problem is also there for clang-18.

@koukou changed the title GH-43095: [C++] unblock arrow for C++ 20GH-43095: [C++] Add support for building with libc++ and C++20Jul 4, 2024
@kou

kou commented Jul 4, 2024

Copy link
Copy Markdown
Member

OK.
The upstream of cpp/src/arrow/vendored/datetime/ is https://github.com/HowardHinnant/date . Could you fix this case in the upstream and then update our vendored version like #35612?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.
Do you think it's good enough to handle it like this for now?

@kou

kou commented Jul 6, 2024

Copy link
Copy Markdown
Member

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.

How can we do this? Does using arrow_vendored::date::year_month_day = std::chrono::year_month_day; or something work?

Do you think it's good enough to handle it like this for now?

What does "this" refer? Changing our bundled date library directly? If so, it's not acceptable. We don't want to maintain these changes in our side. We should upstream these changes.

@ben-freist

ben-freist commented Jul 11, 2024

Copy link
Copy Markdown
ContributorAuthor

I've bumped the version of vendored/datetime. At the moment the arrow specific patches are in a separate commit.
No changes in the upstream library were necessary.

@kou

kou commented Jul 11, 2024

Copy link
Copy Markdown
Member

The upstream already has changes for this, right?

@koukou changed the title GH-43095: [C++] Add support for building with libc++ and C++20GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20Jul 11, 2024
@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Yep, I think this is the relevant PR: HowardHinnant/date#827

kou
kou approved these changes Jul 12, 2024

@koukou left a comment

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.

+1

@kou
kou merged commit 7184150 into apache:mainJul 12, 2024
@koukou removed the awaiting review Awaiting review label Jul 12, 2024
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Jul 12, 2024
@conbench-apache-arrow

Copy link
Copy Markdown

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

There were no benchmark performance regressions. 🎉

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

@ben-freist

ben-freist commented Oct 2, 2024

Copy link
Copy Markdown
ContributorAuthor

Hey,
thank you for merging this!
It would be nice if this change could be pushed to a new conan recipe. Do you know when this might happen?
Should I create a separate issue for that?

@kou

kou commented Oct 3, 2024

Copy link
Copy Markdown
Member

We'll release 18.0.0 in this month. Then conan will add support for 18.0.0.

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.

2 participants

@ben-freist@kou
, '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-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20 - #43094

Merged
kou merged 2 commits into
apache:mainfrom
ben-freist:main
Jul 12, 2024
Merged

GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20#43094
kou merged 2 commits into
apache:mainfrom
ben-freist:main

Conversation

@ben-freist

@ben-freistben-freist commented Jul 1, 2024

Copy link
Copy Markdown
Contributor

Rationale for this change

We can't build with libc++ and C++20:

CMake command line:

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Error log:

In file included from ~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz.cpp:90:
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz_private.h:295:12: error: use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'const sys_seconds' (aka 'const time_point<std::chrono::system_clock, std::chrono::duration<long long, std::ratio<1, 1>>>'))
295 | os << t.timepoint << "Z ";
| ~~ ^ ~~~~~~~~~~~
/usr/lib/llvm-17/bin/../include/c++/v1/__chrono/ostream.h:46:1: note: candidate function [with _CharT = char, _Traits = std::char_traits<char>, _Duration = std::chrono::duration<long long>]
46 | operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) {
| ^
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/date.h:4214:1: note: candidate function [with CharT = char, Traits = std::char_traits<char>, Duration = std::chrono::duration<long long>]
4214 | operator<<(std::basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp)

What changes are included in this PR?

Update the bundled vendor/datetime because the upstream has changes for this case:
HowardHinnant/date#827

Are these changes tested?

Are there any user-facing changes?

@github-actions

Copy link
Copy Markdown

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

@ben-freistben-freist changed the title fix c++20 buildGH-43095: [C++] unblock arrow for C++ 20Jul 1, 2024
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #43095has been automatically assigned in GitHub to PR creator.

@kou

kou commented Jul 2, 2024

Copy link
Copy Markdown
Member

Hmm. Our C++20 CI job doesn't report this error: https://github.com/ursacomputing/crossbow/actions/runs/9736169142/job/26866418106

What is the difference between the job and you? g++ and clang++?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Thank you for the quick response! I can reproduce the behaviour like this

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Where toolchain.cmake looks like this:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR X86)
set(CMAKE_C_COMPILER clang-17 CACHE INTERNAL "C compiler")
set(CMAKE_CXX_COMPILER clang++-17 CACHE INTERNAL "C++ compiler")

Looks like libstdc++ doesn't have the stream insertion operators yet.

@ben-freist

ben-freist commented Jul 2, 2024

Copy link
Copy Markdown
ContributorAuthor

And it doesn't look like they are coming to libstdc++ soon, this compiles with gcc trunk, but fails when you select clang and use libc++: https://godbolt.org/z/ehnTdsK1e

Somehow reproducing it like this only works for clang-17, but the problem is also there for clang-18.

@koukou changed the title GH-43095: [C++] unblock arrow for C++ 20GH-43095: [C++] Add support for building with libc++ and C++20Jul 4, 2024
@kou

kou commented Jul 4, 2024

Copy link
Copy Markdown
Member

OK.
The upstream of cpp/src/arrow/vendored/datetime/ is https://github.com/HowardHinnant/date . Could you fix this case in the upstream and then update our vendored version like #35612?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.
Do you think it's good enough to handle it like this for now?

@kou

kou commented Jul 6, 2024

Copy link
Copy Markdown
Member

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.

How can we do this? Does using arrow_vendored::date::year_month_day = std::chrono::year_month_day; or something work?

Do you think it's good enough to handle it like this for now?

What does "this" refer? Changing our bundled date library directly? If so, it's not acceptable. We don't want to maintain these changes in our side. We should upstream these changes.

@ben-freist

ben-freist commented Jul 11, 2024

Copy link
Copy Markdown
ContributorAuthor

I've bumped the version of vendored/datetime. At the moment the arrow specific patches are in a separate commit.
No changes in the upstream library were necessary.

@kou

kou commented Jul 11, 2024

Copy link
Copy Markdown
Member

The upstream already has changes for this, right?

@koukou changed the title GH-43095: [C++] Add support for building with libc++ and C++20GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20Jul 11, 2024
@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Yep, I think this is the relevant PR: HowardHinnant/date#827

kou
kou approved these changes Jul 12, 2024

@koukou left a comment

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.

+1

@kou
kou merged commit 7184150 into apache:mainJul 12, 2024
@koukou removed the awaiting review Awaiting review label Jul 12, 2024
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Jul 12, 2024
@conbench-apache-arrow

Copy link
Copy Markdown

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

There were no benchmark performance regressions. 🎉

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

@ben-freist

ben-freist commented Oct 2, 2024

Copy link
Copy Markdown
ContributorAuthor

Hey,
thank you for merging this!
It would be nice if this change could be pushed to a new conan recipe. Do you know when this might happen?
Should I create a separate issue for that?

@kou

kou commented Oct 3, 2024

Copy link
Copy Markdown
Member

We'll release 18.0.0 in this month. Then conan will add support for 18.0.0.

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.

2 participants

@ben-freist@kou
, '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-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20 - #43094

Merged
kou merged 2 commits into
apache:mainfrom
ben-freist:main
Jul 12, 2024
Merged

GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20#43094
kou merged 2 commits into
apache:mainfrom
ben-freist:main

Conversation

@ben-freist

@ben-freistben-freist commented Jul 1, 2024

Copy link
Copy Markdown
Contributor

Rationale for this change

We can't build with libc++ and C++20:

CMake command line:

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Error log:

In file included from ~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz.cpp:90:
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz_private.h:295:12: error: use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'const sys_seconds' (aka 'const time_point<std::chrono::system_clock, std::chrono::duration<long long, std::ratio<1, 1>>>'))
295 | os << t.timepoint << "Z ";
| ~~ ^ ~~~~~~~~~~~
/usr/lib/llvm-17/bin/../include/c++/v1/__chrono/ostream.h:46:1: note: candidate function [with _CharT = char, _Traits = std::char_traits<char>, _Duration = std::chrono::duration<long long>]
46 | operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) {
| ^
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/date.h:4214:1: note: candidate function [with CharT = char, Traits = std::char_traits<char>, Duration = std::chrono::duration<long long>]
4214 | operator<<(std::basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp)

What changes are included in this PR?

Update the bundled vendor/datetime because the upstream has changes for this case:
HowardHinnant/date#827

Are these changes tested?

Are there any user-facing changes?

@github-actions

Copy link
Copy Markdown

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

@ben-freistben-freist changed the title fix c++20 buildGH-43095: [C++] unblock arrow for C++ 20Jul 1, 2024
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #43095has been automatically assigned in GitHub to PR creator.

@kou

kou commented Jul 2, 2024

Copy link
Copy Markdown
Member

Hmm. Our C++20 CI job doesn't report this error: https://github.com/ursacomputing/crossbow/actions/runs/9736169142/job/26866418106

What is the difference between the job and you? g++ and clang++?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Thank you for the quick response! I can reproduce the behaviour like this

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Where toolchain.cmake looks like this:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR X86)
set(CMAKE_C_COMPILER clang-17 CACHE INTERNAL "C compiler")
set(CMAKE_CXX_COMPILER clang++-17 CACHE INTERNAL "C++ compiler")

Looks like libstdc++ doesn't have the stream insertion operators yet.

@ben-freist

ben-freist commented Jul 2, 2024

Copy link
Copy Markdown
ContributorAuthor

And it doesn't look like they are coming to libstdc++ soon, this compiles with gcc trunk, but fails when you select clang and use libc++: https://godbolt.org/z/ehnTdsK1e

Somehow reproducing it like this only works for clang-17, but the problem is also there for clang-18.

@koukou changed the title GH-43095: [C++] unblock arrow for C++ 20GH-43095: [C++] Add support for building with libc++ and C++20Jul 4, 2024
@kou

kou commented Jul 4, 2024

Copy link
Copy Markdown
Member

OK.
The upstream of cpp/src/arrow/vendored/datetime/ is https://github.com/HowardHinnant/date . Could you fix this case in the upstream and then update our vendored version like #35612?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.
Do you think it's good enough to handle it like this for now?

@kou

kou commented Jul 6, 2024

Copy link
Copy Markdown
Member

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.

How can we do this? Does using arrow_vendored::date::year_month_day = std::chrono::year_month_day; or something work?

Do you think it's good enough to handle it like this for now?

What does "this" refer? Changing our bundled date library directly? If so, it's not acceptable. We don't want to maintain these changes in our side. We should upstream these changes.

@ben-freist

ben-freist commented Jul 11, 2024

Copy link
Copy Markdown
ContributorAuthor

I've bumped the version of vendored/datetime. At the moment the arrow specific patches are in a separate commit.
No changes in the upstream library were necessary.

@kou

kou commented Jul 11, 2024

Copy link
Copy Markdown
Member

The upstream already has changes for this, right?

@koukou changed the title GH-43095: [C++] Add support for building with libc++ and C++20GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20Jul 11, 2024
@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Yep, I think this is the relevant PR: HowardHinnant/date#827

kou
kou approved these changes Jul 12, 2024

@koukou left a comment

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.

+1

@kou
kou merged commit 7184150 into apache:mainJul 12, 2024
@koukou removed the awaiting review Awaiting review label Jul 12, 2024
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Jul 12, 2024
@conbench-apache-arrow

Copy link
Copy Markdown

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

There were no benchmark performance regressions. 🎉

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

@ben-freist

ben-freist commented Oct 2, 2024

Copy link
Copy Markdown
ContributorAuthor

Hey,
thank you for merging this!
It would be nice if this change could be pushed to a new conan recipe. Do you know when this might happen?
Should I create a separate issue for that?

@kou

kou commented Oct 3, 2024

Copy link
Copy Markdown
Member

We'll release 18.0.0 in this month. Then conan will add support for 18.0.0.

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.

2 participants

@ben-freist@kou
, '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-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20 - #43094

Merged
kou merged 2 commits into
apache:mainfrom
ben-freist:main
Jul 12, 2024
Merged

GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20#43094
kou merged 2 commits into
apache:mainfrom
ben-freist:main

Conversation

@ben-freist

@ben-freistben-freist commented Jul 1, 2024

Copy link
Copy Markdown
Contributor

Rationale for this change

We can't build with libc++ and C++20:

CMake command line:

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Error log:

In file included from ~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz.cpp:90:
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz_private.h:295:12: error: use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'const sys_seconds' (aka 'const time_point<std::chrono::system_clock, std::chrono::duration<long long, std::ratio<1, 1>>>'))
295 | os << t.timepoint << "Z ";
| ~~ ^ ~~~~~~~~~~~
/usr/lib/llvm-17/bin/../include/c++/v1/__chrono/ostream.h:46:1: note: candidate function [with _CharT = char, _Traits = std::char_traits<char>, _Duration = std::chrono::duration<long long>]
46 | operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) {
| ^
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/date.h:4214:1: note: candidate function [with CharT = char, Traits = std::char_traits<char>, Duration = std::chrono::duration<long long>]
4214 | operator<<(std::basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp)

What changes are included in this PR?

Update the bundled vendor/datetime because the upstream has changes for this case:
HowardHinnant/date#827

Are these changes tested?

Are there any user-facing changes?

@github-actions

Copy link
Copy Markdown

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

@ben-freistben-freist changed the title fix c++20 buildGH-43095: [C++] unblock arrow for C++ 20Jul 1, 2024
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #43095has been automatically assigned in GitHub to PR creator.

@kou

kou commented Jul 2, 2024

Copy link
Copy Markdown
Member

Hmm. Our C++20 CI job doesn't report this error: https://github.com/ursacomputing/crossbow/actions/runs/9736169142/job/26866418106

What is the difference between the job and you? g++ and clang++?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Thank you for the quick response! I can reproduce the behaviour like this

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Where toolchain.cmake looks like this:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR X86)
set(CMAKE_C_COMPILER clang-17 CACHE INTERNAL "C compiler")
set(CMAKE_CXX_COMPILER clang++-17 CACHE INTERNAL "C++ compiler")

Looks like libstdc++ doesn't have the stream insertion operators yet.

@ben-freist

ben-freist commented Jul 2, 2024

Copy link
Copy Markdown
ContributorAuthor

And it doesn't look like they are coming to libstdc++ soon, this compiles with gcc trunk, but fails when you select clang and use libc++: https://godbolt.org/z/ehnTdsK1e

Somehow reproducing it like this only works for clang-17, but the problem is also there for clang-18.

@koukou changed the title GH-43095: [C++] unblock arrow for C++ 20GH-43095: [C++] Add support for building with libc++ and C++20Jul 4, 2024
@kou

kou commented Jul 4, 2024

Copy link
Copy Markdown
Member

OK.
The upstream of cpp/src/arrow/vendored/datetime/ is https://github.com/HowardHinnant/date . Could you fix this case in the upstream and then update our vendored version like #35612?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.
Do you think it's good enough to handle it like this for now?

@kou

kou commented Jul 6, 2024

Copy link
Copy Markdown
Member

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.

How can we do this? Does using arrow_vendored::date::year_month_day = std::chrono::year_month_day; or something work?

Do you think it's good enough to handle it like this for now?

What does "this" refer? Changing our bundled date library directly? If so, it's not acceptable. We don't want to maintain these changes in our side. We should upstream these changes.

@ben-freist

ben-freist commented Jul 11, 2024

Copy link
Copy Markdown
ContributorAuthor

I've bumped the version of vendored/datetime. At the moment the arrow specific patches are in a separate commit.
No changes in the upstream library were necessary.

@kou

kou commented Jul 11, 2024

Copy link
Copy Markdown
Member

The upstream already has changes for this, right?

@koukou changed the title GH-43095: [C++] Add support for building with libc++ and C++20GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20Jul 11, 2024
@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Yep, I think this is the relevant PR: HowardHinnant/date#827

kou
kou approved these changes Jul 12, 2024

@koukou left a comment

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.

+1

@kou
kou merged commit 7184150 into apache:mainJul 12, 2024
@koukou removed the awaiting review Awaiting review label Jul 12, 2024
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Jul 12, 2024
@conbench-apache-arrow

Copy link
Copy Markdown

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

There were no benchmark performance regressions. 🎉

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

@ben-freist

ben-freist commented Oct 2, 2024

Copy link
Copy Markdown
ContributorAuthor

Hey,
thank you for merging this!
It would be nice if this change could be pushed to a new conan recipe. Do you know when this might happen?
Should I create a separate issue for that?

@kou

kou commented Oct 3, 2024

Copy link
Copy Markdown
Member

We'll release 18.0.0 in this month. Then conan will add support for 18.0.0.

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.

2 participants

@ben-freist@kou
, '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-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20 - #43094

Merged
kou merged 2 commits into
apache:mainfrom
ben-freist:main
Jul 12, 2024
Merged

GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20#43094
kou merged 2 commits into
apache:mainfrom
ben-freist:main

Conversation

@ben-freist

@ben-freistben-freist commented Jul 1, 2024

Copy link
Copy Markdown
Contributor

Rationale for this change

We can't build with libc++ and C++20:

CMake command line:

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Error log:

In file included from ~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz.cpp:90:
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz_private.h:295:12: error: use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'const sys_seconds' (aka 'const time_point<std::chrono::system_clock, std::chrono::duration<long long, std::ratio<1, 1>>>'))
295 | os << t.timepoint << "Z ";
| ~~ ^ ~~~~~~~~~~~
/usr/lib/llvm-17/bin/../include/c++/v1/__chrono/ostream.h:46:1: note: candidate function [with _CharT = char, _Traits = std::char_traits<char>, _Duration = std::chrono::duration<long long>]
46 | operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) {
| ^
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/date.h:4214:1: note: candidate function [with CharT = char, Traits = std::char_traits<char>, Duration = std::chrono::duration<long long>]
4214 | operator<<(std::basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp)

What changes are included in this PR?

Update the bundled vendor/datetime because the upstream has changes for this case:
HowardHinnant/date#827

Are these changes tested?

Are there any user-facing changes?

@github-actions

Copy link
Copy Markdown

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

@ben-freistben-freist changed the title fix c++20 buildGH-43095: [C++] unblock arrow for C++ 20Jul 1, 2024
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #43095has been automatically assigned in GitHub to PR creator.

@kou

kou commented Jul 2, 2024

Copy link
Copy Markdown
Member

Hmm. Our C++20 CI job doesn't report this error: https://github.com/ursacomputing/crossbow/actions/runs/9736169142/job/26866418106

What is the difference between the job and you? g++ and clang++?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Thank you for the quick response! I can reproduce the behaviour like this

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Where toolchain.cmake looks like this:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR X86)
set(CMAKE_C_COMPILER clang-17 CACHE INTERNAL "C compiler")
set(CMAKE_CXX_COMPILER clang++-17 CACHE INTERNAL "C++ compiler")

Looks like libstdc++ doesn't have the stream insertion operators yet.

@ben-freist

ben-freist commented Jul 2, 2024

Copy link
Copy Markdown
ContributorAuthor

And it doesn't look like they are coming to libstdc++ soon, this compiles with gcc trunk, but fails when you select clang and use libc++: https://godbolt.org/z/ehnTdsK1e

Somehow reproducing it like this only works for clang-17, but the problem is also there for clang-18.

@koukou changed the title GH-43095: [C++] unblock arrow for C++ 20GH-43095: [C++] Add support for building with libc++ and C++20Jul 4, 2024
@kou

kou commented Jul 4, 2024

Copy link
Copy Markdown
Member

OK.
The upstream of cpp/src/arrow/vendored/datetime/ is https://github.com/HowardHinnant/date . Could you fix this case in the upstream and then update our vendored version like #35612?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.
Do you think it's good enough to handle it like this for now?

@kou

kou commented Jul 6, 2024

Copy link
Copy Markdown
Member

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.

How can we do this? Does using arrow_vendored::date::year_month_day = std::chrono::year_month_day; or something work?

Do you think it's good enough to handle it like this for now?

What does "this" refer? Changing our bundled date library directly? If so, it's not acceptable. We don't want to maintain these changes in our side. We should upstream these changes.

@ben-freist

ben-freist commented Jul 11, 2024

Copy link
Copy Markdown
ContributorAuthor

I've bumped the version of vendored/datetime. At the moment the arrow specific patches are in a separate commit.
No changes in the upstream library were necessary.

@kou

kou commented Jul 11, 2024

Copy link
Copy Markdown
Member

The upstream already has changes for this, right?

@koukou changed the title GH-43095: [C++] Add support for building with libc++ and C++20GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20Jul 11, 2024
@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Yep, I think this is the relevant PR: HowardHinnant/date#827

kou
kou approved these changes Jul 12, 2024

@koukou left a comment

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.

+1

@kou
kou merged commit 7184150 into apache:mainJul 12, 2024
@koukou removed the awaiting review Awaiting review label Jul 12, 2024
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Jul 12, 2024
@conbench-apache-arrow

Copy link
Copy Markdown

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

There were no benchmark performance regressions. 🎉

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

@ben-freist

ben-freist commented Oct 2, 2024

Copy link
Copy Markdown
ContributorAuthor

Hey,
thank you for merging this!
It would be nice if this change could be pushed to a new conan recipe. Do you know when this might happen?
Should I create a separate issue for that?

@kou

kou commented Oct 3, 2024

Copy link
Copy Markdown
Member

We'll release 18.0.0 in this month. Then conan will add support for 18.0.0.

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.

2 participants

@ben-freist@kou
, '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-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20 - #43094

Merged
kou merged 2 commits into
apache:mainfrom
ben-freist:main
Jul 12, 2024
Merged

GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20#43094
kou merged 2 commits into
apache:mainfrom
ben-freist:main

Conversation

@ben-freist

@ben-freistben-freist commented Jul 1, 2024

Copy link
Copy Markdown
Contributor

Rationale for this change

We can't build with libc++ and C++20:

CMake command line:

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Error log:

In file included from ~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz.cpp:90:
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz_private.h:295:12: error: use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'const sys_seconds' (aka 'const time_point<std::chrono::system_clock, std::chrono::duration<long long, std::ratio<1, 1>>>'))
295 | os << t.timepoint << "Z ";
| ~~ ^ ~~~~~~~~~~~
/usr/lib/llvm-17/bin/../include/c++/v1/__chrono/ostream.h:46:1: note: candidate function [with _CharT = char, _Traits = std::char_traits<char>, _Duration = std::chrono::duration<long long>]
46 | operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) {
| ^
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/date.h:4214:1: note: candidate function [with CharT = char, Traits = std::char_traits<char>, Duration = std::chrono::duration<long long>]
4214 | operator<<(std::basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp)

What changes are included in this PR?

Update the bundled vendor/datetime because the upstream has changes for this case:
HowardHinnant/date#827

Are these changes tested?

Are there any user-facing changes?

@github-actions

Copy link
Copy Markdown

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

@ben-freistben-freist changed the title fix c++20 buildGH-43095: [C++] unblock arrow for C++ 20Jul 1, 2024
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #43095has been automatically assigned in GitHub to PR creator.

@kou

kou commented Jul 2, 2024

Copy link
Copy Markdown
Member

Hmm. Our C++20 CI job doesn't report this error: https://github.com/ursacomputing/crossbow/actions/runs/9736169142/job/26866418106

What is the difference between the job and you? g++ and clang++?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Thank you for the quick response! I can reproduce the behaviour like this

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Where toolchain.cmake looks like this:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR X86)
set(CMAKE_C_COMPILER clang-17 CACHE INTERNAL "C compiler")
set(CMAKE_CXX_COMPILER clang++-17 CACHE INTERNAL "C++ compiler")

Looks like libstdc++ doesn't have the stream insertion operators yet.

@ben-freist

ben-freist commented Jul 2, 2024

Copy link
Copy Markdown
ContributorAuthor

And it doesn't look like they are coming to libstdc++ soon, this compiles with gcc trunk, but fails when you select clang and use libc++: https://godbolt.org/z/ehnTdsK1e

Somehow reproducing it like this only works for clang-17, but the problem is also there for clang-18.

@koukou changed the title GH-43095: [C++] unblock arrow for C++ 20GH-43095: [C++] Add support for building with libc++ and C++20Jul 4, 2024
@kou

kou commented Jul 4, 2024

Copy link
Copy Markdown
Member

OK.
The upstream of cpp/src/arrow/vendored/datetime/ is https://github.com/HowardHinnant/date . Could you fix this case in the upstream and then update our vendored version like #35612?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.
Do you think it's good enough to handle it like this for now?

@kou

kou commented Jul 6, 2024

Copy link
Copy Markdown
Member

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.

How can we do this? Does using arrow_vendored::date::year_month_day = std::chrono::year_month_day; or something work?

Do you think it's good enough to handle it like this for now?

What does "this" refer? Changing our bundled date library directly? If so, it's not acceptable. We don't want to maintain these changes in our side. We should upstream these changes.

@ben-freist

ben-freist commented Jul 11, 2024

Copy link
Copy Markdown
ContributorAuthor

I've bumped the version of vendored/datetime. At the moment the arrow specific patches are in a separate commit.
No changes in the upstream library were necessary.

@kou

kou commented Jul 11, 2024

Copy link
Copy Markdown
Member

The upstream already has changes for this, right?

@koukou changed the title GH-43095: [C++] Add support for building with libc++ and C++20GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20Jul 11, 2024
@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Yep, I think this is the relevant PR: HowardHinnant/date#827

kou
kou approved these changes Jul 12, 2024

@koukou left a comment

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.

+1

@kou
kou merged commit 7184150 into apache:mainJul 12, 2024
@koukou removed the awaiting review Awaiting review label Jul 12, 2024
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Jul 12, 2024
@conbench-apache-arrow

Copy link
Copy Markdown

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

There were no benchmark performance regressions. 🎉

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

@ben-freist

ben-freist commented Oct 2, 2024

Copy link
Copy Markdown
ContributorAuthor

Hey,
thank you for merging this!
It would be nice if this change could be pushed to a new conan recipe. Do you know when this might happen?
Should I create a separate issue for that?

@kou

kou commented Oct 3, 2024

Copy link
Copy Markdown
Member

We'll release 18.0.0 in this month. Then conan will add support for 18.0.0.

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.

2 participants

@ben-freist@kou
, '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-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20 - #43094

Merged
kou merged 2 commits into
apache:mainfrom
ben-freist:main
Jul 12, 2024
Merged

GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20#43094
kou merged 2 commits into
apache:mainfrom
ben-freist:main

Conversation

@ben-freist

@ben-freistben-freist commented Jul 1, 2024

Copy link
Copy Markdown
Contributor

Rationale for this change

We can't build with libc++ and C++20:

CMake command line:

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Error log:

In file included from ~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz.cpp:90:
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz_private.h:295:12: error: use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'const sys_seconds' (aka 'const time_point<std::chrono::system_clock, std::chrono::duration<long long, std::ratio<1, 1>>>'))
295 | os << t.timepoint << "Z ";
| ~~ ^ ~~~~~~~~~~~
/usr/lib/llvm-17/bin/../include/c++/v1/__chrono/ostream.h:46:1: note: candidate function [with _CharT = char, _Traits = std::char_traits<char>, _Duration = std::chrono::duration<long long>]
46 | operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) {
| ^
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/date.h:4214:1: note: candidate function [with CharT = char, Traits = std::char_traits<char>, Duration = std::chrono::duration<long long>]
4214 | operator<<(std::basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp)

What changes are included in this PR?

Update the bundled vendor/datetime because the upstream has changes for this case:
HowardHinnant/date#827

Are these changes tested?

Are there any user-facing changes?

@github-actions

Copy link
Copy Markdown

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

@ben-freistben-freist changed the title fix c++20 buildGH-43095: [C++] unblock arrow for C++ 20Jul 1, 2024
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #43095has been automatically assigned in GitHub to PR creator.

@kou

kou commented Jul 2, 2024

Copy link
Copy Markdown
Member

Hmm. Our C++20 CI job doesn't report this error: https://github.com/ursacomputing/crossbow/actions/runs/9736169142/job/26866418106

What is the difference between the job and you? g++ and clang++?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Thank you for the quick response! I can reproduce the behaviour like this

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Where toolchain.cmake looks like this:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR X86)
set(CMAKE_C_COMPILER clang-17 CACHE INTERNAL "C compiler")
set(CMAKE_CXX_COMPILER clang++-17 CACHE INTERNAL "C++ compiler")

Looks like libstdc++ doesn't have the stream insertion operators yet.

@ben-freist

ben-freist commented Jul 2, 2024

Copy link
Copy Markdown
ContributorAuthor

And it doesn't look like they are coming to libstdc++ soon, this compiles with gcc trunk, but fails when you select clang and use libc++: https://godbolt.org/z/ehnTdsK1e

Somehow reproducing it like this only works for clang-17, but the problem is also there for clang-18.

@koukou changed the title GH-43095: [C++] unblock arrow for C++ 20GH-43095: [C++] Add support for building with libc++ and C++20Jul 4, 2024
@kou

kou commented Jul 4, 2024

Copy link
Copy Markdown
Member

OK.
The upstream of cpp/src/arrow/vendored/datetime/ is https://github.com/HowardHinnant/date . Could you fix this case in the upstream and then update our vendored version like #35612?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.
Do you think it's good enough to handle it like this for now?

@kou

kou commented Jul 6, 2024

Copy link
Copy Markdown
Member

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.

How can we do this? Does using arrow_vendored::date::year_month_day = std::chrono::year_month_day; or something work?

Do you think it's good enough to handle it like this for now?

What does "this" refer? Changing our bundled date library directly? If so, it's not acceptable. We don't want to maintain these changes in our side. We should upstream these changes.

@ben-freist

ben-freist commented Jul 11, 2024

Copy link
Copy Markdown
ContributorAuthor

I've bumped the version of vendored/datetime. At the moment the arrow specific patches are in a separate commit.
No changes in the upstream library were necessary.

@kou

kou commented Jul 11, 2024

Copy link
Copy Markdown
Member

The upstream already has changes for this, right?

@koukou changed the title GH-43095: [C++] Add support for building with libc++ and C++20GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20Jul 11, 2024
@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Yep, I think this is the relevant PR: HowardHinnant/date#827

kou
kou approved these changes Jul 12, 2024

@koukou left a comment

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.

+1

@kou
kou merged commit 7184150 into apache:mainJul 12, 2024
@koukou removed the awaiting review Awaiting review label Jul 12, 2024
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Jul 12, 2024
@conbench-apache-arrow

Copy link
Copy Markdown

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

There were no benchmark performance regressions. 🎉

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

@ben-freist

ben-freist commented Oct 2, 2024

Copy link
Copy Markdown
ContributorAuthor

Hey,
thank you for merging this!
It would be nice if this change could be pushed to a new conan recipe. Do you know when this might happen?
Should I create a separate issue for that?

@kou

kou commented Oct 3, 2024

Copy link
Copy Markdown
Member

We'll release 18.0.0 in this month. Then conan will add support for 18.0.0.

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.

2 participants

@ben-freist@kou
, '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-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20 - #43094

Merged
kou merged 2 commits into
apache:mainfrom
ben-freist:main
Jul 12, 2024
Merged

GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20#43094
kou merged 2 commits into
apache:mainfrom
ben-freist:main

Conversation

@ben-freist

@ben-freistben-freist commented Jul 1, 2024

Copy link
Copy Markdown
Contributor

Rationale for this change

We can't build with libc++ and C++20:

CMake command line:

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Error log:

In file included from ~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz.cpp:90:
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/tz_private.h:295:12: error: use of overloaded operator '<<' is ambiguous (with operand types 'std::ostream' (aka 'basic_ostream<char>') and 'const sys_seconds' (aka 'const time_point<std::chrono::system_clock, std::chrono::duration<long long, std::ratio<1, 1>>>'))
295 | os << t.timepoint << "Z ";
| ~~ ^ ~~~~~~~~~~~
/usr/lib/llvm-17/bin/../include/c++/v1/__chrono/ostream.h:46:1: note: candidate function [with _CharT = char, _Traits = std::char_traits<char>, _Duration = std::chrono::duration<long long>]
46 | operator<<(basic_ostream<_CharT, _Traits>& __os, const sys_time<_Duration> __tp) {
| ^
~/.conan2/p/b/arrowe39f77e638649/b/src/cpp/src/arrow/vendored/datetime/date.h:4214:1: note: candidate function [with CharT = char, Traits = std::char_traits<char>, Duration = std::chrono::duration<long long>]
4214 | operator<<(std::basic_ostream<CharT, Traits>& os, const sys_time<Duration>& tp)

What changes are included in this PR?

Update the bundled vendor/datetime because the upstream has changes for this case:
HowardHinnant/date#827

Are these changes tested?

Are there any user-facing changes?

@github-actions

Copy link
Copy Markdown

Thanks for opening a pull request!

If this is not a minor PR. Could you open an issue for this pull request on GitHub? https://github.com/apache/arrow/issues/new/choose

Opening GitHub issues ahead of time contributes to the Openness of the Apache Arrow project.

Then could you also rename the pull request title in the following format?

GH-${GITHUB_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

or

MINOR: [${COMPONENT}] ${SUMMARY}

In the case of PARQUET issues on JIRA the title also supports:

PARQUET-${JIRA_ISSUE_ID}: [${COMPONENT}] ${SUMMARY}

See also:

@ben-freistben-freist changed the title fix c++20 buildGH-43095: [C++] unblock arrow for C++ 20Jul 1, 2024
@github-actions

Copy link
Copy Markdown

⚠️ GitHub issue #43095has been automatically assigned in GitHub to PR creator.

@kou

kou commented Jul 2, 2024

Copy link
Copy Markdown
Member

Hmm. Our C++20 CI job doesn't report this error: https://github.com/ursacomputing/crossbow/actions/runs/9736169142/job/26866418106

What is the difference between the job and you? g++ and clang++?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Thank you for the quick response! I can reproduce the behaviour like this

cmake -DARROW_ENABLE_THREADING=OFF \
-DARROW_JEMALLOC=OFF \
-DCMAKE_CXX_STANDARD=20 \
-DCXX_ONLY_FLAGS="-stdlib=libc++" \
-DCMAKE_TOOLCHAIN_FILE=toolchain.cmake --preset ninja-debug-minimal ../cpp/

Where toolchain.cmake looks like this:

set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR X86)
set(CMAKE_C_COMPILER clang-17 CACHE INTERNAL "C compiler")
set(CMAKE_CXX_COMPILER clang++-17 CACHE INTERNAL "C++ compiler")

Looks like libstdc++ doesn't have the stream insertion operators yet.

@ben-freist

ben-freist commented Jul 2, 2024

Copy link
Copy Markdown
ContributorAuthor

And it doesn't look like they are coming to libstdc++ soon, this compiles with gcc trunk, but fails when you select clang and use libc++: https://godbolt.org/z/ehnTdsK1e

Somehow reproducing it like this only works for clang-17, but the problem is also there for clang-18.

@koukou changed the title GH-43095: [C++] unblock arrow for C++ 20GH-43095: [C++] Add support for building with libc++ and C++20Jul 4, 2024
@kou

kou commented Jul 4, 2024

Copy link
Copy Markdown
Member

OK.
The upstream of cpp/src/arrow/vendored/datetime/ is https://github.com/HowardHinnant/date . Could you fix this case in the upstream and then update our vendored version like #35612?

@ben-freist

Copy link
Copy Markdown
ContributorAuthor

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.
Do you think it's good enough to handle it like this for now?

@kou

kou commented Jul 6, 2024

Copy link
Copy Markdown
Member

The library is part of the standard for c++ 20 and some compilers now, so I think the proper fix would be not to use it anymore.

How can we do this? Does using arrow_vendored::date::year_month_day = std::chrono::year_month_day; or something work?

Do you think it's good enough to handle it like this for now?

What does "this" refer? Changing our bundled date library directly? If so, it's not acceptable. We don't want to maintain these changes in our side. We should upstream these changes.

@ben-freist

ben-freist commented Jul 11, 2024

Copy link
Copy Markdown
ContributorAuthor

I've bumped the version of vendored/datetime. At the moment the arrow specific patches are in a separate commit.
No changes in the upstream library were necessary.

@kou

kou commented Jul 11, 2024

Copy link
Copy Markdown
Member

The upstream already has changes for this, right?

@koukou changed the title GH-43095: [C++] Add support for building with libc++ and C++20GH-43095: [C++] Update bundled vendor/datetime to support for building with libc++ and C++20Jul 11, 2024
@ben-freist

Copy link
Copy Markdown
ContributorAuthor

Yep, I think this is the relevant PR: HowardHinnant/date#827

kou
kou approved these changes Jul 12, 2024

@koukou left a comment

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.

+1

@kou
kou merged commit 7184150 into apache:mainJul 12, 2024
@koukou removed the awaiting review Awaiting review label Jul 12, 2024
@github-actionsgithub-actionsBot added the awaiting merge Awaiting merge label Jul 12, 2024
@conbench-apache-arrow

Copy link
Copy Markdown

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

There were no benchmark performance regressions. 🎉

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

@ben-freist

ben-freist commented Oct 2, 2024

Copy link
Copy Markdown
ContributorAuthor

Hey,
thank you for merging this!
It would be nice if this change could be pushed to a new conan recipe. Do you know when this might happen?
Should I create a separate issue for that?

@kou

kou commented Oct 3, 2024

Copy link
Copy Markdown
Member

We'll release 18.0.0 in this month. Then conan will add support for 18.0.0.

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.

2 participants

@ben-freist@kou