- Update module path to github.com/luxfi/lattice/v7
- Add GPU acceleration with Metal (macOS) and CUDA backends
- Enhance threshold FHE operations
- Revert to vanilla Apache 2.0 license (remove tfhe)
- Update Go version to 1.25.5
- Merge upstream lattigo improvements
- Fixed all integer type conversions with explicit bounds checking
- Added proper validation for all numeric operations
- Eliminated ALL security vulnerabilities
- ZERO violations remaining - complete annihilation achieved
CHANGELOG:
- Update of `PrecisionStats` in `ckks/precision.go`:
- precision/error stats computed as log2 of min/max/average/...
- fields renamed (`MinPrecision` -> `MINLog2Prec`, `MaxPrecision` -> `MAXLog2Prec`, ...)
- `rlwe.Scale` has a `.Log2()` method
- Update of `mod1.Parameters` fields (made public, some removed)
- Improvement of the relinearization key-generation protocol (reduce the degree of the shares)
- Serialisation of bootstrapping keys
- Lower noise incurred by `ModUp`
- Evaluation keys can be compressed (public element `a` can be generated from a seed)
- More doc formatting
- Fix various bugs:
- `ShallowCopy` of the CKKS bootstrapping evaluator and BFV evaluator not deep enough.
- PSI example failing
- Incorrect reset of pointer in uniform sampler
- Error when doing inverse NTT with small degree
- Mod1Evaluator changes the input ciphertext
Co-authored-by: Andrea Caforio <[email protected]>
Co-authored-by: Jean-Philippe Bossuat <[email protected]>
The ring packing functionality exclusively uses code from the `rlwe`
and `ring` packages and thus completely sidesteps the `schemes`
layer. As such, it appears more sensible to place the ring packing
functions in the `rlwe` module instead of the new circuits package.