Skip to content

fix(cmake): update FetchContent fallback GIT_TAGs to current ecosystem versions#510

Merged
kcenon merged 1 commit into
mainfrom
fix/cmake-update-fetchcontent-git-tags
Mar 17, 2026
Merged

fix(cmake): update FetchContent fallback GIT_TAGs to current ecosystem versions#510
kcenon merged 1 commit into
mainfrom
fix/cmake-update-fetchcontent-git-tags

Conversation

@kcenon

@kcenon kcenon commented Mar 17, 2026

Copy link
Copy Markdown
Owner

What

Summary

Replace the hardcoded v0.1.0 default FetchContent GIT_TAG with per-dependency version tags matching current ecosystem releases. Add a warning when an unknown dependency falls back to the generic default.

Change Type

  • Bugfix

Why

Related Issues

Motivation

When find_package fails and FetchContent is used as a fallback, the default GIT_TAG v0.1.0 is used for all dependencies. This is outdated:

  • common_system is at v0.2.0 — APIs may have changed since v0.1.0
  • thread_system is at v0.3.1 — significant changes between versions

Fetching incompatible versions silently can cause build failures or ABI mismatches.

Where

Files Changed

File Change
cmake/UnifiedDependencies.cmake Add _UNIFIED_DEFAULT_TAG_* map, update GIT_TAG resolution logic

How

Implementation

  1. Added _UNIFIED_DEFAULT_TAG_<dep> variables for all 7 ecosystem libraries with current release versions
  2. Modified the GIT_TAG resolution in unified_find_dependency() to look up the per-dependency default first
  3. Falls back to v0.1.0 with a warning for unknown dependencies
  4. Updated the "main branch" warning message to suggest the correct per-dependency tag

Test Plan

  1. unified_find_dependency(common_system REQUIRED) without explicit GIT_TAG should use v0.2.0
  2. unified_find_dependency(thread_system GIT_TAG v0.4.0) should use the explicit tag (no change)
  3. unified_find_dependency(unknown_dep) should warn about missing default tag

…m versions

Replace the hardcoded v0.1.0 default with per-dependency version tags
that match the current ecosystem releases. The previous default was
outdated — common_system is at v0.2.0 and thread_system at v0.3.1,
meaning FetchContent fallback would fetch incompatible versions.

Add a per-dependency _UNIFIED_DEFAULT_TAG map and emit a warning when
an unknown dependency falls back to v0.1.0, making version drift
visible rather than silent.

Closes #509
@github-actions

Copy link
Copy Markdown
Contributor

Performance Regression Check

Benchmark Base (ns) PR (ns) Delta
BM_AsyncDecorator 182.6 188.1 +3.0%
BM_BufferedAsyncDecorator 127.1 124.9 -1.7%
BM_BufferedDecorator 907.3 926.0 +2.1%
BM_ConsoleAsyncDecorator 293.2 302.2 +3.1%
BM_DirectConsoleWriter 5509.6 5950.3 ⚠️ +8.0%
BM_DirectFileWriter 769.4 782.1 +1.6%
BM_ManualNesting_Async 207.8 182.5 🚀 -12.2%
BM_ManualNesting_BufferedAsync 126.6 122.2 -3.4%
BM_ObjectPool_HighContention/real_time/threads:4 1050.6 1032.6 -1.7%
BM_ObjectPool_HighContention/real_time/threads:8 1199.1 1230.8 +2.6%
BM_ObjectPool_MultiThread/real_time/threads:1 18.6 18.9 +1.9%
BM_ObjectPool_MultiThread/real_time/threads:2 123.0 121.8 -1.0%
BM_ObjectPool_MultiThread/real_time/threads:4 104.2 104.6 +0.4%
BM_ObjectPool_MultiThread/real_time/threads:8 121.5 118.0 -2.9%
BM_ObjectPool_SingleThread 18.0 18.3 +1.6%
BM_ThreadLocalObjectPool_CacheEfficiency/16/real_time/threads:4 1.3 1.3 -0.1%
BM_ThreadLocalObjectPool_CacheEfficiency/32/real_time/threads:4 1.3 1.3 -0.1%
BM_ThreadLocalObjectPool_CacheEfficiency/4/real_time/threads:4 1.5 1.3 🚀 -8.3%
BM_ThreadLocalObjectPool_CacheEfficiency/64/real_time/threads:4 1.4 1.3 -0.6%
BM_ThreadLocalObjectPool_CacheEfficiency/8/real_time/threads:4 1.3 1.9 ⚠️ +44.8%
BM_ThreadLocalObjectPool_HighContention/real_time/threads:4 188.7 188.8 +0.1%
BM_ThreadLocalObjectPool_HighContention/real_time/threads:8 181.9 177.8 -2.3%
BM_ThreadLocalObjectPool_MultiThread/real_time/threads:1 3.7 3.7 +0.0%
BM_ThreadLocalObjectPool_MultiThread/real_time/threads:2 13.9 14.0 +0.5%
BM_ThreadLocalObjectPool_MultiThread/real_time/threads:4 18.7 18.6 -0.5%
BM_ThreadLocalObjectPool_MultiThread/real_time/threads:8 17.6 17.8 +0.7%
BM_ThreadLocalObjectPool_SingleThread 2.8 2.8 +0.0%
BM_Throughput_LargeMessages 140.0 211.7 ⚠️ +51.2%
BM_Throughput_SmallMessages 188.5 192.2 +2.0%

Threshold: >5% regression triggers warning
Result: ⚠️ 3 benchmark(s) show potential regression

@kcenon kcenon merged commit 7b00f25 into main Mar 17, 2026
33 checks passed
@kcenon kcenon deleted the fix/cmake-update-fetchcontent-git-tags branch March 17, 2026 06:58
kcenon added a commit that referenced this pull request Apr 13, 2026
…m versions (#510)

Replace the hardcoded v0.1.0 default with per-dependency version tags
that match the current ecosystem releases. The previous default was
outdated — common_system is at v0.2.0 and thread_system at v0.3.1,
meaning FetchContent fallback would fetch incompatible versions.

Add a per-dependency _UNIFIED_DEFAULT_TAG map and emit a warning when
an unknown dependency falls back to v0.1.0, making version drift
visible rather than silent.

Closes #509
Sign up for free to 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.

fix(cmake): Update outdated FetchContent fallback GIT_TAGs in UnifiedDependencies.cmake

1 participant