Breaking:
- The protobuf schema has changed to support additional enum variants for
backing datastructures. This means prior protobufs using earlier library
versions will not work with `2.0.0+`. We made this change to ensure additional
variants will not break the schema. In general, storing serialized protobufs
is not a pattern the protocol recommends since every intersection calculation
should be a new protocol exchange (setup, request, response, intersection).
Feat:
- A `Raw` datastructure enum variant has been added which when specified,
computes an intersection against 'raw' encrypted strings, but with zero
false-positives (`fpr` is ignored). It is intended for applications that
depend on 100% accuracy, but it may have a performance impact.
Bugfix:
- Previously, only the `CPP` bindings supported the datastructure enum to allow
the user to select which backing datastructure to use in the protocol (`GCS`,
`BloomFilter`, and now `Raw`). This meant we were not feature-compatible in
the languages that depended on the (incomplete) `C` bindings. In this release,
all languages support the same features, namely, we've updated the `C`
bindings which allowed us to get `Go` and `Rust` to be feature compatible.
Chore:
- All languages now have common integration tests and use unit tests where
relevant. We make a distinction between unit and integration tests. Unit tests
are for language-specific edge cases whereas the integration tests will test
the common APIs for correctness.