Skip to content

Releases: zama-ai/tfhe-rs

TFHE-rs v0.8.7

30 Oct 15:30
tfhe-rs-0.8.7
Compare
Choose a tag to compare

Summary

TFHE-rs v0.8.7 fixes zk proof compatibility between 32bits and 64bits architectures.

TFHE-rs v0.7.5

30 Oct 15:29
tfhe-rs-0.7.5
Compare
Choose a tag to compare

Summary

TFHE-rs v0.7.5 fixes zk proof compatibility between 32bits and 64bits architectures.

TFHE-rs v0.9.0

22 Oct 17:22
tfhe-rs-0.9.0
Compare
Choose a tag to compare

Summary

TFHE-rs v0.9.0 introduces breaking data changes for older data that was deprecated and to avoid having to manage too much legacy code for certain structures.

What's Changed

Breaking Changes

Warning

  • data compatibility is not guaranteed for version older than 0.8
  • SeededLweKeyswitchKey and SeededLwePackingKeyswitchKey are incompatible between version 0.8 and 0.9, the CompressedServerKey from shortint, integer and the High Level API are therefore incompatible as well as the CompressedCompressionKey from shortint and integer.
  • LweKeyswitchKey and LwePackingKeyswitchKey have had an update to their layout that can be loaded from 0.8 using the versioning primitives, the ServerKey from shortint, integer and the High Level API as well as the CompressionKey from shortint and integer are loadable using versioning.

TFHE-rs v0.8.6

22 Oct 13:30
tfhe-rs-0.8.6
Compare
Choose a tag to compare

Summary

TFHE-rs v0.8.6 adds wasm bindings for safe_serialize and safe_deserialize for the CompactPkePublicParams

TFHE-rs v0.8.5

21 Oct 13:13
tfhe-rs-0.8.5
Compare
Choose a tag to compare

Summary

TFHE-rs v0.8.5 fixes some serialization issues.

What's changed

In safe serialization, the serialized size limit is an upper bound on the serialized size.
With TFHE-rs v0.8.5, it includes header size.

The unlimited size option did not work. It is now fixed.

TFHE-rs v0.8.4

16 Oct 16:48
tfhe-rs-0.8.4
Compare
Choose a tag to compare

Summary

TFHE-rs v0.8.4 add a new function to get the size of serialized data before serializing them: safe_serialization::safe_serialized_size.
MSRV has been updated to 1.81.

TFHE-rs v0.8.3

10 Oct 15:43
tfhe-rs-0.8.3
Compare
Choose a tag to compare

Summary

TFHE-rs v0.8.3 introduces a breaking change regarding parameters for compression, an update was missed before release.

The v0.8.0, v0.8.1 and v0.8.2 crates will be yanked from crates.io and are not considered part of the v0.8.x release family, they should not be used.

TFHE-rs v0.8.2

08 Oct 12:08
tfhe-rs-0.8.2
Compare
Choose a tag to compare

Summary

TFHE-rs v0.8.2 adds a missing method to create an instance of IntegerProvenCompactCiphertextListConformanceParams.

TFHE-rs v0.8.1

07 Oct 16:23
tfhe-rs-0.8.1
Compare
Choose a tag to compare

Summary

TFHE-rs v0.8.1 exposes the HlCompressible and HlExpandable traits for compression which could have been hidden from users needing to implement them.

TFHE-rs v0.8.0

04 Oct 12:30
tfhe-rs-0.8.0
Compare
Choose a tag to compare

Summary

TFHE-rs v0.8.0 includes several enhancements and new features, here are the highlights:

  • Array types: Simplify working with vectors and tensors of integer ciphertexts.
  • CPU algorithms optimization: integer algorithms have been optimized: the 64 bits multiplication is now 16% faster for the default parameter set.
  • Single GPU performance improvement: Thanks to optimizations in the Programmable Bootstrap and the Fast Fourier Transform CUDA implementations, the performance has been improved by approximately 20%.
  • Multi-GPU support improvement:
    • All Nvidia GPUs can now be used in the computations, including those connected with PCIe.
    • NVLink connections between GPUs are used for memory transfers when available.
  • Default GPU parameters: It's no longer necessary to modify cryptographic parameters when using GPU acceleration with TFHE-rs.
  • Compression and decompression on the GPU: Ciphertext compression and decompression are now supported on GPUs, along with new integer operations.

What's Changed

Breaking Changes

Warning

  • safe_serialize_versioned/safe_deserialize_versioned have been removed, and safe_serialize/safe_deserialize now adds versioning to the serialized types. For more flexibility, you can use SerializationConfig and DeserializationConfig.
  • The CiphertextList trait must be in scope to use the common methods of the CompressedCiphertextList and CompactCiphertextListExpander.
  • With the addition of the tagging system for HL API structs, raw parts APIs have been updated to manage the new tag field on relevant structs.
  • Expansion of CompactCiphertextList and ProvenCompactCiphertextList now takes a signle IntegerCompactCiphertextListExpansionMode to manage keyswitching and applying lookup tables when required.
  • The encrypted pseudo random generation API has changed.
  • tfhe-zk-pok and TFHE-rs APIs now support custom metadata passed by users at encryption time.

New features

CPU

  • Add array types
  • Add a tag system to annotate structs with custom metadata
  • Add versioning to the KeySwitchingKey
  • Add missing raw parts APIs in the HL API
  • Add is_even/is_odd
  • Add ability to use safe serialization on key types
  • Add random encrypted FheBool generation
  • Add conformance to ProvenCompactCiphertextList
  • Add key conformance
  • Add integer bit slicing
  • Add count zeros/ones
  • ZK-POK: add ability to associate metadata to a proof
  • Add ability to construct a ClientKey from a user provided secret encryption key in shortint

GPU

  • Signed integer overflowing add
  • Signed integer overflowing sub
  • Signed integer overflowing scalar add
  • Signed integer overflowing scalar sub
  • Log2, trailing and leading zeros and ones
  • Signed & unsigned integer is even / is odd
  • Ciphertext compression

Improvements

CPU

  • Improve carry propagation performance, this positively impacts, add, sub, mul, div and comparisons
  • Improve performance in some cases during CompactCiphertextList expansion
  • Improve performance of non native modulus operations
  • WASM: add ability to encrypt u{512, 1024, 2048} with a CompactPublicKey
  • WASM: add ability to read the kind of an encrypted slot in a CompactListExpander
  • ZK-POK: improve performance on WASM for browser execution
  • ZK-POK: improve performance when proving less bits than what a proof can hold
  • ZK-POK: add versioning

GPU

  • Configure GPU parameters automatically to GPU multi-bit dedicated parameters
  • Optimize integer scalar multiplication memory use on the GPU
  • Optimize multiplication memory usage
  • Speedup twiddles reads
  • Pin bootstrap key host memory to speedup its copy to multiple GPUs
  • Multi GPU: dispatch/gather inputs and outputs to the ks/pbs on all GPUs
  • Implements FFT with reduced shared memory read/write

Fixes

CPU

  • Fix wrong Named implementation for CompressedCiphertextList
  • Fix Client/Server Key versioning
  • Fix CompactCiphertextList's expand_with_key which could fail to expand lists in certain circumstances
  • Remove double carry propagation in sub
  • Versioning: fix the bounds added in the derived traits for the Versionize macro which were sometimes unsatisfiable

GPU

  • Fix add with 1 block
  • Fix a memory error in multiplication
  • Fix a memory error in scalar shifts
  • Fix full propagation with 1 block
  • Fix a memory error in bitnot

Resources