Releases
v2.0.0
Performance
Global 1.5x speed-up across all arithmetic (this does not include sampling).
Added
BFV/CKKS: Added fast encryption (directly in Q without the rescaling by P).
CKKS: Added full-RNS scale-invariant bootstrapping (https://eprint.iacr.org/2012/144 ).
CKKS: Added parameterized tests for a range of experiments.
CKKS: Added arbitrary precision encoding/decoding.
CKKS: Added scale invariant polynomial evaluation.
CKKS: Added encoding/decoding for coefficient packing.
CKKS The user can now choose to encode a plaintext in or out of the NTT domain (the latter option leads to slightly faster encryptions).
CKKS: Added secret-key gen with error distribution.
DBFV: Added collective refresh with arbitrary permutation/linear transformation.
DCKKS: Added collective refresh with arbitrary permutation/linear transformation.
RING: Added arbitrary precision complex arithmetic, including cos and sin functions.
RING: Added polynomial interpolation.
RING: Added polynomial inversion.
RING: Extracted interface type Scaler for polynomial coefficient scaling.
RING: Added type RNSScaler as an efficient, cross-platform implementation of the Scaler interface.
Changed
ALL: all tests now use "require".
BFV/CKKS: Now parameters without P can be used, but the key-switching is disabled.
BFV/CKKS: Now parameters do not use methods to access internal values.
BFV/CKKS: New rotations keys optimized for hoisting rotations of the form (-phi^{-1}(s1)a + phi(s0) + e, a).
BFV: The Decoder uses the RNSScaler implementation of the Scaler interface to perform the t/Q rescaling.
CKKS: Simplified the code of the hybrid key-switching (does not affect user experience).
CKKS: The encoding/decoding operations at level 0 are now 500% faster.
CKKS: The encoder now accepts slices of complex values with length equal to or smaller than the specified number of slots.
RING: Improved primes finding.
RING: All Gaussian sampling now uses Ziggurat sampling.
RING: Revamped polynomial samplers to make them more memory efficient, consistent user friendly, and to enable parallel sampling.
RING: The SimpleScaler type now use slightly slower but cross-platform big.Int/Float.
UTILS: Complete revamp of the PRNG (Blake2b XOF), to make it more user friendly and consistent.
Removed
BFV/CKKS: Parameters API generation GenFromLogModuli() and GenFromModuli() have been removed and replaced by Gen().
CKKS: EvaluatePolyFast(.) and EvaluatePolyEco(.) are replaced by EvaluatePoly(.).
CKKS: EvaluateChebyFast(.) and EvaluateChebyEco(.) are replaced by EvaluatePolyCheby(.).
CKKS: EvaluateChebyEcoSpecial(.) and EvaluateChebyFastSpecial(.) are replaced by EvaluatePolyChebySpecial(.).
RING: The Float128 type was removed due to cross-platform incompatility.
Fixes
BFV: Fixed multiplication that was failing when #Qi != #QMul.
BFV: Fixed a mempool corruption when encrypting from SK.
CKKS: The function mulrelin now always returns a fully reduced polynomial.
CKKS: The encoder now correctly checks that the number of slots is a power of two.
RING: Prevented a rare case of uint64 overflow during prime sampling.
RING: Prevented a rare case where two identical primes could be returned when sampling primes.
You can’t perform that action at this time.