Skip to content

Refactor/codec back to spongefish#2

Closed
ricardo-perello wants to merge 37 commits into
mainfrom
refactor/codec-back-to-spongefish
Closed

Refactor/codec back to spongefish#2
ricardo-perello wants to merge 37 commits into
mainfrom
refactor/codec-back-to-spongefish

Conversation

@ricardo-perello

Copy link
Copy Markdown
Owner

Summary

Reverses the codec inversion that shipped in PR #1 of this fork. After this change, codec traits live in spongefish (where they belong), and the DSFS compiler bridging spongefish transcripts with the Argus ia-core IA/NIA traits lives in a new sibling crate spongefish-dsfs.

Why

PR #1 moved DSFS into core spongefish and, to break the resulting dependency cycle, moved codec traits (Encoding, Decoding, NargSerialize, NargDeserialize) into Argus ia-core. This left spongefish with a backwards dep on ia-core purely to import codec types it should own.

The fix is the dependency direction the project actually wants:

spongefish (core)         ── no Argus dep
ia-core (Argus)           ──▶ spongefish core   (re-exports codec traits)
spongefish-dsfs           ──▶ spongefish core
                          ──▶ ia-core           (for IA/IR/NIA/NIR traits)

What changes

New crate: spongefish-dsfs

Added as the 5th workspace member. Contains the moved dsfs::* module from spongefish/src/dsfs/:

  • compile.rsDsfs<IA, S, H, SALT_LEN> and DsfsReduction<IR, S, H, SALT_LEN> wrappers implementing NonInteractiveArgument / NonInteractiveReduction.
  • channel.rsSpongeProver, SpongeVerifier, TranscriptSponge.
  • params.rs — DSFS-specific SpongeParams, SpongeInfo, STD_SPONGE_PARAMS, STD_HASH_SPONGE_PARAMS. Keccak and StdHash are re-aliased from spongefish::instantiations::*.
  • narg_security.rsNargSecurity, security_for_*, reduction_security_for_*.

Codec traits + foreign-type impls returned to spongefish

  • Encoding, Decoding, Codec, ByteArray in spongefish/src/codecs.rs.
  • NargSerialize, NargDeserialize in spongefish/src/io.rs.
  • Deserialize in new spongefish/src/deserialize.rs.
  • VerificationError, VerificationResult in spongefish/src/error.rs.
  • Foreign-type codec impls (ark_ff field extensions, ark_ec curves, bls12_381, curve25519-dalek, p256, k256, p3 fields) merged into spongefish/src/drivers/<type>.rs alongside the existing Unit impls. SmallFp codec impls added on top of the existing SmallFp Unit impl from chore(deps): update actions/deploy-pages action to v5 arkworks-rs/spongefish#126.

pub(crate) flip on the free-fn surface

The 16 free fns (prove, verify, prove_with_salt, …, verify_reduction_with_sponge_and_salt) are now either pub(crate) (4 internal helpers used by the wrappers) or deleted (13 dead variants). The Dsfs::new(...).prove(...) / DsfsReduction::new(...).prove(...) wrappers are the only public DSFS surface.

Dsfs<IA, S, H = Keccak, const SALT_LEN: usize = 0> already covers every variant the deleted free fns expressed:

// custom salt length
Dsfs::<_, _, _, 16>::new(ia, Keccak::default())

// custom sponge
Dsfs::<_, _, StdHash, 0>::new(ia, StdHash::default())

Workspace plumbing

  • [patch.crates-io] spongefish = { path = "spongefish" } added so transitive deps (ia-core reached through spongefish-dsfs) see the local copy instead of any stale crates.io publish.
  • spongefish/Cargo.toml drops ia-core.workspace = true and the 9 "ia-core/<feat>" chain entries in [features]. Foreign-type features now gate spongefish's own dep: entries directly.

What does NOT change

  • Transcript discipline: public inputs absorbed before first challenge, prover messages absorbed before next challenge, deterministic verifier replay, EOF check.
  • DomainSeparator::derive derivation (length-prefixed SHA-512 over (protocol_id, sponge_info, session)).
  • Sponge choices (Keccak and StdHash). TranscriptSponge impl for StdHash continues to use std_prover/std_verifier for byte-compat with σ-proofs Nizk.

Verification

cd ~/Developer/spongefish
cargo build --workspace --all-features
cargo test  --workspace --all-features      # all pass
cargo build -p spongefish --no-default-features
cargo tree  -p spongefish --invert -e normal | grep -c ia-core   # → 0

Local: all spongefish workspace tests pass. ia-core (in Argus) builds and tests pass against this branch via the path-dep override.

Coordination

This is one half of a coordinated refactor. The Argus-side companion lives at:

  • ricardo-perello/argus:refactor/spongefish-dsfs-callsites — ia-core re-exports codec traits from spongefish; protocol crates pick up the spongefish-dsfs dep; call sites swept onto the wrapper.

The Argus PR depends on this one — merge spongefish-side first.

Base / stacking

Branched off dsfs/domain-separator-derive (PR arkworks-rs#114). Leaves that branch untouched. Carries 2 commits:

  1. f201a55 refactor: extract DSFS into spongefish-dsfs sibling crate; codecs return to spongefish
  2. 74fee6b refactor(dsfs): flip free fns to pub(crate); delete dead variants

Follow-ups (out of scope for this PR)

A couple of things you might want to tweak before posting:

  • The "Coordination" section assumes the Argus PR is on ricardo-perello/argus; adjust if the canonical target is different.
  • If you decide to split PR 1 (codec move) and PR 3 (pub(crate) flip) into separate PRs, just drop the "Pub(crate) flip" section and the 74fee6b commit reference.

mmaker and others added 30 commits April 14, 2026 16:31
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [blake2](https://redirect.github.com/RustCrypto/hashes) |
workspace.dependencies | patch | `0.11.0-rc.5` → `0.11.0-rc.6` |

---

### Release Notes

<details>
<summary>RustCrypto/hashes (blake2)</summary>

###
[`v0.11.0-rc.6`](https://redirect.github.com/RustCrypto/hashes/compare/blake2-v0.11.0-rc.5...blake2-v0.11.0-rc.6)

[Compare
Source](https://redirect.github.com/RustCrypto/hashes/compare/blake2-v0.11.0-rc.5...blake2-v0.11.0-rc.6)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/arkworks-rs/spongefish).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjAuMiIsInVwZGF0ZWRJblZlciI6IjQzLjEyMC4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [pallas](https://redirect.github.com/txpipe/pallas) |
workspace.dependencies | minor | `^0.32` → `^0.35.0` |

---

### Release Notes

<details>
<summary>txpipe/pallas (pallas)</summary>

###
[`v0.35.0`](https://redirect.github.com/txpipe/pallas/releases/tag/v0.35.0)

[Compare
Source](https://redirect.github.com/txpipe/pallas/compare/v0.34.0...v0.35.0)

##### Backport

- **network:** incomplete CBOR support for DMQ local submission
rejection
([#&#8203;727](https://redirect.github.com/txpipe/pallas/issues/727))

##### Contributors

[@&#8203;jpraynaud](https://redirect.github.com/jpraynaud)

###
[`v0.34.0`](https://redirect.github.com/txpipe/pallas/releases/tag/v0.34.0)

[Compare
Source](https://redirect.github.com/txpipe/pallas/compare/v0.33.0...v0.34.0)

##### Features

- **network:** add more data type derives required by downstream libs
([#&#8203;715](https://redirect.github.com/txpipe/pallas/issues/715))
- **network:** add data type derives required by downstream libs
([#&#8203;714](https://redirect.github.com/txpipe/pallas/issues/714))

##### Bug Fixes

- add missing PartialOrd and Ord for RedeemersKey
([#&#8203;676](https://redirect.github.com/txpipe/pallas/issues/676))
- encoding and decoding of NativeScript
([#&#8203;670](https://redirect.github.com/txpipe/pallas/issues/670))

##### Chore

- fix lints across the board
([#&#8203;720](https://redirect.github.com/txpipe/pallas/issues/720))
- **backport**: DMQ protocol
([#&#8203;717](https://redirect.github.com/txpipe/pallas/issues/717))
- fix duplicated entry in dev deps
- add n2n handshake version 14 to default options
([#&#8203;665](https://redirect.github.com/txpipe/pallas/issues/665))
- **backport:** PlutusData fixes and tests
([#&#8203;675](https://redirect.github.com/txpipe/pallas/issues/675))
- **backport:** partial and total order for 'Voter'
([#&#8203;674](https://redirect.github.com/txpipe/pallas/issues/674))

##### Contributors

[@&#8203;etorreborre](https://redirect.github.com/etorreborre)
[@&#8203;jpraynaud](https://redirect.github.com/jpraynaud)
[@&#8203;scarmuega](https://redirect.github.com/scarmuega)

###
[`v0.33.0`](https://redirect.github.com/txpipe/pallas/releases/tag/v0.33.0)

[Compare
Source](https://redirect.github.com/txpipe/pallas/compare/v0.32.1...v0.33.0)

##### Bug Fixes

- add missing PartialOrd and Ord for RedeemersKey
([#&#8203;676](https://redirect.github.com/txpipe/pallas/issues/676))
- encoding and decoding of NativeScript
([#&#8203;670](https://redirect.github.com/txpipe/pallas/issues/670))

##### Chore

- **backport:** PlutusData fixes and tests
([#&#8203;675](https://redirect.github.com/txpipe/pallas/issues/675))
- **backport:** partial and total order for 'Voter'
([#&#8203;674](https://redirect.github.com/txpipe/pallas/issues/674))

#### Contributors

[@&#8203;KtorZ](https://redirect.github.com/KtorZ)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/arkworks-rs/spongefish).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjMuOCIsInVwZGF0ZWRJblZlciI6IjQzLjEyMy44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
arkworks-rs#130)

On `main` there the file `spongefish/.cargo/config.toml` specifies a
flag to add KaTeX support to docs. This only applies when building from
the `spongefish` directory, and not from the workspace root. It
currently causes a test build failure when building from the
`spongefish` directory.

I looked into this a bit, to see if I could get the KaTeX HTML inserted
without causing issues, and to make the behavior when building from the
workspace consistent with building from the crate directory. I couldn't
find a good solution.

This PR removes the config file. On `docs.rs`, the KaTeX should still
render (see
https://docs.rs/spongefish/latest/spongefish/trait.NargDeserialize.html).
Getting it to render locally can do accomplished with the following
command.

```sh
RUSTDOCFLAGS="--html-in-header spongefish/doc/katex-header.html" cargo doc --no-deps --all-features
```
As with sigma-rs/sigma-proofs#170 this PR adds
the configuration to show required-feature badges on docs.rs.
## 🤖 New release

* `spongefish-derive`: 0.6.0 -> 0.6.1
* `spongefish`: 0.6.0 -> 0.6.1
* `spongefish-circuit`: 0.6.0 -> 0.6.1
* `spongefish-pow`: 0.6.0 -> 0.6.1

<details><summary><i><b>Changelog</b></i></summary><p>






</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [actions/checkout](https://redirect.github.com/actions/checkout) |
action | major | `v4` → `v6` |

---

### Release Notes

<details>
<summary>actions/checkout (actions/checkout)</summary>

###
[`v6.0.2`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v602)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v6.0.1...v6.0.2)

- Fix tag handling: preserve annotations and explicit fetch-tags by
[@&#8203;ericsciple](https://redirect.github.com/ericsciple) in
[#&#8203;2356](https://redirect.github.com/actions/checkout/pull/2356)

###
[`v6.0.1`](https://redirect.github.com/actions/checkout/compare/v6.0.0...v6.0.1)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v6...v6.0.1)

###
[`v6-beta`](https://redirect.github.com/actions/checkout/releases/tag/v6-beta)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v6...v6)

##### What's Changed

Updated persist-credentials to store the credentials under
`$RUNNER_TEMP` instead of directly in the local git config.

This requires a minimum Actions Runner version of
[v2.329.0](https://redirect.github.com/actions/runner/releases/tag/v2.329.0)
to access the persisted credentials for [Docker container
action](https://docs.github.com/en/actions/tutorials/use-containerized-services/create-a-docker-container-action)
scenarios.

###
[`v6.0.0`](https://redirect.github.com/actions/checkout/compare/v5.0.1...v6.0.0)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v6...v6)

### [`v6`]()

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v5.0.1...v6)

###
[`v5.0.1`](https://redirect.github.com/actions/checkout/releases/tag/v5.0.1)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v5...v5.0.1)

##### What's Changed

- Port v6 cleanup to v5 by
[@&#8203;ericsciple](https://redirect.github.com/ericsciple) in
[#&#8203;2301](https://redirect.github.com/actions/checkout/pull/2301)

**Full Changelog**:
<actions/checkout@v5...v5.0.1>

###
[`v5.0.0`](https://redirect.github.com/actions/checkout/releases/tag/v5.0.0)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v5...v5)

##### What's Changed

- Update actions checkout to use node 24 by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;2226](https://redirect.github.com/actions/checkout/pull/2226)
- Prepare v5.0.0 release by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;2238](https://redirect.github.com/actions/checkout/pull/2238)

##### ⚠️ Minimum Compatible Runner Version

**v2.327.1**\
[Release
Notes](https://redirect.github.com/actions/runner/releases/tag/v2.327.1)

Make sure your runner is updated to this version or newer to use this
release.

**Full Changelog**:
<actions/checkout@v4...v5.0.0>

### [`v5`]()

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.3.1...v5)

###
[`v4.3.1`](https://redirect.github.com/actions/checkout/releases/tag/v4.3.1)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.3.0...v4.3.1)

##### What's Changed

- Port v6 cleanup to v4 by
[@&#8203;ericsciple](https://redirect.github.com/ericsciple) in
[#&#8203;2305](https://redirect.github.com/actions/checkout/pull/2305)

**Full Changelog**:
<actions/checkout@v4...v4.3.1>

###
[`v4.3.0`](https://redirect.github.com/actions/checkout/releases/tag/v4.3.0)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.2.2...v4.3.0)

##### What's Changed

- docs: update README.md by
[@&#8203;motss](https://redirect.github.com/motss) in
[#&#8203;1971](https://redirect.github.com/actions/checkout/pull/1971)
- Add internal repos for checking out multiple repositories by
[@&#8203;mouismail](https://redirect.github.com/mouismail) in
[#&#8203;1977](https://redirect.github.com/actions/checkout/pull/1977)
- Documentation update - add recommended permissions to Readme by
[@&#8203;benwells](https://redirect.github.com/benwells) in
[#&#8203;2043](https://redirect.github.com/actions/checkout/pull/2043)
- Adjust positioning of user email note and permissions heading by
[@&#8203;joshmgross](https://redirect.github.com/joshmgross) in
[#&#8203;2044](https://redirect.github.com/actions/checkout/pull/2044)
- Update README.md by
[@&#8203;nebuk89](https://redirect.github.com/nebuk89) in
[#&#8203;2194](https://redirect.github.com/actions/checkout/pull/2194)
- Update CODEOWNERS for actions by
[@&#8203;TingluoHuang](https://redirect.github.com/TingluoHuang) in
[#&#8203;2224](https://redirect.github.com/actions/checkout/pull/2224)
- Update package dependencies by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;2236](https://redirect.github.com/actions/checkout/pull/2236)
- Prepare release v4.3.0 by
[@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) in
[#&#8203;2237](https://redirect.github.com/actions/checkout/pull/2237)

##### New Contributors

- [@&#8203;motss](https://redirect.github.com/motss) made their first
contribution in
[#&#8203;1971](https://redirect.github.com/actions/checkout/pull/1971)
- [@&#8203;mouismail](https://redirect.github.com/mouismail) made their
first contribution in
[#&#8203;1977](https://redirect.github.com/actions/checkout/pull/1977)
- [@&#8203;benwells](https://redirect.github.com/benwells) made their
first contribution in
[#&#8203;2043](https://redirect.github.com/actions/checkout/pull/2043)
- [@&#8203;nebuk89](https://redirect.github.com/nebuk89) made their
first contribution in
[#&#8203;2194](https://redirect.github.com/actions/checkout/pull/2194)
- [@&#8203;salmanmkc](https://redirect.github.com/salmanmkc) made their
first contribution in
[#&#8203;2236](https://redirect.github.com/actions/checkout/pull/2236)

**Full Changelog**:
<actions/checkout@v4...v4.3.0>

###
[`v4.2.2`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v422)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.2.1...v4.2.2)

- `url-helper.ts` now leverages well-known environment variables by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1941](https://redirect.github.com/actions/checkout/pull/1941)
- Expand unit test coverage for `isGhes` by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1946](https://redirect.github.com/actions/checkout/pull/1946)

###
[`v4.2.1`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v421)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.2.0...v4.2.1)

- Check out other refs/\* by commit if provided, fall back to ref by
[@&#8203;orhantoy](https://redirect.github.com/orhantoy) in
[#&#8203;1924](https://redirect.github.com/actions/checkout/pull/1924)

###
[`v4.2.0`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v420)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.7...v4.2.0)

- Add Ref and Commit outputs by
[@&#8203;lucacome](https://redirect.github.com/lucacome) in
[#&#8203;1180](https://redirect.github.com/actions/checkout/pull/1180)
- Dependency updates by
[@&#8203;dependabot-](https://redirect.github.com/dependabot-)
[#&#8203;1777](https://redirect.github.com/actions/checkout/pull/1777),
[#&#8203;1872](https://redirect.github.com/actions/checkout/pull/1872)

###
[`v4.1.7`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v417)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.6...v4.1.7)

- Bump the minor-npm-dependencies group across 1 directory with 4
updates by [@&#8203;dependabot](https://redirect.github.com/dependabot)
in
[#&#8203;1739](https://redirect.github.com/actions/checkout/pull/1739)
- Bump actions/checkout from 3 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1697](https://redirect.github.com/actions/checkout/pull/1697)
- Check out other refs/\* by commit by
[@&#8203;orhantoy](https://redirect.github.com/orhantoy) in
[#&#8203;1774](https://redirect.github.com/actions/checkout/pull/1774)
- Pin actions/checkout's own workflows to a known, good, stable version.
by [@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1776](https://redirect.github.com/actions/checkout/pull/1776)

###
[`v4.1.6`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v416)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.5...v4.1.6)

- Check platform to set archive extension appropriately by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1732](https://redirect.github.com/actions/checkout/pull/1732)

###
[`v4.1.5`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v415)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.4...v4.1.5)

- Update NPM dependencies by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1703](https://redirect.github.com/actions/checkout/pull/1703)
- Bump github/codeql-action from 2 to 3 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1694](https://redirect.github.com/actions/checkout/pull/1694)
- Bump actions/setup-node from 1 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1696](https://redirect.github.com/actions/checkout/pull/1696)
- Bump actions/upload-artifact from 2 to 4 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1695](https://redirect.github.com/actions/checkout/pull/1695)
- README: Suggest `user.email` to be
`41898282+github-actions[bot]@&#8203;users.noreply.github.com` by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1707](https://redirect.github.com/actions/checkout/pull/1707)

###
[`v4.1.4`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v414)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.3...v4.1.4)

- Disable `extensions.worktreeConfig` when disabling `sparse-checkout`
by [@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1692](https://redirect.github.com/actions/checkout/pull/1692)
- Add dependabot config by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1688](https://redirect.github.com/actions/checkout/pull/1688)
- Bump the minor-actions-dependencies group with 2 updates by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1693](https://redirect.github.com/actions/checkout/pull/1693)
- Bump word-wrap from 1.2.3 to 1.2.5 by
[@&#8203;dependabot](https://redirect.github.com/dependabot) in
[#&#8203;1643](https://redirect.github.com/actions/checkout/pull/1643)

###
[`v4.1.3`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v413)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.2...v4.1.3)

- Check git version before attempting to disable `sparse-checkout` by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1656](https://redirect.github.com/actions/checkout/pull/1656)
- Add SSH user parameter by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1685](https://redirect.github.com/actions/checkout/pull/1685)
- Update `actions/checkout` version in `update-main-version.yml` by
[@&#8203;jww3](https://redirect.github.com/jww3) in
[#&#8203;1650](https://redirect.github.com/actions/checkout/pull/1650)

###
[`v4.1.2`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v412)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.1...v4.1.2)

- Fix: Disable sparse checkout whenever `sparse-checkout` option is not
present [@&#8203;dscho](https://redirect.github.com/dscho) in
[#&#8203;1598](https://redirect.github.com/actions/checkout/pull/1598)

###
[`v4.1.1`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v411)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4.1.0...v4.1.1)

- Correct link to GitHub Docs by
[@&#8203;peterbe](https://redirect.github.com/peterbe) in
[#&#8203;1511](https://redirect.github.com/actions/checkout/pull/1511)
- Link to release page from what's new section by
[@&#8203;cory-miller](https://redirect.github.com/cory-miller) in
[#&#8203;1514](https://redirect.github.com/actions/checkout/pull/1514)

###
[`v4.1.0`](https://redirect.github.com/actions/checkout/blob/HEAD/CHANGELOG.md#v410)

[Compare
Source](https://redirect.github.com/actions/checkout/compare/v4...v4.1.0)

- [Add support for partial checkout
filters](https://redirect.github.com/actions/checkout/pull/1396)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/arkworks-rs/spongefish).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjMuOCIsInVwZGF0ZWRJblZlciI6IjQzLjEzOC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [rayon](https://redirect.github.com/rayon-rs/rayon) |
workspace.dependencies | minor | `1.11.0` → `1.12.0` |

---

### Release Notes

<details>
<summary>rayon-rs/rayon (rayon)</summary>

###
[`v1.12.0`](https://redirect.github.com/rayon-rs/rayon/blob/HEAD/RELEASES.md#Release-rayon-1120-2026-04-13)

[Compare
Source](https://redirect.github.com/rayon-rs/rayon/compare/v1.11.0...v1.12.0)

- Fixed a bug in parallel `Range<char>` when the end is 0xE000, just
past the
surrogate boundary, which was unsafely producing invalid `char` values.
- The new method `ParallelSlice::par_array_windows` works like
`par_windows`
  but with a constant length, producing `&[T; N]` items.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/arkworks-rs/spongefish).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjMuOCIsInVwZGF0ZWRJblZlciI6IjQzLjEyMy44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [spin](https://redirect.github.com/mvdnes/spin-rs) |
workspace.dependencies | minor | `0.9` → `0.10` |

---

### Release Notes

<details>
<summary>mvdnes/spin-rs (spin)</summary>

###
[`v0.10.0`](https://redirect.github.com/mvdnes/spin-rs/blob/HEAD/CHANGELOG.md#0100---2025-03-26)

##### Added

- `Mutex::try_lock_weak`
- `RwLock::try_write_weak`
- `RwLock::try_upgrade_weak`

##### Changed

- Updated MSRV to 1.60
- Use `dep:` syntax in Cargo.toml
- `portable_atomic` feature has been renamed to `portable-atomic`, for
consistency.

##### Fixed

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/arkworks-rs/spongefish).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjMuOCIsInVwZGF0ZWRJblZlciI6IjQzLjEyMy44IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
The current circuit API is very primitive and basic, and does not impose any limit on the wire value,
nor it checks for overflow, incorrect usages of zip, etc.
Additionally, downstream of this crate, implementations will most likely need to convert the wire index into a field elements.

This commit tries to improve the status quo with an upper-limit of wire vars of 2^30 (so it can just fit a group element for most finite fields used in zkps). Along the way, we improve the API for setting public vars
What does this PR do?

- adds support for merged [Small
Fp](arkworks-rs/algebra#1044)
- doesn't change anything about Fp
- fix impl_encoding! that affects extension fields (Fp2, Fp3)
```text
to_bytes_be() → [00, 00, 00, 00, 00, 00, 00, 00, 01, 00, 00, 00, FF, FF, FF, FF]
resize(8, 0)  → [00, 00, 00, 00, 00, 00, 00, 00]                  // ❌ all zeros
drain(..8)    → [01, 00, 00, 00, FF, FF, FF, FF]                   // ✅ actual value
```
## 🤖 New release

* `spongefish-derive`: 0.6.1 -> 0.7.0
* `spongefish`: 0.6.1 -> 0.7.0
* `spongefish-circuit`: 0.6.1 -> 0.7.0
* `spongefish-pow`: 0.6.1 -> 0.7.0

<details><summary><i><b>Changelog</b></i></summary><p>






</p></details>

---
This PR was generated with
[release-plz](https://github.com/release-plz/release-plz/).

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: Andrew Z <1497456+z-tech@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [digest](https://redirect.github.com/RustCrypto/traits) |
workspace.dependencies | patch | `0.11.2` → `0.11.3` |

---

### Release Notes

<details>
<summary>RustCrypto/traits (digest)</summary>

###
[`v0.11.3`](https://redirect.github.com/RustCrypto/traits/compare/digest-v0.11.2...digest-v0.11.3)

[Compare
Source](https://redirect.github.com/RustCrypto/traits/compare/digest-v0.11.2...digest-v0.11.3)

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/arkworks-rs/spongefish).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTkuMiIsInVwZGF0ZWRJblZlciI6IjQzLjE1OS4yIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [hashbrown](https://redirect.github.com/rust-lang/hashbrown) |
workspace.dependencies | minor | `0.15.5` → `0.17.0` |

---

### Release Notes

<details>
<summary>rust-lang/hashbrown (hashbrown)</summary>

###
[`v0.17.0`](https://redirect.github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#0170---2026-04-06)

[Compare
Source](https://redirect.github.com/rust-lang/hashbrown/compare/v0.16.1...v0.17.0)

##### Added

- Added `hash_table::OccupiedEntry::replace_entry_with`
([#&#8203;669](https://redirect.github.com/rust-lang/hashbrown/issues/669))
- Added `hash_map::{OccupiedEntry::into_entry,
VacantEntryRef::insert_entry_with_key}`
([#&#8203;670](https://redirect.github.com/rust-lang/hashbrown/issues/670))
- Added `hash_table::UnsafeIter`
([#&#8203;667](https://redirect.github.com/rust-lang/hashbrown/issues/667))
- Added `iter` methods to various `HashTable` iterators
([#&#8203;667](https://redirect.github.com/rust-lang/hashbrown/issues/667))
- Added
`HashMap::{replace_key,replace_key_unchecked,insert_with_key_unchecked}`
([#&#8203;681](https://redirect.github.com/rust-lang/hashbrown/issues/681))
- Added `into_map` methods to all `HashMap` entry types
([#&#8203;686](https://redirect.github.com/rust-lang/hashbrown/issues/686))
- Added `into_table` methods to all `HashTable` entry types
([#&#8203;686](https://redirect.github.com/rust-lang/hashbrown/issues/686))
- Added `#[must_use]` to constructors
([#&#8203;697](https://redirect.github.com/rust-lang/hashbrown/issues/697))
- `TryReserveError` now implements `Error`
([#&#8203;698](https://redirect.github.com/rust-lang/hashbrown/issues/698))

##### Changed

- Changed `EntryRef` to use `ToOwned`
([#&#8203;670](https://redirect.github.com/rust-lang/hashbrown/issues/670))
- Bumped MSRV to 1.85 (2024 edition)
([#&#8203;676](https://redirect.github.com/rust-lang/hashbrown/issues/676))

##### Fixed

- `HashTable:clone_from` now forwards to `RawTable::clone_from` instead
of using the default implementation
([#&#8203;668](https://redirect.github.com/rust-lang/hashbrown/issues/668))
- Fixed potential UB in `RawTableInner::fallible_with_capacity`
([#&#8203;692](https://redirect.github.com/rust-lang/hashbrown/issues/692))
- Fixed incorrect length if a hasher panics during rehash
([#&#8203;710](https://redirect.github.com/rust-lang/hashbrown/issues/710))

###
[`v0.16.1`](https://redirect.github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#0161---2025-11-20)

[Compare
Source](https://redirect.github.com/rust-lang/hashbrown/compare/v0.16.0...v0.16.1)

##### Added

- Added `HashTable` methods related to the raw bucket index
([#&#8203;657](https://redirect.github.com/rust-lang/hashbrown/issues/657))
- Added `VacantEntryRef::insert_with_key`
([#&#8203;579](https://redirect.github.com/rust-lang/hashbrown/issues/579))

##### Changed

- Removed specialization for `Copy` types
([#&#8203;662](https://redirect.github.com/rust-lang/hashbrown/issues/662))
- The `get_many_mut` family of methods have been renamed to
`get_disjoint_mut`
to match the standard library. The old names are still present for now,
but
deprecated.
([#&#8203;648](https://redirect.github.com/rust-lang/hashbrown/issues/648))
- Recognize and use over-sized allocations when using custom allocators.
([#&#8203;523](https://redirect.github.com/rust-lang/hashbrown/issues/523))
- Depend on `serde_core` instead of `serde`.
([#&#8203;649](https://redirect.github.com/rust-lang/hashbrown/issues/649))
- Optimized `collect` on rayon parallel iterators.
([#&#8203;652](https://redirect.github.com/rust-lang/hashbrown/issues/652))

###
[`v0.16.0`](https://redirect.github.com/rust-lang/hashbrown/blob/HEAD/CHANGELOG.md#0160---2025-08-28)

[Compare
Source](https://redirect.github.com/rust-lang/hashbrown/compare/v0.15.5...v0.16.0)

##### Changed

- Bump foldhash, the default hasher, to 0.2.0.
- Replaced `DefaultHashBuilder` with a newtype wrapper around `foldhash`
instead
  of re-exporting it directly.

</details>

---

### Configuration

📅 **Schedule**: (UTC)

- Branch creation
  - At any time (no schedule defined)
- Automerge
  - At any time (no schedule defined)

🚦 **Automerge**: Disabled by config. Please merge this manually once you
are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the
rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update
again.

---

- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check
this box

---

This PR was generated by [Mend Renovate](https://mend.io/renovate/).
View the [repository job
log](https://developer.mend.io/github/arkworks-rs/spongefish).

<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNTAuMCIsInVwZGF0ZWRJblZlciI6IjQzLjE1MC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6W119-->

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Move DSFS compiler implementation under spongefish::dsfs and re-export Argus-owned codec traits through spongefish for compatibility with existing derive outputs and paths.
Make p3-* features enable ia-core's p3 codecs and keep only the local Unit impls to avoid orphan impls.
Address clippy warnings and minor API polish in the new spongefish::dsfs module and related code.
…urn to spongefish

Splits the April 2026 codec inversion into three cleanly-stacked crates:

- spongefish: transcript + codecs (Encoding/Decoding/NargSerialize/NargDeserialize/
  Deserialize) + foreign-type drivers. No ia-core dependency.
- ia-core (Argus): IA/IR/NIA/NIR protocol abstractions, depends on spongefish for
  codec traits.
- spongefish-dsfs: DSFS bridge crate (Dsfs/DsfsReduction wrappers + free fns) that
  depends on both spongefish and ia-core.

This reverses the prior arrangement where spongefish had a backwards dep on ia-core
just to see the codec traits. Codec impls for ark_ff/ark_ec/bls12_381/curve25519-
dalek/p256/k256/p3 fields are merged into spongefish/src/drivers/<type>.rs alongside
the existing Unit impls. SmallFp codec impls are not yet ported (ia-core did not
have them).

[patch.crates-io] spongefish = { path = "spongefish" } added to the spongefish
workspace so transitive deps (ia-core) see the local copy instead of the stale
crates.io 0.7.0 publish.

The free-fn DSFS surface (prove/verify/*_with_*) stays pub for now; it will be
flipped to pub(crate) in a follow-up after Argus call sites are swept onto the
Dsfs::new(...) wrapper.

cargo test --workspace --all-features passes.
The `Dsfs::new(...).prove(...)` / `DsfsReduction::new(...).prove(...)` wrappers
are now the only public DSFS surface. Internal helper free fns kept (called by
the wrapper):

- `prove_with_sponge_and_salt`
- `verify_with_sponge_and_salt`
- `prove_reduction_with_sponge_and_salt_full` (private)
- `verify_reduction_with_sponge_and_salt`

Deleted (13 fns, no public callers and not needed internally since the wrapper
parametrizes `Dsfs<IA, S, H, SALT_LEN>` over sponge + salt-length):

- `prove`, `prove_with_salt`, `prove_with_sponge`
- `verify`, `verify_with_salt`, `verify_with_sponge`
- `prove_reduction`, `prove_reduction_with_salt`, `prove_reduction_with_sponge`,
  `prove_reduction_with_sponge_and_salt`
- `verify_reduction`, `verify_reduction_with_salt`, `verify_reduction_with_sponge`

The `Dsfs::new` const-generic salt + explicit sponge field already cover every
variant the deleted free fns expressed. Custom-salt example:
`Dsfs::<_, _, _, 16>::new(ia, sponge)`. Custom-sponge example:
`Dsfs::<_, _, StdHash, 0>::new(ia, StdHash::default())`.

Argus workspace tests pass (except 3 pre-existing sigma-bridge golden_vectors).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants