Releases: ingonyama-zk/icicle
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
v3.1.0
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 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
- links and typos by @Otsar-Raikou in #603
- Fixed image NEW by @Otsar-Raikou in #606
- Update workflows by @jeremyfelder in #607
- Release for cuda archs 75,80,86 for better compatability by @yshekel in #609
- Hashing and merkle tree API by @yshekel in #608
- refined merkle proof and merkle tree C++ APIs by @yshekel in #613
- [CI] Fix device race in golang tests by @jeremyfelder in #612
- Rust wrappers for hash and merkle API by @yshekel in #614
- Arkworks conversion example by @yshekel in #619
- Keccak CPU backend by @yshekel in #622
- Blake2s API for V3 by @emirsoyturk in #621
- example and docs for hash API by @yshekel in #624
- Batched ec additions msm by @Koren-Brand in #615
- Miki/MTnewAPI by @mickeyasa in #620
- Swinitz/improved ntt by @ShanieWinitz in #629
- example and documentation for Merkle-tree API by @yshekel in #628
- Update host_math.h to use 64b for add/sub on CPU by @yshekel in #632
- Add golang bindings for hash + merkle tree APIs by @jeremyfelder in #631
- perf: window-method for EC scalar multiplication by @yshekel in #633
- Hash-test-size-fix by @mickeyasa in #634
- Koren/msm not enough tasks bugfix by @Koren-Brand in #635
- fix: Use 64-bit index iterator to prevent overflow in CPU Merkle tree by @mickeyasa in #636
- Danny poseidon v3.1 by @danny-shterman in #630
- test poseidon hasher on multiple devices by @yshekel in #641
- add tests for device merkle tree by @ChickenLover in #637
- Add some documentation on poseidon by @danny-shterman in #640
- Hadar/vecops by @HadarIngonyama in #639
- Add Poseidon bindings for golang by @jeremyfelder in #643
New Contributors
- @danny-shterman made their first contribution in #630
Full Changelog: v3.0.0...v3.1.0
v3.0.0
This version introduces a completely new design for ICICLE. We've developed a front-end user API that is backend-agnostic, supporting various hardware configurations. Additionally, we've added CPU support for MSM and NTT, with the CPU backend now set as the default. This allows developers to compile and run ICICLE seamlessly on Apple Mac and Linux machines as well.
What's Changed
- ICICLE V3 by @yshekel in #526
- Marketing dev docs review by @Otsar-Raikou in #602
- NTT simple cpu backend by @ShanieWinitz in #533
- Add tasks manager classes to ease multithreading for cpu by @Koren-Brand in #573
- implement multithread CPU vec ops by @mickeyasa in #577
- make features (G2,ecntt) default on by @yshekel in #583
- use ccache if available by @yshekel in #585
- Remove V2 files and rename V3 files by @yshekel in #586
- use 64b type for add/mul of field elements on CPU by @HadarIngonyama in #588
- Add Mersenne to v3 by @emirsoyturk and @nonam3e in #579
- v3 msm by @Koren-Brand in #581
- mv icicle m31 by @nonam3e, @ChickenLover, @jeremyfelder in #590
- Release script and install docs by @yshekel in #589
- fix api by @nonam3e in #592
- update MSM config struct field for shared bases by @HadarIngonyama in #562
- add rust test for batch-msm shared and non-shared points cases by @nonam3e in #587
- Fix typo for license error and updated docs by @yshekel in #593
- getting started edits by @Otsar-Raikou in #595
- Update README by @yshekel in #596
- Edit on README by @Otsar-Raikou, @yshekel and @jeremyfelder in #599
- edit intro doc by @Otsar-Raikou in #601
- parallel ntt on cpu by @ShanieWinitz in #591
- Rename extension field to complex and quatric extension by @ChickenLover in #598
- V3 golang bindings by @nonam3e, @jeremyfelder and @yshekel in #594
Next Up
- Hash and Merkle tree API, CPU support
- Additional Backend devices support
Full Changelog: v2.8.0...v3.0.0