/bloom_cpp

Primary LanguageC++Apache License 2.0Apache-2.0

DuckDuckGo

Welcome to our bloom filter. We are excited to engage the community in development.

Components

The main bloom filter library source is cross-platform and has been used on:

  • android >= 5.0.0
  • ios >=10
  • linux >= Ubuntu 16.04.3 LTS
  • macOS >= 10.12

The utils and unit tests have been run only on linux and macOS. We recommend installing g++ and cmake to run this project.

Utils - GenerateFilter

A convenience utility that uses the main filter library to generate a binary bloom filter that can then be imported later or used on a different device. This is useful for distributing / sharing populated bloom filters. Also generates a false positive list that can be used as a whitelist.

Run via the ./make_filter.sh script with appropriate parameters.

Additional system dependencies

openssl: This is often available on linux but needs to be installed for macOS where we assume this will be installed via brew to /usr/local/opt/openssl/

Tests

Project unit tests. We use the Catch library at https://github.com/catchorg/Catch2 for unit testing. We include this as a submodule, run git submodule update --init --recursive to pull down the submodule. Run the ./run_tests.sh script to execute the unit tests.

Additional system dependencies

uuid: This is generally available on macOS. On debian based linux systems install uuid-dev.

Reporting Bugs

When reporting bugs let us know the:

  • OS and version
  • Steps to reproduce the bug
  • Expected behavior
  • Actual behavior

Discuss

Open a github issue or contact us at https://duckduckgo.com/feedback if you have feedback, questions or want to chat.

License

DuckDuckGo android is distributed under the Apache 2.0 license.