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

105 lines
4.6 KiB
Markdown

# 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.