Skip to content

v3.0.0 — Code quality, tooling, and CI hardening

Choose a tag to compare

@OldCrow OldCrow released this 23 Apr 03:10
· 431 commits to main since this release
v3.0.0

Stable release following v3.0.0-alpha.1. Completes post-alpha hardening: precision fixes, static analysis clean-up, and consistent code style enforced by clang-format across the entire source tree.

For the full architecture changes introduced in v3 (new EmissionDistribution interface, canonical calculators and trainers, SIMD infrastructure, etc.) see the v3.0.0-alpha release notes.

Fixed
• test_xml_file_io: platform-guarded invalid paths; test now passes on all platforms. No known_broken labels remain in the test suite.
• CMake RUN_TESTS target collision with the Visual Studio generator's built-in target; renamed to check / check_timing.
• calculator.h: removed deprecated hmm_ / hmm_legacy_ptr_ alias members that triggered -Wdeprecated-declarations on GCC and AppleClang.
• Precision: log_space_ops.cpp — log(1+exp(x)) → log1p(exp(x)) (two sites); log_normal_distribution.h — exp(σ²)-1 → expm1(σ²) in variance formula.
• All cppcheck findings: explicit constructors on 5 distributions (BinomialDistribution, NegativeBinomialDistribution, LogNormalDistribution, ParetoDistribution, WeibullDistribution); TrainingConfig passed by const reference in ViterbiTrainer; dead matrix_vector_multiply_fallback removed; thread_pool.cpp cache-size returns typed as std::size_t; starts_with() in Linux /proc/cpuinfo parser; const loop variables in work_stealing_pool.cpp; variable scope fixes in 13 distribution operator>> methods.
• cluster.h C4267: static_cast on four size_t → int conversions.

Added
• .clang-format: K&R brace style, 4-space indent, 100-column limit. Applied to all source files; .git-blame-ignore-revs records the bulk-reformat commit.
• CI lint job: clang-format --dry-run + cppcheck on src/ (ubuntu-latest; warning-only).
• Linux/Clang matrix entry: CI now validates on 4 platforms — Linux/GCC, Linux/Clang, macOS/AppleClang, Windows/MSVC.
• BUILD_TOOLS CMake option: tests, examples, tools, and benchmarks subdirectories are now consistently option-gated.
• Pre-commit hooks: clang-format and cmake-format added alongside existing file-hygiene and #pragma once checks.

Changed
• All source files bulk-reformatted to .clang-format style (whitespace-only changes).
• tests/CMakeLists.txt: add_hmm_test() now applies -Wall -Wextra -Wpedantic (GCC/Clang) or /W4 /permissive- (MSVC) to every test target.
• Removed stale refactor/modern-architecture branch from CI push triggers.
• build_windows.bat removed — hardcoded vcpkg path, no longer required.