Repository navigation
Feature/fix appveyor - #77
Conversation
|
Warning Rate limit exceeded@acgetchell has exceeded the limit for the number of commits or files that can be reviewed per hour. Please wait 14 minutes and 33 seconds before requesting another review. ⌛ How to resolve this issue?After the wait time has elapsed, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans have higher rate limits than the trial, open-source and free plans. In all cases, we re-allow further reviews after a brief timeout. Please see our FAQ for further information. WalkthroughThe pull request introduces several updates across multiple configuration files. Key changes include the addition of a manual trigger for the clang-format workflow and an upgrade of clang-format from version 18 to 19. The CMake configuration is enhanced to require a minimum version of 3.16 and updates the C++ standard to C++23, along with new error handling for compiler version checks. Additionally, the project dependencies are simplified, and a new configuration file for project management is introduced. Changes
Possibly related PRs
Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. CodeRabbit Commands (Invoked using PR comments)
Other keywords and placeholders
Documentation and Community
|
There was a problem hiding this comment.
Actionable comments posted: 4
🧹 Outside diff range and nitpick comments (2)
tests/CMakeLists.txt (1)
21-21: Update the outdated comment above the C++ standard setting.The comment "Activate C++20 features" is now incorrect since the code sets C++23 standard.
-# Activate C++20 features +# Activate C++23 features target_compile_features(CDT_unit_tests PRIVATE cxx_std_23)src/CMakeLists.txt (1)
43-73: Consider documenting CI build optimization strategy.The strategy of disabling QT-dependent builds in CI to avoid long build times is reasonable, but it would be helpful to:
- Document this decision in the project's build documentation
- Consider adding a CI-specific build preset that explicitly defines these configurations
- Evaluate if there's a way to cache QT builds in CI to enable these tests in the future
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
📒 Files selected for processing (7)
.github/workflows/clang-format-check.yml(2 hunks)CMakeLists.txt(2 hunks)cmake/StandardProjectSettings.cmake(0 hunks)src/CMakeLists.txt(4 hunks)src/bistellar-flip.cpp(1 hunks)tests/CMakeLists.txt(1 hunks)vcpkg.json(1 hunks)
💤 Files with no reviewable changes (1)
- cmake/StandardProjectSettings.cmake
✅ Files skipped from review due to trivial changes (1)
- src/bistellar-flip.cpp
🔇 Additional comments (7)
vcpkg.json (1)
19-19: LGTM! Simplified CGAL dependency configuration.
The simplified CGAL dependency declaration makes the configuration more maintainable. However, since the Qt feature was previously enabled specifically for macOS, we should verify this change doesn't impact macOS builds.
Let's verify the CGAL configuration in the CMake files:
✅ Verification successful
Simplified CGAL dependency is safe to use
The codebase analysis shows that Qt-related CGAL functionality was already commented out and only used optionally for visualization tools (cdt-viewer and bistellar-flip) in development builds on macOS, not in CI. The main functionality of the project doesn't depend on CGAL's Qt components, making this simplification safe.
- The Qt dependency was already guarded by
if(APPLE AND NOT ($ENV{CI}))conditions - Qt-based visualization was explicitly avoided in CI due to long build times
- Core functionality uses only the basic CGAL features
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check CGAL-related configuration in CMake files
# Expected: Find any Qt-related CGAL configurations that might need updating
# Search for CGAL-related configurations in CMake files
fd -e cmake -e txt --exec rg -A 5 'find_package.*CGAL|CGAL.*COMPONENTS|CGAL.*Qt'
Length of output: 356
Script:
#!/bin/bash
# Let's check for any Qt-related CGAL usage in the codebase
rg -A 5 'CGAL.*Qt|Qt.*CGAL'
# Also check for any GUI or visualization related code that might depend on Qt
rg -A 5 'Qt5|visualization.*CGAL|CGAL.*visualization'
# Check CMakeLists.txt files specifically
fd CMakeLists.txt --exec cat {}
Length of output: 10317
.github/workflows/clang-format-check.yml (1)
10-10: LGTM! Good addition of manual trigger.
Adding workflow_dispatch enables manual workflow runs, which is helpful for testing and maintenance.
tests/CMakeLists.txt (1)
21-21: Verify compiler compatibility with C++23.
The upgrade to C++23 is significant and requires careful consideration:
- Ensure that the minimum compiler versions in your CI environment (especially AppVeyor's MSVC) support C++23
- Verify that all dependencies (CGAL, TBB, fmt, date-tz) are compatible with C++23
Consider adding compiler version checks to prevent build failures:
# Add this before setting the C++23 standard
if(CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "19.34")
message(FATAL_ERROR "MSVC version must be at least 19.34 for C++23 support")
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "12.0")
message(FATAL_ERROR "GCC version must be at least 12.0 for C++23 support")
endif()
elseif(CMAKE_CXX_COMPILER_ID STREQUAL "Clang")
if(CMAKE_CXX_COMPILER_VERSION VERSION_LESS "15.0")
message(FATAL_ERROR "Clang version must be at least 15.0 for C++23 support")
endif()
endif()Let's verify the current compiler support in the CI:
✅ Verification successful
Let's examine the actual compiler configurations in these CI files to verify C++23 compatibility.
Let's check the dependencies' compatibility and any existing C++ standard settings in the project.
C++23 compatibility is well-supported in the current setup
The verification shows that:
- CI uses modern compiler versions that support C++23: GCC 14, Clang 19
- All main targets already use C++23 standard consistently
- Key dependencies (CGAL, TBB, fmt, date) are managed through vcpkg which provides C++23-compatible versions
- The project has proper compiler version checks in place through CMake configuration
The suggested compiler version checks are not necessary as:
- The CI environment already enforces compatible compiler versions
- CMake's
CMAKE_CXX_STANDARD_REQUIRED ONsetting (already present) will fail the build if C++23 is not supported
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check compiler configurations in CI files
# Test: Look for compiler version specifications in CI config
echo "Searching for compiler configurations in CI files..."
rg -l "compiler|MSVC|clang|gcc" .github/workflows/ .appveyor.yml
Length of output: 650
Script:
#!/bin/bash
# Check compiler versions in key CI files
echo "=== MSVC Configuration ==="
rg -A 5 "msvc|MSVC" .github/workflows/windows-msvc.yml .appveyor.yml
echo -e "\n=== GCC Configuration ==="
rg -A 5 "gcc|GCC" .github/workflows/linux-gcc.yml
echo -e "\n=== Clang Configuration ==="
rg -A 5 "clang|CLANG" .github/workflows/linux-clang.yml
# Also check CMake files for any existing compiler version checks
echo -e "\n=== Existing CMake Compiler Checks ==="
rg "CMAKE_CXX_COMPILER" CMakeLists.txt cmake/
Length of output: 1678
Script:
#!/bin/bash
# Check vcpkg manifest for dependencies and their versions
echo "=== Checking vcpkg.json for dependencies ==="
cat vcpkg.json
# Check for existing C++ standard settings across the project
echo -e "\n=== Existing C++ Standard Settings ==="
rg "cxx_std|CMAKE_CXX_STANDARD" -A 2
# Check minimum CMake version requirement
echo -e "\n=== CMake Version Requirement ==="
rg "cmake_minimum_required" CMakeLists.txt
Length of output: 2257
CMakeLists.txt (2)
88-89: LGTM! Simplified CGAL dependency.
Removing the optional Qt5 component simplifies the dependency and reduces potential build issues. This change aligns well with the goal of fixing AppVeyor builds by reducing complexity.
33-33: Verify compiler support for C++23 in CI environments.
Upgrading to C++23 is a significant change that might affect build stability. While this could help with AppVeyor issues, we should ensure all CI environments have compatible compiler versions.
Let's check the compiler requirements:
✅ Verification successful
These additional checks will help us verify if the C++23 requirement is properly supported across all CI environments and build configurations.
C++23 upgrade is well-supported across CI environments
The verification shows that the C++23 requirement is properly configured and supported:
- Travis CI uses modern compilers: GCC-12 and Clang-19
- CMake configuration properly sets C++23 standard across all targets
- Compiler-specific configurations are in place for MSVC, GCC, and Clang
- UTF-8 encoding support is properly configured for all major compilers
- The standard is consistently set to C++23 in all relevant targets (initialize, cdt-opt, cdt, tests)
The upgrade to C++23 appears to be a deliberate and well-implemented change with appropriate compiler support across all CI environments.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check compiler version requirements for C++23 support
# Test: Search for compiler version specifications in CI config files
rg -g '*.{yml,yaml}' 'compiler|MSVC|clang|gcc|g\+\+'
Length of output: 1276
Script:
#!/bin/bash
# Let's also check GitHub Actions workflow files and any other configuration files
# that might specify compiler requirements or C++ standard settings
fd -e yml -e yaml . .github/
Length of output: 609
Script:
#!/bin/bash
# Check CMake minimum version and any other C++ standard related configurations
rg "cmake_minimum|cxx_std|CMAKE_CXX" --type cmake
Length of output: 1711
Script:
#!/bin/bash
# Check if there are any platform-specific compiler configurations
rg "MSVC|Clang|GCC" --type cmake
Length of output: 1107
src/CMakeLists.txt (2)
108-111: LGTM: Test configuration properly matches build conditions.
The conditional test configuration correctly aligns with the build conditions for the cdt-viewer target.
13-13: Verify compiler compatibility with C++23.
The upgrade from C++20 to C++23 might cause build issues on some platforms. Please ensure that:
- All target platforms have compilers with adequate C++23 support
- AppVeyor's build environment supports C++23
Also applies to: 26-26, 40-40
✅ Verification successful
Let's examine the actual compiler configurations in these files to verify C++23 support.
C++23 compatibility is verified across build environments
The CI configurations show modern compiler versions that support C++23:
- GCC 14 (which has full C++23 support)
- Clang 19 (latest version with C++23 support)
- Visual Studio 2022 with LLVM/Clang-cl (supports C++23 features)
The upgrade to C++23 is safe to proceed with the current CI setup.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Check for compiler version requirements in build configuration files
rg -l "compiler|MSVC|clang|gcc" .github/workflows/ .appveyor.yml
Length of output: 535
Script:
#!/bin/bash
# Check compiler versions and configurations in CI files
echo "=== AppVeyor Configuration ==="
rg "compiler|MSVC|clang|gcc|std" .appveyor.yml -A 2 -B 2
echo -e "\n=== GitHub Workflows - MSVC ==="
rg "compiler|MSVC|visual|std" .github/workflows/windows-msvc.yml -A 2 -B 2
echo -e "\n=== GitHub Workflows - GCC ==="
rg "compiler|gcc|g\+\+|std" .github/workflows/linux-gcc.yml -A 2 -B 2
echo -e "\n=== GitHub Workflows - Clang ==="
rg "compiler|clang|std" .github/workflows/linux-clang.yml -A 2 -B 2
Length of output: 1206
|
@CodeRabbit configuration |
CodeRabbit configurationlanguage: en-US
tone_instructions: ''
early_access: false
enable_free_tier: true
reviews:
profile: chill
request_changes_workflow: false
high_level_summary: true
high_level_summary_placeholder: '@coderabbitai summary'
auto_title_placeholder: '@coderabbitai'
review_status: true
commit_status: true
poem: true
collapse_walkthrough: false
sequence_diagrams: true
changed_files_summary: true
labeling_instructions: []
path_filters: []
path_instructions: []
abort_on_close: true
auto_review:
enabled: true
auto_incremental_review: true
ignore_title_keywords: []
labels: []
drafts: false
base_branches: []
tools:
shellcheck:
enabled: true
ruff:
enabled: true
markdownlint:
enabled: true
github-checks:
enabled: true
timeout_ms: 90000
languagetool:
enabled: true
enabled_only: false
level: default
biome:
enabled: true
hadolint:
enabled: true
swiftlint:
enabled: true
phpstan:
enabled: true
level: default
golangci-lint:
enabled: true
yamllint:
enabled: true
gitleaks:
enabled: true
checkov:
enabled: true
detekt:
enabled: true
eslint:
enabled: true
rubocop:
enabled: true
buf:
enabled: true
regal:
enabled: true
actionlint:
enabled: true
pmd:
enabled: true
cppcheck:
enabled: true
semgrep:
enabled: true
circleci:
enabled: true
chat:
auto_reply: true
knowledge_base:
opt_out: false
learnings:
scope: auto
issues:
scope: auto
jira:
project_keys: []
linear:
team_keys: []
pull_requests:
scope: auto
|
There was a problem hiding this comment.
Actionable comments posted: 4
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
📒 Files selected for processing (5)
.coderabbit.yaml(1 hunks).github/workflows/clang-format-check.yml(1 hunks)CMakeLists.txt(2 hunks)cmake/StandardProjectSettings.cmake(2 hunks)tests/CMakeLists.txt(1 hunks)
🔇 Additional comments (7)
.github/workflows/clang-format-check.yml (1)
10-11: LGTM: Manual trigger addition is beneficial.
Adding the workflow_dispatch trigger is a good practice as it allows manual execution of formatting checks when needed.
tests/CMakeLists.txt (2)
Line range hint 1-35: Verify C++23 compatibility with dependencies.
The test executable links against several external libraries (CGAL, TBB, fmt, date-tz). Please ensure these dependencies are compatible with C++23.
Let's check the dependency requirements:
#!/bin/bash
# Description: Check dependency version requirements that might affect C++23 compatibility
# Check vcpkg.json for dependency versions
echo "Checking dependency versions..."
if [ -f "vcpkg.json" ]; then
cat vcpkg.json
fi
# Look for any dependency-specific configuration
echo "Checking for dependency-specific configuration..."
rg -g "CMakeLists.txt" -A 3 "find_package|CGAL|TBB|fmt|date"20-21: LGTM! Verify compiler support for C++23.
The upgrade to C++23 aligns with changes in other CMake files. However, since this PR aims to fix AppVeyor issues, ensure that the CI environment's compiler fully supports C++23.
Let's check the compiler requirements in the repository:
✅ Verification successful
C++23 upgrade is compatible with AppVeyor CI environment
The verification shows that:
- AppVeyor uses Visual Studio 2022 with Clang-cl compiler
- C++23 is consistently used across the project (all executables use
cxx_std_23) - The project uses vcpkg for dependency management, which ensures compatible versions
The upgrade to C++23 in the test executable aligns with the project-wide standard and is supported by the CI environment's toolchain.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Look for minimum compiler version requirements or CI configuration
# that might specify compiler versions
# Check root CMakeLists.txt for compiler requirements
echo "Checking compiler requirements..."
rg -A 5 "cmake_minimum_required|compiler|MSVC|GNU|Clang" CMakeLists.txt
# Check CI configuration
echo "Checking AppVeyor configuration..."
rg -A 5 "image:|build:|compiler" .appveyor.yml
Length of output: 5571
Script:
#!/bin/bash
# Let's check for compiler requirements and CI configuration more thoroughly
# Check root CMakeLists.txt for compiler requirements and C++ standard settings
echo "Checking CMakeLists.txt for compiler settings..."
rg "CMAKE_CXX_STANDARD|CMAKE_CXX_COMPILER|MSVC|GNU|Clang" CMakeLists.txt
# Check AppVeyor configuration
echo "Checking AppVeyor configuration..."
if [ -f ".appveyor.yml" ]; then
cat .appveyor.yml
fi
# Check for any C++23 specific settings across all CMake files
echo "Checking C++23 usage across CMake files..."
fd -e cmake -e txt -x rg "cxx_std_23|CMAKE_CXX_STANDARD.*23"
# Check for any compiler version checks
echo "Checking for compiler version requirements..."
rg "CMAKE_CXX_COMPILER_VERSION|check_cxx_compiler|COMPILER_ID"
Length of output: 3412
cmake/StandardProjectSettings.cmake (2)
58-64: LGTM! UTF-8 encoding configuration looks good.
The implementation correctly handles UTF-8 encoding for both MSVC and non-MSVC compilers. The /utf-8 option for MSVC and -finput-charset=UTF-8 for others are appropriate choices.
#!/bin/bash
# Description: Check for potential UTF-8 encoding issues in source files
# Look for files with UTF-8 characters
echo "Checking for files containing UTF-8 characters..."
rg -l '[^\x00-\x7F]'
# Look for Unicode BOM markers
echo -e "\nChecking for files with BOM markers..."
fd -t f -x hexdump -C {} | rg 'ef bb bf'41-44: Verify compiler support for C++23.
The upgrade to C++23 is significant. As C++23 is relatively new, please ensure all target compilers (especially MSVC, GCC, and Clang) fully support the C++23 features you plan to use.
✅ Verification successful
Let me generate another script to search for C++23 specific features since the previous output was focused on UTF-8 and documentation:
Based on the search results, I can now provide a final response since we have sufficient information about C++23 feature usage and compiler requirements:
C++23 upgrade appears safe but requires attention to std::expected usage
The codebase currently only uses one C++23 feature - std::expected - which is used in several header files including Move_command.hpp, Ergodic_moves_3.hpp, and Apply_move.hpp. No other C++23-specific features (like std::generator, std::flat_map, std::mdspan, std::print, etc.) are being used.
- The
std::expectedusage appears to be for error handling, which is a stable and widely-implemented C++23 feature - The project already has CI workflows for multiple compilers (GCC, Clang, MSVC) that would catch compatibility issues
- The CMake configuration properly enforces C++23 with
CMAKE_CXX_STANDARD_REQUIRED ON
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for C++23 compiler requirements in the codebase
# Search for C++23 specific features in the source code
echo "Searching for C++23 specific features..."
rg -l 'std::(expected|generator|flat_map|flat_set|mdspan|print|ranges::to|stacktrace)'
# Look for compiler version requirements in documentation
echo -e "\nChecking documented compiler requirements..."
fd -g 'README*' -X cat
fd -g 'INSTALL*' -X cat
Length of output: 25616
Script:
#!/bin/bash
# Search for C++23 specific features in source files
echo "Searching for C++23 features..."
# Search for C++23 specific features
echo "Checking for std::expected usage..."
rg "std::expected" -A 2
echo -e "\nChecking for std::generator usage..."
rg "std::generator" -A 2
echo -e "\nChecking for std::flat_map/flat_set usage..."
rg "std::(flat_map|flat_set)" -A 2
echo -e "\nChecking for std::mdspan usage..."
rg "std::mdspan" -A 2
echo -e "\nChecking for std::print usage..."
rg "std::print" -A 2
echo -e "\nChecking for std::ranges::to usage..."
rg "std::ranges::to" -A 2
echo -e "\nChecking for std::stacktrace usage..."
rg "std::stacktrace" -A 2
# Check compiler requirements in CMake files
echo -e "\nChecking compiler requirements in CMake files..."
fd -e cmake -X cat
Length of output: 15067
.coderabbit.yaml (1)
81-92: Verify integration requirements.
The configuration includes empty Jira and Linear integrations. If these integrations are not needed, consider removing them to maintain a cleaner configuration.
CMakeLists.txt (1)
79-80: 🧹 Nitpick (assertive)
Fix comment style and verify Qt5 removal impact.
The commented-out line uses a different comment style (#) than the rest of the file. Also, ensure that removing the Qt5 component doesn't affect any existing functionality.
#!/bin/bash
# Description: Check for Qt5 dependencies in the codebase
# Note: This helps ensure Qt5 removal won't break existing features
# Look for Qt5 usage in source files
rg -g '!{build,vcpkg_installed}/*' '(Qt5|QT5|Qt\s|QWidget|QApplication)' .
# Check for Qt-related CMake configuration
rg -g '!{build,vcpkg_installed}/*' 'find_package\(.*Qt' .Apply this diff to maintain consistent comment style:
-#find_package(CGAL CONFIG REQUIRED OPTIONAL_COMPONENTS Qt5)
+# find_package(CGAL CONFIG REQUIRED OPTIONAL_COMPONENTS Qt5)There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Outside diff range comments (1)
src/bistellar-flip.cpp (1)
Confirmed: Invalid triangulation after bistellar flip requires attention
The issue is well-documented in both the source code (
src/bistellar-flip.cpp) and tests (tests/Ergodic_moves_3_test.cpp). The current implementation only warns about the validation failure but continues execution, which could lead to incorrect triangulation state. This needs to be addressed by:
- Converting the
WARNto a proper error handling mechanism- Fixing the neighbor relationship update logic in the bistellar flip operation
- Adding validation checks before completing the flip operation
🔗 Analysis chain
Line range hint
134-137: Critical: Address the FIXME comment regarding invalid triangulationThe triangulation becomes invalid after the bistellar flip due to incorrect neighbor relationships. This is a critical issue that needs addressing. Consider:
- Adding assertions to verify neighbor relationships
- Implementing proper neighbor updates during the flip operation
- Adding debug logging to track neighbor changes
Let's verify if this issue is documented or if there are similar cases:
Let me gather more context about this validation issue.
Let me check the implementation of the bistellar flip operation to understand how neighbors are handled.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for similar validation issues or related fixes rg -g '!{*.md,*.txt}' -i "neighbor.*not.*neighbor|invalid.*triangulation"Length of output: 544
Script:
#!/bin/bash # Check the implementation around the FIXME comment rg -B 5 -A 5 "the flip neighbor of c has not c as neighbor" src/bistellar-flip.cpp # Look for validation checks in the bistellar flip implementation ast-grep --pattern 'if ($$$) { WARN($$$); $$$ }' src/bistellar-flip.cpp # Check for related test cases rg -B 2 -A 2 "invalid.*triangulation|neighbor.*not.*neighbor" tests/Length of output: 961
Script:
#!/bin/bash # Look for neighbor-related operations in bistellar flip ast-grep --pattern 'void bistellar_flip($$$) { $$$ }' src/bistellar-flip.cpp # Check for neighbor validation implementations ast-grep --pattern 'bool is_valid($$$) { $$$ }' src/bistellar-flip.cpp # Look for neighbor-related functions rg -l "neighbor" src/Length of output: 200
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
⛔ Files ignored due to path filters (4)
.coderabbit.yamlis excluded by none and included by noneCMakeLists.txtis excluded by none and included by nonecmake/StandardProjectSettings.cmakeis excluded by none and included by nonesrc/CMakeLists.txtis excluded by none and included by none
📒 Files selected for processing (1)
src/bistellar-flip.cpp(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
src/bistellar-flip.cpp (1)
Pattern src/**/*.cpp: Focus on performance, memory management, and RAII principles
🔇 Additional comments (1)
src/bistellar-flip.cpp (1)
Line range hint 1-89: Well-structured code with robust error handling
The code demonstrates excellent practices:
- Comprehensive error handling with specific catch blocks
- Good use of RAII principles
- Clear documentation and purpose
C++23 support check left out AppleClang
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Outside diff range comments (1)
.github/workflows/macos.yml (1)
Python cleanup is necessary but needs documentation
The cleanup is actually necessary as the workflow immediately installs a fresh Python version via Homebrew (
brew install ... python). The existing symlinks could interfere with the new installation. However, this reasoning should be documented in the workflow.
- Add a comment before the cleanup section explaining: "Remove existing Python symlinks to prevent conflicts with Homebrew's Python installation"
🔗 Analysis chain
Line range hint
28-43: Verify the necessity of Python symlink cleanup.The workflow includes extensive Python symlink cleanup steps. While this might be addressing specific issues, it would be helpful to document the reasoning.
Let's check if this cleanup is consistently applied across other workflows:
Consider adding a comment explaining why these cleanup steps are necessary.
Let me gather more context about this Python cleanup by checking the surrounding code and any related discussions.
This will help us understand:
- The complete workflow context where this cleanup is used
- Any related discussions that might explain this cleanup
- Any surrounding comments or steps that provide context
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Check if similar Python cleanup exists in other workflow files rg -l "rm.*bin/python" .github/workflows/Length of output: 71
Script:
#!/bin/bash # Check the complete workflow file to understand the context cat .github/workflows/macos.yml # Look for any related discussions or PRs gh pr list --search "python cleanup macos" --state all gh issue list --search "python cleanup macos" --state all # Check if there are any comments in the workflow explaining this rg -B 5 -A 5 "rm.*bin/python" .github/workflows/macos.ymlLength of output: 2272
🧰 Tools
🪛 yamllint
[warning] 3-3: truthy value should be one of [false, true]
(truthy)
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
📒 Files selected for processing (2)
.github/workflows/macos.yml(1 hunks)CMakeLists.txt(2 hunks)
🧰 Additional context used
🪛 yamllint
.github/workflows/macos.yml
[warning] 3-3: truthy value should be one of [false, true]
(truthy)
🔇 Additional comments (4)
.github/workflows/macos.yml (1)
3-11: LGTM! Well-structured workflow triggers.
The expanded trigger configuration is well-designed, providing automated runs for critical events while maintaining manual trigger capability. The branch specifications are appropriate for a typical Git workflow.
🧰 Tools
🪛 yamllint
[warning] 3-3: truthy value should be one of [false, true]
(truthy)
CMakeLists.txt (3)
33-33: LGTM: C++23 standard update
The upgrade to C++23 is properly implemented and supported by the compiler version checks added below.
70-78: LGTM: Comprehensive compiler version checks
Excellent implementation of compiler version checks for C++23 support. The version requirements are accurate for each compiler:
- MSVC ≥ 19.34
- GCC ≥ 12.2
- Clang ≥ 16.0
- AppleClang ≥ 14.0
89-90: Verify removal of CGAL Qt5 component
The simplification of CGAL dependency by removing the Qt5 optional component looks good. However, let's verify that no part of the codebase requires CGAL's Qt5 features.
✅ Verification successful
CGAL Qt5 component can be safely removed
The codebase scan shows no active usage of CGAL's Qt5 features. The only reference found was the commented-out line in CMakeLists.txt that we're reviewing. This confirms that removing the Qt5 optional component from CGAL configuration is safe.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Description: Check for any CGAL Qt5 dependencies in the codebase
# Look for CGAL Qt5 related includes or usage
rg -g '!{build,vcpkg_installed}/*' '(CGAL.*Qt|Qt.*CGAL)' .
# Check if any files include CGAL's Qt headers
rg -g '*.{h,hpp,cpp}' '#include.*CGAL.*Qt' .
Length of output: 184
There was a problem hiding this comment.
Actionable comments posted: 3
🧹 Outside diff range comments (1)
.github/workflows/macos.yml (1)
Line range hint
27-44: Consider making the cleanup step more robustWhile cleaning up Python symlinks is good practice, the current implementation might fail if some files don't exist. Consider making the cleanup more resilient.
Here's a more robust approach:
- name: Setup run: | - rm /usr/local/bin/2to3 - rm /usr/local/bin/2to3-3.11 - rm /usr/local/bin/2to3-3.12 - rm /usr/local/bin/idle3 - rm /usr/local/bin/idle3.11 - rm /usr/local/bin/idle3.12 - rm /usr/local/bin/pydoc3 - rm /usr/local/bin/pydoc3.11 - rm /usr/local/bin/pydoc3.12 - rm /usr/local/bin/python3 - rm /usr/local/bin/python3.11 - rm /usr/local/bin/python3.12 - rm /usr/local/bin/python3-config - rm /usr/local/bin/python3.11-config - rm /usr/local/bin/python3.12-config + # Remove Python symlinks if they exist + for file in \ + /usr/local/bin/{2to3,idle3,pydoc3,python3,python3-config}{,-3.11,-3.12}; do + [ -L "$file" ] && rm "$file" || true + done brew install automake autoconf autoconf-archive libtool texinfo yasm ninja python ccache pkg-configThis approach:
- Uses a single loop to handle all symlinks
- Checks if files exist and are symlinks before removal
- Continues even if some files are missing
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
📒 Files selected for processing (2)
.github/workflows/macos.yml(2 hunks)CMakeLists.txt(3 hunks)
🧰 Additional context used
🪛 yamllint
.github/workflows/macos.yml
[warning] 3-3: truthy value should be one of [false, true]
(truthy)
🪛 GitHub Check: build
CMakeLists.txt
[failure] 77-77:
Clang 16.0 or higher required for C++23 support
🔇 Additional comments (2)
.github/workflows/macos.yml (1)
3-11: LGTM: Well-structured workflow triggers
The updated trigger configuration provides good coverage for automated CI:
- Push events to main/develop ensure continuous integration
- Pull requests to develop enable pre-merge validation
- Workflow dispatch allows manual triggers when needed
🧰 Tools
🪛 yamllint
[warning] 3-3: truthy value should be one of [false, true]
(truthy)
CMakeLists.txt (1)
33-33: LGTM: C++23 standard correctly configured.
The C++23 standard is properly set using target_compile_features on the project_options interface library, which will propagate to all targets linking against it.
0f0248c to
ccb47e7
Compare
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
There was a problem hiding this comment.
Actionable comments posted: 0
🧹 Outside diff range comments (2)
src/bistellar-flip.cpp (2)
Line range hint
94-136: Consider strengthening RAII practices in test scenarios.While CGAL handles most memory management, consider these improvements for better resource management and exception safety:
- Use
std::unique_ptrfor managing the triangulation in test scenarios- Consider implementing RAII wrappers for CGAL resources if they're reused across tests
Example refactor for the test scenario:
class TriangulationFixture { private: std::unique_ptr<ergodic_moves::Delaunay> triangulation; public: TriangulationFixture() { auto vertices = bistellar_triangulation_vertices(); triangulation = std::make_unique<ergodic_moves::Delaunay>( vertices.begin(), vertices.end()); } auto get() -> ergodic_moves::Delaunay& { return *triangulation; } };
Neighbor relationship validation failure requires immediate attention
The issue is confirmed through the test code which shows that after performing a bistellar flip, the triangulation's neighbor relationships become invalid. This is a critical issue as it affects the core functionality of the geometric operations.
Key findings:
- The failure occurs specifically in the neighbor relationship validation after the flip operation
- The code uses CGAL's Delaunay triangulation and performs geometric validation
- The issue is reproducible and tracked in the test suite
Recommended actions:
- Add debug logging before and after the flip to track cell neighbor relationships
- Verify that all neighbor pointers are properly updated during the flip operation
- Consider adding invariant checks at each step of the flip operation
🔗 Analysis chain
Line range hint
134-136: Critical: Address triangulation validation failure after bistellar flip.The FIXME comment indicates that the triangulation becomes invalid after the flip operation due to incorrect neighbor relationships. This could lead to undefined behavior in subsequent operations.
Let's verify if this is a known CGAL issue:
Would you like help implementing additional debug logging or creating a minimal reproduction case to track down this issue?
Let me gather more context about this issue by examining the surrounding code and error handling.
Let me check one more thing to understand the validation and flip implementation better.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash # Search for similar issues in CGAL documentation and header files rg -i "neighbor.*not.*neighbor|invalid.*after.*flip" --type cppLength of output: 241
Script:
#!/bin/bash # Get more context around the error message and FIXME comment rg -B 5 -A 5 "flip neighbor.*not.*neighbor" src/bistellar-flip.cpp # Look for flip validation or error handling code ast-grep --pattern 'if ($$$) { $$$ throw $$$; $$$ }' src/bistellar-flip.cppLength of output: 507
Script:
#!/bin/bash # Look for the flip implementation and validation checks ast-grep --pattern 'bool is_valid() { $$$ }' src/bistellar-flip.cpp # Check for CGAL triangulation validation calls rg -B 2 -A 2 "is_valid|flip" src/bistellar-flip.cppLength of output: 1818
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
📒 Files selected for processing (1)
src/bistellar-flip.cpp(1 hunks)
🧰 Additional context used
📓 Path-based instructions (1)
src/bistellar-flip.cpp (1)
Pattern src/**/*.cpp: Focus on performance, memory management, and RAII principles
🔇 Additional comments (1)
src/bistellar-flip.cpp (1)
72-74: LGTM! Visualization configuration implemented as suggested.
Note we also updated vcpkg
There was a problem hiding this comment.
Actionable comments posted: 5
📜 Review details
Configuration used: .coderabbit.yaml
Review profile: ASSERTIVE
📒 Files selected for processing (4)
.appveyor.yml(1 hunks).coderabbit.yaml(1 hunks).github/workflows/macos.yml(1 hunks)CMakeLists.txt(3 hunks)
🧰 Additional context used
🪛 yamllint
.appveyor.yml
[error] 22-22: too many spaces before colon
(colons)
[error] 23-23: too many spaces before colon
(colons)
🔇 Additional comments (8)
.appveyor.yml (1)
22-23: Review cache configuration changes
The modifications to cache behavior suggest addressing build stability issues:
- Setting
APPVEYOR_SAVE_CACHE_ON_ERRORto false prevents potentially corrupted caches from being saved when builds fail - Setting
APPVEYOR_CACHE_SKIP_RESTOREto true ensures fresh dependencies by bypassing cached content
While this might increase build times, it's a reasonable approach to resolve cache-related issues. However, once the build issues are resolved, consider re-enabling cache restoration for faster builds.
Let's verify the cache paths are consistent:
✅ Verification successful
The complete file content will help us verify:
- If the cache paths are properly configured relative to other settings
- If there are any other cache-related configurations that might interact with our changes
- The overall context of where these cache settings are being applied
Cache configuration is properly set up and aligned with build requirements
The cache configuration is well-structured and appropriate for a vcpkg-based C++ project:
- Cache paths correctly target vcpkg archives and packages
- Disabling cache on error and skipping restore is a valid strategy for addressing build stability
- Cache settings are properly integrated with vcpkg configuration and build environment
The changes are reasonable and consistent with the project's build requirements. Once build stability improves, you may want to re-enable cache restoration by setting APPVEYOR_CACHE_SKIP_RESTORE to false for faster builds.
🏁 Scripts executed
The following scripts were executed for the analysis:
Script:
#!/bin/bash
# Verify cache paths exist in the configuration
rg "cache:" -A 3 .appveyor.yml
Length of output: 119
Script:
#!/bin/bash
# Let's check if there are any other cache-related configurations in the file
# and verify the overall structure of the AppVeyor configuration
cat .appveyor.yml
Length of output: 1944
🧰 Tools
🪛 yamllint
[error] 22-22: too many spaces before colon
(colons)
[error] 23-23: too many spaces before colon
(colons)
.coderabbit.yaml (3)
1-4: LGTM! Basic configuration is well-structured.
The language setting and tone instructions are clear and appropriate. The tone instructions effectively guide reviewers to maintain professionalism while focusing on technical accuracy.
5-30: Excellent review configuration with detailed path instructions!
The review settings are comprehensive and well-structured. The path instructions for C++ files are particularly valuable, providing clear guidance for:
- Performance and RAII principles in source files
- Design patterns in header files
- Comprehensive test coverage with doctest
31-37: Well-configured auto-review settings!
The auto-review configuration maximizes coverage by enabling incremental reviews and including draft PRs, which helps catch issues early in the development process.
CMakeLists.txt (4)
Line range hint 1-32: LGTM: Well-structured CMake configuration.
The project setup with vcpkg integration and CMake configuration is clean and follows best practices.
70-83: LGTM: Comprehensive compiler version checks for C++23.
The implementation includes:
- Clear documentation of minimum compiler versions
- Appropriate version requirements for each compiler
- Helpful error messages
Line range hint 94-99: LGTM: Clean CGAL configuration.
The simplified CGAL configuration with flag override prevention is appropriate and well-implemented.
33-33: Verify dependency compatibility with C++23.
The upgrade to C++23 is significant. Please ensure all dependencies (CGAL, Eigen3, fmt, etc.) are compatible with C++23 features.
|
|
@coderabbitai configuration |
CodeRabbit configurationlanguage: en-US
tone_instructions: >-
Be constructive and professional. Focus on technical accuracy while
maintaining a friendly tone.
early_access: true
enable_free_tier: true
reviews:
profile: assertive
request_changes_workflow: false
high_level_summary: true
high_level_summary_placeholder: '@coderabbitai summary'
auto_title_placeholder: '@coderabbitai'
review_status: true
commit_status: true
poem: true
collapse_walkthrough: false
sequence_diagrams: true
changed_files_summary: true
labeling_instructions: []
path_filters: []
path_instructions:
- path: src/**/*.cpp
instructions: Focus on performance, memory management, and RAII principles
- path: include/**/*.hpp
instructions: Focus on design patterns, interfaces, and encapsulation
- path: test/**/*.cpp
instructions: >
Review the following unit test code written using doctest. Ensure the
following:
- Comprehensive test coverage and proper test organization.
- The code adheres to best practices using doctest.
- Descriptive test names are used to clearly convey the intent of each test.
abort_on_close: true
auto_review:
enabled: true
auto_incremental_review: true
ignore_title_keywords: []
labels: []
drafts: true
base_branches: []
tools:
shellcheck:
enabled: true
ruff:
enabled: true
markdownlint:
enabled: true
github-checks:
enabled: true
timeout_ms: 90000
languagetool:
enabled: true
enabled_only: false
level: default
biome:
enabled: true
hadolint:
enabled: true
swiftlint:
enabled: true
phpstan:
enabled: true
level: default
golangci-lint:
enabled: true
yamllint:
enabled: true
gitleaks:
enabled: true
checkov:
enabled: true
detekt:
enabled: true
eslint:
enabled: true
rubocop:
enabled: true
buf:
enabled: true
regal:
enabled: true
actionlint:
enabled: true
pmd:
enabled: true
cppcheck:
enabled: true
semgrep:
enabled: true
circleci:
enabled: true
chat:
auto_reply: true
knowledge_base:
opt_out: false
learnings:
scope: auto
issues:
scope: auto
jira:
project_keys: []
linear:
team_keys: []
pull_requests:
scope: auto
|
* (ci) Update vcpkg, fix documentation
Minor documentation fixes, update vcpkgGitCommitId: 6b6a35335c9064fac2ec6684c4f79808dce59b7d
* (feature) Print out edges
Will be used to print the pivot edge of upcoming (4,4) bistellar move.
Also update the license.
* (fix) Failing test and clang-format
Also update vcpkgGitCommitId: 83dd8264fbf928a06ae587f4112442bc47e1f6e3 and continue fleshing out bistellar_flip.
* (feature) More work on bistellar_flip
Replace foliated_triangulations::vertices_from_cell, which only works on one cell, with manifolds::get_vertices_from_cells, which works on a container of cells. Move it to the foliated_triangulations namespace.
* (style) clang-format 14
Nothing major, unless it trips up clang-format on GitHub Actions.
Also update to vcpkgGitCommitId: 9ff4659a075d5f4f30aaca9f7c4e7f059ecc1d6d
* (fix) Update GHA to clang-format 14
For whatever reason, the same .clang-format produces different results on clang-format-13 vs clang-format-14. So, update to use clang-format-14 on GitHub Actions.
* (feature) bistellar_flip_really
The bistellar_flip_really function completes the (4,4) move. Of course, it has bugs that need to be fixed, namely that it apparently leaves the Triangulation Data Structure in an invalid state, thus failing all of the checks against is_valid() which eventually leads to a std::terminate.
So, this will need to be fixed.
Also, update vcpkgGitCommitId: 89295c9fe22e97ca9e380a6c771ccf2ff09dca95, which incorporates the fixed version of date in vcpkg which fixes the use-of-uninitialized-value result from MSAN.
* (docs) Document bistellar flip
Update vcpkgGitCommitId: 5d66a98f64188bbd806b8e62e66c097d90eb3224
* (refactor) bistellar_flip and bistellar_flip_really
Update vcpkgGitCommitId: c37cc7836a0e1cfd55747be8ec472eafa8055276
* (fix) Failing tests
While debugging bistellar_flip, make sure do_44_move returns the manifold.
Fix input parameter on do_44_move to be a const reference to the manifold.
Update to Boost 1.79 and qt6.3 via vcpkgGitCommitId: ecd55433fd37129109f663548f3b11204e35e630
Also proposed a pull request https://github.com/harupy/find-trailing-whitespace/pull/18 to only check whitespace on changed files.
* (test) Add simple test of bistellar flip
Also update README.md.
* (fix) Filter out boundary edges in find_44_move
Working through the minimal example in bistellar.cpp revealed that any edge was selected due to infinite incident cells being counted.
So, add a check to not count infinite cells.
* (feature) Complete bistellar flip example
The source file bistellar.cpp now contains a working minimal example of a bistellar flip. Also added a CTest to check for a successful run.
* (docs) Update and fix documentation [skip ci]
Fix documentation links and update the bistellar flip example.
* (feature) Add helper functions to Foliated_triangulation for bistellar
Add find_vertex and find_cell helper functions to FoliatedTriangulation. These are wrappers for CGAL::Triangulation_3::is_vertex and ::is_cell, which are boolean functions with out parameters.
The plan is to recast these as free functions taking an Delaunay triangulation parameter, so that they can be used in the bistellar.cpp example. That way, if they are accepted into Triangulation_3 then bistellar_flip_really becomes easy to write in terms of internal Triangulation_3 functions.
Also update GitHub Actions to vcpkgGitCommitId: a106de33bbee694e3be6243718aa2a549a692832.
Change README to reflect that vcpkg manifest mode is now the default, so vcpkg install --feature-flags=manifests is no longer necessary.
* (refactor) Move Foliated_triangulation member functions into free fcns
Yes, unified call syntax here would be nice.
All tests pass. Note that hilarity (i.e. bugs) ensues if foliated_triangulations::collect_edges takes a Delaunay triangulation by value instead of constant reference.
Update to vcpkgGitCommitId: 47cbed88514c0e48fdb72ddc29545f35136f5461
* (feature) Replace Catch2 with doctest
Catch2 has a number of issues with ASAN, compile times, etc.
doctest is much faster and simpler.
There are a couple of tests that need to be rewritten, and have been commented out.
* (test) Fix all tests to run on doctest
Update vcpkgGitCommitId: 2e781b513f486618909d9f78185c0c7ebb54624c
* (fix) Various issues from ASAN
Mostly to try to see if we can get less output from ASAN.
* (test) Use C++20 Mathematical constants
Update vcpkgGitCommitId: 840f701d83d5019aa5033c9d9d08a4cc0d0ebdce
which should fix spdlog.
* (test) Fix SonarLint warning
Also take advantage of std::numbers in C++20.
* (refactor) Start migrating features for bistellar move
Should rename functions to be consistent.
* (refactor) Ergodic_moves_3 operate on Manifold_3, helpers on Delaunay_3
Geometry3 -> Geometry_3
FoliatedTriangulation3 -> Foliated_Triangulation_3
etc.
New function incident_cells_from_edge to encapsulate all the logic behind finding locations for bistellar flips based on the number of incident cells (ie. == 4).
Updated to vcpkgGitCommitId: c379c64ff9ec1b8c6100ebff8e81ecdcb49b330c
* (refactor) Simplify bistellar_flip_really
Only need a reference to the triangulation, the edge to be flipped, and the top and bottom vertices.
Update vcpkgGitCommitId: 1323f4b83d6a91e415e9ce06a45c9d0a6473aaf2
The function still needs to be debugged, of course.
* (test) Update doctest and remove Catch2 references
Turn on doctest fast assertions.
Fix references to Catch in documentation and CI.
Use doctest test suites.
Update CI to use vcpkgGitCommitId: 9e8da9bd8aa16fb268ac68f731c44fdef5fec1ab
* (fix) Fix bug identified by PVS Studio
PVS Studio identified possible use of an uninitialized value obtained by a function returning a std::optional<T>.
* (fix) clang-tidy warnings
# ----------------------------------------------------------
# Header - (type): Brief description
# ----------------------------------------------------------
# * feature A new feature
# * fix A bug fix
# * docs Changes to documentation only
# * style Style/format changes (whitespace, etc.)
# * refactor Changes not related to a bug or feature
# * performance Changes that affects performance
# * test Changes that add/modify/correct tests
# * build Changes to build system (configs, etc.)
# * ci Changes to CI pipeline/workflow
# ----------------------------------------------------------
# ----------------------------------------------------------
# Body - More detailed description, if necessary
# ----------------------------------------------------------
# * Motivation behind changes, more detail into how
# functionality might be affected, etc.
# ----------------------------------------------------------
# ----------------------------------------------------------
# Footer - Associated issues, PRs, etc.
# ----------------------------------------------------------
# * Ex: Resolves Issue #207, see PR #15, etc.
# ----------------------------------------------------------
* (fix) fmt::format strings, update to latest vcpkg
fmt::print doesn't like CGAL point << output anymore, so wrap it with a point_to_str that converts it.
Fix Metropolis to use SystemError.what() which is a const string for reporting via spdlog::trace which uses fmt which requires const string arguments.
Similar conversions using Gmpzf.to_double to make spdlg::debug happy.
Update vcpkgGitCommitId: 23cc58477e200bb54c293ad76f3ce438dbabc86c
* (fix) Don't const-qualify functions that return by value
Nice catch via sonarcloud. Also remove unused includes.
* (fix) More formatting and some logic fixes
Found a few more places to fix fmt.
Simplified try_32_move.
Removed diagnostic code that was throwing exceptions. That info gets printed out before the runs already.
Updated vcpkgGitCommitId: 5fb8f6c24ec13a36db460a555b24b20be03bd73c
* (fix) Clang-tidy fixes
Except the usual transparent functors 'less<>' issue which is unfixable given docopt.cpp's current implementation.
* (fix) clang-format
Consistent formatting
* (ci) Update to Boost 1.80
Via vcpkgGitCommitId: 316323019266ff54be39e0cb2c2de9caaa94cf75
* (ci) Update vcpkg
vcpkgGitCommitId: 01b29f6d8212bc845da64773b18665d682f5ab66
* (ci)
Update packages: vcpkgGitCommitId: 2f0a16b5ae24fec6c615924e2fbc8bc43ab73764
* (build) Update Slurm script for HPC runs
Also update packages to vcpkgGitCommitId: 929fc61671bb5e5e7322981dce1153abf24f54cf
And re-enable Windows builds on GHA.
* (refactor) Run include-what-you-use
Update GitHub Actions with vcpkgGitCommitId: 57ae838ee87313a3f0c5e14b008767d97d94debe
Start slow with iwyu to ensure it's correct on all platforms.
* (fix, ci) Yep, iwyu makes some bad suggestions
Update Travis-CI build environment to Jammy with gcc-11 and clang-14.
* (fix) Fix clang-format and iwyu errors
GHA should all pass now
* (ci) Fix CodeCov, update clang on Travis-CI
Update GitHub Actions to vcpkgGitCommitId: bdf073a835ebea07e1d039cd9cff4f650014e4ce
* (ci) Fix Travis-CI
Jammy doesn't have clang-15 yet.
vcpkgGitCommitId: ec7216c8e1206580ccec7a33024ef38216efdaf8
* (ci) Fix GitHub Actions, clang-format
vcpkgGitCommitId: 7e7c62d863b1bf599c1d104b76cd8b74475844d4
* (refactor) Fix clang-tidy warnings
And GitHub Action for Windows.
* (refactor) More clang-tidy fixes
Also fix GHA for Windows.
* (refactor) Bi-stellar flip
Import current version of bistellar flip from https://github.com/acgetchell/bistellar-flip
This mostly works except for setting neighboring cells correctly.
Update all tests accordingly.
Remove lots of dead code, including src/bistellar.cpp.
Update GHA to vcpkgGitCommitId: 783e2d8e9983a74fad1b9d7b1d88a020438d32b2
* (ci, fix, bug) Fix Travis-CI, clang-tidy, and a bug
Fix Travis-CI, which seems to require:
vcpkg install --feature-flags=manifests
Fix clang-tidy warnings.
Add back logic to set neighboring cells to new cells created in the bistellar flip.
Fixed a bug in get_incident_cells where it was using tds().is_valid() instead of tds().is_edge(Cell, i, j) to verify (Cell, i, j) is an edge in the triangulation.
Next step: debugging this so the triangulation is valid once the bistellar flip is complete.
* (ci) Trying a fix for Travis-CI
vcpkg integrate install not working on Travis-CI, bug report here:
https://github.com/microsoft/vcpkg/issues/27832
* (ci) Update SonarCloud, GitHub Actions
Use SonarCloud GitHub action to install sonar-scanner and build-wrapper and cache.
Update GitHub Actions to vcpkgGitCommitId: 6d6910d8cb7331b0dc35b38ce663f2aa6a4663f4
Add CMakePresets.json.
Enable Metropolis tests to run by default.
* (doc) Update documentation
Also update GitHub Actions.
* (performance) Fix clang-tidy warnings
Update Readme and vcpkgGitCommitId: 9074f833496ebd1b3e050f62568b9bba014f2d17
* (refactor) Use c++20 features now supported in all 4 compilers
* Use constinit where practical
* Use std::movable<> which is now available in <concepts>
* Update to vcpkgGitCommitId: 56765209ec0e92c58a5fd91aa09c46a16d660026
* Remove LGTM which is going away December 16, 2022
* Update README.md
* (feature) Visualization via Qt5
Initial commit.
* (ci) Fix CI build dependencies
Also run clang-format and add basic error handling to cdt-viewer.
Update to vcpkgGitCommitId: 71f51b100be2b5d32e3907572d99dc2f97088c8d
* (ci) Only build cdt-viewer on macOS
Too many Qt/vcpkg errors to troubleshoot right now.
* (feature) Read file and draw
Remove libgl1-mesa-dev and libglu1-mesa-dev from Linux CI images since we're not building Qt on Linux.
Update to vcpkgGitCommitId: 6adca01a3fadca0cc0b80f03ec57c7c3a0be5c02
* (feature) Reading and writing triangulations from files
Add read_file to generate triangulations from a file.
Also refactor the old write_file function to use the new write_file function.
* (refactor) Make write_file easier to use
Add static class variable so that the topology of the manifold can be queried, which allows the generation of a filename be done with just the members of the Manifold class. This allows the write_file to take the Manifold as an argument and from that generate the filename and save appropriately.
This also fixes a bug in CDT where the initial radius and foliation spacing were always set to 1.0, instead of reading the values from the manifold.
* (refactor, test, docs)
Various refactors to improve functional style.
Added doctests directly to cdt-viewer.
Made a cooler 3D foliated triangulation using cdt-viewer to use in README.md.
Updated GitHub Actions to vcpkgGitCommitId: a0cd246334a33107cdef4f701b0b532a71514b19
* (feature) Add functionality to read file from command line
This should wrap up feature/qt.
Docopt has been added so that cdt-viewer can read files and construct triangulations from them, and then draw with Qt.
Doctest has been carefully balanced with Docopt (they can clobber each other's command line arguments) by disabling Doctest unless in DEBUG mode. There's a dry-run option in Docopt that does nothing, but is useful for integration tests run with CTest.
Also refactored foliated_triangulations::squared_radius so that it should work correctly when templated by dimension.
* (doc) Update documentation prior to merge [skip ci]
Just updating documentation, no CI needed.
* (docs) Update documentation
Also update GitHub Actions to vcpkgGitCommitId: dbd30811862212d24bf929db99361c7c12326783
Make most Travis-CI actions required to pass.
Fix clang-tidy warning in cdt-viewer tests.
* (ci, docs)
Update AppVeyor to Visual Studio 2022
Add Table of Contents to README.md, and fix some links.
Update GitHub Actions to vcpkgGitCommitId: f9bea5d58186dc14e7e33132e43b52222147f51e
* (ci, doc, fix) Happy New Year!
Turned on unit tests in Windows CI via AppVeyor.
Update GitHub Actions to vcpkgGitCommitId: 0f719b3fdfc36f8dd45229370a0df180fdbf68f6
Run `git log --follow --format=%ad --date default <file> | tail -1` a bunch to get correct copyright dates on files.
Updated the README to reflect that gmplib.org fixed their SSL cert, and CI works again.
Fix the yearly test on current_date_time to reflect it's 2023.
Close to a release, I think!
* (ci) Remove testing from AppVeyor
Not quite ready.
Also checking if caching is working properly.
* (ci) Fix AppVeyor caching
Documentation is wrong, submitted https://github.com/appveyor/website/pull/841 for the correct directories to cache.
* (docs, ci) Use new CodeCov uploader
Based on https://github.com/friendlyanon/cmake-init-executable/blob/master/.github/workflows/ci.yml
Update warnings in CMakePresets.json to be same as from CompilerWarnings.cmake.
Update README.md to show current run of ./build/src/cdt --help
* (ci) Fix CodeCov uploader [skip ci]
Get the right python.
* (ci) Don't run vcpkg manifest mode in dev mode [ci skip]
Hopefully sets -Wno-error=dev to suppress warnings on VCPKG_BOOTSTRAP_OPTIONS, VCPKG_OVERLAY_PORTS, VCPKG_OVERLAY_TRIPLETS, VCPKG_INSTALL_OPTIONS, and Z_VCPKG_FEATURE_FLAGS.
We can activate this in GitHub so don't run AppVeyor and Travis.
* (ci) Fiddling with CMakePresets for new CodeCov uploader [ci skip]
Back out one change
* (ci) Turn off cmake dev errors [skip ci]
Attempt #2.
* (ci) More CMakePresets fun to fix CodeCov [skip ci]
Got further, but apparently don't use make. Set generator to Ninja which should be installed.
* (ci) Fixing weird filesystem errors [ci skip]
Seems like for gcc the use of <filesystem> only works in c++17 mode.
https://github.com/KhronosGroup/OpenXR-SDK-Source/issues/260
* (ci) Build CodeCov with clang [ci skip]
The weird filesystem header errors appear to be a bug in gcc-11.
* (ci) Remove options not supported by clang [ci skip]
-fkeep-static-functions is not supported and generates an error. -fkeep-inline-functions is not supported and generates a warning.
* (ci) Fix CodeCov upload
Based on https://github.com/skypjack/entt/blob/master/.github/workflows/coverage.yml
Update GitHub Action to vcpkgGitCommitId: 12c2a93b4007612b5ffa980c9d2235eb0bcac10f
* (ci) Fix Codecov uploader [skip ci]
Fix gcov/gcc version mismatch by specifying gcov install. Print out versions explicitly.
* (ci) Fix gcc for Codecov uploader [ci skip]
Gcov is implicitly installed with gcc, so let's ensure it's setup correctly.
* (ci) Use gcc-12 and clang-15 for GitHub Actions [ci skip]
I can kick this off manually in GitHub so no need to run AppVeyor and Travis-CI.
* (ci) Explicitly set compiler in setup-gcc and setup-clang [ci skip]
The `latest` keyword in egor-tensin/setup-clang and egor-tensin/setup-gcc doesn't use the actual latest, so specify gcc-12 and clang-15 explicitly.
* (ci) Update to gcc-12 and clang-15
Switch CodeCov to using clang-15
Standardize more using CMakePresets.json.
* (ci) Fix Travis
Add sourceline to install clang-15
* (ci) Revert Travis-CI to clang-14 and gcc-11
Too time-consuming to figure out at this point.
* (ci) Use cmake presets for GitHub Actions
Plus test whether clang-15 or gcc-11 work with gcov.
* (ci) More GitHub Actions and AppVeyor tuning with CMakePresets.json
Clang-15 seems the closest to getting to work with lcov, so switch to that.
It also now seems to work on Ubuntu 22.04.
Made a cmake preset for AppVeyor.
Turns out the cmake --preset=build also builds packages in vcpkg, so the Install packages step was installing them twice! That should speed up builds considerably on GitHub Actions.
* (ci) Fix AppVeyor and SonarCloud
Looks like SonarCloud only works with gcc-11.
AppVeyor started in the wrong directory.
* (ci) Fix AppVeyor and SonarCloud, try #2
Set the $VCPKG_ROOT environment variable in AppVeyor.
Use the build-wrapper in SonarCloud.
* (ci) AppVeyor #3
See if /DNOMINMAX is still required.
* (ci) Try to resolve gcov/gcc version mismatch
CodeCov fails because there's a version mismatch between gcc and gcov.
However, both gcc and gcov are at 11.3.0 so there shouldn't be a mismatch. A suggested fix is to change the directory to ensure artifacts from previous runs (which shouldn't be there in CI, but ...) aren't there.
Update GitHub Actions to vcpkgGitCommitId: c30de8e1369e03f4a569f8f224eed418dd0949bb
* (ci) Turn off QT in GitHub Actions
cdt-viewer uses QT which takes more than an hour to build in GitHub Actions, so disable that target in CI.
Update GitHub Actions to vcpkgGitCommitId: d40bedd6f6ab6ee47fd5d45e59e9a31e48872a59
* (ci) Also remove the tests for cdt-viewer [ci skip]
On GitHub Actions using macOS, we want to disable building cdt-viewer. Which worked, but forgot to also disable the tests.
Unfortunately this only saves link/compile time for cdt-viewer, but not the 3 hours it takes to build qt on the GitHub Actions runner with macOS.
vcpkg.json only understands platform, not environment variables.
* (test) Write a bistellar-flip test harness
We want to draw a minimal triangulation before and after a bistellar flip. The reason this is not in /tests is because it uses CGAL::draw() to display the results, which requires Qt5. Qt5 is extremely heavy and not needed for the other unit tests, so I don't want to require/link it to the test binary.
* (ci) Delete build caches
AppVeyor and GHA caching is failing.
Also update GHA to vcpkgGitCommitId: ae826fceaa15109814d0531faeda424f43047822
* (ci) Revert SonarCloud and CodeCov ci script , AppVeyor caching
SonarCloud and CodeCov are failing at the build step so revert configuration to using a long CMake command rather than CMakePresets.json.
Also turn on caching again for AppVeyor.
* (ci) Fix codecov and hopefully SonarCloud coverage
Looks like the new codecov action can run gcov by itself, so remove that step.
Update GHA to vcpkgGitCommitId: f1c9431598c2b8aa5168c35485c9a28321ff9f09
* (ci) Coverage should work now ...
Verified steps to be run manually ...
* Update packages, debug draw
Update vcpkgGitCommitId: 8e986ec51ae9728ff44b854390eef168f88ec687.
For whatever reason Qt doesn't popup.
* Update vcpkg
vcpkgGitCommitId: a7b6122f6b6504d16d96117336a0562693579933
* (fix) Enforce FoliatedTriangulation class invariant
The FoliatedTriangulation class invariant is that the timevalues and cell types stored in the vertices and cells of the Delaunay triangulation must correct.
The initialization order of the data members was re-arranged so that the triangulation, foliation initial radius, and foliation spacing were initialized first. This allows the vertices to be checked and corrected, and they are initialized next. Once the vertices have the correct timevalues, the cells can be initialized with the correct cell types. All other containers of edges and faces (sub-simplices) derive from the vertices and cells.
Also update to vcpkgGitCommitId: ae59b93af0c1dce4126e963fca5b330662495fa1
* (fix) Fix CI errors
Use newer version of clang-format, make cdt-opt triangulations larger so all moves are available and test doesn't fail.
Sadly Visual Studio 2022 now wants clang-15, still looking at that. Attempting Previous Visual Studio 2022 image on AppVeyor, which was working.
* (fix) More clang-format
Also document current issues with AppVeyor and CodeCov.
* Revert to using CodeCov GitHub Action
Working with Codecov Community support to determine why coverage is so different using the GitHub Action vs. using the Bash uploader.
https://community.codecov.com/t/codecov-github-action-doesnt-work-well-compared-to-bash-uploader/4220/4
Updated vcpkgGitCommitId: b81bc3a83fdbdffe80325eeabb2ec735a1f3c29d
Turn off the main program flow in bistellar-flip when in Debug, because Doctest runs in Debug mode instead.
Bistellar-flip links to Qt5, which adds a lot of overhead, so we don't want to use it unless needed (i.e. Release).
* Add method to read Delaunay triangulation in the Manifold
Also switch CodeCov back to the bash uploader.
Update GHA to vcpkgGitCommitId: d1e2ff0c340f89cc14ca67883dd069c6ada93582
Remove reference to vcpkg's installation bug of gmp on x64-osx, which has been fixed.
* Fix get_triangulation().get_delaunay calls
As well as documentation (@return -> @returns) and vcpkgGitCommitId: d10d511f25620ca0f315cd83dcef6485efc63010
* (fix) Fix make_triangulation and is_62_movable
Change potential infinite while loops to bounded for loops.
* (ci, fix) Add clang-tidy check, fix README
Add a check for clang-tidy on changed files.
Fix Travis-CI badge in README.
Fix documentation on Ergodic_moves_3.hpp.
vcpkgGitCommitId: c9f906558f9bb12ee9811d6edc98ec9255c6cda5
* (fix) Fixes to CodeCov and clang-tidy
Try using CodeCov GitHub action with gcov.
Move using statements inside ergodic_moves namespace so they aren't accidentally used elsewhere.
Fix do-while loops in incident_cells_from_edge, get_incident_cells, and find_pivot_edge.
Make more things const in FoliatedTriangulation<3>.
Use ergodic_moves namespace in bistellar-flip.cpp and Ergodic_moves_3_test.cpp.
* (fix) clang-format, doctests
Update to vcpkgGitCommitId: 69efe9cc2df0015f0bb2d37d55acde4a75c9a25b.
Fix format in bistellar-flip.cpp.
Use doctest's unary asserts to improve compilation times.
Use min_element, max_element, sort, and adjacent_find to more efficiently compare results from random number generator in tests.
* (fix) README, more tests
Fix the link to Travis-CI badge in README.md.
Use unary asserts in more tests.
* Remove -Wcomment warnings, use CHECK_EQ, REQUIRE_EQ
Ignore -Wcomment warnings on documentation that includes LaTEX. There's no way to resolve the warning without breaking the LaTEX formulas.
CHECK_EQ, REQUIRE_EQ compile 60% faster than the templated CHECK tests, so use those.
Update to vcpkgGitCommitId: cd5a39fc6333563884d9eea15bfb6f5a450b1cf1
* (ci) Try new CodeCov GitHub Action
Also update vcpkgGitCommitId: 4116148a7f5c09d39da34ffb75f33283796d687b
* (refactor) Update to Boost 1.82
Also revert to CodeCov bash uploader.
vcpkgGitCommitId: 501db0f17ef6df184fcdbfbe0f87cde2313b6ab1
* (ci) Update AppVeyor and CodeCov
AppVeyor broken but trying latest image. Remove directory spec from CodeCov GitHub action.
Use vcpkgGitCommitId: 6a3dd0874f153f8b375ec26210ea6d41dee3bb26
* (test) Activate certain tests
Apply_move tests were inactive due to some bug which should be fixed.
Move_always strategy tests activated on smaller triangulations.
This should increase coverage.
* (ci) Update CodeCov and SonarCloud to use gcc-12
Also update README as the latest AppVeyor image fixes the clang-16 problem.
Use ubuntu-latest on GitHub Actions, which runs Ubuntu 22.04.
Use macos-latest on GHA, which uses macos-12.
Use windows-latest on GHA, which uses windows-2022.
* (ci, refactor) Undo gcc-12 on CodeCov and SonarCloud
gcov has a version mismatch when reading .gcno files:
https://github.com/acgetchell/CDT-plusplus/actions/runs/4898327490/jobs/8747323081#step:9:20
Prune some unreachable code.
Remove some deprecated SonarCloud properties.
* Add back default cases and remove Expects and Ensures
Removing the default case from switches triggers a warning on Sonarcloud.
Ensures and Expects just end up calling std::terminate, but without any indication as to where the error is. So replace these with assert which will at least print the error line in Debug and be removed with NDEBUG.
* Update vcpkg
vcpkgGitCommitId: 65e91ebd9e1d8a5c054b98b87abef68d5d36ce6f
* Update packages
Add Settings tests back in.
vcpkgGitCommitId: a960fde0b60b6392d70375fe513dfa7eb083cc3a
* Update vcpkg to commit 5d2a0a9 in workflows and tests
This commit updates the vcpkg dependency in all GitHub workflows and tests from commit a960fde to commit 5d2a0a9. This change was made to ensure that the latest version of vcpkg is being used, which should improve compatibility with other dependencies. The changes were made using lukka/run-vcpkg@v11 instead of lukka/run-vcpkg@v10.
* Refactor build and test scripts for CI/CD workflows
- Update Appveyor script to run ctest on success
- Add continue-on-error flag to Github workflow test jobs
- Add test job to Linux and MacOS Github workflows
* feat: Add test for check_move function
This commit adds a new test scenario to the `Ergodic_moves_3_test.cpp` file. The test scenario checks if the `check_move` function returns true when a correct (2,3) move is performed on a given triangulation setup. The test creates a manifold with vertices and timevalues, performs the move, and then checks various properties of the resulting manifold. If all properties are as expected, the `check_move` function should return true.
The commit also includes a new free function called `make_causal_vertices`. This function takes in vectors of vertices and timevalues and creates causal vertices by pairing each vertex with its corresponding timevalue. If the sizes
* Update AppVeyor and Codecov configurations
- Updated the test script in `.appveyor.yml` to include generating JUnit test results and uploading them to AppVeyor API.
- Modified the `patch` and `changes` settings in `.codecov.yml` to disable patch uploads and changes detection.
- Changed the GCC version from 11 to 12 in `.github/workflows/codecov-upload.yml`.
- Added `gcov` package installation in `.github/workflows/codecov-upload.yml`.
* Refactor build and test scripts, update dependencies
- Refactored the build script in `.appveyor.yml` to use `cmake --preset=appveyor` and `cmake --build build`.
- Updated the test script in `.appveyor.yml` to run tests using `ctest`, outputting results to `test-results.xml`.
- Modified the after-test script in `.appveyor.yml` to upload test results using cURL.
- Updated dependencies in `.github/workflows/codecov-upload.yml` by upgrading packages and installing additional ones.
* Refactor code to use `foliated_triangulations::make_causal_vertices` function for creating causal vertices from points and timevalues.
- Refactored the `manifolds::make_causal_vertices` function in `Manifold.hpp` to use the `foliated_triangulations::make_causal_vertices` function.
- Updated the test cases in `Foliated_triangulation_test.cpp` to use the new `foliated_triangulations::make_causal_vertices` function.
- Removed unnecessary comments and debug statements.
* Refactor code for Manifold initialization and mutation
- Refactored the code in `Manifold.hpp` to update data structures when constructing a new triangulation or geometry.
- Updated the test cases in `Manifold_test.cpp` to use a 3-manifold instead of a manifold with four vertices.
- Added comments to clarify the purpose of constructing a new triangulation or geometry.
This commit improves the code for initializing and mutating 3-manifolds.
* Update GCC and Clang versions in CI configuration
- Updated the GCC version from 12 to 11 in `.github/workflows/codecov-upload.yml`
- Updated the GCC and Clang versions from 11 and 14 to 12 and 15 respectively in `.travis.yml`
Remove unused code
- Removed the unused `Causal_vertices` type from `Tetrahedron_test.cpp`
* Fixed FoliatedTriangulation copy constructor
Fixed macOS workflow and copy constructor
The commit updates the macOS workflow to run on macOS-13 instead of macos-latest. This ensures that the workflow runs on a specific version of macOS.
Additionally, the copy constructor of the `FoliatedTriangulation` class is fixed. It now correctly initializes the copied object with the same properties as the original, including the initial radius and foliation spacing. This ensures that all relevant data is properly copied when creating a new instance of `FoliatedTriangulation`.
* Fix macOS build
The commit fixes the macOS build by installing the pkg-config package as a dependency for macOS.
Also update vcpkgGitCommitId to 1ec3d05438d4c1edf62a330f65fcfe1d86e791b2 in multiple workflows.
* Update vcpkgGitCommitId in workflow files
- Updated the vcpkgGitCommitId in multiple workflow files to 78784c0b0aa87ae63bce01c2c040ce1b3269ecd1. This ensures that the correct version of vcpkg is used during the build process.
* Update vcpkgGitCommitId in workflow files
- Updated the vcpkgGitCommitId in multiple workflow files to "16eeb024de901eb84cde966f656027beaad8b450" for consistency and compatibility.
* Update vcpkgGitCommitId in GitHub workflows
- Updated the vcpkgGitCommitId in multiple GitHub workflow files to use a new commit ID (0895a813036f4d189e2bdd1b62741744614347b4) instead of the previous one (16eeb024de901eb84cde966f656027beaad8b450).
* Update vcpkgGitCommitId in GitHub workflows
- Updated the vcpkgGitCommitId in multiple GitHub workflow files to d5b03c125afee1d9cef38f4cfa77e229400fb48a. This ensures that the correct version of vcpkg is used during the build process.
* Add get_cell function
The commit adds a new function called "get_cell" to the Manifold.hpp file. This function retrieves a cell handle from four vertex handles. The commit also includes changes to various workflow files and a test file, updating the vcpkgGitCommitId value.
* Add new function
- Added a new function `get_vertex` to the `Manifold.hpp` file that obtains a vertex handle from a given point.
- Updated the `.github/workflows/codecov-upload.yml`, `.github/workflows/codeql-analysis.yml`, `.github/workflows/linux-clang.yml`, `.github/workflows/linux-gcc.yml`, `.github/workflows/macos.yml`, and `.github/workflows/windows-msvc.yml` files to use a different commit ID for restoring artifacts or setting up vcpkg.
- Added a new file, `.clang-tidy`, in the `cmake` directory with content to disable all checks in that folder.
- Modified the `Foliated_triangulation.hpp` file to correct a typo in a comment.
- Modified the `scripts/clang-tidy.sh` script to copy the blank `.clang-tidy` file into the build directory, which tells clang-tidy to ignore Qt files causing warnings.
- Modified the `Geometry_test.cpp` and `Manifold_test.cpp` test files by adding const qualifiers where appropriate and updating variable names for clarity.
- Modified the `Utilities_test.cpp` test file by adding constinit specifier for constant variables and updating an auto iterator declaration.
* Fix AppVeyor
MSVC complains about auto* here:
error: variable 'adjacent_iterator' with type 'auto *' has incompatible initializer of type 'std::_Array_iterator<int, 6>'
auto* adjacent_iterator =
^
Change sonarcloud.yml to use gcc-11 just like codecov, due to the gcov database incompatibility with gcc.
Update the vcpkgGitCommitId in workflows to "962e5e39f8a25f42522f51fffc574e05a3efd26b".
* Boost 1.83
Update vcpkgGitCommitId to 7476f0d4e77d3333fbb249657df8251c28c4faae in workflow files
The commit updates the vcpkgGitCommitId to 7476f0d4e77d3333fbb249657df8251c28c4faae in multiple workflow files. This change ensures that the current version of Boost (Boost 1.83) is used for the build and analysis processes.
* Backed out qt
qt is broken on arm64-osx
https://github.com/microsoft/vcpkg/issues/33882
Commented out code depending on qt, e.g. cdt-viewer and related tests.
* Use a span of Vertex_handles for read-only
The commit introduces the use of a span of `Vertex_handle` objects for read-only access in the code. It modifies the `Foliated_triangulation.hpp` and `Manifold.hpp` files to add a new member function `get_vertices_span()` that returns a span of vertices. The changes also include updating the test cases in `Vertex_test.cpp` to use the new member function.
* More ranges
More ranges
Refactor the `make_causal_vertices` function in both `Foliated_triangulation.hpp` and `Manifold.hpp` to accept `std::span` instead of `std::vector`. This allows for more flexibility when passing in vertex and timevalue containers. The function now uses `std::ranges::transform` instead of `transform`, improving code readability.
Update vcpkg
* Re-added Qt
Issue fixed. https://github.com/microsoft/vcpkg/issues/33882.
Also updated clang-tidy config file and vcpkg ports.
Now that we're building Qt again, though, there are unfixable (by me) clang-tidy errors from Qt that prevent clang-tidy from running.
It's similarly grim on PVS Studio.
* feat: Add <chrono> header for time-related functionality
This commit adds the `<chrono>` header to the `Utilities.hpp` file, allowing for the use of time-related functionality. The change is made in the `current_date_time()` function, where `std::chrono::system_clock::now()` is used instead of just `system_clock::now()`. This ensures that the code compiles correctly and provides accurate date and time information.
refactor: Update function signature in write_file()
The `write_file()` function in the `Utilities.hpp` file now takes a `std::filesystem::path` object as its second parameter instead of a `std::string`. This change improves type safety and makes it clearer that a file path is expected. Additionally, within this function, the filename is printed using `.string()` to obtain its string representation.
refactor: Update function signature in read_file()
Similar to the previous change, the `read_file()` function now takes a `std::filesystem::path` object as its parameter instead of a `std::string`. This modification enhances type safety and clarifies that a file path should be provided. The filename is also printed using `.string()` to display its string representation.
docs: Remove outdated information from README.md
In this commit, outdated information regarding CodeCov coverage dropping significantly has been removed from the README.md file. The related links have also been removed since they are no longer relevant.
test: Update string comparison in Utilities_test.cpp
The string comparisons in the Utilities_test.cpp file have been updated to use `.string()` on filenames before calling `.find()`. This ensures that correct substring matching occurs when checking various parts of filenames. Additionally, print statements have been modified to use `.string()` for displaying filenames during testing.
* Refactor code to remove unused code and add debug log messages
- Remove commented out code for fixing cells in `Ergodic_moves_3.hpp`
- Refactor `classify_cells` function in `Foliated_triangulation.hpp` to be static
- Add include for `<format>` in `Utilities.hpp`
- Comment out unused code in test scenarios in `Ergodic_moves_3_test.cpp`
- Add debug log messages to test scenarios in `Ergodic_moves_3_test.cpp`
The commit message is:
"Refactor code, remove unused code, and add debug log messages"
* Add Linux Clang with pkgx workflow and comment out unsupported std::format
- Added a new workflow file for Linux Clang with pkgx
- Set up necessary dependencies and tools in the workflow
- Configured cmake, built, and tested the project
- Commented out the use of std::format due to lack of support in clang-15
* Update Linux-clang-pkgx workflow [skip ci]
This commit updates the Linux-clang-pkgx workflow by adding a step to print the version of clang.
* Start using pkgx on ci
Use pkgx to install compilers in GitHub Actions.
Replaces egor-tensin/setup-clang and egor-tensin/setup-gcc, which are no longer maintained.
Fix clang-format warning.
* Switch more GitHub Actions to pkgx
- Updated the version of clang-format-action from v4.5.0 to v4.11.0.
- Changed the GCC version in setup-gcc action from 11 to 13.
- Updated the version of cpp-linter-action from v2 to v3.
- Removed unnecessary steps related to GCC setup in codeql-analysis.yml and sonarcloud.yml workflows.
- Added a step to print the GCC version using "gcc --version" command.
Note: These changes improve compatibility and enhance code formatting and linting processes.
* Fix GitHub Actions
I deleted all the old caches, so this will rebuild the needful.
Also, the vcpkg qt5-base port has some fixes, so this will trigger a rebuild of qt5.
Added badges in README.md to track cpp-linter and whitespace checks.
* De-cluttering test printouts
- Removed unnecessary test printouts in the code
- Updated vcpkgGitCommitId to ae360361a434310ffee36d84eb01c033b648fb22 in multiple workflows
- Modified classify_cells function to be const
* Use C++23 standard
* Use c++23 std::expected
This removes a dependency on tl::expected.
* Reset develop back to C++20
* Revert to C++20
* feat: Add print_cell function and update print_cells
- Added a new function `print_cell` to the `Foliated_triangulation` class that prints information about a cell in the triangulation.
- Updated the existing `print_cells` function to use the new `print_cell` function for printing each cell in the container.
- Modified error handling in `bistellar-flip.cpp` and `cdt-viewer.cpp` to use spdlog for logging critical errors.
- Added test cases in `Foliated_triangulation_test.cpp` to verify the correctness of the new functions.
* feat: Add cache directory to AppVeyor configuration
The cache directory `c:\tools\vcpkg\installed\` has been added to the AppVeyor configuration file `.appveyor.yml`. This change ensures that the installed packages are cached and can be reused in subsequent builds, improving build performance.
refactor: Refactor print_cell function in Foliated_triangulation.hpp
The `print_cell` function in the `Foliated_triangulation.hpp` file has been refactored. The function now correctly prints the timevalues of each vertex in the cell and the resulting cell info.
feat: Add print_neighboring_cells function in Foliated_triangulation.hpp
A new function `print_neighboring_cells` has been added to the `Foliated_triangulation.hpp` file. This function allows printing neighboring cells of a given cell in a triangulation.
test: Update test cases for FoliatedTriangulation functions
Several test cases have been updated for the `FoliatedTriangulation` functions. The changes ensure that containers of cells are printed correctly and that neighbors of a chosen cell can be printed as expected. Additionally, some test cases have been modified to improve code readability and consistency.
fix: Fix vertex error detection in Detecting and fixing problems with vertices and cells tests
In the "Detecting and fixing problems with vertices and cells" tests, vertex error detection has been fixed. Previously, an incorrect condition was used which resulted in false positives for detecting vertex errors. The fix ensures accurate detection of vertex errors.
chore: Update dependencies for Delaunay3 functions from FoliatedTriangulation_3
Dependencies have been updated for Delaunay3 functions used by FoliatedTriangulation_3. This update ensures compatibility with newer versions of external libraries or frameworks being used.
docs: Update documentation for FoliatedTriangulation_3 functions
Documentation for the FoliatedTriangulation_3 functions has been updated to reflect recent changes and improvements. This update improves the accuracy and clarity of the documentation, making it easier for developers to understand and use these functions.
refactor: Improve code readability in FoliatedTriangulation_test.cpp
Code readability has been improved in the `FoliatedTriangulation_test.cpp` file. This includes better indentation, consistent naming conventions, and removing unnecessary comments or code blocks. These changes make the code easier to read and understand.
* Update clang-format version to 17 and update compiler versions in Travis CI configuration file.
Add a new function `debug_print_cells` to print time values of each vertex in the cell and the resulting cell info.
Modify the script `clang-tidy.sh` to create a blank `.clang-tidy` file in the build directory to ignore Qt files causing warnings.
* Remove unused compilers and dependencies in .travis.yml
- Removed gcc-13, g++-13, clang-16 from the list of compilers
Comply with clang-format-17.
Update vcpkg to 01acfdfde3ed99280d3883a8fccd5fa4408f5214
* Update before_install script in .travis.yml
- Add travis_wait 60 before the existing command to increase timeout
- Update the code to use gcc-13 as the C++ compiler
* Update Travis CI configuration to use `curl -fsS` instead of `eval "$(curl https://pkgx.sh)"` for installing packages.
Fix pkgx install.
* Update Travis CI configuration
- Remove unnecessary `travis_wait` command
- Update package installation process using `pkgx`
- Add command to display help information for `pkgx`
- Update environment variables for GCC version 13
* Refactor GitHub workflow files for improved concurrency handling
This commit refactors the GitHub workflow files to improve concurrency handling. The changes include adding a new `concurrency` section to each file, which allows builds to complete even if merging happens faster. This makes it easier to discover at which point something broke. The `group` value in the `concurrency` section is set based on the branch being built, using a combination of the branch name and the commit SHA.
The affected files are:
- `.github/workflows/clang-format-check.yml`
- `.github/workflows/codecov-upload.yml`
- `.github/workflows/codeql-analysis.yml`
- `.github/workflows/linux-clang-pkgx.yml`
- `.github/workflows/linux-clang.yml`
- `.github/workflows/linux-gcc.yml`
- `.github/workflows/macos.yml`
- `.github/workflows/sonarcloud.yml`
- `.github/workflows/windows-msvc.yml`
- `.github/workflows/windows-pkgx.yml`
Additionally, the Travis CI configuration file (`.travis.yml`) has been updated to handle different versions of GCC and Clang compilers.
These changes aim to enhance build performance and reliability by ensuring that all builds complete successfully, regardless of merge speed.
* Travis-CI and pkgx don't get along
* Refactor GitHub Actions workflows to use a dynamic concurrency group
This commit refactors the GitHub Actions workflows to use a dynamic concurrency group based on the workflow and branch name. The previous implementation used a static format for the concurrency group, which caused issues when merging changes quickly. Now, each workflow will have its own unique concurrency group based on the workflow name and branch name. This change improves build completion and makes it easier to identify breaking points in the CI pipeline.
* Update vcpkg, AppVeyor, more ranges
- Updated vcpkg and AppVeyor configurations
- Added test_script and after_test steps in .appveyor.yml
- Updated vcpkgGitCommitId in codecov-upload.yml, codeql-analysis.yml, linux-clang-pkgx.yml, linux-clang.yml, linux-gcc.yml, macos.yml, sonarcloud.yml, windows-msvc.yml, windows-pkgx.yml
- Updated constants in Settings.hpp and Torus_d.hpp
- Removed t_output_flag parameter from expected_points_per_timeslice function in Utilities.hpp
- Created logger with console_sink, debug_sink and trace_sink in create_logger function of Utilities.hpp
- Modified main function in cdt.cpp to use const for argc and dimensions variables
* Apply a bunch of suggested fixes
- Removed unused include statements
- Replaced std::shuffle with std::ranges::shuffle
- Replaced std::any_of with std::ranges::any_of
- Replaced std::all_of with std::ranges::all_of
- Replaced std::for_each with std::ranges::for_each
- Simplified boolean expressions in return statements
* feat: Add Python 3.11 support to macOS workflow
The macOS workflow now installs Python 3.11 using Homebrew and links it as the default version.
fix: Update logging statements in Ergodic_moves_3.hpp
Replaced `fmt::print` with `spdlog::info` for logging the number of cells in the triangulation after adding new cells. Also added a warning log if the triangulation is not valid.
refactor: Include Move_command.hpp in Metropolis.hpp and Move_always.hpp
Added an include statement for Move_command.hpp in both Metropolis.hpp and Move_always.hpp.
refactor: Improve comments and documentation in MoveCommand class
Updated comments and documentation for various member functions of the MoveCommand class to provide more clarity on their purpose and usage.
refactor: Improve comments and documentation in MoveStrategy class
Improved comments and documentation for the MoveStrategy class, specifying that it selects a move algorithm based on the chosen strategy enum value.
fix: Handle invalid results in cdt-opt.cpp and cdt.cpp
Added error handling code to throw runtime_error if the result is invalid. Updated catch blocks to handle runtime_error exceptions separately, printing an appropriate error message.
* feat: Update macOS workflow and MoveCommand class
- Removed the `2to3` binary from `/usr/local/bin`
- Updated the macOS workflow to install necessary dependencies
- Added comments to clarify the purpose of variables and functions in the `MoveCommand` class
- Improved documentation for the `move_type` enum and related functions in the `Move_tracker` namespace
* Remove unnecessary files and update dependencies in macOS workflow.
Refactor MoveTracker class to improve readability and maintainability:
- Add brief descriptions for member functions
- Use consistent naming conventions for access functions
- Improve documentation comments for each move type
* Update macOS and Travis CI configurations
- Try to fix macOS on GitHub Actions
- Try to install gcc-13 on Travis-CI
- AppVeyor nicely increased my timeout to 90 minutes, so remove Issue
* Use pkgx to install gcc-13 and clang-16 on Travis-CI
* Travis-CI + pkgx
* Bog standard install of gcc-13
clang-16 seems to be already present.
* Add gcc-12 to the list of required packages in .travis.yml
This commit adds gcc-12 to the list of required packages in .travis.yml. This change ensures that the build environment has gcc-12 available for compilation.
* Update Travis CI configuration
- Update the `apt` section to enable package updates
- Add `g++-12` package to the list of packages to be installed
- Set environment variables for CXX and CC in the `before_install` section
These changes ensure that the necessary packages are updated and installed correctly, and set the appropriate compiler versions for building.
* Update compiler versions in .travis.yml
- Update gcc to g++-12
- Update clang to clang-16
* Update macOS.yml and .travis.yml
- Remove idel3.11 from the list of removed files in macOS.yml
- Add update-alternatives commands to set g++-12 and clang++-16 as default compilers in .travis.yml
* Fix Travis, update GitHub actions
- Put old compilers back in place on Travis-CI
- Test out a GitHub action to build and deploy documentation using Doxygen + GitHub Pages
- Update vcpkg, since new version rebuilds qt5
- Delete linux-clang-pkgx.yml, since we're now using pkgx to install the latest versions of clang and gcc on the GitHub Actions runner
If Doxygen GHA works, may consider retiring the use of Travis-CI since it's hard to get up-to-date C++ compilers installed.
* Deprecate Doxygen on Travis-CI [skip ci]
Allow Doxygen GitHub Pages Deploy Action to run on pushes to develop branch and all pull_requests.
Remove yet another annoying macos-13 python update library glitch.
* Still fixing macos on GitHub [skip ci]
* And another python3 error in GHA [skip ci]
* Yet another python3 update error in GHA [skip ci]
* Setup Valgrind on GHA [skip ci]
* Add Valgrind installation to the workflow
This commit adds the installation of Valgrind to the workflow, ensuring that it is available for use in subsequent steps.
* Fix macOS and Valgrind [ci skip]
* Fix Valgrind [ci skip]
Be more prescriptive about when to run expensive checks like CodeCov, CodeQL, and SonarCloud. Likewise, only build documentation for develop and main branches.
* Fix known Valgrind/ASAN issue [skip ci]
https://github.com/google/sanitizers/issues/856
Don't use -fsanitize=address on compile step.
* Update Valgrind configuration for Clang [ci skip]
- Change the setup to use Clang instead of GCC
- Update CMakePresets.json to use Clang as the C and C++ compilers
* Fix Valgrind on clang [ci skip]
* Revert Valgrind back to g++, at least some tests work [skip ci]
* Run Valgrind checks separately [ci skip]
So a failed check doesn't abort succeeding checks.
* Update vcpkg
Remove Valgrind from Travis-CI.
* Enable ASAN on GHA [skip ci]
Also run valgrind in Debug mode.
* Migrate Sanitizers to GHA [skip ci]
* Use a repo variable to update vcpkg
Also deprecate those tests in Travis-CI.
Update documentation.
* Add Cppcheck workflow, presets, and build steps [skip ci]
- Added a new file `.github/workflows/cppcheck.yml` to include a Cppcheck workflow.
- Modified `.travis.yml` to comment out the CppCheck job.
- Modified `CMakePresets.json` to add a new preset for cppcheck.
- Updated badges in `README.md`.
This commit adds support for running Cppcheck as part of the CI/CD pipeline.
* Update HPC and PVS Studio scripts
Also update version of vcpkg to c8696863d371ab7f46e213d8f5ca923c4aef2a00 in repo
* Update Slurm script
For running on HPC
* Boost 1.84
Small fixes in bistellar-flip.cpp.
This commit is to document a compile-time bug with vcpkg's CGAL port with the qt feature enabled.
* Update vcpkg to fix macOS qt build issue
* Fixing vcpkg build of python on macOS [skip ci]
* Remaining vcpkg python macOS update fixes [skip ci]
* Still need old fixes too [skip ci]
* Fix docopt
They also got rid of the annoying difference where the Linux library was oddly named 'docopt_s' and the Windows library was the more sensible 'docopt'. So I can collapse my cmake file.
* Fix docopt #2
Windows and macOS builds and links to docopt library, Linux links to docopt_s.
* ci: Try clang-18 via pkgx [ci skip]
* ci: Fix when checks run
More checks run on pull requests.
Switch to using M1 macOS runner.
* ci: Update to clang-18
* ci, style: clang-format and macOS
Fix clang-format changes.
Go back down to the free tier for macOS.
Update code-ql action.
* test: format/fix tests
* feat: Switch from docopt to boost::program_options
Docopt isn't being maintained anymore, has long-standing reported bugs, and generates different linker targets depending on platform. In particular, building for HPC was getting to be a pain.
This explores using boost::program_options, since I already need Boost for CGAL.
* ci, fix: macOS and Linux builds
Enable macOS builds on all pull requests.
Add linker target for boost::program_options on Linux.
* feat: Replace docopt on cdt
Add usage message back to initialize.
Swap out docopt for boost::program_options on cdt executable.
* feat: Replace docopt on cdt-viewer
Also remove docopt from vcpkg.
* docs: Update documentation [ci skip]
Remove references to docopt and update help screen.
* ci, fix: Fix fmt::join, update Github actions
* ci: update GitHub Actions
* ci: Update remaining actions
Fix SonarCloud, remove building on macOS until fontconfig issue resolved.
* fix: MSVC error
The error message indicates that the Clang compiler does not recognize the `/utf-8` option, which is a Microsoft Visual C++ (MSVC) specific option. To resolve this issue, you need to conditionally add the `/utf-8` flag only when using the MSVC compiler.
Here's how you can modify your `CMakeLists.txt` to conditionally add the `/utf-8` flag:
1. Check if the compiler is MSVC.
2. If it is, add the `/utf-8` flag.
* ci: Check if clang-19 available [skip ci]
* ci: Update to clang-19
* Feature/c++23 (#76)
* Make separate branch for C++23
* Fix merge errors from develop
* ci: update to clang-18 via pkgx
This should resolve the build failure for updating to C++23. clang-17 didn't support std::expected, but clang-18 should.
* ci: Fix checking twice on PRs and pushes
* ci: Fix Travis and AppVeyor
* ci: Fix clang on Travis-CI
* ci: Don't double build PR pushes on Travis-CI
* Feature/fix appveyor (#77)
* ci: Fix appveyor
* ci: Fix pkgx windows error
* ci: pkgx fixes [skip ci]
* ci: Updates [skip ci]
* ci: Allow clang-format to run by request [skip ci]
* fix: strip out qt temporarily
Until we can get it to compile again
* fix: CoderabbitAI suggestions
* fix: Coderabbit suggestions part 2
* fix: More Coderabbit tuning
* fix: AppleClang
C++23 support check left out AppleClang
* Update src/bistellar-flip.cpp
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* ci: disable macos
* ci: Fix workflows mostly
Note we also updated vcpkg
* ci: CodeRabbit suggestions
* ci: Fix comment [ci skip]
* ci: revert Coderabbit suggestion [ci skip]
---------
Co-authored-by: coderabbitai[bot] <136622811+coderabbitai[bot]@users.noreply.github.com>
* ci: Fix macOS GitHub Action [skip ci]
* ci: Coderabbit and macOS update
* Improves move application and validation
Refactors move application to handle cases where a move cannot be applied due to manifold configuration.
Skips the test when a move cannot be applied, and logs a warning message providing better test reporting.
Also, the Boost library is now found using config mode. A cmake policy is set to avoid warnings.
* ci: Update gcc [skip ci]
* Improves Bistellar flip reliability
Adds checks for invalid and infinite cells and vertices during the Bistellar flip operation to improve reliability. Includes extensive debugging information to diagnose failures. Also includes a suite of tests to verify that bistellar flips are correctly implemented.
* ci: Updates CI workflows for newer tool versions
Updates the CI workflows to use newer versions of Clang and GCC. Also updates the pkgxdev/setup action to v4 to ensure compatibility.
The change ensures that the CI environment uses the latest compiler versions for better code analysis and compatibility testing.
An additional change orders the includes.
* ci: Configures Dependabot for GitHub Actions [skip ci]
Sets up Dependabot to automatically update GitHub Actions dependencies on a weekly basis.
This ensures that the project stays up-to-date with the latest security patches and feature improvements for GitHub Actions workflows.
* Bump jidicula/clang-format-action from 4.13.0 to 4.15.0 (#80)
Bumps [jidicula/clang-format-action](https://github.com/jidicula/clang-format-action) from 4.13.0 to 4.15.0.
- [Release notes](https://github.com/jidicula/clang-format-action/releases)
- [Commits](https://github.com/jidicula/clang-format-action/compare/v4.13.0...v4.15.0)
---
updated-dependencies:
- dependency-name: jidicula/clang-format-action
dependency-version: 4.15.0
dependency-type: direct:production
update-type: version-update:semver-minor
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump pkgxdev/setup from 2 to 4 (#79)
Bumps [pkgxdev/setup](https://github.com/pkgxdev/setup) from 2 to 4.
- [Release notes](https://github.com/pkgxdev/setup/releases)
- [Commits](https://github.com/pkgxdev/setup/compare/v2...v4)
---
updated-dependencies:
- dependency-name: pkgxdev/setup
dependency-version: '4'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Create codeql.yml
* ci: Remove old CodeQL
* Bump codecov/codecov-action from 4 to 5 (#81)
Bumps [codecov/codecov-action](https://github.com/codecov/codecov-action) from 4 to 5.
- [Release notes](https://github.com/codecov/codecov-action/releases)
- [Changelog](https://github.com/codecov/codecov-action/blob/main/CHANGELOG.md)
- [Commits](https://github.com/codecov/codecov-action/compare/v4...v5)
---
updated-dependencies:
- dependency-name: codecov/codecov-action
dependency-version: '5'
dependency-type: direct:production
update-type: version-update:semver-major
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* fix: Explicitly use MPFR and GMP and turn off BoostMP
Boost Multiprecision has a packaging bug. And we rely on MPFR/GMP for intensive calculations anyways, so configure CGAL to use them instead of Boost Multiprecision.
* ci, doc: Fix macOS runner, update README [ci skip]
* ci: Check which version of clang is active in macOS [ci skip]
* Really setup Xcode 15.3 [skip ci]
* refactor(tooling): modernize the v1.0.0 development workflow (#99)
Closes #89
* refactor(tooling): modernize the v1.0.0 development workflow
- pin the official vcpkg baseline and add local and pkgx bootstrap paths
- unify supported platforms in GitHub Actions and retire legacy services
- replace tl-function-ref with Boost.Compat and remove unused dependencies
- document the main-based maintenance and regression-oracle workflow
* refactor(tooling): complete the v1.0.0 development workflow
- add Just recipes for checks, formatting, builds, runs, and action updates
- enforce the pinned vcpkg bootstrap across Unix and Windows
- provide Unix build tooling through pkgx with compatible version pins
- consolidate platform CI and pin GitHub Actions to immutable revisions
- remove legacy scan-build support and refresh contributor guidance
- tighten smoke-test and time-formatting behavior
Refs #89
* fix(tooling): harden CI and bootstrap validation
- authenticate Codecov uploads with OIDC and remove the committed token
- run the build matrix for develop-targeted pull requests during migration
- align local formatting with CI using clang-format 18
- reject unusable cached vcpkg executables before reuse
* fix(ci): restore cross-platform build validation
- resolve GCC and Clang within a single pkgx environment
- emit UTC timestamps without requiring an external timezone database
- run a portable Windows smoke suite while deferring the initializer crash
- scope Codecov OIDC access and validate cached vcpkg tool releases
* fix(ci): stabilize cross-platform validation
- avoid nested pkgx environments when selecting Linux compilers
- generate filename-safe UTC timestamps and exclude stochastic utilities from smoke presets
- verify cached Windows vcpkg binaries against pinned release hashes
- document the Codecov OIDC permission rationale
* fix(ci): remove ccache from reference builds
Stop provisioning ccache through pkgx because the supported reference
preset disables compiler caching, and align the documented prerequisites.
Simplify filename-safe timestamp sanitization with std::replace.
* refactor(build): consolidate the supported CMake presets
Replace the legacy platform and compiler preset matrix with a shared reference configure, build, and smoke-test contract.
Route Windows and fast-build entry points through the reference output tree while retaining focused diagnostic presets and the known Windows
smoke-test exclusion.
* ci: target pull requests at main
* fix: harden CDT moves and release verification
- enforce causal 2-to-3 proposals and implement failure-atomic 4-to-4
moves with checked CGAL primitives
- preserve manifold settings, validate runtime bounds, and prevent move
counters from carrying across runs
- make sanitizer, CodeQL, Codecov, and cross-platform CI failures
actionable
- add locked Python 3.12 quality tooling and retire PVS-Studio
* ci: restore Just setup and C++ formatting checks
Correct the immutable action pin used to install Just and align the
reported C++ files with clang-format 18.
* fix!: harden 3D moves and stabilize release validation
- make rejected moves failure-atomic and implement the causal 6→2 retriangulation
- correct 6→2 Metropolis action bookkeeping and add cdt --no-output
- consolidate LLVM 22 formatting, clang-tidy, sanitizer, and quality workflows
- preserve compatible CMake and vcpkg caches across incremental builds
- remove cdt-opt, Valgrind integration, and unsupported 4D scaffolding
- document the maintenance-mode release workflow
BREAKING CHANGE: Remove the cdt-opt executable and unsupported 4D manifold, geometry, move, and cell-type APIs.
* ci: make fresh runner setup reliable
- allow clean builds to proceed when no CMake cache exists
- reuse pinned vcpkg checkouts containing generated artifacts
- install the pinned zizmor version before repository quality checks
* refactor(tooling): remove cppcheck integration
Remove the cppcheck workflow, CMake preset, local runner, CodeRabbit
configuration, and documentation references.
---------



Summary by CodeRabbit
New Features
Improvements
Bug Fixes
Chores