Skip to content

Releases: luk036/ecgen-cpp

v1.1.7

Choose a tag to compare

@luk036 luk036 released this 08 Oct 10:57

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

Choose a tag to compare

@luk036 luk036 released this 06 Aug 02:25

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 the all/, standalone/, test/, examples/ and documentation/ subprojects along with bench/CMakeLists.txt, specific.cmake and the cmake/ helper modules
  • Add per-component build options: ECGEN_BUILD_TESTS, ECGEN_BUILD_BENCHMARKS, ECGEN_BUILD_STANDALONE, ECGEN_BUILD_DOCS, ECGEN_ENABLE_CLANG_TIDY and ECGEN_ENABLE_COVERAGE
  • Declare the installed-package dependency Py2Cpp 1.6.4 in packageProject

⚡ Performance

  • Replace Google Benchmark with nanobench (BM_EMK.cpp, BM_set_partition.cpp) — header-only, no BENCHMARK_MAIN, with instruction/branch counters via doNotOptimizeAway
  • Prefer a system-installed fmt and avoid recompiling doctest on every CPM build

🐛 Fixes

  • Use SPDLOG_FMT_EXTERNAL when a system fmt is found to avoid duplicate symbols
  • Tell CPM that fmt is already handled to prevent duplicate target conflicts
  • Rework the standalone EcGen demo to use the real emk_comb_gen API with --size / --comb-size options
  • Link coverage flags into SPDLOGGER_EXAMPLE and drop an unused #include <vector>

🧪 Tests

  • Add a test_installed consumer test that find_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 .bak backups

Full Changelog: v1.1.5...v1.1.6

v1.1.5

Choose a tag to compare

@luk036 luk036 released this 14 Jul 14:49

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_DOT to Doxyfile and @dot diagrams 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-argument for 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

Choose a tag to compare

@luk036 luk036 released this 22 Jun 07:03

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

Choose a tag to compare

@luk036 luk036 released this 27 May 11:20

ecgen-cpp v1.1.3 Release Notes

Released: 2026‑05‑27

Compare: 1.1.2...1.1.3

What’s Changed

Changed

  • Replaced cppcoro::Generator with py::Generator to align with 1.1.3 integration.

Removed

  • Removed unnecessary #include directives across codebase.
  • Removed xmake test configuration.

Improved

  • Applied --fix-format for consistent code style.
  • Ran run-clang-tidy --fix to 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

Choose a tag to compare

@luk036 luk036 released this 02 May 06:32

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 / @endverbatim blocks in:
    • include/ecgen/combin.hpp
    • include/ecgen/gray_code.hpp
    • include/ecgen/perm.hpp
    • include/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.1 to 1.1.2 in CMakeLists.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.txt
  • include/ecgen/combin.hpp
  • include/ecgen/gray_code.hpp
  • include/ecgen/perm.hpp
  • include/ecgen/set_partition.hpp

Full Diff

1.1.1...1.1.2

1.1

1.1

Choose a tag to compare

@luk036 luk036 released this 22 Sep 02:37

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 int instead 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-format and prettier.
  • Removed standalone builds and streamlined CMake and xmake configurations.
  • Improved cross-platform support for Windows, macOS, and Linux.

5. Documentation & Build Updates

  • Updated README.md and 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

Choose a tag to compare

@luk036 luk036 released this 04 Aug 07:30

Full Changelog: 1.0.2...1.0.3

use ubuntu instead of macOS to build documentation

Choose a tag to compare

@luk036 luk036 released this 16 Feb 03:25
1.0.2

update github actions; prepare for version 1.0.2

make vscode-friendly

Choose a tag to compare

@luk036 luk036 released this 22 Jul 16:23
1.0.1

fix the style