How to select between the Versions

Hi @alex @IceTDrinker

From my knowledge of 3 developed versions of libraries by ZAMA

concrete version - 0.1.11
concrete version - 0.2.1
tfhe-rs - latest version

How should we as developers/researchers choose between these versions?

What advantages/disadvantages these versions have over each other?

Hi @divyesh,

  • concrete v0.1 was designed as a Crypto library, exposing the user to low level TFHE primitives but providing some helpers to make it work (like encoders mainly). The low level crate (core) was exposing the low level primitives. I would say this version is interesting mostly for Crypto researchers or for people learning TFHE but is now deprecated and no longer supported.

  • concrete v0.2 was designed as a high level API, trying to abstract TFHE constraint by exposing to the user, FHE types like Boolean or Integers called FheUint (up to 16 bits), you have less control on how things are done but the code is way easier to write. I would say this version is targeting developers (and will soon be replaced by the same kind of API plugged with our compiler), on this version the low level primitives are still written in the concrete core crate, a complex library, not easily modified.

  • TFHE-rs is a bit a mix of both 0.1 and 0.2. It exposes high level types but with direct control on their implementation, (your values are from 1 to 4 bits but you explicitly choose Boolean or Short Integers, soon you will have Integers too) and the low level crate is a refactor of concrete core (with readability in mind to let crypto researchers use it, understand it or even modify it). If you look for a Rust TFHE library or if you are a Crypto researcher you should definitely use TFHE-rs.

1 Like