Use ordinary SDSL storage for differential counters

Merged
AD
1mo ago
+1-52

Use ordinary SDSL storage for differential counters. The existing allocator accessed SDSL private layout through a cast; ordinary storage provides the word alignment this code needs and removes the custom allocator.

Validation: C++17 syntax checks and concurrent counter probes covering 14 packed widths pass. Full CI will rerun after restacking.

Based on master. Review/merge order: #647 → #648 → #649 → #646 → #644.


Summary by cubic

Replaces the custom aligned allocators for differential counter vectors with ordinary SDSL storage, removing a dependency on SDSL's private object layout.

  • Removes aligned_int_vector and aligned_bit_vector from MetaGraph headers; the differential counter caller now allocates a plain sdsl::int_vector.
  • C++17 checks against the original SDSL revision pass for 14 concurrent counter widths, five bit-update orders, and 384 ordinary vector allocations, checking alignment and zero initialization.