Releases: ingonyama-zk/icicle
Release v3.9.1
What's Changed
- [FIX] Docs deployment by @jeremyfelder in #903
- Yshekel/jl projection by @yshekel in #907
- DevDocs Version 2 by @Shalmoni in #906
- quickfix by @Shalmoni in #910
- 2 more broken references fixed by @Shalmoni in #911
- fix merkle-tree default config and test for segfault by @yshekel in #915
- Norm API for Lattice by @emirsoyturk in #877
- [FEAT] Add ext field support to sumcheck by @idanfr-ingo in #917
- fix Merkle-Tree rust wrapper get_proof() for device-mem by @yshekel in #918
Full Changelog: v3.9.0...v3.9.1
Release v3.9.0
What's Changed
🔥 New Features 🔥
- [FEAT] Add Golang support for more fields by @jeremyfelder in #882
- Add Goldilocks Ext by @ChickenLover in #892
- Feat/fri poseidon by @ChickenLover in #896
🚀 Performance 🚀
- G2 multiplier optimization by @mickeyasa in #897
- Miki/msm-optimiations by @mickeyasa in #794
📝 Docs 📝
- [DOCS] Fix broken FRI documentation link by @LeonHibnik in #876
- sidebars by @nonam3e in #878
- Update libraries.md by @ShaniBabayoff in #901
- changed sm preview by @Otsar-Raikou in #899
Misc
- Add cla workflow; Update docs workflow to be reusable by @jeremyfelder in #880
- [FIX] Metal CI to skip FRI by @jeremyfelder in #881
- [FEAT] Download taskflow if not found on system by @jeremyfelder in #893
- Reduce FRI test sizes by @ChickenLover in #891
- [FIX] Correctly link already installed taskflow by @jeremyfelder in #894
- [FIX] cuda branch output for ring and runtime build/tests by @jeremyfelder in #895
- [CI] Fix deploy-docs workflow by @jeremyfelder in #902
Full Changelog: v3.8.0...v3.9.0
Release v3.8.0
What's Changed
- [FEAT] Release ubuntu and build for RTX 40XX,50XX by @LeonHibnik in #868
- fix: stream type consistency with
IcicleStreamHandle
alias by @mdqst in #858 - Danny/poseidon2 consolidate kernels by @danny-shterman in #866
- fix: resolve compiler warnings across the codebase by @yshekel in #870
- Add generator functions for projective points in FFI and Rust bindings by @LeonHibnik in #869
- Serialization by @nonam3e in #861
- rust docs by @nonam3e in #874
- FRI rust wrappers by @nonam3e in #813
- Sha3Large test + bigger batch sizes by @dorshmil in #847
- [FEAT] Add Metal backend CI by @LeonHibnik in #786
New Contributors
Full Changelog: v3.7.1...v3.8.0
Release v3.7.1
V3.7.1
BUG FIX: Memory leak in Sumcheck-cuda
What's Changed
- Update install_gpu_backend.md by @ShaniBabayoff in #856
- Update install_gpu_backend.md by @ShaniBabayoff in #854
- Update libraries.md by @ShaniBabayoff in #857
- Update sidebars.ts by @ShaniBabayoff in #859
- Update libraries.md by @ShaniBabayoff in #855
- Update Docusaurus configuration to include Google Analytics tracking ID by @LeonHibnik in #862
Full Changelog: v3.7.0...v3.7.1
Release v3.7.0
ICICLE v3.7.0
Main updates
This version of ICICLE introduces:
- Goldilocks field support
- Curve pairings
What's Changed
- Added the new logo by @Otsar-Raikou in #808
- Update grants.md by @Otsar-Raikou in #810
- [DOCS] Fix rendering italics from dollar sign by @jeremyfelder in #811
- format rust code by @yshekel in #814
- Implement rust wrapper for rns conversions by @yshekel in #815
- Fix batch for rns conversions by @yshekel in #816
- Update docs with metal backend installation and licensing by @ShaniBabayoff in #818
- feat: FRI merkle tree API + CPU Backend by @ShanieWinitz in #795
- feat: balanced decomposition API by @yshekel in #823
- [Feat] Rust curves and fields to build with HASH by @LeonHibnik in #828
- [FEAT] sumcheck rust example fix by @LeonHibnik in #824
- Update introduction.md by @ElanZK in #830
- Adding Goldilocks Field by @HadarIngonyama in #837
- Implement Goldilocks on top of icicle-math for backend-specific optimizations by @HadarIngonyama in #838
- Accessing ICICLE with MCP by @ShaniBabayoff in #842
- sum and product scalar operations for golang by @emirsoyturk in #831
- Fixing bug in the from function in goldilocks and fixing the test for this function by @HadarIngonyama in #845
- copy | rust by @emirsoyturk in #836
- python script for generation params for from(bytes) function by @HadarIngonyama in #846
- Update arch_overview.md by @ElanZK in #841
- Update grants.md by @ElanZK in #843
- Update overview.md by @ElanZK in #844
- Update hash.md by @ShaniBabayoff in #832
- [FEAT] Rust memset by @LeonHibnik in #849
- Update install_gpu_backend.md by @ShaniBabayoff in #852
- inverse cpu and rust wrappers by @emirsoyturk in #747
- Make Go bindings work with Metal backend by @jeremyfelder in #825
- [FEAT] Curve Pairings by @ChickenLover in #829
- [FEAT] Add goldilocks constants for poseidon2 by @danny-shterman in #840
Full Changelog: v3.6.0...v3.7.0
Release v3.6.0
ICICLE v3.6.0
- Introducing a
METAL
backend! - At this release the backend is operable with cpp and Rust frontends.
- Usage: same as
CUDA
backend, download, extract and setICICLE_BACKEND_INSTALL_DIR
env var - This version also add support for user-defined program to use with sumcheck, faster cpu sumcheck and infrastructure for integer rings
Known Issues
- Metal backend is missing API implementations for Poseidon and Poseidon2 hashes, Merkle tree, Sumcheck and G2 montgomery conversions
- Batch
msm
is only supported in shared-bases mode (where all msms reuse the same bases).
What's Changed
- Fix release script by @jeremyfelder in #775
- Feat - batch hashing with multi-threading by @aviadingo in #764
- Remove MerkleTreeBasic test by @Koren-Brand in #780
- fix polynomial divide_by_vanishing_general_case() invalid config for … by @yshekel in #783
- Integer rings (Zq and instantiation for Labrador protocol) by @yshekel in #769
- Poseidon2 perf improvement by @danny-shterman in #758
- Example/sumcheck by @krakhit in #781
- Handle rou errors on the Rust side by @nonam3e in #784
- [Fix] ModArith neg when b is u32 by @LeonHibnik in #785
- Improve sumcheck docs by @idanfr-ingo in #778
- Make sumcheck tests able to run without cuda backend by @idanfr-ingo in #790
- Fix/pow misaligned by @nonam3e in #791
- Fix poseidon2 example to support any backend by @yshekel in #792
- Parallelize-sumcheck by @mickeyasa in #789
- docs: fix broken links in libraries and poseidon sections by @youyyytrok in #752
- Feat/func univariatepolytrait by @krakhit in #793
- Rust wrapper for porgram functionality by @Koren-Brand in #771
- Implement Integer Rings in RNS Representation by @yshekel in #787
- Custom combine functions for sumcheck (ReturningValueProgram) in rust by @Koren-Brand in #798
- fix sumcheck transcript-config copy rather than move by @yshekel in #799
- Refactor hash names by @LeonHibnik in #801
- Rust wrappers for labrador ring by @yshekel in #797
- [DOCS] Update Overview by @ElanZK in #804
- Update overview.md by @ElanZK in #805
- Idan/add sumcheck tests by @idanfr-ingo in #800
New Contributors
- @youyyytrok made their first contribution in #752
Full Changelog: v3.5.0...v3.6.0
Release v3.5.0
What's Changed
- Update sidebars.ts by @ShaniBabayoff in #729
- Update documentation for v3.4 by @ShaniBabayoff in #738
- Deprecated icicle/api headers and updated examples/docs by @yshekel in #740
- msm-avoid-double-thread-launch-on-phase1 by @mickeyasa in #737
- Fix get_device_count() in Rust release mode by @yshekel in #739
- Update to the new 2025 grants by @Otsar-Raikou in #726
- Hadar/base math by @HadarIngonyama in #734
- Vecops's Rust wrapper fix for batch>1 by @Koren-Brand in #741
- add sumcheck frontend by @mickeyasa in #692
- remove submodule by @emirsoyturk in #744
- Move initialization of the bucket_busy vectors to threads by @mickeyasa in #742
- Danny/poseidon2 sponge by @danny-shterman in #743
- fix host-math inv2() by disabling no-aliasing optimization by @yshekel in #755
- Hadar/reduction from storage by @HadarIngonyama in #745
- Change constant data of some poseidon2 tests to be random. by @danny-shterman in #753
- adding mersenne support for reduction function by @HadarIngonyama in #757
- Support G2 point conversion in Rust example by @LeonHibnik in #749
- Use Field::from function for hash results by @mickeyasa in #756
- Allow loaded backend to override default device for all threads by @yshekel in #760
- uninitialized variable warning fix in M31 by @mickeyasa in #759
- move cpu_sumcheck_transcript to frontend by @mickeyasa in #762
- Idan/sumcheck test by @idanfr-ingo in #761
- tests for single poly input by @idanfr-ingo in #772
- Feat/blake pow by @nonam3e in #766
- Fix incorrect clang-format flag by @brawncode in #767
- add "release" tag to Release CI workflow by @LeonHibnik in #774
- Update integrations.md by @ElanZK in #727
- Expose sumcheck API to Rust by @jeremyfelder in #770
New Contributors
- @brawncode made their first contribution in #767
- @ElanZK made their first contribution in #727
Full Changelog: v3.4.0...v3.5.0
Release v3.4.0
ICICLE v3.4.0
- Improved CPU MSM Performance
- Blake 3 CPU + CUDA
Known issues
- Blake3 CUDA version currently supports input sizes up to 2kb
What's Changed
- Update docusaurus.config.ts by @ShaniBabayoff in #720
- Add capability to set a default device for all threads by @jeremyfelder in #699
- Hadar/b const mult by @HadarIngonyama in #723
- Support vulkan backend in build system by @yshekel in #703
- Redesign CPU MSM with taskflow by @mickeyasa in #718
- Fix/release script by @LeonHibnik in #721
- fix bug in CPU vec ops regarding nof workers by @yshekel in #731
- Support android and vulkan by @yshekel in #735
- Parallelize-vecop-program-execution by @mickeyasa in #736
- Create docs for program & program execution by @idanfr-ingo in #722
- Blake3 CPU support by @aviadingo in #733
Full Changelog: v3.3.0...v3.4.0
v3.3.0
ICICLE v3.3.0
Main features:
- This version introduces a new field - Koalabear
- Performance: CPU Backend speedups for our multiplier and NTT
What's Changed
- Define sumcheck transcript configuration and Rust wrappers by @yshekel in #672
- bump rust crates version to 3.2.0 by @ShaniBabayoff in #682
- bug: remove invalid early return in field test by @yshekel in #684
- Add-program-support-for-multiple-outputs by @mickeyasa in #683
- Update cpp.yml with ' --output-on-failure' by @yshekel in #685
- add to cpu vecops the function execute_program by @mickeyasa in #689
- [FIX]: Add nodejs setup for release script by @jeremyfelder in #690
- Add-returnning-value-functiom-to-program by @mickeyasa in #688
- performance: (~3x) optimize field multiplier and EC-adder for improved MSM and ECNTT by @yshekel in #693
- update poseidon2 docs by @krakhit in #681
- refine barret multiplier by @yshekel in #696
- CI 2.0 - unified CI for C++, Go and RUST - PHASE1 by @aviadingo in #680
- Update docusaurus.config.ts by @ShaniBabayoff in #708
- [FEAT] Add Koalabear field support by @nonam3e in #706
- CI 2.0 adding Rust examples by @aviadingo in #702
- fix bug in poly-api regarding copy_coeffs() in rust by @yshekel in #715
- Update pull_request_template.md by @yshekel in #717
- fix ntt of size 1 by @HadarIngonyama in #716
- [FEAT] pow field Arithmetic API by @LeonHibnik in #713
- register program execution backends by @idanfr-ingo in #707
- Optimized NTT parallel implementation on CPU with Taskflow by @ShanieWinitz in #714
- vec_ops: scalar * ext field by @emirsoyturk in #709
New Contributors
- @ShaniBabayoff made their first contribution in #682
- @idanfr-ingo made their first contribution in #707
Full Changelog: v3.2.0...v3.3.0
v3.2.0
Maximize CPU Performance with Clang
For optimal performance of ICICLE on the CPU backend, we recommend building ICICLE using Clang.
• Why Clang? It provides better performance optimizations compared to other compilers.
• Automatic Detection: Simply ensure Clang is installed on your system. ICICLE will automatically detect and use it during the build process.
No additional configuration is required—just install Clang, and you’re ready to go!
Important Notice for Upgraders
If you are upgrading from a previous version:
Ensure that you update both the frontend and backend Icicle libraries. Failing to update both can result in missing symbols and unexpected crashes due to incompatibilities between versions.
Typical Installation Paths:
• Backend Libraries: Usually installed in /opt/icicle.
• Frontend Libraries: Typically located in /usr/local/lib or a similar system directory based on your setup.
Upgrade Instructions:
1. Uninstall the previous version completely to avoid any residual files.
2. Install the new version of both frontend and backend libraries.
Updating both components ensures compatibility and stability across all Icicle features in the latest release.
What's Changed
- naming alignemnt for default_input_chunk_size by @mickeyasa in #646
- updated banner to show 3.1 by @Otsar-Raikou in #648
- Dev docs banner update 3.1 by @Otsar-Raikou in #649
- Golang poseidon docs by @jeremyfelder in #644
- verify and assert correct t-parameter for Poseidon hasher by @yshekel in #652
- Update docs for v3.1 by @LeonHibnik in #650
- support column batch for polynomial division CPU backend by @ShanieWinitz in #645
- Support padding for the leaves of the merkle tree by @mickeyasa in #647
- moving poseidon constants to icicle/hash/poseidon_constants by @mickeyasa in #658
- [Docs]: Update docusaurus to latest and add versioned docs by @jeremyfelder in #661
- updates for metal backend by @yshekel in #654
- Program-support by @mickeyasa in #664
- default to clang for faster CPU performance by @yshekel in #666
- Replace random function to make CI reproducible by @Koren-Brand in #665
- Emir/host arithmetic by @emirsoyturk in #669
- Compute non-large NTTs in CPU backend without parallelism by @ShanieWinitz in #671
- Replace rand() with rand_uint_32b() for reproducibility by @Koren-Brand in #674
- add a test to check cpu program executor by @mickeyasa in #675
- install clang in release dockers by @yshekel in #676
- feat: Poseidon2 hash function by @danny-shterman in #673
- Test Merkle-tree padding for all device by @yshekel in #668
Full Changelog: v3.1.0...v3.2.0