Skip to content

v0.3.0 release

Choose a tag to compare

@homer6 homer6 released this 18 Feb 05:17
· 53 commits to main since this release

automerge-cpp v0.3.0

This release focuses on quality assurance and rigorous performance analysis. It introduces automated fuzz testing, static analysis, and comprehensive benchmark results for Linux server environments, ensuring the library is both reliable and highly optimized for production deployments.

Linux Server Benchmarks

Detailed performance measurements were conducted on a high-end Linux server (Intel Xeon Platinum 8358, 30 vCPUs). The results demonstrate high-throughput capabilities for core operations:

  • Map Operations: ~32.4 Million gets/sec and ~2.46 Million batched puts/sec.
  • Cursor Operations: ~3 Million resolves/sec.
  • Synchronization: ~1.48 Million sync messages generated per second.
  • Microarchitecture Comparison: A detailed comparison between Linux (Xeon) and macOS (M3 Max) is included in docs/benchmark-results-linux.md, highlighting performance differences in zlib/DEFLATE execution across compilers and architectures.

Automated Testing & Safety (Phase 9)

This release completes Phase 9, adding multiple layers of defense against bugs and security vulnerabilities:

  • Fuzz Testing: Introduced three libFuzzer targets (fuzz_load, fuzz_leb128, fuzz_change_chunk) to stress-test deserialization paths.
  • Seed Corpus: Integrated 8 upstream "crasher" files from the Rust implementation to ensure cross-platform robustness.
  • Memory Safety CI: Added a dedicated GitHub Actions job running all 274 tests under AddressSanitizer (ASan) and UndefinedBehaviorSanitizer (UBSan) on Linux, macOS, and FreeBSD.
  • Static Analysis: Implemented a project-wide .clang-tidy configuration. CI now enforces zero warnings across bugprone-*, performance-*, and clang-analyzer-* check suites.

Code Quality Improvements

In preparation for the Phase 9 CI requirements, several architectural refinements were made to eliminate potential issues identified by static analysis:

  • Logic Simplification: Collapsed redundant branches in OBJ decoding and value metadata encoding to improve maintainability and performance.
  • Type Safety: Fixed potential implicit widening issues in multiplication results within the SHA-256 and compression logic.
  • Modernization: Removed unnecessary std::move calls on trivially-copyable types and converted std::function parameters to const & to avoid redundant allocations.

CI & Workflow Updates

  • Development Rules: Updated CLAUDE.md to mandate that all tests must pass locally before any commit.
  • Doxygen Foundation: Introduced the initial Doxyfile configuration to support future automated API documentation generation (Phase 10).
  • FreeBSD Support: Refined the FreeBSD CI workflow to utilize the system's native zlib, resolving previous package installation conflicts.

Release Statistics

  • Version: 0.3.0
  • Tests: 274 passing tests.
  • Platforms: Linux (GCC/Clang), macOS (Apple Clang), Windows (MSVC), FreeBSD (Clang).