Files
poulpy/CHANGELOG.md
2025-10-28 11:04:47 +01:00

3.2 KiB

CHANGELOG

[0.3.2] - 2025-10-27

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.