arnaucube
arnaucube/poulpyPublic Self-hosted repository
poulpy/CHANGELOG.md
CHANGELOG.mdRaw
 1# CHANGELOG
 2
 3## [0.3.2] - 2025-10-27
 4
 5### `poulpy-hal`
 6- Improved convolution functionality
 7
 8### `poulpy-core`
 9 - Rename `GLWEToLWESwitchingKey` to `GLWEToLWEKey`.
10 - Rename `LWEToGLWESwitchingKey` to `LWEToGLWEKey`.
11 - Add `GLWESecretTensor` which stores the flattened upper triangular matrix of the pairs  `sk[i] * sk[j]`.
12 - Add `GGLWEToGGSWKey`, `GGLWEToGGSWKeyPrepared`, `GGLWEToGGSWKeyCompressed`, which encrypts the full tensor matrix of all pairs `sk[i] * sk[j]`, with one `GGLWE` per row.
13 - Update `GGLWEToGGSW` API to take `GGLWEToGGSWKey` instead of the `GLWETensorKey`
14 - Add `GLWETensor`, the result of tensoring two `GLWE` of identical rank.
15 - Changed `GLWETensorKey` to be an encryption of `GLWESecretTensor` (preliminary work for `GLWEFromGLWETensor`, a.k.a relinearization). 
16
17### `poulpy-schemes`
18 - Add `GLWEBlindRotation`, a `GGSW`-based blind rotation that evaluates `GLWE <- GLWE * X^{((k>>bit_rsh) % 2^bit_mask) << bit_lsh}.` (`k` = `FheUintBlocksPrepared`).
19 - Add `GGSWBlindRotation`, a `GGSW`-based blind rotation that evaluates `GGSW <- (GGSW or ScalarZnx) * X^{((k>>bit_rsh) % 2^bit_mask) << bit_lsh}.` (`k` = `FheUintBlocksPrepared`).
20
21## [0.3.1] - 2025-10-24
22
23### `poulpy-hal`
24 - Add bivariate convolution (X, Y) / (X^{N} + 1) with Y = 2^-K
25
26### `poulpy-core`
27 - Fix typo in impl of GGLWEToRef for GLWEAutomorphismKey that required the data to be mutable.
28
29## [0.3.0] - 2025-10-23
30
31- Fixed builds on MACOS
32
33### Breaking changes
34 - 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.
35
36### `poulpy-hal`
37 - Added cross-base2k normalization
38
39### `poulpy-core`
40 - 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.
41
42### `poulpy-schemes`
43 - Added basic framework for binary decicion circuit (BDD) arithmetic along with some operations.
44
45## [0.2.0] - 2025-09-15
46
47### Breaking changes
48 - Updated the trait `FillUniform` to take `log_bound`.
49
50### `poulpy-hal`
51 - Added pure Rust reference code for `vec_znx` and `fft64` backend.
52 - Added cross-backend generic test suite along with macros.
53 - Added benchmark generic test suite.
54
55### `poulpy-backend`
56 - Added `FFTRef` backend, which provides an implementation relying on the reference code of `poulpy-hal`.
57 - Added `FFTAvx` backend, which provides a pure Rust AVX/FMA accelerated implementation of `FFTRef` backend.
58 - Added cross-backend tests between `FFTRef` and `FFTAvx`.
59 - Added cross-backend tests between `FFTRef` and `FFT64Spqlios`.
60
61### `poulpy-core`
62 - Removed unsafe blocks.
63 - Added tests suite for `FFTRef` and `FFTAvx` backends.
64
65### Other
66 - Fixed a few minor bugs.
67
68## [0.1.0] - 2025-08-25
69 - Initial release.