Skip to content

Releases: OldCrow/libstats

v1.1.8

07 May 01:28

Choose a tag to compare

1.1.8 (2026-05-07)

🐛 Bug Fixes

  • remove dead GPU dispatch slot from autoDispatch and all distributions (cc3c1c3), closes #23 #23

♻️ Refactoring

  • phase2-3: correctness and static-analysis cleanup (7a234df)

v1.1.7

06 May 03:32

Choose a tag to compare

1.1.7 (2026-05-06)

🐛 Bug Fixes

  • audit and correct eight CMake build system issues (2135ccf)
  • correct AVX-512 detection on MSVC and GCC/Clang (24c355b), closes #include
  • correct GTest detection on Windows; add FetchContent fallback (2ee131c)
  • default to AppleClang on macOS; fix Phase 1 correctness bugs (d50b0f1)
  • label test_math_comprehensive as timing; fix coverage lcov --ignore-errors (6791b3d)
  • suppress unused-variable warning in test_simd_policy Release build (8359ca4)

📚 Documentation

  • add session-start architecture and build routing to WARP (bbf78b0)

👷 CI/CD

  • add --ignore-errors mismatch to lcov capture (c9d9654)
  • exclude timing tests from CI; bump Clang matrix from 14/15 to 16/17 (f5b798a)

v1.1.6 — Catalina compatibility fixes and dispatcher policy alignment

26 Apr 19:18
v1.1.6
022ee46

Choose a tag to compare

Patch release focused on Catalina compatibility and test-policy correctness. No API changes and no breaking behavior intended.

Fixed
• Catalina fallback path in src/exponential.cpp now uses argument-aware wrappers so modern toolchains keep std::ranges::* and older libc++ safely uses iterator-based std::all_of / std::sort.
• run_all_tests now conditionally depends on test_work_stealing_pool only when that target is available (matches / gating).
• run_tests now escapes CTest regex pipes correctly so shell parsing does not break test filtering.
• tests/test_performance_dispatcher.cpp edge-case expectation now follows getParallelThreshold(...) policy instead of hardcoding parallel execution for huge UNIFORM/PDF batches.

Release metadata
• Version bumped to 1.1.6 in project and public header version constants.
• README version badge/release link updated.
• Changelog updated with 1.1.6 notes.

Validation
• Reconfigured and rebuilt in Catalina-targeted build dir.
• run_all_tests: 39/39 passed.

v1.1.5

26 Apr 14:10
db128b6

Choose a tag to compare

Changed

  • Version and release metadata update only.
  • No functional code changes from 1.1.4; this release aligns downstream packaging flow for pylibstats

v1.1.4 — SIMD Guard and Build Wiring Hardening

26 Apr 07:19
83f82a5

Choose a tag to compare

This patch release hardens SIMD build/runtime wiring to prevent architecture- and toolchain-specific breakage.

• Removed per-file SIMD target pragmas from SIMD translation units and standardized on CMake per-source SIMD flags as the single source of truth.
• Fixed GCC pragma scope symmetry in cpu_detection.cpp so push_options/pop_options are consistently x86/x64-gated.
• Hardened SIMD dependency normalization so AVX-512 -> AVX2 -> AVX source/definition dependencies are enforced consistently, including override flows.

v1.1.3 — Durable SIMD detection and embedded build fixes

26 Apr 06:03
cd6e8e7

Choose a tag to compare

v1.1.3 is a patch release focused on build/runtime stability for downstream consumers.

• Guard x86-only SIMD target pragmas in CPU detection so ARM/aarch64 builds no longer fail on invalid no-avx* target attributes.
• Use unaligned SIMD probe stores (storeu) to avoid alignment-related false negatives/crashes in runtime feature checks.
• Enforce AVX/AVX2 consistency so AVX2 paths always resolve required AVX helper symbols.
• Add LIBSTATS_BUILD_EXAMPLES with embedded-safe defaults (OFF for subproject/FetchContent usage), preventing unintended example builds in consumer workflows.

No API changes; this is a stability-focused patch release.

v1.1.2: Fix Windows dynamic test runtime paths

26 Apr 04:11
b99227a

Choose a tag to compare

Patch release focused on Windows test/runtime reliability.

• Dynamic test targets now copy stats.dll next to each test executable after build, fixing loader errors (0xc0000135) when PATH is not preconfigured.
• Test executable outputs are now separated by configuration (tests/Debug, tests/Release, etc.), preventing stale Debug/Release collisions in Visual Studio multi-config builds.
• CTest registration now uses $<TARGET_FILE:...> so tests resolve to the correct per-configuration binary.

libstats v1.1.1: Fix Windows include shim for FetchContent/subdirectory builds

26 Apr 03:45
5732ad1

Choose a tag to compare

Patch release focused on Windows build reliability when libstats is consumed as a dependency.

• Build-tree include shim generation now copies headers into include_shim/libstats instead of creating a symlink.
• Fixes Windows environments where symlink traversal can fail and produce missing-header errors during FetchContent/subdirectory builds.
• No functional API changes; this is a compatibility/build fix release.

v1.1.0

12 Apr 21:38

Choose a tag to compare

v1.1.0 replaces the heuristic-based dispatch threshold system with a constexpr lookup table derived from 6,912 empirical measurements across four SIMD architectures (NEON, AVX, AVX2, AVX-512). The previous dispatcher used unrelated constants as placeholder thresholds and applied inverted refinement multipliers that selected parallel execution prematurely — in some cases by four orders of magnitude.

Each threshold now traces directly to a profiling run, and architectures are independent: adding or tuning one does not affect the others.

This release also fixes the MSVC build to propagate detected AVX-512 support to all translation units (previously hardcoded to /arch:AVX2), hardens the Student-T MLE optimizer against Newton-Raphson divergence for large ν, and corrects a std::vector data race in the thread-safety test.

v1.0.0

11 Apr 19:28
v1.0.0

Choose a tag to compare

[1.0.0] - 2026-04-11

  • Dispatch metadata (getDistributionSpecificParallelThreshold) now covers all
    9 distributions with explicit cases; distributionTypeToString likewise complete
  • Documentation and example surface aligned with the current 9-distribution library
  • distribution_families_demo.cpp added; per-distribution benchmark files removed
    from the examples build
  • Explanatory comments added to Gamma, Beta, and Student's t CDF batch
    implementations documenting why scalar special functions cannot be vectorized

Validation (all four test machines, 54/54 SIMD tests) (plus automated CI/CD)

Machine SIMD Correctness simd_verification Speedup
Ivy Bridge (2012 MBP) AVX 34/34 ✅ 54/54 ✅ 4.10x
Kaby Lake (2017 MBP) AVX2 33/33 ✅ 54/54 ✅ 3.49x
Mac Mini M1 NEON 33/33 ✅ 54/54 ✅ 2.31x
Asus TUF A16 (Windows) AVX-512/MSVC 33/33 ✅ 54/54 ✅ 1.64x