What's Changed
- fix: KZG proof verification for edge cases by @ivokub in #1567
- fix: add G1 membership for ML and FE in bls precompile by @ivokub in #1591
- feat: correct curve names in error messages and vector type by @Vap0RSh4wN in #1587
- fix: bit/byte shift in random bound by @radik878 in #1590
- Fix logic mismatch in
newR1Cfor better Groth16 optimization by @tomasandroil in #1482 - perf(bls12-381/map-to-g1): use triple in mul by seed by @yelhousni in #1604
- feat: pointeval precompile circuit for failing inputs by @ivokub in #1572
- feat: implement BLS signature verification (minimal public key) by @ivokub in #1473
- chore: collect small contributions for next release v0.15 by @ivokub in #1606
- fix: use the little-endian representation for serialized values in KZG Pointeval precompile by @ivokub in #1614
- chore: use standard lib testing environment detection by @ivokub in #1631
- feat: allow taking benchmarking instance in NewAssert by @ivokub in #1607
- feat: add Grumpkin elliptic curve (native 2-cycle with BN254) by @yelhousni in #1409
- chore: small cleanup in pairings by @ivokub in #1621
- feat: add BLS12-377, BLS12-381 and BW6-761 GPU acceleration support for Groth16 by @ivokub in #1625
- build(deps): bump github.com/consensys/gnark-crypto from 0.19.0 to 0.19.1 in the go_modules group across 1 directory by @dependabot[bot] in #1636
- refactor: PLONK commitment input and output registration by @ivokub in #1642
- Feat/recursive groth16 conditional check by @ivokub in #1647
- test: refactor crumb test to standard path by @ivokub in #1648
- fix: handle OR call for constant inputs by @ivokub in #1592
- fix: avoid MulAcc overwriting constants by @ivokub in #1632
- chore: use self hosted runners by @waskow-consensys in #1633
- chore: regenerate tinyfield by @ivokub in #1602
- test: handle gnark-crypto not returning malleable signatures anymore by @ivokub in #1601
- build(deps): bump golang.org/x/crypto from 0.41.0 to 0.45.0 in the go_modules group across 1 directory by @dependabot[bot] in #1652
- feat: EIP-7951 for ECDSA on P-256 curve by @yelhousni in #1649
- perf: use generic hint mechanism for bls12-381 map to G1/G2 hints by @ivokub in #1653
- feat: add example for printing constraints by @hawkadrian in #1643
- perf(sw/emulated): use
fakeGLVand removescalarMulGenericby @yelhousni in #1654 - perf: save 1 inverse in P256Verify circuit by @yelhousni in #1656
- doc: added zkBTC to gnark known users by @weijiguo in #1658
- ci: enable security code scanner by @witmicko in #1655
- refactor: support dynamic emulation parameters for ecrec by @ivokub in #1660
- build: updated to latest gnark crypto api change (code gen) by @gbotrel in #1668
- feat: Enable multiple GKR sub-circuits by @Tabaie in #1661
- perf: deduplicate commitment copy constraints in PLONK by @ivokub in #1670
- test: add small field test in checkcircuit by @ivokub in #1671
- feat: add internal Koalabear E4 extension for field emulation and logderivative argument by @ivokub in #1672
- feat: implement log-derivative argument over small fields by @ivokub in #1673
- Feat: GKR-Hashers by @Tabaie in #1512
- [Feat] - Add dynamic chain config to template by @thedarkjester in #1663
- ICICLE: MSM chunking, safety on proof generation and GPU memory reduction by @p4u in #1665
- fix: handle uints8 Long addition even in small field by @ivokub in #1674
- feat: better emulation for small fields in large fields by @gbotrel in #1682
- perf: optimize rangecheck recomposition for PlonK backend by @gbotrel in #1683
- Ignore Claude Code settings by @Tabaie in #1675
- fix: EdDSA strict equality check for s by @ivokub in #1684
- feat: clean up interface assertions in circuits by @ivokub in #1685
- feat: Compiled Gates for GKR by @Tabaie in #1676
- perf: improve compile time by 20% by @gbotrel in #1686
- feat: emulated arithmetic bound optimization by @ivokub in #1688
- feat: add PointEval precompiles for 16-bit limbs by @ivokub in #1689
- small fixes v15 by @ivokub in #1646
- perf: optimize scs constraints for bls12377 poseidon2 permutation by @gbotrel in #1690
- feat: add new api to profile package to capture virtual constraints by @gbotrel in #1696
- feat: Test engine to store elements in Montgomery format by @Tabaie in #1695
- perf: use known base length for small field emulation by @ivokub in #1693
- perf: optimize smallmul zero check by @ivokub in #1694
- perf: optimize range checks for small number of small field ops by @ivokub in #1699
- perf: windowed-4 ModExp precompile by @yelhousni in #1700
- refactor: remove bls24-315, bls24-317, and bw6-633 by @gbotrel in #1708
- chore: update CI workflows to go 1.25 by @gbotrel in #1710
- Perf(native/BLS12-377): Torus optimal ate pairing check by @yelhousni in #1702
- docs: update README.md by @gbotrel in #1712
- fix: fix cursor bot comments by @gbotrel in #1713
- chore: add dependabot configuration for GitHub Actions updates by @eloi010 in #1714
- Refactor/gkr/blueprints by @Tabaie in #1691
- Feat/solidity verifier bls12381 by @ThomasPiellard in #1554
- perf: optimize emulated multi-miller loops via sparse×sparse line multiplications for 0-bits by @yelhousni in #1701
- perf(plonk): reduce LRO commitment MSM size via s0-padding identity by @gbotrel in #1716
- perf(Mux): shared selector decomposition and ±Y symmetry optimization in emulated MSM by @yelhousni in #1704
- fix: register gates in GKR Poseidon by @ivokub in #1719
- perf: optimize LogUp for constant single-column tables (range checks) by @yelhousni in #1717
- perf: optimize emulated
ToBitsandToBitsCanonicalby @yelhousni in #1707 - Eliminate the Gate Registry by @Tabaie in #1718
- perf: emulated Eval support negative coefficients by @ivokub in #1727
- chore: golangcilint update by @ivokub in #1726
- fix: non-native constant ops fast paths by @ivokub in #1730
- perf: solver optimizations by @ivokub in #1728
- feat: add grumpkin curve support by @yelhousni in #1729
- fix: DivUnchecked consistency by @ivokub in #1734
- fix: BLS12-381 Solidity contract init and proof marshaling by @ivokub in #1732
- fix: emulated package tests failing with 1 constraint with PLONK backend by @ivokub in #1733
- perf: GKR Levels by @Tabaie in #1735
- fix: initialize in-circuit KZG SRS at compile time by @ivokub in #1738
- feat: allow replacing hints in test engine by @ivokub in #1737
- fix: add proof commitment length check for better error messages by @ivokub in #1739
- feat(poseidon2): support BN254 widths t=4,8,12,16; fix matMulExternal indexing by @beeinger in #1743
- perf: Factor Eq in ZeroCheck when possible by @Tabaie in #1742
- Three pairing bug by @shramee in #1753
- fix: plonk commitment input deduplicate effective constants by @ivokub in #1754
- deps(actions)(deps): bump gotesttools/gotestfmt-action from 2.2.0 to 2.3.0 in the third-party-actions-minor-patch group by @dependabot[bot] in #1756
- feat: make elliptic curve arithmetic complete by default and only fallback to incomplete path on request by @ivokub in #1751
- perf: optimize native Fp2 mul by @yelhousni in #1758
- fix, perf: complete the soundness fixes from #1751 for native and G2 + optimize AddUnified by @yelhousni in #1762
- perf: dedicated
Cubemethod in extension fields by @yelhousni in #1759 - perf: generalize sparse solver optimizations by @gbotrel in #1761
- chore: pin GitHub Actions to commit SHAs by @BGos87 in #1766
- release: gnark v0.15.0 by @ivokub in #1731
New Contributors
- @Vap0RSh4wN made their first contribution in #1587
- @radik878 made their first contribution in #1590
- @tomasandroil made their first contribution in #1482
- @waskow-consensys made their first contribution in #1633
- @hawkadrian made their first contribution in #1643
- @witmicko made their first contribution in #1655
- @eloi010 made their first contribution in #1714
- @BGos87 made their first contribution in #1766
Full Changelog: v0.14.0...v0.15.0