Files
poulpy/CHANGELOG.md
Jean-Philippe Bossuat 8a039e1c3a Update doc & readme (#122)
* update poulpy_arch.svg

* update main readme

* update lib_diagram.png & main readme

* update poulpy-core readme

* update backend readmes

* update poulpy-hal readme

* update poulpy-schemes readme

* update CHANGELOG.md
2025-11-19 17:08:11 +01:00

4.6 KiB

CHANGELOG

[0.4.0] - 2025-10-27

Summary

  • Full support for base2k operations.
  • Many improvments to BDD arithmetic.
  • Removal of poulpy-backend & spqlios backend.
  • Addition of individual crates for each specific backend.
  • Some minor bug fixes.

poulpy-hal

  • Add cross-base2k normalization

poulpy-core

  • Add full support for automatic cross-base2k operations & updated tests accordingly.
  • Updated noise helper API.
  • Fixed many tests that didn't assess noise correctly.
  • Fixed decoding function to use arithmetic rounded division instead of arithmetic right shift.
  • Fixed packing to clean values correctly.

poulpy-schemes

  • Renamed tfhe crate to bin_fhe.
  • Improved support & API for BDD arithmetic, including multi-thread acceleration.
  • Updated crate to support cross-base2k operations.
  • Add additional operations, such as splice_u8, splice_u16 and sign extension.
  • Add GLWEBlindRetriever and GLWEBlindRetrieval: a GGSW-based blind reversible retrieval (enables to instantiate encrypted ROM/RAM like object).
  • Improved Cmux speed

poulpy-cpu-ref

  • A new crate that provides the refernce CPU implementation of poulpy-hal. This replaces the previous poulpy-backend/cpu_ref.

poulpy-cpu-avx

  • A new crate that provides an AVX/FMA accelerated CPU implementation of poulpy-hal. This replaces the previous poulpy-backend/cpu_avx.

poulpy-schemes

  • Added sign argument to GGSW-based blind rotation, which enables to choose the rotation direction of the test vector.

[0.3.2] - 2025-10-27

poulpy-hal

  • Improved convolution functionality

poulpy-core

  • Rename GLWEToLWESwitchingKey to GLWEToLWEKey.
  • Rename LWEToGLWESwitchingKey to LWEToGLWEKey.
  • Add GLWESecretTensor which stores the flattened upper right of the tensor matrix of the pairs sk[i] * sk[j].
  • Add GGLWEToGGSWKey, GGLWEToGGSWKeyPrepared, GGLWEToGGSWKeyCompressed, which encrypts the full tensor matrix of all pairs sk[i] * sk[j], with one GGLWE per row.
  • Update GGLWEToGGSW API to take GGLWEToGGSWKey instead of the GLWETensorKey
  • Add GLWETensor, the result of tensoring two GLWE of identical rank.
  • Changed GLWETensorKey to be an encryption of GLWESecretTensor (preliminary work for GLWEFromGLWETensor, a.k.a relinearization).

poulpy-schemes

  • Add GLWEBlindRotation, a GGSW-based blind rotation that evaluates GLWE <- GLWE * X^{((k>>bit_rsh) % 2^bit_mask) << bit_lsh}. (k = FheUintBlocksPrepared).
  • Add GGSWBlindRotation, a GGSW-based blind rotation that evaluates GGSW <- (GGSW or ScalarZnx) * X^{((k>>bit_rsh) % 2^bit_mask) << bit_lsh}. (k = FheUintBlocksPrepared).

[0.3.1] - 2025-10-24

poulpy-hal

  • Add bivariate convolution (X, Y) / (X^{N} + 1) with Y = 2^-K

poulpy-core

  • Fix typo in impl of GGLWEToRef for GLWEAutomorphismKey that required the data to be mutable.

[0.3.0] - 2025-10-23

  • Fixed builds on MACOS

Breaking changes

  • The changes to poulpy-core required to break some of the existing API. For example the API prepare_alloc has been removed and the trait Prepare<...> has been broken down for each different ciphertext type (e.g. GLWEPrepare). To achieve the same functionality, the user must allocated the prepared ciphertext, and then call prepare on it.

poulpy-hal

  • Added cross-base2k normalization

poulpy-core

  • Added functionality-based traits, which removes the need to import the low-levels traits of poulpy-hal and makes backend agnostic code much cleaner. For example instead of having to import each individual traits required for the encryption of a GLWE, only the trait GLWEEncryptSk is needed.

poulpy-schemes

  • Added basic framework for binary decicion circuit (BDD) arithmetic along with some operations.

[0.2.0] - 2025-09-15

Breaking changes

  • Updated the trait FillUniform to take log_bound.

poulpy-hal

  • Added pure Rust reference code for vec_znx and fft64 backend.
  • Added cross-backend generic test suite along with macros.
  • Added benchmark generic test suite.

poulpy-backend

  • Added FFTRef backend, which provides an implementation relying on the reference code of poulpy-hal.
  • Added FFTAvx backend, which provides a pure Rust AVX/FMA accelerated implementation of FFTRef backend.
  • Added cross-backend tests between FFTRef and FFTAvx.
  • Added cross-backend tests between FFTRef and FFT64Spqlios.

poulpy-core

  • Removed unsafe blocks.
  • Added tests suite for FFTRef and FFTAvx backends.

Other

  • Fixed a few minor bugs.

[0.1.0] - 2025-08-25

  • Initial release.