cabal-version: 3.4 name: bloomfilter-blocked version: 0.1.0.0 synopsis: Classic and block-style bloom filters description: @bloomfilter-blocked@ is a Haskell library providing multiple fast and efficient implementations of [bloom filters](https://en.wikipedia.org/wiki/Bloom_filter). It is a full rewrite of the [bloomfilter](https://hackage.haskell.org/package/bloomfilter) package, originally authored by Bryan O'Sullivan . The library includes two implementations of bloom filters: classic, and blocked. * /Classic/ bloom filters, found in the "Data.BloomFilter.Classic" module: a default implementation that is faithful to the canonical description of a bloom filter data structure. * /Blocked/ floom filters, found in the "Data.BloomFilter.Blocked" module: an implementation that optimises the memory layout of a classic bloom filter for speed (cheaper CPU cache reads), at the cost of a slightly higher FPR for the same amount of assigned memory. license: Apache-2.0 license-files: LICENSE NOTICE author: Duncan Coutts, Joris Dral, Matthias Heinzel, Wolfgang Jeltsch, Wen Kokke, and Alex Washburn maintainer: duncan@well-typed.com, joris@well-typed.com copyright: (c) 2023-2025 Cardano Development Foundation category: Data build-type: Simple tested-with: GHC ==9.2 || ==9.4 || ==9.6 || ==9.8 || ==9.10 || ==9.12 extra-doc-files: CHANGELOG.md README.md extra-source-files: xxhash/include/HsXXHash.h xxhash/xxHash-0.8.2/xxhash.h license-files: xxhash/xxHash-0.8.2/LICENSE-xxHash source-repository head type: git location: https://github.com/IntersectMBO/lsm-tree subdir: bloomfilter-blocked source-repository this type: git location: https://github.com/IntersectMBO/lsm-tree subdir: bloomfilter-blocked tag: bloomfilter-blocked-0.1.0.0 common warnings ghc-options: -Wall -Wcompat -Wincomplete-uni-patterns -Wincomplete-record-updates -Wpartial-fields -Widentities -Wredundant-constraints -Wmissing-export-lists -Wno-unticked-promoted-constructors -Wunused-packages ghc-options: -Werror=missing-deriving-strategies common language default-language: GHC2021 default-extensions: DeriveAnyClass DerivingStrategies DerivingVia ExplicitNamespaces GADTs LambdaCase RecordWildCards RoleAnnotations ViewPatterns library import: language, warnings hs-source-dirs: src build-depends: , base >=4.16 && <4.22 , bloomfilter-blocked:xxhash , bytestring ^>=0.11 || ^>=0.12 , deepseq ^>=1.4 || ^>=1.5 , primitive ^>=0.9 exposed-modules: Data.BloomFilter Data.BloomFilter.Blocked Data.BloomFilter.Classic Data.BloomFilter.Hash other-modules: Data.BloomFilter.Blocked.BitArray Data.BloomFilter.Blocked.Calc Data.BloomFilter.Blocked.Internal Data.BloomFilter.Classic.BitArray Data.BloomFilter.Classic.Calc Data.BloomFilter.Classic.Internal ghc-options: -O2 test-suite tests import: language, warnings type: exitcode-stdio-1.0 hs-source-dirs: tests main-is: bloomfilter-tests.hs build-depends: , base <5 , bloomfilter-blocked , bytestring , quickcheck-instances , tasty , tasty-quickcheck benchmark bench import: language, warnings type: exitcode-stdio-1.0 hs-source-dirs: bench main-is: bloomfilter-bench.hs build-depends: , base , bloomfilter-blocked , criterion , random -- It's not really a test suite, but if we make it an executable then its -- dependencies will be included for dependency resolution when building the -- main library. As a test-suite, it's more accurately represented as an -- internal component. test-suite fpr-calc import: language, warnings type: exitcode-stdio-1.0 hs-source-dirs: tests main-is: fpr-calc.hs build-depends: , base , bloomfilter-blocked , containers , parallel , random , regression-simple ghc-options: -threaded -- It's not really a test suite, but if we make it an executable then its -- dependencies will be included for dependency resolution when building the -- main library. As a test-suite, it's more accurately represented as an -- internal component. test-suite spell import: language, warnings type: exitcode-stdio-1.0 hs-source-dirs: examples main-is: spell.hs build-depends: , base , bloomfilter-blocked , directory -- this exists due to windows library xxhash import: language, warnings visibility: private include-dirs: xxhash/xxHash-0.8.2/ xxhash/include/ includes: HsXXHash.h xxhash.h exposed-modules: XXH3 if (arch(x86_64) && !os(osx)) -- Cabal doesn't pass cc-options to "ordinary" Haskell source compilation -- https://github.com/haskell/cabal/issues/9801 ghc-options: -optc=-mavx2 -optc=-O3 other-modules: FFI hs-source-dirs: xxhash/src build-depends: , base <5 , bytestring ^>=0.11 || ^>=0.12 , primitive ^>=0.9 test-suite xxhash-tests import: language, warnings type: exitcode-stdio-1.0 hs-source-dirs: xxhash/tests main-is: xxhash-tests.hs build-depends: , base <5 , bloomfilter-blocked:xxhash , bytestring , primitive , tasty , tasty-hunit , tasty-quickcheck