Releases: ingonyama-zk/icicle
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
Release v2.8.0
What's Changed
- Field creation automated through macros by @DmytroTym in #551
- Feat/roman/tree builder by @ChickenLover in #525
- add keccak tree builder by @ChickenLover in #555
- Feat/roman/hash docs by @ChickenLover in #556
Full Changelog: v2.7.1...v2.8.0
Release v2.7.1
What's Changed
- Fix affine to projective zero point bug by @vladfdp in #552
- Fix large (>512 elements) ecntt issue by @yshekel in #553
Full Changelog: v2.7.0...v2.7.1
Release v2.7.0
What's Changed
- bug fix by @HadarIngonyama in #549
- RISC0 example using Polynomial API by @svpolonsky in #548
- Feat/m31 by @nonam3e in #547
Full Changelog: v2.6.0...v2.7.0
Release v2.6.0
What's Changed
Features
- [FEAT]: Golang Bindings for pinned host memory by @jeremyfelder in #519
Docs
- Added v2 paper by @Otsar-Raikou in #544
- Msm/update docs by @HadarIngonyama in #545
Full Changelog: v2.5.0...v2.6.0
Release v2.5.0
What's Changed
- workflow curve fix by @yshekel in #536
- accumulate stwo by @vhnatyk in #535
- chore: remove repeat word by @cangqiaoyuzhuo in #540
- recreated images for poseidon.md by @Otsar-Raikou in #541
- Fix link and correct path for running test deploy workflow by @jeremyfelder in #542
- MSM - supporting all window sizes by @HadarIngonyama in #534
New Contributors
- @cangqiaoyuzhuo made their first contribution in #540
Full Changelog: v2.4.0...v2.5.0
Release v2.4.0
What's Changed
- precompute bug fix by @HadarIngonyama in #529
- bit reverse by @nonam3e in #528
- added example cpp: example_commit_with_device_memory_view() by @krakhit in #532
- perf: projective scalar multiplication use dbl() rather than + by @yshekel in #530
New Contributors
Full Changelog: v2.3.1...v2.4.0
Release v2.3.1
What's Changed
- Allow overriding compiler's chosen GPU arch via cmake by @liuhao230 in #518
- bug fix regarding cmake set_gpu_env() by @yshekel in #520
- [HOTFIX] rust msm benchmarks by @LeonHibnik in #521
- fix: ntt mixed-radix bug regarding large ntts by @yshekel in #523
New Contributors
- @liuhao230 made their first contribution in #518
Full Changelog: v2.3.0...v2.3.1