Skip to content

Commit e6ad7f8

Browse files
Merge branch 'feat/new-execution' into feat/edwards-curve-new-execution
2 parents 831d8a4 + 0c44b81 commit e6ad7f8

File tree

355 files changed

+18406
-15099
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

355 files changed

+18406
-15099
lines changed

.github/workflows/benchmark-call.yml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ on:
4949
features:
5050
type: string
5151
required: false
52-
description: Host features, comma separated (aggregation,profiling)
52+
description: Host features, comma separated (aggregation,perf-metrics)
5353
workflow_call:
5454
inputs:
5555
benchmark_name:
@@ -102,12 +102,12 @@ on:
102102
features:
103103
type: string
104104
required: false
105-
description: Host features, comma separated (aggregation,profiling)
105+
description: Host features, comma separated (aggregation,perf-metrics)
106106

107107
env:
108108
S3_METRICS_PATH: s3://openvm-public-data-sandbox-us-east-1/benchmark/github/metrics
109109
S3_FLAMEGRAPHS_PATH: s3://openvm-public-data-sandbox-us-east-1/benchmark/github/flamegraphs
110-
FEATURE_FLAGS: "bench-metrics,parallel,nightly-features"
110+
FEATURE_FLAGS: "metrics,parallel,nightly-features"
111111
INPUT_ARGS: ""
112112
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
113113

@@ -230,11 +230,11 @@ jobs:
230230
s5cmd cp $METRIC_PATH ${{ env.S3_METRICS_PATH }}/${METRIC_NAME}-${current_sha}.json
231231
232232
- name: Install inferno-flamegraph
233-
if: ${{ contains(env.FEATURE_FLAGS, 'profiling') }}
233+
if: ${{ contains(env.FEATURE_FLAGS, 'perf-metrics') }}
234234
run: cargo install inferno
235235

236236
- name: Generate flamegraphs
237-
if: ${{ contains(env.FEATURE_FLAGS, 'profiling') }}
237+
if: ${{ contains(env.FEATURE_FLAGS, 'perf-metrics') }}
238238
run: |
239239
if [[ -f $METRIC_PATH ]]; then
240240
GUEST_SYMBOLS_PATH="${METRIC_PATH%.json}.syms"

.github/workflows/benchmarks.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ jobs:
8989
FEATURE_FLAGS="aggregation,${FEATURE_FLAGS}"
9090
fi
9191
if [[ "${{ github.event.inputs.flamegraphs }}" == "true" ]]; then
92-
FEATURE_FLAGS="profiling,${FEATURE_FLAGS}"
92+
FEATURE_FLAGS="perf-metrics,${FEATURE_FLAGS}"
9393
fi
9494
9595
matrix=$(jq -c --argjson run_e2e $RUN_E2E --arg features "$FEATURE_FLAGS" '

.github/workflows/guest-lib-tests.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ on:
1313
- "guest-libs/**"
1414
- "Cargo.toml"
1515
- ".github/workflows/guest-lib-tests.yml"
16+
- "crates/sdk/guest/fib/**"
1617

1718
concurrency:
1819
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}

.github/workflows/lints.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ jobs:
4646
# list of all unique features across workspace generated using:
4747
# cargo metadata --format-version=1 --no-deps | jq -r '.packages[].features | to_entries[] | .key' | sort -u | tr '\n' ' ' && echo ""
4848
# (exclude mimalloc since it conflicts with jemalloc)
49-
cargo clippy --all-targets --all --tests --features "aggregation bench-metrics bls12_381 bn254 build-binaries default entrypoint evm-prove evm-verify export-intrinsics export-libm function-span getrandom-unsupported halo2-compiler halo2curves heap-embedded-alloc jemalloc jemalloc-prof nightly-features panic-handler parallel profiling rust-runtime static-verifier std test-utils" -- -D warnings
49+
cargo clippy --all-targets --all --tests --features "aggregation bls12_381 bn254 build-binaries default entrypoint evm-prove evm-verify export-intrinsics export-libm function-span getrandom-unsupported halo2-compiler halo2curves heap-embedded-alloc jemalloc jemalloc-prof metrics nightly-features panic-handler parallel perf-metrics rust-runtime static-verifier std test-utils" -- -D warnings
5050
cargo clippy --all-targets --all --tests --no-default-features --features "mimalloc" -- -D warnings
5151
5252
- name: Run fmt, clippy for guest

.github/workflows/versioning.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@ on:
55
workflow_dispatch:
66
inputs:
77
version:
8-
description: "Version tag to compare (e.g., v1.2.0)"
8+
description: "Version tag to compare (e.g., v1.3.0)"
99
required: true
10-
default: "v1.2.0"
10+
default: "v1.3.0"
1111
type: string
1212

1313
jobs:
@@ -22,7 +22,7 @@ jobs:
2222
uses: actions/checkout@v4
2323

2424
- name: Set version fallback
25-
run: echo "version=${{ github.event.inputs.version || 'v1.2.0' }}" >> $GITHUB_ENV
25+
run: echo "version=${{ github.event.inputs.version || 'v1.3.0' }}" >> $GITHUB_ENV
2626

2727
- name: Install solc # svm should support arm64 linux
2828
run: (hash svm 2>/dev/null || cargo install --version 0.2.23 svm-rs) && svm install 0.8.19 && solc --version

CHANGELOG.md

Lines changed: 56 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,61 @@
11
# Changelog
22

3+
All notable changes to OpenVM will be documented in this file.
4+
5+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6+
and this project follows a versioning principles documented in [VERSIONING.md](./VERSIONING.md).
7+
8+
## [Unreleased]
9+
10+
### Added
11+
- (Config) Added `addr_spaces` vector of `AddressSpaceHostConfig` to `MemoryConfig`.
12+
13+
### Changed
14+
- (Toolchain) Removed `step` from `Program` struct because `DEFAULT_PC_STEP = 4` is always used.
15+
- (Config) The `clk_max_bits` field in `MemoryConfig` has been renamed to `timestamp_max_bits`.
16+
- (Prover) Guest memory is stored on host with address space-specified memory layouts. In particular address space `1` through `3` are now represented in bytes instead of field elements.
17+
18+
## v1.3.0 (2025-07-15)
19+
20+
No circuit constraints or verifying keys were changed in this release.
21+
22+
A substantial refactor has been done to the guest libraries to separate the low level Rust bindings for OpenVM intrinsic instructions from the higher level user interface. For each VM extension, the `openvm-$name-guest` crate is now a _primitives library_ containing only the Rust bindings for the intrinsic instructions and essential logic related to the extension (e.g., ECDSA signature verification). We introduce new _guest libraries_ as standalone Rust crates which provide the high-level interfaces guest programs should use to interact with the associated VM extensions.
23+
24+
Users are advised to switch to using the new guest libraries.
25+
26+
### Added
27+
- (ISA) Added OpenVM phantom sub-instructions `HintNonQr` and `HintSqrt` to the algebra (modular arithmetic) extension. Added corresponding RISC-V custom instructions `hint_non_qr` and `hint_sqrt`.
28+
- (Guest Libraries) We introduce the following new guest libraries:
29+
- `openvm-keccak256`: guest library for the Keccak256 hash function.
30+
- `openvm-sha2`: guest library providing access to a set of accelerated SHA-2 family hash functions. Currently, the SHA-256 hash function is supported.
31+
- `openvm-pairing`: guest library for the elliptic curve pairing check operation.
32+
- `ff_derive`: patch of [ff_derive](https://crates.io/crates/ff_derive) using the algebra extension.
33+
- `k256`: patch of [k256](https://crates.io/crates/k256) using the algebra and ECC extensions.
34+
- `p256`: patch of [p256](https://crates.io/crates/p256) using the algebra and ECC extensions.
35+
- `ruint`: patch of [ruint](https://crates.io/crates/ruint) using the big integer extension.
36+
- `openvm-verify-stark`: a new guest library providing a `define_verify_stark_proof!` macro which generates a user-named function `$verify_stark` that can be used to verify an OpenVM STARK proof from within a Rust program. The `$verify_stark` function is accelerated using the native field arithmetic extension.
37+
- (CLI) New `cargo openvm init` and `cargo openvm commit` commands.
38+
- (CLI) New `cargo openvm prove stark` and `cargo openvm verify stark` commands to generate a single final STARK proof without Halo2 SNARK wrapper.
39+
- (SDK) New functions `generate_e2e_stark_proof` and `verify_e2e_stark_proof`
40+
41+
### Changed
42+
- (Toolchain) The `openvm` crate and `cargo openvm build` command have been updated to support both `getrandom` `v0.2` and `v0.3`.
43+
- (Primitives Libraries) In the algebra and elliptic curve primitive libraries, the `setup_*` functions have been removed from guest bindings and are now called on-demand within other relevant binding functions. Additionally, custom opcode initialization is now simplified through the inclusion of `openvm_init.rs` files and the `openvm::init!()` macro. Read the book for more details.
44+
- (CLI) The build command `cargo openvm build` now stores build artifacts in the `target/` to match cargo conventions.
45+
- (CLI) The `cargo openvm setup` command now supports skipping halo2 proving keys and outputs halo2 PK and STARK PK as separate files.
46+
- (CLI) The `cargo openvm commit` and `cargo openvm prove stark` commands now consistently output commit values in hexadecimal format.
47+
- (CLI) The `cargo openvm prove` command now outputs proofs to `${bin_name}.app.proof` instead of `app.proof`.
48+
49+
### Removed
50+
- (ISA) Removed OpenVM phantom sub-instructions `HintDecompress` and `HintNonQr` from the elliptic curve extension. Removed corresponding RISC-V custom instructions `hint_decompress` and `hint_non_qr`.
51+
52+
## v1.2.0 (2025-06-02)
53+
54+
### Security Fixes
55+
This release makes fixes for security advisories:
56+
- Plonky3: https://github.com/Plonky3/Plonky3/security/advisories/GHSA-f69f-5fx9-w9r9
57+
- OpenVM: https://github.com/openvm-org/openvm/security/advisories/GHSA-4w7p-8f9q-f4g2 (recursion circuit fixes corresponding to Plonky3)
58+
359
## v1.1.2 (2025-05-08)
460

561
- The solidity verifier contract no longer has any awareness of the OpenVM patch version. `{MAJOR_VERSION}.{MINOR_VERSION}` is the minimum information necessary to identify the verifier contract since any verifier contract changes will be accompanied by a minor version bump.

0 commit comments

Comments
 (0)