Skip to content

Commit 30221fb

Browse files
docs(changelog): document change in vk binary format (#1998)
1 parent 4db999b commit 30221fb

File tree

3 files changed

+55
-52
lines changed

3 files changed

+55
-52
lines changed

.github/workflows/versioning.yml

Lines changed: 49 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -45,19 +45,19 @@ jobs:
4545
rm -rf ~/.openvm-base
4646
mv ~/.openvm ~/.openvm-base
4747
48-
# - name: Build and keygen examples from base branch
49-
# run: |
50-
# mkdir -p ./base-outputs/examples
51-
# for example in examples/*/; do
52-
# if [ -f "$example/Cargo.toml" ]; then
53-
# example_name=$(basename "$example")
54-
# echo "Building and generating keys for example: $example_name"
55-
# cd "$example"
56-
# cargo openvm build --no-transpile
57-
# cargo openvm keygen --output-dir "../../base-outputs/examples/$example_name"
58-
# cd ../..
59-
# fi
60-
# done
48+
- name: Build and keygen examples from base branch
49+
run: |
50+
mkdir -p ./base-outputs/examples
51+
for example in examples/*/; do
52+
if [ -f "$example/Cargo.toml" ]; then
53+
example_name=$(basename "$example")
54+
echo "Building and generating keys for example: $example_name"
55+
cd "$example"
56+
cargo openvm build --no-transpile
57+
cargo openvm keygen --output-dir "../../base-outputs/examples/$example_name"
58+
cd ../..
59+
fi
60+
done
6161
6262
- name: Build and keygen benchmarks from base branch
6363
run: |
@@ -87,20 +87,20 @@ jobs:
8787
run: |
8888
cargo openvm setup --evm
8989
90-
# - name: Build and keygen examples from tagged version
91-
# run: |
92-
# mkdir -p ./tagged-outputs/examples
93-
# for example in examples/*/; do
94-
# if [ -f "$example/Cargo.toml" ]; then
95-
# example_name=$(basename "$example")
96-
# echo "Building and generating keys for example: $example_name"
97-
# cd "$example"
98-
# cargo openvm build --no-transpile
99-
# mkdir -p "../../tagged-outputs/examples/$example_name"
100-
# cargo openvm keygen --output-dir "../../tagged-outputs/examples/$example_name/app.vk"
101-
# cd ../..
102-
# fi
103-
# done
90+
- name: Build and keygen examples from tagged version
91+
run: |
92+
mkdir -p ./tagged-outputs/examples
93+
for example in examples/*/; do
94+
if [ -f "$example/Cargo.toml" ]; then
95+
example_name=$(basename "$example")
96+
echo "Building and generating keys for example: $example_name"
97+
cd "$example"
98+
cargo openvm build --no-transpile
99+
mkdir -p "../../tagged-outputs/examples/$example_name"
100+
cargo openvm keygen --output-dir "../../tagged-outputs/examples/$example_name"
101+
cd ../..
102+
fi
103+
done
104104
105105
- name: Build and keygen benchmarks from tagged version
106106
run: |
@@ -117,28 +117,28 @@ jobs:
117117
fi
118118
done
119119
120-
# - name: Compare example verification keys
121-
# run: |
122-
# echo "Comparing example verification keys between base branch and ${{ env.version }}..."
123-
# failed=0
124-
# for example in examples/*/; do
125-
# if [ -f "$example/Cargo.toml" ]; then
126-
# example_name=$(basename "$example")
127-
# echo "Checking example: $example_name"
128-
# if cmp "./base-outputs/examples/$example_name/app.vk" "./tagged-outputs/examples/$example_name/app.vk"; then
129-
# echo "✅ $example_name verification keys are identical"
130-
# else
131-
# echo "❌ $example_name verification keys differ"
132-
# failed=1
133-
# fi
134-
# fi
135-
# done
136-
# if [ $failed -eq 1 ]; then
137-
# echo "❌ Some example verification keys differ - versioning policy violated"
138-
# exit 1
139-
# else
140-
# echo "✅ All example verification keys are identical"
141-
# fi
120+
- name: Compare example verification keys
121+
run: |
122+
echo "Comparing example verification keys between base branch and ${{ env.version }}..."
123+
failed=0
124+
for example in examples/*/; do
125+
if [ -f "$example/Cargo.toml" ]; then
126+
example_name=$(basename "$example")
127+
echo "Checking example: $example_name"
128+
if cmp "./base-outputs/examples/$example_name/app.vk" "./tagged-outputs/examples/$example_name/app.vk"; then
129+
echo "✅ $example_name verification keys are identical"
130+
else
131+
echo "❌ $example_name verification keys differ"
132+
failed=1
133+
fi
134+
fi
135+
done
136+
if [ $failed -eq 1 ]; then
137+
echo "❌ Some example verification keys differ - versioning policy violated"
138+
exit 1
139+
else
140+
echo "✅ All example verification keys are identical"
141+
fi
142142
143143
- name: Compare benchmark verification keys
144144
run: |

CHANGELOG.md

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,21 +8,25 @@ and this project follows a versioning principles documented in [VERSIONING.md](.
88
## v1.4.0-rc (Unreleased)
99

1010
### Added
11+
- (Verifier) An `AggVerifyingKey` struct is introduced so that verifying the final STARK proof does not require the proving key.
1112
- (Config) Added `addr_spaces` vector of `AddressSpaceHostConfig` to `MemoryConfig`.
1213

1314
### Changed
15+
- (Verifier) The `MultiStarkVerifyingKey`s for all existing App and Agg configs remain unchanged. However the serialized binary for the `AppVerifyingKey` has changed due to the removal of `as_offset` from `MemoryDimensions` (see below).
1416
- (Toolchain) Removed `step` from `Program` struct because `DEFAULT_PC_STEP = 4` is always used.
1517
- (Config) The `SystemConfig` default now has `continuation_enabled: true` instead of the previous default of `false`. This is a **breaking change**.
1618
- (Config) The `clk_max_bits` field in `MemoryConfig` has been renamed to `timestamp_max_bits`.
17-
- (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.
19+
- (Config) The `as_offset` field in `MemoryDimensions` has been removed and replaced by the constant `ADDR_SPACE_OFFSET = 1`.
1820
- (ISA) Field arithmetic instructions now restrict address spaces `e, f` to be either `0` or `4`, instead of allowing any address space.
1921
- (ISA) RV32IM load instructions are now restricted to address space `2` only, instead of allowing address spaces `0`, `1`, or `2`.
2022
- (ISA) The maximum valid pointer value in address space `1` (register address space) is now `127`, corresponding to 32 registers with 4 byte limbs each.
2123
- (ISA) Memory accesses now have configurable minimum block size requirements per address space. Address spaces `1`, `2`, and `3` require minimum block size of 4. Native address space (`4`) allows minimum block size of 1. Address spaces beyond `4` default to minimum block size of 1 but are configurable.
24+
- (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.
25+
- (Prover) The internal format of `VmCommittedExe` has changed. Moreover the main proving flows have been updated so they rely primarily on `VmExe` and not `VmCommittedExe`.
2226
- (CLI) The `prove stark` output proof no longer contains the `app_commit`. The `verify stark` command now needs to specify the target name to read the `app_commit` stored from a previous call to the `commit` command.
2327
- (CLI) The `setup` command now stores an `agg.vk` verifying key and the `verify stark` command now reads `agg.vk` instead of `agg.pk`.
2428
- (SDK) The `Sdk` is now specific to a VM config, with default constructors `Sdk::standard()` and `Sdk::riscv32()`. The methods of the `Sdk` have been updated for a better developer experience.
25-
- (SDK) An `AggVerifyingKey` struct is introduced so that verifying the final STARK proof does not require the proving key. The `Halo2ProvingKey` struct now internally contains `Arc` so it can be cloned and shared.
29+
- (SDK) The `Halo2ProvingKey` struct now internally contains `Arc` so it can be cloned and shared.
2630

2731
## v1.3.0 (2025-07-15)
2832

crates/vm/src/system/program/trace.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,6 @@ use crate::{
3535
},
3636
};
3737

38-
// TODO[jpw]: separate so we can have Arc<VmExe> separate from CommittedTraceData
3938
/// **Note**: this struct stores the program ROM twice: once in [VmExe] and once as a cached trace
4039
/// matrix `trace`.
4140
#[derive(Serialize, Deserialize, Derivative)]

0 commit comments

Comments
 (0)