Releases: virtualsecureplatform/TFHEpp
Version 9
This release introduces the change that will break the backward compatibility. The API has not been changed but I added memory alignment requirements to some input and output variables. Because one of the philosophies of this library is to keep the data format as plain as possible, users must explicitly handle this alignment requirement by adding alignas
or the custom allocator like TFHEpp::AlignedAllocator
.
The main modification you will need to use this version is to ensure that the output of CircuitBootstrapping is aligned to the 64-byte boundary.
This alignment requirement is required to speed up the library.
This release also introduces some additional FFT library supports, but it is just for the completeness of this library. I recommend you to keep using SPQLIOS or its AVX512 version.
Version 8
I decided to add the support for Centered Binomial Distribution since it is believed to be faster to generate than Gaussian Distribution and is used in CRYSTAL-Kyber and Microsoft SEAL.
This change came from the need for faster evaluation key generation to reduce the cost of the client side.
After this release, some API changes caused by the distribution selection interface are expected.
Version 7
I decided to change the explicit instantiation structure to support non-predefined parameters. It may achieved by pre-compiled header or extern template functionality.
This release includes AVX512 spqlios, ternary key supports, CI using GitHub actions, Bootstrapping Unrolling, and BFV like multiplication.
Version 6
Version 5
This release includes some additional FFT library supports and the introduction of EvalKey for a more flexible bootstrapping key format.
After this release, I will support k>1 parameters and 32-bit NTT. This may introduce some minor API changes.
Version 4
This is the last release that assumes only TLWElvl0 is the input of Homomomorphic Gates.
After this release, significant API changes are expected.
Version 3
This is the last release that supports GateBootstrappingTLWE2TRLWE, GateBootstrappingTLWE2TLWEFFTvariableMu, and RotatedTestVector. These are replaced by more generic functions like BlindRotate.
This release includes AnnihilatePacking, LWEMult, and BlindRotateManyLUT.
Version 2
This release is the last version that trgswSymEncrypt takes an integer as a plaintext, After this release, trgswSymEncrypt takes a polynomial.
This change is needed to implement Chen's packing method.
Version 1
This release is the last version that is compatible with USENIX 2021's codes.
To make this library more extensible, I decided to do refactoring with breaking backward compatibility.