GH-47039: [C++] Bump RapidJSON dependency in Meson configuration - #47041

Merged
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson
Aug 15, 2025
Merged

GH-47039: [C++] Bump RapidJSON dependency in Meson configuration#47041
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson

Conversation

@WillAyd

@WillAydWillAyd commented Jul 9, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)

What changes are included in this PR?

Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

Copy link
Copy Markdown

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

@koukou changed the title GH-47039: Bump RapidJSON dependency in Meson configurationGH-47039: [C++] Bump RapidJSON dependency in Meson configurationJul 10, 2025
@kou

kou commented Jul 10, 2025

Copy link
Copy Markdown
Member

How about migrating to simdjson from RapidJSON instead?
#35460

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Sure I can take a look. Although I think there is still value in bumping this in the meantime, since it was done for CMake too

@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 76afe86 to 1a381f9CompareJuly 10, 2025 14:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

I commented on the upstream discussion, but it unfortunately looks like SIMDJSON does not offer serialization support, so I don't think it would be suitable to replace RAPIDJSON completely any time soon

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Does this mean that we always use bundled RapidJSON?
Can we use bundled RapidJSON only when system RapidJSON is old?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yes that was the intent here. In theory we could do what you are looking for with the version argument of the dependency call, but I am not sure how that would work with RapidJSON given there haven't been any official releases in 9 years

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Aug 14, 2025
kou
kou approved these changes Aug 14, 2025

@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

Comment threadcpp/subprojects/rapidjson.wrap Outdated
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/rapidjson_1.1.0-2/rapidjson-1.1.0.tar.gz
wrapdb_version = 1.1.0-2
directory = rapidjson-232389d4f1012dddec4ef84861face2d2ba85709
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

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.

Suggested change
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz
source_url = https://github.com/Tencent/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Aug 14, 2025
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from ecfe6b1 to 96cfc70CompareAugust 15, 2025 16:32
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 96cfc70 to d7d2da2CompareAugust 15, 2025 16:35
if needs_json or needs_integration
rapidjson_dep = dependency('rapidjson', include_type: 'system')
rapidjson_dep = dependency(
'RapidJSON',

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@kou thanks for pointing out #47318 (comment) - that was really helpful. This should fix the issue

@kou

kou commented Aug 15, 2025

Copy link
Copy Markdown
Member

System RapidJSON was found:

https://github.com/apache/arrow/actions/runs/16994828223/job/48182918285?pr=47041#step:6:502

Run-time dependency rapidjson found: YES 1.1.0

@kou
kou merged commit 15662e6 into apache:mainAug 15, 2025
43 of 44 checks passed
@koukou removed the awaiting merge Awaiting merge label Aug 15, 2025
@WillAyd
WillAyd deleted the fix-meson-rapidjson branch August 15, 2025 21:53
@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 15662e6.

There weren't enough matching historic benchmark results to make a call on whether there were regressions.

The full Conbench report has more details.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
apache#47041)
### Rationale for this change
The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)
### What changes are included in this PR?
Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: apache#47039
Authored-by: Will Ayd <william.ayd@icloud.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@WillAyd@kou
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all \u003cpre\u003e\u003ccode\u003e 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-47039: [C++] Bump RapidJSON dependency in Meson configuration - #47041

Merged
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson
Aug 15, 2025
Merged

GH-47039: [C++] Bump RapidJSON dependency in Meson configuration#47041
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson

Conversation

@WillAyd

@WillAydWillAyd commented Jul 9, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)

What changes are included in this PR?

Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

Copy link
Copy Markdown

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

@koukou changed the title GH-47039: Bump RapidJSON dependency in Meson configurationGH-47039: [C++] Bump RapidJSON dependency in Meson configurationJul 10, 2025
@kou

kou commented Jul 10, 2025

Copy link
Copy Markdown
Member

How about migrating to simdjson from RapidJSON instead?
#35460

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Sure I can take a look. Although I think there is still value in bumping this in the meantime, since it was done for CMake too

@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 76afe86 to 1a381f9CompareJuly 10, 2025 14:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

I commented on the upstream discussion, but it unfortunately looks like SIMDJSON does not offer serialization support, so I don't think it would be suitable to replace RAPIDJSON completely any time soon

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Does this mean that we always use bundled RapidJSON?
Can we use bundled RapidJSON only when system RapidJSON is old?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yes that was the intent here. In theory we could do what you are looking for with the version argument of the dependency call, but I am not sure how that would work with RapidJSON given there haven't been any official releases in 9 years

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Aug 14, 2025
kou
kou approved these changes Aug 14, 2025

@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

Comment threadcpp/subprojects/rapidjson.wrap Outdated
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/rapidjson_1.1.0-2/rapidjson-1.1.0.tar.gz
wrapdb_version = 1.1.0-2
directory = rapidjson-232389d4f1012dddec4ef84861face2d2ba85709
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

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.

Suggested change
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz
source_url = https://github.com/Tencent/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Aug 14, 2025
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from ecfe6b1 to 96cfc70CompareAugust 15, 2025 16:32
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 96cfc70 to d7d2da2CompareAugust 15, 2025 16:35
if needs_json or needs_integration
rapidjson_dep = dependency('rapidjson', include_type: 'system')
rapidjson_dep = dependency(
'RapidJSON',

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@kou thanks for pointing out #47318 (comment) - that was really helpful. This should fix the issue

@kou

kou commented Aug 15, 2025

Copy link
Copy Markdown
Member

System RapidJSON was found:

https://github.com/apache/arrow/actions/runs/16994828223/job/48182918285?pr=47041#step:6:502

Run-time dependency rapidjson found: YES 1.1.0

@kou
kou merged commit 15662e6 into apache:mainAug 15, 2025
43 of 44 checks passed
@koukou removed the awaiting merge Awaiting merge label Aug 15, 2025
@WillAyd
WillAyd deleted the fix-meson-rapidjson branch August 15, 2025 21:53
@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 15662e6.

There weren't enough matching historic benchmark results to make a call on whether there were regressions.

The full Conbench report has more details.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
apache#47041)
### Rationale for this change
The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)
### What changes are included in this PR?
Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: apache#47039
Authored-by: Will Ayd <william.ayd@icloud.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@WillAyd@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-47039: [C++] Bump RapidJSON dependency in Meson configuration - #47041

Merged
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson
Aug 15, 2025
Merged

GH-47039: [C++] Bump RapidJSON dependency in Meson configuration#47041
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson

Conversation

@WillAyd

@WillAydWillAyd commented Jul 9, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)

What changes are included in this PR?

Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

Copy link
Copy Markdown

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

@koukou changed the title GH-47039: Bump RapidJSON dependency in Meson configurationGH-47039: [C++] Bump RapidJSON dependency in Meson configurationJul 10, 2025
@kou

kou commented Jul 10, 2025

Copy link
Copy Markdown
Member

How about migrating to simdjson from RapidJSON instead?
#35460

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Sure I can take a look. Although I think there is still value in bumping this in the meantime, since it was done for CMake too

@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 76afe86 to 1a381f9CompareJuly 10, 2025 14:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

I commented on the upstream discussion, but it unfortunately looks like SIMDJSON does not offer serialization support, so I don't think it would be suitable to replace RAPIDJSON completely any time soon

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Does this mean that we always use bundled RapidJSON?
Can we use bundled RapidJSON only when system RapidJSON is old?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yes that was the intent here. In theory we could do what you are looking for with the version argument of the dependency call, but I am not sure how that would work with RapidJSON given there haven't been any official releases in 9 years

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Aug 14, 2025
kou
kou approved these changes Aug 14, 2025

@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

Comment threadcpp/subprojects/rapidjson.wrap Outdated
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/rapidjson_1.1.0-2/rapidjson-1.1.0.tar.gz
wrapdb_version = 1.1.0-2
directory = rapidjson-232389d4f1012dddec4ef84861face2d2ba85709
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

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.

Suggested change
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz
source_url = https://github.com/Tencent/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Aug 14, 2025
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from ecfe6b1 to 96cfc70CompareAugust 15, 2025 16:32
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 96cfc70 to d7d2da2CompareAugust 15, 2025 16:35
if needs_json or needs_integration
rapidjson_dep = dependency('rapidjson', include_type: 'system')
rapidjson_dep = dependency(
'RapidJSON',

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@kou thanks for pointing out #47318 (comment) - that was really helpful. This should fix the issue

@kou

kou commented Aug 15, 2025

Copy link
Copy Markdown
Member

System RapidJSON was found:

https://github.com/apache/arrow/actions/runs/16994828223/job/48182918285?pr=47041#step:6:502

Run-time dependency rapidjson found: YES 1.1.0

@kou
kou merged commit 15662e6 into apache:mainAug 15, 2025
43 of 44 checks passed
@koukou removed the awaiting merge Awaiting merge label Aug 15, 2025
@WillAyd
WillAyd deleted the fix-meson-rapidjson branch August 15, 2025 21:53
@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 15662e6.

There weren't enough matching historic benchmark results to make a call on whether there were regressions.

The full Conbench report has more details.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
apache#47041)
### Rationale for this change
The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)
### What changes are included in this PR?
Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: apache#47039
Authored-by: Will Ayd <william.ayd@icloud.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@WillAyd@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 \u003e 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-47039: [C++] Bump RapidJSON dependency in Meson configuration - #47041

Merged
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson
Aug 15, 2025
Merged

GH-47039: [C++] Bump RapidJSON dependency in Meson configuration#47041
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson

Conversation

@WillAyd

@WillAydWillAyd commented Jul 9, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)

What changes are included in this PR?

Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

Copy link
Copy Markdown

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

@koukou changed the title GH-47039: Bump RapidJSON dependency in Meson configurationGH-47039: [C++] Bump RapidJSON dependency in Meson configurationJul 10, 2025
@kou

kou commented Jul 10, 2025

Copy link
Copy Markdown
Member

How about migrating to simdjson from RapidJSON instead?
#35460

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Sure I can take a look. Although I think there is still value in bumping this in the meantime, since it was done for CMake too

@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 76afe86 to 1a381f9CompareJuly 10, 2025 14:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

I commented on the upstream discussion, but it unfortunately looks like SIMDJSON does not offer serialization support, so I don't think it would be suitable to replace RAPIDJSON completely any time soon

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Does this mean that we always use bundled RapidJSON?
Can we use bundled RapidJSON only when system RapidJSON is old?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yes that was the intent here. In theory we could do what you are looking for with the version argument of the dependency call, but I am not sure how that would work with RapidJSON given there haven't been any official releases in 9 years

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Aug 14, 2025
kou
kou approved these changes Aug 14, 2025

@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

Comment threadcpp/subprojects/rapidjson.wrap Outdated
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/rapidjson_1.1.0-2/rapidjson-1.1.0.tar.gz
wrapdb_version = 1.1.0-2
directory = rapidjson-232389d4f1012dddec4ef84861face2d2ba85709
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

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.

Suggested change
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz
source_url = https://github.com/Tencent/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Aug 14, 2025
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from ecfe6b1 to 96cfc70CompareAugust 15, 2025 16:32
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 96cfc70 to d7d2da2CompareAugust 15, 2025 16:35
if needs_json or needs_integration
rapidjson_dep = dependency('rapidjson', include_type: 'system')
rapidjson_dep = dependency(
'RapidJSON',

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@kou thanks for pointing out #47318 (comment) - that was really helpful. This should fix the issue

@kou

kou commented Aug 15, 2025

Copy link
Copy Markdown
Member

System RapidJSON was found:

https://github.com/apache/arrow/actions/runs/16994828223/job/48182918285?pr=47041#step:6:502

Run-time dependency rapidjson found: YES 1.1.0

@kou
kou merged commit 15662e6 into apache:mainAug 15, 2025
43 of 44 checks passed
@koukou removed the awaiting merge Awaiting merge label Aug 15, 2025
@WillAyd
WillAyd deleted the fix-meson-rapidjson branch August 15, 2025 21:53
@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 15662e6.

There weren't enough matching historic benchmark results to make a call on whether there were regressions.

The full Conbench report has more details.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
apache#47041)
### Rationale for this change
The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)
### What changes are included in this PR?
Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: apache#47039
Authored-by: Will Ayd <william.ayd@icloud.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@WillAyd@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-47039: [C++] Bump RapidJSON dependency in Meson configuration - #47041

Merged
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson
Aug 15, 2025
Merged

GH-47039: [C++] Bump RapidJSON dependency in Meson configuration#47041
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson

Conversation

@WillAyd

@WillAydWillAyd commented Jul 9, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)

What changes are included in this PR?

Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

Copy link
Copy Markdown

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

@koukou changed the title GH-47039: Bump RapidJSON dependency in Meson configurationGH-47039: [C++] Bump RapidJSON dependency in Meson configurationJul 10, 2025
@kou

kou commented Jul 10, 2025

Copy link
Copy Markdown
Member

How about migrating to simdjson from RapidJSON instead?
#35460

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Sure I can take a look. Although I think there is still value in bumping this in the meantime, since it was done for CMake too

@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 76afe86 to 1a381f9CompareJuly 10, 2025 14:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

I commented on the upstream discussion, but it unfortunately looks like SIMDJSON does not offer serialization support, so I don't think it would be suitable to replace RAPIDJSON completely any time soon

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Does this mean that we always use bundled RapidJSON?
Can we use bundled RapidJSON only when system RapidJSON is old?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yes that was the intent here. In theory we could do what you are looking for with the version argument of the dependency call, but I am not sure how that would work with RapidJSON given there haven't been any official releases in 9 years

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Aug 14, 2025
kou
kou approved these changes Aug 14, 2025

@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

Comment threadcpp/subprojects/rapidjson.wrap Outdated
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/rapidjson_1.1.0-2/rapidjson-1.1.0.tar.gz
wrapdb_version = 1.1.0-2
directory = rapidjson-232389d4f1012dddec4ef84861face2d2ba85709
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

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.

Suggested change
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz
source_url = https://github.com/Tencent/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Aug 14, 2025
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from ecfe6b1 to 96cfc70CompareAugust 15, 2025 16:32
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 96cfc70 to d7d2da2CompareAugust 15, 2025 16:35
if needs_json or needs_integration
rapidjson_dep = dependency('rapidjson', include_type: 'system')
rapidjson_dep = dependency(
'RapidJSON',

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@kou thanks for pointing out #47318 (comment) - that was really helpful. This should fix the issue

@kou

kou commented Aug 15, 2025

Copy link
Copy Markdown
Member

System RapidJSON was found:

https://github.com/apache/arrow/actions/runs/16994828223/job/48182918285?pr=47041#step:6:502

Run-time dependency rapidjson found: YES 1.1.0

@kou
kou merged commit 15662e6 into apache:mainAug 15, 2025
43 of 44 checks passed
@koukou removed the awaiting merge Awaiting merge label Aug 15, 2025
@WillAyd
WillAyd deleted the fix-meson-rapidjson branch August 15, 2025 21:53
@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 15662e6.

There weren't enough matching historic benchmark results to make a call on whether there were regressions.

The full Conbench report has more details.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
apache#47041)
### Rationale for this change
The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)
### What changes are included in this PR?
Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: apache#47039
Authored-by: Will Ayd <william.ayd@icloud.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@WillAyd@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-47039: [C++] Bump RapidJSON dependency in Meson configuration - #47041

Merged
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson
Aug 15, 2025
Merged

GH-47039: [C++] Bump RapidJSON dependency in Meson configuration#47041
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson

Conversation

@WillAyd

@WillAydWillAyd commented Jul 9, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)

What changes are included in this PR?

Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

Copy link
Copy Markdown

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

@koukou changed the title GH-47039: Bump RapidJSON dependency in Meson configurationGH-47039: [C++] Bump RapidJSON dependency in Meson configurationJul 10, 2025
@kou

kou commented Jul 10, 2025

Copy link
Copy Markdown
Member

How about migrating to simdjson from RapidJSON instead?
#35460

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Sure I can take a look. Although I think there is still value in bumping this in the meantime, since it was done for CMake too

@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 76afe86 to 1a381f9CompareJuly 10, 2025 14:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

I commented on the upstream discussion, but it unfortunately looks like SIMDJSON does not offer serialization support, so I don't think it would be suitable to replace RAPIDJSON completely any time soon

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Does this mean that we always use bundled RapidJSON?
Can we use bundled RapidJSON only when system RapidJSON is old?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yes that was the intent here. In theory we could do what you are looking for with the version argument of the dependency call, but I am not sure how that would work with RapidJSON given there haven't been any official releases in 9 years

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Aug 14, 2025
kou
kou approved these changes Aug 14, 2025

@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

Comment threadcpp/subprojects/rapidjson.wrap Outdated
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/rapidjson_1.1.0-2/rapidjson-1.1.0.tar.gz
wrapdb_version = 1.1.0-2
directory = rapidjson-232389d4f1012dddec4ef84861face2d2ba85709
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

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.

Suggested change
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz
source_url = https://github.com/Tencent/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Aug 14, 2025
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from ecfe6b1 to 96cfc70CompareAugust 15, 2025 16:32
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 96cfc70 to d7d2da2CompareAugust 15, 2025 16:35
if needs_json or needs_integration
rapidjson_dep = dependency('rapidjson', include_type: 'system')
rapidjson_dep = dependency(
'RapidJSON',

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@kou thanks for pointing out #47318 (comment) - that was really helpful. This should fix the issue

@kou

kou commented Aug 15, 2025

Copy link
Copy Markdown
Member

System RapidJSON was found:

https://github.com/apache/arrow/actions/runs/16994828223/job/48182918285?pr=47041#step:6:502

Run-time dependency rapidjson found: YES 1.1.0

@kou
kou merged commit 15662e6 into apache:mainAug 15, 2025
43 of 44 checks passed
@koukou removed the awaiting merge Awaiting merge label Aug 15, 2025
@WillAyd
WillAyd deleted the fix-meson-rapidjson branch August 15, 2025 21:53
@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 15662e6.

There weren't enough matching historic benchmark results to make a call on whether there were regressions.

The full Conbench report has more details.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
apache#47041)
### Rationale for this change
The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)
### What changes are included in this PR?
Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: apache#47039
Authored-by: Will Ayd <william.ayd@icloud.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@WillAyd@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-47039: [C++] Bump RapidJSON dependency in Meson configuration - #47041

Merged
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson
Aug 15, 2025
Merged

GH-47039: [C++] Bump RapidJSON dependency in Meson configuration#47041
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson

Conversation

@WillAyd

@WillAydWillAyd commented Jul 9, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)

What changes are included in this PR?

Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

Copy link
Copy Markdown

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

@koukou changed the title GH-47039: Bump RapidJSON dependency in Meson configurationGH-47039: [C++] Bump RapidJSON dependency in Meson configurationJul 10, 2025
@kou

kou commented Jul 10, 2025

Copy link
Copy Markdown
Member

How about migrating to simdjson from RapidJSON instead?
#35460

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Sure I can take a look. Although I think there is still value in bumping this in the meantime, since it was done for CMake too

@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 76afe86 to 1a381f9CompareJuly 10, 2025 14:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

I commented on the upstream discussion, but it unfortunately looks like SIMDJSON does not offer serialization support, so I don't think it would be suitable to replace RAPIDJSON completely any time soon

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Does this mean that we always use bundled RapidJSON?
Can we use bundled RapidJSON only when system RapidJSON is old?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yes that was the intent here. In theory we could do what you are looking for with the version argument of the dependency call, but I am not sure how that would work with RapidJSON given there haven't been any official releases in 9 years

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Aug 14, 2025
kou
kou approved these changes Aug 14, 2025

@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

Comment threadcpp/subprojects/rapidjson.wrap Outdated
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/rapidjson_1.1.0-2/rapidjson-1.1.0.tar.gz
wrapdb_version = 1.1.0-2
directory = rapidjson-232389d4f1012dddec4ef84861face2d2ba85709
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

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.

Suggested change
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz
source_url = https://github.com/Tencent/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Aug 14, 2025
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from ecfe6b1 to 96cfc70CompareAugust 15, 2025 16:32
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 96cfc70 to d7d2da2CompareAugust 15, 2025 16:35
if needs_json or needs_integration
rapidjson_dep = dependency('rapidjson', include_type: 'system')
rapidjson_dep = dependency(
'RapidJSON',

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@kou thanks for pointing out #47318 (comment) - that was really helpful. This should fix the issue

@kou

kou commented Aug 15, 2025

Copy link
Copy Markdown
Member

System RapidJSON was found:

https://github.com/apache/arrow/actions/runs/16994828223/job/48182918285?pr=47041#step:6:502

Run-time dependency rapidjson found: YES 1.1.0

@kou
kou merged commit 15662e6 into apache:mainAug 15, 2025
43 of 44 checks passed
@koukou removed the awaiting merge Awaiting merge label Aug 15, 2025
@WillAyd
WillAyd deleted the fix-meson-rapidjson branch August 15, 2025 21:53
@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 15662e6.

There weren't enough matching historic benchmark results to make a call on whether there were regressions.

The full Conbench report has more details.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
apache#47041)
### Rationale for this change
The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)
### What changes are included in this PR?
Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: apache#47039
Authored-by: Will Ayd <william.ayd@icloud.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@WillAyd@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-47039: [C++] Bump RapidJSON dependency in Meson configuration - #47041

Merged
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson
Aug 15, 2025
Merged

GH-47039: [C++] Bump RapidJSON dependency in Meson configuration#47041
kou merged 5 commits into
apache:mainfrom
WillAyd:fix-meson-rapidjson

Conversation

@WillAyd

@WillAydWillAyd commented Jul 9, 2025

Copy link
Copy Markdown
Contributor

Rationale for this change

The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)

What changes are included in this PR?

Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default

Are these changes tested?

Yes

Are there any user-facing changes?

No

@github-actions

Copy link
Copy Markdown

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

@koukou changed the title GH-47039: Bump RapidJSON dependency in Meson configurationGH-47039: [C++] Bump RapidJSON dependency in Meson configurationJul 10, 2025
@kou

kou commented Jul 10, 2025

Copy link
Copy Markdown
Member

How about migrating to simdjson from RapidJSON instead?
#35460

@WillAyd

Copy link
Copy Markdown
ContributorAuthor

Sure I can take a look. Although I think there is still value in bumping this in the meantime, since it was done for CMake too

@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 76afe86 to 1a381f9CompareJuly 10, 2025 14:58
@WillAyd

Copy link
Copy Markdown
ContributorAuthor

I commented on the upstream discussion, but it unfortunately looks like SIMDJSON does not offer serialization support, so I don't think it would be suitable to replace RAPIDJSON completely any time soon

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Does this mean that we always use bundled RapidJSON?
Can we use bundled RapidJSON only when system RapidJSON is old?

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

Yes that was the intent here. In theory we could do what you are looking for with the version argument of the dependency call, but I am not sure how that would work with RapidJSON given there haven't been any official releases in 9 years

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting changes Awaiting changes and removed awaiting review Awaiting review labels Aug 14, 2025
kou
kou approved these changes Aug 14, 2025

@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

Comment threadcpp/subprojects/rapidjson.wrap Outdated
source_fallback_url = https://github.com/mesonbuild/wrapdb/releases/download/rapidjson_1.1.0-2/rapidjson-1.1.0.tar.gz
wrapdb_version = 1.1.0-2
directory = rapidjson-232389d4f1012dddec4ef84861face2d2ba85709
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

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.

Suggested change
source_url = https://github.com/miloyip/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz
source_url = https://github.com/Tencent/rapidjson/archive/232389d4f1012dddec4ef84861face2d2ba85709.tar.gz

Comment threadcpp/src/arrow/meson.build Outdated
Comment on lines +296 to +297
rapidjson_proj = subproject('rapidjson')
rapidjson_dep = rapidjson_proj.get_variable('rapidjson_dep')

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.

Hmm. I think that most distributions such as Debian, Ubuntu, AlmaLinux and conda ships patched RapidJSON. So we can use system RapidJSON in most distributions.

I think that it's a problem that the current Meson configuration doesn't detect system RapidJSON: #47318 (comment)

Anyway, let's use this approach. Because this will be removed sooner or later. We'll migrate to simdjson: #35460

@github-actionsgithub-actionsBot added awaiting merge Awaiting merge and removed awaiting changes Awaiting changes labels Aug 14, 2025
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from ecfe6b1 to 96cfc70CompareAugust 15, 2025 16:32
@WillAyd
WillAydforce-pushed the fix-meson-rapidjson branch from 96cfc70 to d7d2da2CompareAugust 15, 2025 16:35
if needs_json or needs_integration
rapidjson_dep = dependency('rapidjson', include_type: 'system')
rapidjson_dep = dependency(
'RapidJSON',

Copy link
Copy Markdown
ContributorAuthor

Choose a reason for hiding this comment

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

@kou thanks for pointing out #47318 (comment) - that was really helpful. This should fix the issue

@kou

kou commented Aug 15, 2025

Copy link
Copy Markdown
Member

System RapidJSON was found:

https://github.com/apache/arrow/actions/runs/16994828223/job/48182918285?pr=47041#step:6:502

Run-time dependency rapidjson found: YES 1.1.0

@kou
kou merged commit 15662e6 into apache:mainAug 15, 2025
43 of 44 checks passed
@koukou removed the awaiting merge Awaiting merge label Aug 15, 2025
@WillAyd
WillAyd deleted the fix-meson-rapidjson branch August 15, 2025 21:53
@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 15662e6.

There weren't enough matching historic benchmark results to make a call on whether there were regressions.

The full Conbench report has more details.

Mottl pushed a commit to Mottl/arrow that referenced this pull request May 26, 2026
apache#47041)
### Rationale for this change
The Meson configuration is unusable on gcc 14.2 given issues with the RapidJSON release of 1.1.0 (released in 2016)
### What changes are included in this PR?
Bumps the RapidJSON version to a commit hash that matches what is used in CMake by default
### Are these changes tested?
Yes
### Are there any user-facing changes?
No
* GitHub Issue: apache#47039
Authored-by: Will Ayd <william.ayd@icloud.com>
Signed-off-by: Sutou Kouhei <kou@clear-code.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@WillAyd@kou