Version 7.5.0

Sept 12, 2021

Release Notes

  1. BitMagic now requires C++17 compiler.

    New example: svsample07a added to illustrate scanner and interval enumerator to study the properties of unsorted integer sequences in compact memory mode.

  2. bm::sparse_vector<> - succinct vector using principles of bit slicing (or bitwise transposition) reworked to support signed integer types. Previous versions were designed for unsigned types and it was a limitation. Signed types use complement codes, which may not be friendly to bit-slicing approach because negative ints with small absolute values become strings of 1s on the binary level -1 (represented as 11111). New version handles this case and automatically transforms signed values into “sign and magnitude” internal representation to have good memory and disk serialization efficiency (BM vectors are designed to be used as a variable binary encoders for non-sparse cases). New feature is consistently supported in serialization, scanner search and should be completely transparent for the programme

  3. bm::str_sparse_vector<> reworked to transparently support dynamic string length. The initial configuration used as a template parameter is now means the initial value (16 in the example below) typedef bm::str_sparse_vector<char, bvector_type, 16> str_sv_type; When a string with length above the specified parameter added, the container automatically resize its internal bit-matrix to correctly support it. No need to conservatively pre-allocate values now. This is a significant internal change which will allow to implement succinct vectors of arrays based on the same bit-slicing principles.

  4. New example: svsample07a added to illustrate use of fast scanner and interval enumerator to study the properties of unsorted integer sequences in compact memory mode.
  5. Download v7.5.0 (Sourceforge) GitHub

Follow us on Twitter