Repository navigation
Releases: luk036/ecgen-cpp
Release list
v1.1.7
What's Changed
📦 Dependency Updates
- Py2Cpp v1.6.4 -> v1.6.6
🛠️ Fixes
- fix: resolve clang-tidy findings and update analyzer docs
- fix: use spdlog::spdlog target for compile definitions
♻️ Refactoring
- refactor: replace std::printf with fmt::print
📖 Documentation
- docs: remove stale sanitizer/ccache references and update static analysis section
🔧 Maintenance
- release: bump v1.1.6->v1.1.7, update Py2Cpp v1.6.4->v1.6.6
- style: apply clang-tidy --fix
- apply fix-format
- build: skip system fmt/spdlog on MSVC (fix Debug ABI mismatch)
- apply fix-format
- build: guard cxxopts fetch with find_package
- chore: remove dead and unreferenced files
- apply fix-format
🔧 Maintenance
- release: bump version 1.1.6 → 1.1.7
v1.1.6: Unified CMake build with nanobench benchmarks
v1.1.6 — Unified CMake build with nanobench benchmarks
🏗️ Build System
- Unify library, tests, examples, benchmarks, standalone and documentation into a single root
CMakeLists.txt; remove theall/,standalone/,test/,examples/anddocumentation/subprojects along withbench/CMakeLists.txt,specific.cmakeand thecmake/helper modules - Add per-component build options:
ECGEN_BUILD_TESTS,ECGEN_BUILD_BENCHMARKS,ECGEN_BUILD_STANDALONE,ECGEN_BUILD_DOCS,ECGEN_ENABLE_CLANG_TIDYandECGEN_ENABLE_COVERAGE - Declare the installed-package dependency
Py2Cpp 1.6.4inpackageProject
⚡ Performance
- Replace Google Benchmark with nanobench (
BM_EMK.cpp,BM_set_partition.cpp) — header-only, noBENCHMARK_MAIN, with instruction/branch counters viadoNotOptimizeAway - Prefer a system-installed fmt and avoid recompiling doctest on every CPM build
🐛 Fixes
- Use
SPDLOG_FMT_EXTERNALwhen a system fmt is found to avoid duplicate symbols - Tell CPM that fmt is already handled to prevent duplicate target conflicts
- Rework the standalone
EcGendemo to use the realemk_comb_genAPI with--size/--comb-sizeoptions - Link coverage flags into
SPDLOGGER_EXAMPLEand drop an unused#include <vector>
🧪 Tests
- Add a
test_installedconsumer test thatfind_package(EcGen)and checks the installed version header
📖 Documentation
- Update the README for the single-root build layout (
cmake -B build,ctest --test-dir build)
🔧 Maintenance
- Switch GitHub Actions workflows to the single-root build and drop stale
.bakbackups
Full Changelog: v1.1.5...v1.1.6
v1.1.5
v1.1.5
🚀 New Features
- Add logging module (
logging.hpp,logging.cpp) - Add sjt2 list-based permutation generator (
perm_old.hpp,perm_old.cpp) - Add benchmark scripts (
compare.cpp,verify_old_new.cpp,verify_output.cpp)
📖 Documentation
- Add
HAVE_DOTto Doxyfile and@dotdiagrams to combinatorial headers - Add LaTeX equations and Graphviz diagrams to Doxygen documentation
🔧 Build
- Reconfigure CMake for spdlog dependency
- Bump py2cpp dependency to v1.6.3
- Bump project version to 1.1.5
🐛 Fixes
- Fix documentation publish_dir path in CI workflow
- Add back
-Wno-unused-command-line-argumentfor Termux
🧹 Chores & Cleanup
- Clean up root-level clutter: remove GEMINI.md, IFLOW.md, test_debug.cpp, test_small.cpp
- Add missing .gitignore patterns for generated artifacts
- Apply code formatting across project files
Full Changelog: v1.1.4...v1.1.5
v1.1.4
v1.1.4
Summary
- 🐛 Fixes: 1
- 📖 Documentation: 2
- ⚙️ CI: 1
- 🧹 Chores: 1
🐛 Bug Fixes
- resolve Doxygen warnings
📖 Documentation
- enable Graphviz dot diagrams in Doxygen and add graphviz to CI
- migrate from m.css to Doxygen HTML + MathJax
⚙️ CI & Build
- make Doxygen optional in documentation CMakeLists.txt
🧹 Chores
- bump version to 1.1.4
📝 Other Changes
- Replace Unicode characters with ASCII equivalents; remove cppcoro dependency
- Add Doxygen documentation comments to all header files
- remove -Wno-unused-command-line-argument in xmake.lua
- remove -Wno-deprecated-literal-operator
- remove /wd5285; update doctest to 2.5.2
- only change the format
- remove /wd4146 and /wd4127
- remove /wd4996
- replace /wd4819 with /utf-8
- remove /wd4459
- apply fix-format
- Fix Windows CI by adding /wd4459
- fix doc comments: correct algorithm name, fix garbled examples, clarify API docs
- Add set_bipart
- apply fix-format
- apply run-clang-tidy -fix
- apply fix-format
- remove xmake test; prepare for 1.1.3
- replace cppcoro::Generator with py::Generator; prepare for 1.1.3
- trim white spaces at the end of lines; fix warnings by AI
- apply run-clang-tidy --fix
- remove unneccessary #include
- apply --fix-format
- remove unneccessary #include
- prepare for 1.1.2
- fix documentation (use @verbatim and @endverbatim instead of `)
- prepare for 1.1.1
- apply --fix-format
- Replace CHECK() with CHECK_EQ() and CHECK_NE()
- upgrade fmt 12.1.0 and spdlog 1.17.0
- replace push_back() and std::endl with emplace_back() and '\n'
- apply --fix-format
- use spdlog version 1.12 for Termux build
- add -Wno-deprecated-literal-operator for Termux build
- add document comments by opencode + MiniMax M2.5
- Add rapidcheck integration
- Fix clang-tidy issues by iflow CLI
- Fix termux build by iflow CLI
- Make variable names at least 3 letters long by iFlow CLI
- remove white spaces at the end of lines
- try to turn on -Wconversion in xmake.lua
- Add spdlog support by iFlow
- Add svgbob figures by iFlow
- add const by iflow cli
- add stress tests with gemini cli
- Add more unit tests by GEMINI CLI
- prepare for 1.1 release
- fix xmake builds by updating test.yml
- fix macOS build by adding -DCMAKE_POLICY_VERSION_MINIMUM=3.5 -Wno-dev
- add more unit tests
- remove greeter
- remove standalone
- use default g++
- minor change
- remove style check
- aplly fix-format
- apply fix-format
- apply fix-format
- minor change
- minor change
- apply fix-format
- make Hamilton cycle
- apply fix-format
- cleanup
- update xmake.lua
- cleanup
- remove cyclic quorum stuff
- restore -fcoroutines
- remove -fcoroutines
- apply prettier; remove style check
- apply fix-format from ubuntu
- apply fix-format
- update diffcover.txt
- add more diff cover result
- update style
Release generated by Sisyphus 🤖
Replace cppcoro::generator with py::Generator
ecgen-cpp v1.1.3 Release Notes
Released: 2026‑05‑27
Compare: 1.1.2...1.1.3
What’s Changed
Changed
- Replaced
cppcoro::Generatorwithpy::Generatorto align with 1.1.3 integration.
Removed
- Removed unnecessary
#includedirectives across codebase. - Removed xmake test configuration.
Improved
- Applied
--fix-formatfor consistent code style. - Ran
run-clang-tidy --fixto resolve static analysis warnings. - Trimmed trailing whitespace; fixed warnings via AI-assisted cleanup.
Full Changelog
All commits from 1.1.2 to 1.1.3:
- Remove unnecessary #include
- Apply --fix-format
- Remove unnecessary #include
- Apply run-clang-tidy --fix
- Trim trailing whitespaces; fix warnings by AI
- Replace cppcoro::Generator with py::Generator; prepare for 1.1.3
- Remove xmake test; prepare for 1.1.3
Full Changelog: 1.1.2...1.1.3
Enhance and Clean Up by AI Agents
ecgen-cpp v1.1.2 Release Notes
Patch release focusing on documentation quality, build consistency, and minor formatting improvements with no breaking changes, no new features, and no behavior changes from v1.1.1.
What's Changed
Documentation
- Standardized Doxygen comment formatting across all public header files for improved HTML and PDF documentation rendering
- Replaced inline backtick code snippets with Doxygen-compatible
@verbatim/@endverbatimblocks in:include/ecgen/combin.hppinclude/ecgen/gray_code.hppinclude/ecgen/perm.hppinclude/ecgen/set_partition.hpp
- Fixed minor typographical and spacing inconsistencies in header comments
- Improved code snippet readability for algorithm descriptions
Build & Project
- Explicitly bumped project version from
1.1.1to1.1.2inCMakeLists.txt - Ensured version consistency between tagged release and CMake configuration
- No changes to compiler requirements, library dependencies, or target definitions
Code
- No modifications to algorithm logic
- No changes to function signatures, API, or ABI
- No additions or removals of public/private functions
- No performance or behavioral changes to any combinatorial generation routines
Compatibility & Breaking Changes
- No breaking changes
- Fully backward compatible with v1.1.1
- Drop-in replacement for existing users
- All existing code using the library will compile and behave identically
Files Modified
CMakeLists.txtinclude/ecgen/combin.hppinclude/ecgen/gray_code.hppinclude/ecgen/perm.hppinclude/ecgen/set_partition.hpp
Full Diff
1.1
Full Changelog: 1.0.3...1.1
Release Notes: ecgen-cpp v1.1
Overview
This release includes significant performance improvements, new algorithms, expanded benchmark coverage, and major code cleanup. The focus has been on optimizing difference set generation, adding multithreading support, and improving cross-platform compatibility.
🔥 Major Changes
1. New Algorithms & Features
- Added support for sparse sets with inline operations for faster computation.
- Implemented multithreading (Mar 13, 2024) to speed up large-scale computations.
- Added benchmark utilities for EMK and set partition algorithms.
2. Performance Optimizations
- Used
intinstead of larger types where possible for faster computation. - Inlined critical functions like
sparse-set.add(). - Saved half the computation in symmetric operations.
- Removed redundant checks and streamlined logic.
3. Expanded Test Coverage
- Added unit tests for new algorithms.
- Extended difference cover results up to order 131.
- Improved validation and verification of generated sets.
4. Code Quality & Maintenance
- Major code cleanup and removal of unused modules (e.g.,
greeter, cyclic quorum code). - Applied consistent formatting with
fix-formatandprettier. - Removed standalone builds and streamlined CMake and xmake configurations.
- Improved cross-platform support for Windows, macOS, and Linux.
5. Documentation & Build Updates
- Updated
README.mdand added documentation for new features. - Updated third-party libraries and build scripts.
- Fixed macOS and Windows builds with updated CMake policies and xmake configurations.
📅 Key Commits Highlights
- Dec 2023: Benchmarks for EMK and set partitions.
- Mar 2024: Multithreading support and cross-platform build fixes.
- May–Jun 2024: Code cleanup, formatting, and removal of deprecated features.
- Sep 2025: Additional unit tests and macOS/Linux build fixes.
📦 Compatibility
- Supports Windows, macOS, and Linux.
- Requires C++17-compatible compiler (with coroutines support retained).
- Build systems: CMake and xmake.
🔚 Summary
This release represents a substantial step forward in performance, reliability, and feature set for ecgen-cpp, making it better suited for large-scale combinatorial generation tasks.
use latest ModernCppStarter template
Full Changelog: 1.0.2...1.0.3
use ubuntu instead of macOS to build documentation
1.0.2 update github actions; prepare for version 1.0.2