A compressed bitset solution providing the usual intersection (and), union (or) and difference (and-not) operations with two different approaches. It uses a memory efficient persistent data structure (effectively immutable with copy-on-write semantics) allowing multiple reading threads and one updating thread. It has a constant time complexity O(1) for set and clear for the typical case.