Releases: risc0/risc0
v0.11.1
v0.11.0
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
v0.10.0
What's Changed
We've made quite a few changes this time! This release includes improvements to the guest zkVM, progress towards a pure Rust implementation, work on the Receipt object, an API improvement, and expanded documentation.
Improvements have been made to the guest zkVM:
- Rust standard library is now supported in the guest by @shkoo in #161
- To allow users greater control over guest execution limits, the MethodID code size limit is now configurable by @flaub in #167
- The zkVM guest now has access to more resources by @shkoo in #176
- To improve I/O between the host and guest, A "SendRecv" GPIO call has been added by @shkoo in #173
We've also made progress towards a pure Rust zkVM implementation:
- We've begun implementing the prover in pure Rust (part 1) by @flaub in #139
- The r0vm is also reimplemented in Rust by @shkoo in #174
- While a Rust implementation is underway, we have two Receipt types; to support their conversion, the visibility of a Receipt's journal and seal was changed by @flaub in #162
The following improvements have been made to Receipts and verification:
- The Rust verifier now uses error handling instead of panics by @flaub in #169
- A constructor has been added for the Receipt by @intoverflow in #171
- The Receipt constructor was also added in C++ by @flaub in #172
Our API can now take in-memory buffers:
Lastly, we've improved our documentation:
- Documentation has been added for ntt.rs by @BoltonBailey in #160
- The interactive oracle proof has additional documentation by @pdg744 in #159
- Crates are now alphabetized using cargo-sort by @rlukata in #175
Full Changelog: v0.9.0...v0.10.0
v0.9.0
What's Changed
- Minor improvements have been made to the Prover API by @spaugh in #132
- We now avoid accumulating cached MethodIDs by @flaub in #155
Cargo is used to check rustfmt to catch files that Bazel doesn't touch by @shkoo in #157 - Release: v0.9.0 by @flaub in #158
Full Changelog: v0.8.0...v0.9.0
v0.8.0
What's Changed
- The README includes a table of crate version badges by @flaub in #138
- The merkle.rs function is now extensively commented by @BoltonBailey in #140
- Fixed #141: including required cstddef library by @flaub in #146 (thanks @lyqingye for the bug report).
- Guest method crates are now built automatically. As a performance improvement, method IDs are only computed when necessary by tracking changes to the SHA of corresponding ELFs. by @shkoo in #152
- Looking for digital signature and voting machine examples? We’ve moved them to their own repository: risc0-rust-examples. by @spaugh
- Release: v0.8.0 by @flaub in #154
v0.7.2
What's Changed
- Looking for our Rust battleship example? We’ve moved it to its own repository:battleship-example
- (cargo-release) version 0.7.2 by @flaub in #137
Full Changelog: v0.7.1...v0.7.2