What's Changed
- DRAFT: Implementation of FRI and WHIR in sagemath by @yswami-tfh in #2
- Add Brillig support by @benjaminwilson in #4
- Spartan + WHIR as PCS by @veljkovranic in #3
- continued support for noir -> r1cs by @dolores-park in #1
- Refactor end-to-end prover. by @recmo in #7
- Refactor overhaul to simplify architecture by @recmo in #10
- Measuring allocator and span statistics by @recmo in #11
- Add secp256r1 signature verification example by @recmo in #12
- Add serde by @recmo in #13
- Improve witness generation by @recmo in #14
- Add Interning of field elements. by @recmo in #15
- Optimizations by @recmo in #16
- Optimize Merkle Tree by @recmo in #17
- reorder CI for a faster feedback loop + minor fixes by @Dzejkop in #21
- Calculate from transcript by @batmendbar in #20
- Blackbox range function (WIP) by @vishady721 in #18
- [WIP] Noir passport program + "native" Noir SHA-256 impl by @RyanCao7 in #22
- Adds gnark input generation by @batmendbar in #24
- fix: clippy lints by @xrvdg in #36
- Complex M31 field extension and NTT by @weijiekoh in #19
- Round towards Zero by @xrvdg in #28
- Support for more architectures and rounding modes. by @recmo in #38
- BN254 Block Multiplier (Rust Version) by @Quarky93 in #34
- High Level Assembler by @xrvdg in #26
- BN254 Montgomery Multipliers (Scalar, SIMD, Block) by @xrvdg in #27
- Block skyscrapper by @Quarky93 in #23
- Add Divan benchmarks by @recmo in #39
- Fix merkle hash bench by @recmo in #41
- fmt & enable fmt in CI by @Dzejkop in #40
- Skyscraper v2 by @recmo in #42
- Parallel PoW with SkyscraperV2 by @recmo in #43
- Use a generic implementation to avoid duplicated code. by @recmo in #44
- Add codspeed by @recmo in #45
- Benchmark prover by @recmo in #46
- Fix clippies by @recmo in #47
- Vishady/offline memory checking into main by @vishady721 in #50
- Explorations in Mersenne 31 by @recmo in #25
- Vishady/witness builder enum by @vishady721 in #52
- Add Project documentation by @recmo in #53
- Fix file paths in README after cd by @ClementWalter in #48
- Binops integrated by @benjaminwilson in #51
- Vishady/adding logup by @vishady721 in #93
- mixed base range check by @vishady721 in #94
- read write memory checking using spice by @vishady721 in #95
- Vishady/binops by @vishady721 in #96
- noir native sha256 impl + sha256 test by @vishady721 in #97
- Clippy, deps & stuff by @Dzejkop in #100
- Fixes file paths by @batmendbar in #99
- Fix integration tests by @Dzejkop in #102
- Bounded test generator for Montgomery multiplication by @xrvdg in #101
- reduce_1: extend domain to full 2**256 by @xrvdg in #109
- Fix CI pipeline by @Dzejkop in #107
- CI contd. by @Dzejkop in #111
- Optimised Montgomery squaring by @xrvdg in #108
- Fix issue tracker & lock Rust version by @Dzejkop in #119
- Adds gnark-whir recursive verifier by @batmendbar in #110
- Reductionless block multipliers by @xrvdg in #116
- Document domain and range of Montgomery multiplication algorithms by @xrvdg in #118
- Add end to end CI by @batmendbar in #121
- Execute the program to generate the witness by @Dzejkop in #122
- Build on GH runners for RP5 benchmarks by @Dzejkop in #123
- Bump CodSpeed to v3 by @adriencaccia in #128
- Noir complete passport program by @RyanCao7 in #115
- Move up whir version with gnark by @batmendbar in #130
- gnark-whir: Dump CCS to file, read PK/VK from file, update Gnark to v0.13 by @wzmuda in #129
- Spark Progress by @batmendbar in #136
- Replace mock transcript with domain-separated witness RNG by @ashpect in #139
- Remove SPARK and add back direct matrix evaluation by @batmendbar in #141
- fix: uncomment compiler tests by @veljkovranic in #144
- Add ZK to WHIR and Spartan by @veljkovranic in #138
- Use zk-whir variant instead of the leaky one by @veljkovranic in #132
- Fix: Update
noir-r1cswith Skyscraper v2 by @shreyas-londhe in #142 - feat: Refactor by @Bisht13 in #153
- dockerize and server integration for gnark-whir by @ashpect in #154
- feat: revise README for command updates and benchmarks by @Bisht13 in #171
- fix gnark-verifier-ci-bug by @ashpect in #175
- Add more profiling tools by @piohei in #134
- Upgrade passport circuits to latest Noir version by @0xVikasRushi in #172
- Reduce allocations in
solve_witness_vecby @xrvdg in #176 - chore: bump noir version in README and workflow by @Bisht13 in #181
- feat: Parallelise
generate_random_multilinear_polynomialby @Bisht13 in #182 - chore: comment out noisy range check log by @veljkovranic in #183
- perf(common): Parallelize polynomial generation via spare_capacity by @Bisht13 in #186
- E2E: complete age check by @cichaczem in #180
- Passport Reader by @0xVikasRushi in #178
- chore: update whir dependency revision in Cargo.toml by @Bisht13 in #192
- Noir Passport Verifier Circuits by @0xVikasRushi in #189
- Fix: Recursive Verification by @shreyas-londhe in #185
- feat: Add Verifier Server by @Bisht13 in #173
- feat(span-stats): include current memory in span start/close output by @Bisht13 in #197
- Memory access optimised NTT for BN254 by @xrvdg in #174
- fix: automate bench files creation by @ashpect in #200
- Noir Passport Circuits Optimization by @0xVikasRushi in #194
- RecursiveVerifier Improvements by @ashpect in #206
- feat: Implement layered witness solving with batch inversion optimization by @shreyas-londhe in #196
- Feat: Add BlackBox::Sha256Compression by @shreyas-londhe in #203
- NTT Engine by @xrvdg in #202
- NTT over interleaved polynomials by @xrvdg in #204
- feat: Split
NPSintoProverandVerifierby @Bisht13 in #210 - Fix logging, tracing and tracy by @recmo in #217
- OPRF Noir implementation by @0xVikasRushi in #209
- Ignore bin_ops, range checks constraints unless necessary by @rose2221 in #223
- refactor: Remove
Optionfrom structs by @Bisht13 in #220 - Fix: Remove manual witness allocation in SHA256 compression by @shreyas-londhe in #227
- Temporarily fix Spongefish version by @veljkovranic in #239
- feat: poseidon2 blackbox impl in Noir by @rose2221 in #213
- fix: circuit_keys ci by @ashpect in #242
- Feat: Witness splitting for sound challenge generation for LogUp/Spice by @shreyas-londhe in #240
- Skyscraper WASM by @xrvdg in #248
- fix(r1cs-compiler): Remove Duplicate Witness Builders for poseidon2 by @Bisht13 in #249
- Modular NTT in WHIR v1b by @xrvdg in #235
- refactor(cli): enhance circuit_stats with exact R1CS breakdown tracking by @Bisht13 in #225
- chore : remove keys dependency from ci by @ashpect in #255
- fix for non-contiguous initial value witnesses in SpiceWitness by @yash25198 in #254
- SHA-256: Initial constraint optimizations by @rose2221 in #247
- pub_inputs support by @ashpect in #215
- fix e2e native verification by @ashpect in #256
- feat: single-constraint combined binop lookup table entries. by @rose2221 in #270
- feat: implement fragmented zkpassport age verification by @x-senpai-x in #262
- batched bn254 51 bits RNE multiplier by @xrvdg in #259
- feat: dynamic base width optimization for range checks by @rose2221 in #271
- feat: reduce artifact size (pkp/pkv) by @ashpect in #273
- mono bn254 51-bit SIMD FMA multiplier by @xrvdg in #269
- feat(ffi): add provekit-ffi by @Bisht13 in #198
- implemented geometric_till in gnark and some small optimizations by @x-senpai-x in #274
- bugfix: sanity_check in witness_split in prepare step by @ashpect in #279
- Switch range check cost model from constraints to witness count by @rose2221 in #281
- Refactor passport implementation by @x-senpai-x in #282
- Witness Optimizations for SHA256: Dynamic AND/XOR Bit-Width + Spread-Based Binops by @rose2221 in #284
- Port to whir PR #215 + PR #217 with SHA-256 by @Bisht13 in #288
- Update to WHIR PR217 by @xrvdg in #293
- Dynamic spread table width + Ch algebraic optimization by @rose2221 in #295
- feat: add
show-inputsCLI command by @ashpect in #290 - Reduce proving memory by @Bisht13 in #294
- feat: port provekit to zkWHIR 2.0 by @Bisht13 in #296
- feat: embed blinding polynomial G in w1 zero-padding by @Bisht13 in #305
- Optimizations: ROM Fusion, Spread Multiset Fusion & Constant Spread Path by @rose2221 in #297
- Port to whir b3c86d7 with sound parameters by @Bisht13 in #307
- fix: assert num_entries <= full_size [LA - J] by @ashpect in #376
- fix: binop width selection to preserve byte semantics [LA-D] by @rose2221 in #373
- fix DSC Key Smuggling via Unsigned TBS Data [LA-A] by @x-senpai-x in #368
- fix: canonicalize duplicate witness terms in R1CS constraints [LA - C] by @Bisht13 in #352
- Fix : Unbound LogUp Transcript Challenges Let the Prover Choose Lookup Randomness [LA-G] by @ocdbytes in #361
- fix: bind evals to transcript [LA - K] by @ashpect in #364
- fix: R1CS binding in transcript [LA - I] by @ashpect in #363
- fix: enforce end-of-transcript validation in WhirR1CS verifier [LA - F] by @Bisht13 in #355
- Fix : Unchecked Witness-Derived Indices Cause Deterministic Prover Panics in RAM and Multiplicity Builders [LA-H] by @ocdbytes in #358
- fix: public inputs binding to transcript [LA - B] by @ashpect in #360
- Reject malformed 32-bit constants in AND/XOR and SHA256 compilation [LA_Suggestion3] by @rose2221 in #375
- fix: bind RSA public exponent to fixed values [LA-E] by @x-senpai-x in #366
- fix: update v1 by @ashpect in #385
- fix: vendor noir-date after upstream repo deleted by @Bisht13 in #387
- fix: provekitffi v2.0 on v1 by @ashpect in #388
- fix: split prove function for ffi by @ashpect in #393
- fix: adapt to whir API changes by @rose2221 in #396
- Bump TBS size to 1850, consolidate circuits, and clean up passport-input-gen by @rose2221 in #399
- test fix for exponents by @x-senpai-x in #405
- fix: address LA Suggestion 3 review on v1 by @rose2221 in #406
- Publish workspace crates to crates.io by @Bisht13 in #404
- feat(cli): add compile subcommand and rename circuit-stats by @Bisht13 in #422
- feat(cli): unify prepare/prove/verify with zero-arg defaults by @Bisht13 in #423
- docs(readme): overhaul README for v1 branch by @wryonik in #421
- chore(release): bump workspace crates to 1.0.0 by @Bisht13 in #436
New Contributors
- @yswami-tfh made their first contribution in #2
- @benjaminwilson made their first contribution in #4
- @dolores-park made their first contribution in #1
- @Dzejkop made their first contribution in #21
- @vishady721 made their first contribution in #18
- @RyanCao7 made their first contribution in #22
- @weijiekoh made their first contribution in #19
- @Quarky93 made their first contribution in #34
- @ClementWalter made their first contribution in #48
- @adriencaccia made their first contribution in #128
- @wzmuda made their first contribution in #129
- @shreyas-londhe made their first contribution in #142
- @0xVikasRushi made their first contribution in #172
- @cichaczem made their first contribution in #180
Full Changelog: https://github.com/worldfnd/provekit/commits/v1.0.0