LP-107 inverted the dependency: luxfi/math/ntt/canonical now OWNS the
canonical Montgomery / Barrett body. This package re-exports it so
downstream consumers (luxfi/pulsar, luxfi/fhe, luxfi/threshold,
luxfi/multiparty, luxfi/lattice/multiparty, luxfi/lattice/schemes,
...) see no source change.
Before: 205 lines of inline Montgomery / Barrett scalars.
After: 85 lines re-exporting canonical's MForm / IMForm / MRed /
MRedLazy / BRedAdd / BRedAddLazy / GenMRedConstant /
GenBRedConstant.
Tests:
GOWORK=off go test -count=1 ./... → all packages PASS:
ok github.com/luxfi/lattice/v7/ring 0.558s
ok github.com/luxfi/lattice/v7/ring/ringqp 0.432s
ok github.com/luxfi/lattice/v7/multiparty 1.552s
ok github.com/luxfi/lattice/v7/multiparty/mpbgv 0.460s
ok github.com/luxfi/lattice/v7/multiparty/mpckks 2.018s
ok github.com/luxfi/lattice/v7/schemes/bgv 1.983s
ok github.com/luxfi/lattice/v7/schemes/ckks 2.276s
ok github.com/luxfi/lattice/v7/types 0.868s
ok github.com/luxfi/lattice/v7/examples/... all green
go.mod adds github.com/luxfi/math dependency.
Subsequent commits will migrate the rest of ring/ntt.go,
ring/subring.go etc. to thin shims as well.
- Add batch NTT operations for GPU-parallel polynomial transforms
- More efficient than per-polynomial NTT for large batches
- Single GPU dispatch minimizes kernel launch overhead
- Update import path to github.com/luxfi/constants
- 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
- RLWE : added a new `rlwe` package as common implementation base for the lattigo RLWE schemes
- DRLWE : added a new `drlwe` package as a common implementation base for the lattigo multiparty RLWE schemes
- BFV/CKKS : the schemes are now using a common implementation for their keys
- BFV/CKKS : the rotation-keys are now indexed by their corresponding galois automorphism
- BFV/CKKS : the `Evaluator` interface now has a single method for all column rotations and one method for the row-rotation/conjugate.
- BFV/CKKS : the relinearization and rotation keys are now passed to the `Evaluator` constructor methods (and no longer to the operations methods)
- DBFV/DCKKS : added a common interface and implementation for each multiparty key-generation protocols