Release v4.0.0
ICICLE v4.0.0 Release Notes
๐ Major Release: ICICLE v4.0.0
We're excited to announce the release of ICICLE v4.0.0! This major version introduces significant improvements to the API design, making it more intuitive, object-oriented, and developer-friendly across all supported languages.
๐ Key Highlights
- Object-Oriented Field API: Complete redesign of field operations from static methods to instance methods
- Method Chaining Support: Write more concise and expressive code with method chaining
- Improved Rust API: Better trait design with standard operator overloading
- Enhanced Program API: Reorganized Program module with better type safety
- Backward Compatibility: Comprehensive migration guides for v3 to v4 transition
- Post Quantum: Implemented a NIST FIPS203 (ML-KEM) protocol on CUDA, fully open-source
- Lattice Based Cryptography: Add support for Lattice based cryptography, with integer ring support and a full LaBRADOR prover (soon announced)
๐ Breaking Changes
C++ API Changes
Field Arithmetic Operations
All field operations have been converted from static methods to instance methods Check the migration page for more details
Rust API Changes
Arithmetic Trait Redesign
The FieldImpl trait has been deprecated and split into focused, orthogonal traits
What's Changed
- Negacyclic NTT for polynomial rings by @yshekel in https://github.com/ingonyama-zk/icicle/pull/930
- Update README.md by @Shalmoni in https://github.com/ingonyama-zk/icicle/pull/931
- Fixed devdocs link licensing by @Shalmoni in https://github.com/ingonyama-zk/icicle/pull/933
- Fix collab instructions for version mismatch error by @jeremyfelder in https://github.com/ingonyama-zk/icicle/pull/935
- Feat: generate JL-projection matrix rows by @yshekel in https://github.com/ingonyama-zk/icicle/pull/936
- Curve Montgomery Conversion Fix for Host Memory by @emirsoyturk in https://github.com/ingonyama-zk/icicle/pull/938
- [FIX] Invalid memory access causes hang by @jeremyfelder in https://github.com/ingonyama-zk/icicle/pull/939
- PQC ML-KEM by @nonam3e and @dorshmil in https://github.com/ingonyama-zk/icicle/pull/932
- Add PQC documentation to 3.9.0 by @LeonHibnik in https://github.com/ingonyama-zk/icicle/pull/940
- Changed broken link on readme by @Shalmoni in https://github.com/ingonyama-zk/icicle/pull/942
- [FEAT] Rust Polynomial-Ring trait and NegacyclicNTT by @yshekel in https://github.com/ingonyama-zk/icicle/pull/943
- [FEAT] Decompose Polynomial-rings by @yshekel in https://github.com/ingonyama-zk/icicle/pull/945
- [FEAT] JL-projection Rust wrapper by @yshekel in https://github.com/ingonyama-zk/icicle/pull/949
- [FEAT] MatMul API by @lnm-at-work in https://github.com/ingonyama-zk/icicle/pull/871
- [FEAT] Expose Sumcheck protocol challenge vector by @LeonHibnik in https://github.com/ingonyama-zk/icicle/pull/946
- Timur/pqc go wrappers by @nonam3e in https://github.com/ingonyama-zk/icicle/pull/944
- [FEAT] Add flattening utilities for polynomial slices into scalar slices by @yshekel in https://github.com/ingonyama-zk/icicle/pull/952
- [CI] Separate testing by feature by @jeremyfelder in https://github.com/ingonyama-zk/icicle/pull/913
- [FEAT] Add reinterpretation utilities and polynomial vector operations by @yshekel in https://github.com/ingonyama-zk/icicle/pull/954
- [FIX] typo in ci.yml by @yshekel in https://github.com/ingonyama-zk/icicle/pull/959
- [REFACTOR] move matrix transpose to matrix_ops, add PolyRing support and tests by @yshekel in https://github.com/ingonyama-zk/icicle/pull/961
- [CI] Fix Go tests and Rust bn254 by @jeremyfelder in https://github.com/ingonyama-zk/icicle/pull/960
- [CI] Move merkle test to hash crate by @jeremyfelder in https://github.com/ingonyama-zk/icicle/pull/963
- Determine the scalar size according to configuration if provided by @mickeyasa in https://github.com/ingonyama-zk/icicle/pull/955
- [FEATURE] Pseudorandom field element sampling from seed by @ChickenLover in https://github.com/ingonyama-zk/icicle/pull/950
New Contributors
- @lnm-at-work made their first contribution in https://github.com/ingonyama-zk/icicle/pull/871
Full Changelog: https://github.com/ingonyama-zk/icicle/compare/v3.9.2...v4.0.0