XOR_singleheader: Header-only binary fuse and XOR filter library
klaussilveira
created: July 24, 2025, 11:09 a.m. | updated: July 24, 2025, 6:33 p.m.
Header-only Xor and Binary Fuse Filter libraryBloom filters are used to quickly check whether an element is part of a set.
Xor filters and binary fuse filters are faster and more concise alternative to Bloom filters.
Furthermore, unlike Bloom filters, xor and binary fuse filters are naturally compressible using standard techniques (gzip, zstd, etc.).
For example:size_t buffer_size = binary_fuse16_pack_bytes ( & filter ); char * buffer = ( char * ) malloc ( buffer_size ); if ( binary_fuse16_pack ( & filter , buffer , buffer_size ) != buffer_size ) { printf ( "pack failed" ); free ( buffer ); return ; } binary_fuse16_free ( & filter ); if (!
); } } ~BinaryFuse () { binary_fuse8_free (&filter); } bool AddAll ( uint64_t * data, const size_t start, const size_t end) { return binary_fuse8_populate (data + start, end - start, &filter); } inline bool Contain ( uint64_t &item) const { return binary_fuse8_contain (item, &filter); } inline size_t SizeInBytes () const { return binary_fuse8_size_in_bytes (&filter); } BinaryFuse (BinaryFuse && o) : filter(o.filter) { o. filter .
1 week, 4 days ago: Hacker News: Front Page