Releases: zama-ai/tfhe-rs
TFHE-rs v0.4
TFHE-rs v0.4.0 includes:
In the High-Level API (HL API):
- Allowed scalar operations on values up to U256
- Added FheInt{8,16,32,64,128,256}
- Tied scalar ops with corresponding clear type
- Added C API support for FheInt
In the Integer API:
- Introduced full_propagate_parallelized with more parallelism
- Added full support for signed radix ciphertext
- Improved scalar multiplication
- Enhanced division using overflowing_sub
- Added smarter choice of the carry propagation algorithm
In the Core Crypto API:
- Added parallel LWE PFPKS and LWE KS
- Optimized monic polynomial operations in PBS
- Improved closest_representable and pbs_modulus_switch
- Added monomial fft for multibit pbs
- Added parallel variant of extract_lwe_sample_from_glwe
- Added GLWE linear algebra primitives
CSPRNG 0.4.0
Minimal Rust version set to 1.72 allowing compiling with stable toolchain and intrinsics on ARM devices.
TFHE-rs v0.3.1
TFHE-rs v0.3.1 includes:
In the HL API:
- Scalar operations are now compatible with scalars up to 256 bits;
- New instruction: if_then_else.
In the integer API:
- New instruction: if_then_else;
- Faster parallelized carry propagation.
In the boolean API:
- Choice of the bootstrapping pattern: KS->PBS or PBS->KS;
- Parameter update.
TFHE-rs v0.3.0
TFHE-rs v0.3.0 includes:
-
In the High-level API:
- Scalar_bitwise/div/rem operations
- Not operator (!)
- Scalar comparisons
- Not equal
- Bit rotations
- Homomorphic shifts
- Multibit PBS
- Impl TryFrom operators for GenericInteger: RadixCiphertext and Vec
- CompressedPublicKey decompression
- CompressedServerKey
- Casting between integer types
- Use one unique key for integers
- Trivial encryptions
-
In the Integer API:
- Division by encrypted value
- Scalar division/remainder
- Scalar comparisons
- CastingKey struct to allow users to switch between integer parameter sets
- Scalar_mul generic over UnsignedInteger
- Reduced default sub latency
- Faster scalar add, sub and negation
- Scalar shift match rust when shift >= bit size
- Shifts and rotates on encrypted values
- Decompression of CompressedPublicKey
- Faster mul and scalar mul
- Faster parallel algorithms for add/sub
- Parallelized scalar rotate_left/right
- Improved scalar shift performance
- Trivial encryption
- Scalar bitwise operations
- Faster eq (==)
- Not equal operator (!=)
-
In the Shortint API:
- Encrypt_message_and_carry function
- Possibility to select deterministic execution for multibit PBS
- CastingKey struct to allow users to change server_key during a circuit execution on the server
- The possibility to use multi bit PBS
-
In the Boolean API:
- BooleanEngine::replace_thread_local
- CastingKey struct to allow users to change server_key during a circuit execution on the server
- CompressedPublicKey
-
In the Core Crypto API:
- Compact Public Key
- Std multi-bit bootstrapping
- Deterministic Multibit PBS
-
Test Improvements:
- Test On Noise Variance For LWE Encryption
- Normality Test Based On Shapiro-Francia
-
Applications
- Trivium application of TFHE
- Boolean sha256 tutorial
- Dark market tutorial
- FHE Regex Pattern Matching Engine
-
C / WASM APIs:
- Safer destroys
- #[repr(C)] for boolean parameters
- Parralellism in wasm API and wasm for HLAPI (client side)
-
Documentation
- Refactor of the documentation
TFHE-rs version 0.2.5
TFHE-rs v0.2.5 features:
(integer) Fix max_degree computation for CompressedServerKey which led to incorrect computations once decompressed
TFHE-rs version 0.2.4
TFHE-rs v0.2.4 features:
(core) fix split pbs for u128
(core) fix a rare conversion corner case for f128
(integer) remove mutex usage to ensure determinism in some parallel operations
TFHE-rs version 0.2.3
TFHE-rs v0.2.3 features:
(docs) Fix typo
TFHE-rs version 0.2.2
TFHE-rs v0.2.2 features:
(core) Fix rng
(core) Disable split PBS u128 implementation
(boolean) Add BooleanEngine::replace_thread_local
TFHE-rs version 0.2.1
TFHE-rs v0.2.1 features:
- (integer) Fix default multiplication
- (integer) Improve Min/Max performance
- (hl_api) Add trivial_ciphertext to the high-level API
- (hl_api) Fix the number of blocks for FheUint32
- (Doc) Benches updated
TFHE-rs version 0.2.0
TFHE-rs v0.2.0 includes:
-
New modules:
- An integer module to manage homomorphic unsigned integers encrypting messages up to 256 bits;
- A high-level API, including predefined homomorphic types and overloaded operators. A C binding is also available;
-
New features in all modules:
- Encryption key choice: In shortint and integer, the large LWE key is used by default. It is now possible to encrypt with the small one;
- A smaller public encryption key: As a consequence of the previous point, a smaller secret encryption key implies a smaller public key;
-
New features in core_crypto:
- The ability to compute a PBS over 128-bit ciphertexts;
- The choice of the ciphertext modulus: This can now be modified to use any powers of two smaller than 2^128;
- Parallel Programmable Bootstrapping: A parallelized version of the bootstrapping is now available.