Skip to content

Changelog

Tagged releases live on GitHub Releases — that’s the authoritative record of what’s in each version. This page summarizes themes alongside the release notes, plus the rolling work on main between tags. For the exhaustive log, use the GitHub commit history.

The first tagged release of ProveKit. Crates published to crates.io: provekit-cli, provekit-common, provekit-prover, provekit-verifier, provekit-r1cs-compiler, provekit-gnark, provekit-ffi, provekit-wasm.

See the v1.0.0 release notes for the full change list.

  • CLI subcommand renamed. circuit_statscircuit-stats. Update scripts and CI jobs.
  • Hash configuration is stored on WhirR1CSScheme. Process-global hash drift is no longer possible; consumers reading scheme types directly should fetch the hash from the scheme instead of process state.
  • Digest hashers unified, V1 domain separation tag added. Proof hashing is now consistent across paths.
  • Zero-arg defaults for prepare / prove / verify. Each command runs from the enclosing Noir package without explicit paths, with full --pkp / --pkv / --prover / --verifier / --input / --out overrides still available.
  • Improved CSP benchmark scripts to match the new prove / verify flags.
  • Poseidon2 hot path: inlined permutation helpers, squaring S-box, zero-allocation byte/field conversion, in-place API.
  • Native Keccak benchmarks rebalanced for lower witness count.
  • NTT picked up an explicit roots method, b51-mode NTT enabled in WASM, and a canonicalized comparison test.
  • Poseidon2 hash config is now selectable via --hash poseidon2 alongside Skyscraper, SHA-256, Keccak, and Blake3.
  • Public-input hashing is aligned with the chosen HashConfig. Mixing public-input encoding across hash choices was previously possible and is now prevented.
  • Process-global hash drift eliminated. Hash configuration is stored on the scheme.
  • Ethproofs CSP benchmark suite added under noir-examples/csp-benchmarks/. Targets: SHA-256 (128–2048 bytes), Keccak-256 (128–2048 bytes), Poseidon (states 2–16), Poseidon2 (states 2–16), and ECDSA over secp256r1.
  • Sticky CSP PR comment in CI reports constraints, witnesses, and deltas vs. the main baseline.
  • Noir blackbox hash paths are preferred where ProveKit lowers them efficiently. The CSP suite documents where native Noir paths win instead.
  • Verifier-visible public input equalities are preserved by Noir prepare.
  • Restructured docs site (Astro Starlight) with a Diátaxis-aligned IA: Start here / Build and integrate / Concepts / Reference / Operations.
  • Added: What is ProveKit? explainer, Tutorial (private-knowledge proof), Designing circuits for ProveKit (ProveKit-specific circuit mechanics), Performance, Comparison, FAQ, Examples catalog, FFI error codes, Starter templates, Changelog.
  • Re-routed the wasm-demo through Verity without changing the ProveKit UX surface.
  • Raised the SHA-256 demo circuit workload to better exercise the in-browser path.

These are tracked, not yet shipped:

  • Tagged releases and SemVer guarantees.
  • Public audit certification.
  • Native (non-Groth16) recursive verification.
  • Hosted rustdoc and generated C-header reference linked from the docs.
  • Release binaries for provekit-cli.
  • An official starter-app repository (see Starter templates for the assembly recipe meanwhile).
BranchPurposeCompatibility
v1Current stable interface.Treat as the reproducibility target.
mainActive development.Formats and APIs may change between commits.

See Project status and versioning for the full policy.

Per-release content comes from GitHub Releases. The “Unreleased” section above is curated from substantive commits on main between tags. It is not a complete log; every change is in Git, but most don’t belong in a user-facing changelog. The selection criterion: would a user who upgraded benefit from knowing this?

If you spot a missing change that affects users, open an issue or PR against docs/src/content/docs/reference/changelog.mdx.