Releases: tlk00/BitMagic
BitMagic release v3.15.0
-
Implemented new API for right shift of bit-vectors
bvector<>::shift_right() -
Implemented fast aggregator SHIFT-AND for pattern searches.
-
New example for fingerprint based substring search (xsample04.cpp)
with SHIFT-AND bitap algorithm.
Tech. note: http://bitmagic.io/dna-search.html
BitMagic release v3.14.5
- Optimizations for rank-select operations using rs-index, SIMD(SSE4.2, AVX2) and BMI2 instructions.
Tech.note: http://bitmagic.io/rank-select.html - New example (sample17.cpp) to illustrate use of rs-index.
http://bitmagic.io/doxygen/html/sample17_8cpp-example.html
BitMagic release v3.14.0
Release Notes
-
Implemented first version of Rank-Select bit-transposed sparse vector
bm::rsc_sparse_vector<>. First succinct container part of BitMagic.
see samples/rscsample01 for an introduction
https://github.com/tlk00/BitMagic/tree/master/samples/rscsample01 -
Added new advanced example (xsample03) implementing real-life scenario of searching for DNA mutation (SNP). https://github.com/tlk00/BitMagic/tree/master/samples/xsample03
position by mutation id (rs#). Sample compares speed and memory consumption of the
new bm::rsc_sparse_vector<>
Tech.note: http://bitmagic.io/succinct-snp-search.html
BitMagic release v3.13.0
-
Implemented a new utility bm::aggregator<> for fast logic (AND, OR, AND-SUB) operations on
groups of vectors. Aggregator uses cache blocking techniques and other optimizations to
work faster than pairwise operations. -
Added new example to illustrate use of new aggregator (see sample16.cpp)
-
Sparse vector search utility class (scanner) for unordered sets bm::sparse_vector<> improved its
performance 2-3x times (via use of bm::aggregator<>). -
Documentation update on unordered set search, new benchmark results.
http://bitmagic.io/sparse-vector-search.html
BitMagic release v3.12.6
- Fixed crash on copying of empty bm::bvector<>
- Major optimization of bm::set2set_11_transform<> (4-5x times speedup)
Details: http://bitmagic.io/set2set-assoc-remap-opt.html - Reworked svsample05 to better explain use of bm::sparse_vector<> as associative container
for set-to-set remapping operations - Improved performance of logical OR operation on bm::bvector<>
- Implemented bm::sparse_vector<>::gather() for faster selective retrieval of values from
bit-transposed containers. SSE4.2 and AVX2 optimizations for gather operation. - Fixed some harmless but inconveninent compilation warnings
- Implemented new bm::bvector<> functions copy_range() and range copy constructor for
faster horizontal partitioning - Cleaned up warnings, sometimes treated as compilation errors
BitMagic release v3.12.0
- Implemented const iterator for bm::sparse_vector<>
- Implemented back inserter for bm::sparse_vector<>
- Implemented new search algorithm utility class (bm::sparse_vector_scanner<>) for unordered sets stored in bm::sparse_vector<>
- Performance optimizations of common logical operations, construction and destruction of bm::bvector<>
- New bit-vector method to find relative bit position for the specified rank bm::bvector<>::find_rank(...)
- SIMD performance optimizations (minor) for AVX2 and SSE4.2
- Improved test code coverage, fixed a few rare bugs
- Improved build environment, cmake files and settings
- #define BMCOUNTOPT deprecated (potential thread safety issues)
- Added a few new examples
BitMagic release v3.11.0
Release Notes
- Performance optimizations (minor) for SSE4.2 and AVX2.
- Improved C-library (language mapping) to support CPU identification.
- Improved C-library to buils DLLs for various SIMD targets.
- bm::sparse_vector<> - optimizations to set/get single elements without full decode.
- bm::sparse_vector<> added support of NULL (unassigned) values for memory efficient construction of columnar databases.
- New algorithm: memory efficient sparse_vector<> algorithm for Theory of Groups Image operation (set to set transformation / remapping / etc) (see svsample05.cpp).
- Reworked some memory management for better compiler compatibility, cleaner code, less warnings.
- bm::bvector<> - added methods to find index of last set bit to determine dynamic range. (see sample15.cpp).
- bm::bvector<>, bm::sparse_vector<> - added method inc() for binary increment of an element.
- New example: implementation of counting sort / histogram build using sparse_vector<>, performance and memory benchmarks. (see xsample02.cpp)
BitMagic release v3.10.1
- BitMagic Library now licensed under Apache 2.0 license.
- Improved performance of enumerators.
- Added new algorithms to traverse bit-vector. Works a few times faster than enumerator.
- Improved memory management of serializations, fixed potential security vulnerabilities (buffer overrun).
5.New AVX2 and SSE4.2 optimizations. - Improved performance of sparse_vector<> extraction algorithms.
- Added new examples for some common use cases for bit-vectors.
- Continued improvement of BitMagic C library (libbm).
- Improved build environment for cmake to make various SIMD configurations easier.
BitMagic release v3.10.0
- added AVX2 optimization option (#define BMAVX2OPT)
- improved SIMD vectorization computational kernels for SSE2, SSE4.2
- faster testing for bits in compressed vectors
- bit-vector enumerator (bvector<>::enumerator) added random positioning, can now go to any arbitrary start point and traverse bits from it
- added bvector<>::count_to() to efficiently work with range bit counting and bit-vector based prefix sums
- new samples
- optimizations to bit counting, sparse_vector<> extraction, bit testing, etc
BitMagic release v3.9.0
- improved C++11 compatibility, added move constructors, assignmnets.
- improved performance of bm::sparse_vector<> container, faster import and export
- added libbm C library based on top of C++, but can be compiled without exceptions, RTTI, STL and C++ runtime dependency