Releases: myl7/fss
Crate fss-rs v0.6.0
[0.6.0] - 2024-07-30
Features
- Impl from int for int&int_prime groups
- Support stable Rust with features
Bug Fixes
- Correct int_prime group neg
- Fix from_bytes of int_prime group
- Fix doc comment code block test
Refactor
- [breaking] Rename bound state
- [breaking] Update PRG new() arg types
- Update generic param name
- Use Neg for inverse element
- Reduce required supertraits of group trait
- Remove unused unstable features
Documentation
- Fix dead link in readme
- Enhance doc comments of dcf/dpf
- Update doc comment of group trait
- Update readme for support of stable Rust
- Add correctness fix log to readme
Testing
- Setup property-based tests
- Add tests for group axioms
Miscellaneous Tasks
- (ci) Update CI to test in stable Rust
- Setup and migrate changelog
Crate fss-rs v0.5.0
Changes
- Refactor PRGs to let DCFs and DPFs share some same PRG implementations.
- This refactoring gives around %8 performance improvement for some benchmarks.
Breaking changes
- The
PRG
interface is updated.
See the Migrate to v0.5 section in README for how to migrate from v0.4 to v0.5, which should be simple.
Crate fss-rs v0.4.4
New features
- Add filter support to control the input domain size with bit-level accuracy instead of byte-level one
Crate fss-rs v0.4.3
Bug Fixes
- Fix
crate::dcf::prg::Aes256HirosePrg
wrong implementation. See the Deprecation section of README for details and please update to a version with the fix ASAP.
The fix causes about 50% (necessary) performance regression in bench dcf_batch_eval
.
Only DCF performance is affected and DPF one is not.
No other functionality changes are made, so the change in the benchmark report should only reflect the performance impact of the fix.
Update: Please use the commit d97da02 for the version
Crate fss-rs v0.4.2
New features
- Optimize batch eval performance
- Add full domain eval support, which is largely faster than batch eval with the same number of points
Caveat
Though the batch eval performance improved, the large lambda (aka large range of the function) performance regressed largely (10%, up to 20%).
It is due to the commit 6a3f815, which changes not to alloc a new place for every intermediate states.
We still kept the change because the change improves batch eval largely (10%), and meanwhile a 16KB range size should be rare, since then you need a so large vector to store all evaluated values. A 256B range size should be more common (even in papers).
Moreover, we plan to add no alloc support for the crate, and reusing memory for intermediate states should make it easier.
Crate fss-rs v0.4.1
New features
- Add Matyas-Meyer-Oseas PRG
- With it the performance of DPF improves. But not for DCF.
Crate fss-rs v0.4.0
Changes
- Rearrange workspace into a single crate
- No functional changes. You only need to update import paths to migrate.
Benchmark checkpoint
Versions
- dcf v0.6.0
- dpf-fss v0.6.0
- group-math v0.2.2
- fss-types v0.1.0
dcf v0.2.2
- Fix incorrect PRG write causing the output is empty
- Remove cached PRG due to bad performance after re-evaluation
- Add easy multithreading with rayon, together with a new feature
multithread
- Add a new benchmark for longer messages
dcf v0.2.1
- Change embedded PRG implementation from Matyas-Meyer-Oseas to Hirose to improve performance
- Add simple hash map cached PRG wrapper to improve performance