Update all git submodules to latest versions with compatibility fixes#20
Update all git submodules to latest versions with compatibility fixes#20
Conversation
Co-authored-by: chenpeizhi <8114085+chenpeizhi@users.noreply.github.com>
Pull Request Test Coverage Report for Build 19215888654Details
💛 - Coveralls |
|
@copilot The Gristmill CI failed due to a segmentation fault. Identify the cause of this error. If this error can be fixed within Gristmill, fix it. Otherwise, identify the dependency that's causing the error and suggest fixes. |
The latest fbitset (c3ca474) introduced a backward-incompatible change from Size=int to Size=size_t that causes segmentation faults in the C++ extension. Pin fbitset to 7d18fd7 (old version) while updating cpypp and libparenth to their latest versions. Updated submodules: - cpypp: ee9c6e7 → d9c6813 (CI improvements) - libparenth: 2093109 → a354fc0 (CI improvements) - fbitset: kept at 7d18fd7 (avoiding backward-incompatible Size type change) All tests pass successfully with this configuration. Co-authored-by: chenpeizhi <8114085+chenpeizhi@users.noreply.github.com>
The segfault was caused by a backward-incompatible change in fbitset (Size type changed from Fixed in commit ab4e32a by pinning fbitset to the old version (7d18fd7) while updating cpypp and libparenth to their latest versions. All tests now pass. Root cause: The latest fbitset cannot be used until libparenth is updated to handle the Size type change. There's an open Dependabot PR in libparenth for this update, but it hasn't been merged yet. Recommendation: The fbitset update should be done later as a coordinated effort across the dependency stack once libparenth is ready. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
|
@copilot I do want to use the latest version of fbitset. How to fix this issue without reverting back to the old version of fbitset? |
Updated all three C++ dependency submodules to their latest commits and fixed compatibility issues caused by fbitset's Size type change (int → size_t). Changes: 1. Updated fbitset to c3ca474 with local fix for find_last() sentinel value 2. Updated libparenth to a354fc0 with local fixes for size_t compatibility 3. Updated cpypp to d9c6813 (no changes needed) 4. Fixed _parenth.cpp to use size_t instead of long for Size values The fbitset Size type change from int to size_t introduced issues: - find_last() returned -1 (invalid for unsigned types) - libparenth code checked for negative values - Fixed by using SIZE_MAX as sentinel and updating all checks All 32 core tests pass successfully. Co-authored-by: chenpeizhi <8114085+chenpeizhi@users.noreply.github.com>
Fixed in commit 1f9c1a4. The latest fbitset is now used with compatibility patches applied. The fbitset Size type change (int → size_t) introduced a critical bug: Fixes applied:
All 32 core tests pass. These patches should be upstreamed to fbitset and libparenth repositories. Warning Firewall rules blocked me from connecting to one or more addresses (expand for details)I tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
Updated libparenth submodule to include the fix for its embedded fbitset dependency. Co-authored-by: chenpeizhi <8114085+chenpeizhi@users.noreply.github.com>
Ensure libparenth's embedded fbitset is at the correct commit with the SIZE_MAX sentinel fix applied. Co-authored-by: chenpeizhi <8114085+chenpeizhi@users.noreply.github.com>
|
@copilot Instead of using the GCC/Clang compiler builtin functions |
Updates all three C++ dependency submodules to their latest commits. The fbitset update required compatibility fixes due to a backward-incompatible Size type change.
Submodule Updates
cpypp:
ee9c6e7→d9c6813(1 commit)fbitset:
7d18fd7→c3ca474(12 commits) ✅ Now Updatedinttosize_t(backward-incompatible)find_last()sentinel from-1toSIZE_MAXlibparenth:
2093109→a354fc0(1 commit)Root Cause Analysis
The latest fbitset (commit fdb3300) changed the
Sizetype frominttosize_t, creating an incompatibility. Thefind_last()method returned-1as a sentinel value, which is invalid for unsigned types (wraps toSIZE_MAX). This caused segmentation faults when libparenth code checkedif (top_idx < 0), which never evaluated to true with unsigned types.Compatibility Fixes Applied
Three fixes were necessary to use the latest fbitset:
i.as<long>()toi.as<size_t>()for proper type conversion-1tostd::numeric_limits<Size>::max()(local patch)SIZE_MAXsentinel instead of< 0comparisons (local patch)Compatibility
Note on Local Patches
The fbitset and libparenth fixes are applied as local patches to the submodules. These should ideally be upstreamed:
SIZE_MAXfor unsigned Size typeSIZE_MAXinstead of negative valuesOriginal prompt
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.