Documentation Index
Fetch the complete documentation index at: https://mintlify.com/risc0/risc0/llms.txt
Use this file to discover all available pages before exploring further.
Overview
This guide helps you migrate your RISC Zero zkVM applications between major versions. Breaking changes are documented with migration paths for each version transition.Always review the CHANGELOG for comprehensive release notes.
Version Support
Current Stable Versions
- Latest: v1.2.1 (2025-01-15)
- Previous: v1.2.0 (2024-12-04)
- Legacy: v1.1.x, v1.0.x
Migrating to v1.2.x
From v1.1.x to v1.2.0+
Breaking Changes
risc0-bigint2 replaces risc0-circuit-bigint
risc0-bigint2 replaces risc0-circuit-bigint
Change:
The Update imports in your code:
risc0-circuit-bigint crate has been dropped in favor of risc0-bigint2.Migration:Update your Cargo.toml:New Features
Keccak and secp256r1 precompiles
Keccak and secp256r1 precompiles
New capabilities:For more information, see the Precompiles documentation.
- Keccak hash function precompile
- secp256r1 (P-256) curve precompile
Memory metrics in guest
Memory metrics in guest
New feature:
The bump allocator now exposes
used() and free() methods.Usage:Profiling with RISC0_INFO
Profiling with RISC0_INFO
New feature:
Set This replaces some use cases of the
RISC0_INFO=1 environment variable to get profiling information.Usage:risc0_core::scope! macro.Migrating to v1.1.x
From v1.0.x to v1.1.0+
Breaking Changes
Control ID changes for zero-knowledge improvements
Control ID changes for zero-knowledge improvements
Impact:
Receipts from zkVM 1.0.x cannot be verified by verifiers from 1.1.x.Reason:
Zero-knowledge properties were strengthened by increasing cryptographic noise, resulting in new control IDs.Migration:
- Regenerate all receipts with zkVM 1.1.x
- Update verifier version to match prover version
- For Bonsai users: Ensure local verifier matches Bonsai version
Environment syscalls disabled by default
Environment syscalls disabled by default
Change:
sys_getenv, sys_argc, and sys_argv are now disabled by default.Reason:
Environment variables and arguments are trusted on the host but not in the guest, which can lead to security issues.Migration:If you must use environment variables in the guest:New Features
Light builds for faster development
Light builds for faster development
New feature:
Light builds provide faster compilation for development.Usage:
Light builds are enabled automatically during development. For explicit control, see the
cargo-risczero documentation.Light builds are not production-ready. Always use standard builds for production.
Optional embedded allocator
Optional embedded allocator
New feature:
An embedded allocator that deallocates memory is now available.Usage:Enable in your guest Useful for long-running guest programs that need memory deallocation.
Cargo.toml:Experimental sys_fork for unconstrained execution
Experimental sys_fork for unconstrained execution
New feature:
Execute unconstrained code within the zkVM using
sys_fork.Usage:Migrating to v1.0.x
From v0.21.0 to v1.0.0
Breaking Changes
Prover::prove() returns ProveInfo
Prover::prove() returns ProveInfo
Change:
The
prove() function now returns a ProveInfo struct instead of a Receipt directly.Migration:sys_cycle_count returns u64
sys_cycle_count returns u64
Change:
sys_cycle_count now returns u64 instead of u32.Migration:ReceiptKind field added to ProverOpts
ReceiptKind field added to ProverOpts
Change:
Receipt kinds:
ProverOpts has a new ReceiptKind field to select compression level.Migration:Composite: Vector of segment receipts (fastest)Succinct: Compressed into single receipt via recursionCompact: SNARK receipt for on-chain verification (smallest)
From v0.20.x to v0.21.0
Breaking Changes
Poseidon2 replaces Poseidon for recursive proofs
Poseidon2 replaces Poseidon for recursive proofs
Change:
Poseidon2 hash function replaces Poseidon for recursive proofs.Impact:
Receipts using the old Poseidon hash are not compatible with Bonsai or proof composition.Migration:
Regenerate all receipts with v0.21.0+ to use Poseidon2.
General Migration Best Practices
Testing Your Migration
-
Update all dependencies to the same version:
-
Regenerate guest methods:
-
Run tests:
-
Verify receipts:
Ensure receipts generated by the new version can be verified:
Version Pinning
To ensure consistent builds, pin your RISC Zero version inCargo.toml:
Rollback Strategy
If you encounter issues:- Revert Cargo.toml to previous version
- Run cargo clean:
- Reinstall matching toolchain:
Getting Help
CHANGELOG
Detailed release notes for every version
Discord
Get migration assistance from the community
GitHub Issues
Report migration problems
Documentation
zkVM documentation for current version