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 intorisc0-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
andPartialEq
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:
- Bad link fixed by @hcho1989 in #201
- Documentation for `ProveRoundInfo::new() by @BoltonBailey in #187
- Documentation compilation warnings fixed by @tzerrell in #211
- Additional comments for receipt methods by @elakn in #197
- Markdown fix by @BoltonBailey in #181
- zkVM language clarification by @ianklatzco in #188