What does our compiler offer?

Our compiler abstracts away the usual difficulties of working with FHE which includes selecting FHE scheme parameters, translating your program into an optimized circuit representation, and inserting in FHE-specific operations.

We have currently configured Parasol to provide 128 bits of security (estimated via Lattice Estimator).

Additionally, our compiler plugs into our single-key TFHE scheme variant (useful if your application operates over a single user or entity’s data) as well as our threshold TFHE scheme variant (useful if your application operates over data from multiple users or entities).

While this list isn’t comprehensive, these are the main features we’d like to call attention to:

  • Support for C programs
  • Signed and unsigned integers up to 32 bits
  • Arithmetic, logical, and comparison operations
  • Array support
  • Branching over plaintext values
  • Support for import statements (#include)
  • Support for function inlining, enabling more modular code
  • Ability to perform computations on combinations of plaintexts and ciphertexts (e.g. you can multiply a ciphertext and plaintext together to produce a new ciphertext)
  • Run computations without FHE (useful for testing purposes)
  • Programs are automatically optimized and program execution is automatically parallelized
  • Support for serialization of keys and ciphertext values

Upcoming features

  • Higher precision integers
  • Division by plaintext
  • Branching over encrypted values (with the usual FHE restrictions such as evaluating both conditions for an if statement, cannot exit a loop early, etc.)
  • WASM support (some support is available today)