github risc0/risc0 v0.11.0

latest releases: v1.0.0-rc.5, v1.0.0-rc.4, v1.0.0-rc.3...
21 months ago

Release Notes

Thanks to community members @cemozerr, @ianklatzco, and @hcho1989 for their contributions to this release!

Breaking Changes

Crate dependencies

Crates have been simplified:

  • Consolidation into risc0-zkp
    • risc0-zkp-core
  • Consolidation into risc0-zkvm
    • risc0-zkvm-host
    • risc0-zkvm-core
    • risc0-zkvm-serde
    • risc0-zkvm-verify

Look at this password checker Cargo.toml file for an example. Previously, the listed dependencies were:

risc0-zkvm-host = "0.10"
risc0-zkvm-core = "0.10"
risc0-zkvm-serde = "0.10"

Now, the dependencies are:

risc0-zkp = "0.11"
risc0-zkvm = "0.11"

Guest SHA usage

If your project uses our in-house SHA implementation (optimized for the zkVM), you'll want to refer to risc0_zkp::core::sha rather than risc0_zkvm_core::sha. As an example, see our changes to the digital signature Rust example:

pub fn get_identity(&self) -> Result<risc0_zkp::core::sha::Digest> {...}

Projects that need to use risc0-zkp in the guest should set default-features = false. See our digital signatures Rust example:

risc0-zkp = { version = "0.11.0-rc.4", default-features = false }

CHANGELOG

Our pure Rust implementation of the prover is nearly complete:

  • Part 1 (includes both prove and verify implementation) by @flaub in #196
  • Part 2 by @flaub in #181
  • The Rust prover is integrated with cirgen by @flaub in #218
  • The Rust prover runs until it has been halted by @flaub in #220

We've simplified the crate system:

  • The ZKP portion of the pure Rust implementation risc0-zkvm-verify/zkp has also been moved into risc0-zkp by @flaub in #183
  • risc0-build and risc0-zkvm-guest have been extracted from risc0-zkvm by @flaub in #210
  • risc0_zkvm_guest is now its own workspace by @tzerrell in #212
  • The Rust prover APIs (FFI-based and in pure Rust) have been adjusted to behave more similarly by @shkoo in #221
  • For details on how these changes impact your projects, see our notes on updating your project dependencies.

We’ve made the following zkVM improvements:

  • The Rust standard library support continues to improve by @shkoo in #216
  • You can now embed methods with features by @cemozerr in #204
  • Code limits are now configurable with DEFAULT_METHOD_ID_LIMIT by @flaub in #203
  • Method ID now has Clone and PartialEq methods by @flaub in #186
  • You can now run the guest without generating a proof by @shkoo in #177
  • Support has been added for parsing ELF files by @flaub in #200
  • Compatibility with older C++ has been fixed by @flaub in #209

We’ve made the following build and benchmarking improvements:

  • We added a cargo-risc0 tool to manage the risc0 toolchain by @shkoo in #198
  • Cargo is now the source of truth for dependencies by @flaub in #199
  • Update to rules_rust 0.7.0 by @flaub in #206
  • Benchmark and CI have been repaired by @flaub in #215
  • Guest builds show their progress when run interactively by @shkoo in #217
  • Added cargo check —benches by @flaub in #225

Here are this release’s documentation updates:

Don't miss a new risc0 release

NewReleases is sending notifications on new releases.