Remove `snark` feature

Open
#3,150 0 comments 0 reactions 0 assignees View on GitHub

Maintainers usually reply within 2 days

Nobody has claimed this yet.

Assessment

Difficulty
5/5
Estimated time
Over a week
Newbie friendliness
25/100
Issue type
Refactor
Clarity
Mostly clear
Activity status
Quiet
Tech stack
rust

Research direction

Start by inventorying every future_snark reference across the crate manifests, workspace cargo profiles, code, tests, benches, examples, and CI configuration. Use CODEC.md and the duplicated golden vectors as key checkpoints; done means the feature gates, TODOs, duplicate vectors and dependencies are removed, and the dedicated CI job is merged into the standard Rust test jobs.

Written by the indexing model from the issue text.

Description

cryptography :closed_lock_with_key: refactoring :hammer_and_wrench: to-groom :thinking:

Why

The snark feature (formerly future_snark) gates the SNARK support while it is experimental. It has a high maintenance cost: around 870 cfg sites, feature plumbing in ten crate manifests, a dedicated CI job and cargo profile, duplicated golden vectors, a duplicated getrandom dependency in the WASM client, and a series of allow(dead_code) directives waiting for the feature to be activated. Once the SNARK support is enabled by default, all of this can go away.

What

Remove the snark feature and everything that exists only to support it.

How

  • Remove the feature from all the crate manifests and the workspace cargo profiles
  • Remove the cfg(feature = "snark") gates in the code, the tests, the benches, and the examples
  • Remove all TODOs
  • Keep a single set of golden vectors and update CODEC.md
  • Merge the dedicated CI job into the standard Rust test jobs
  • "Later" steps of #3151:
    • Run multiple tiers of e2e tests (depending on which files have been modified)
    • Use the binaries of the last merge on main in the SNARK nightly end-to-end tests
Dominant language
Rust
Stars
155
Forks
52
Avg merge
2d 17h
Merged PRs (30d)
37

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from IntersectMBO/mithril

All issues in IntersectMBO/mithril

Similar issues

More Rust issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.