Skip to content

release: v1.2.1-rc.0 #1646

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Draft
wants to merge 14 commits into
base: main
Choose a base branch
from
Draft

release: v1.2.1-rc.0 #1646

wants to merge 14 commits into from

Conversation

jonathanpwang
Copy link
Contributor

This should be rebase merged

nyunyunyunyu and others added 4 commits May 9, 2025 13:45
- Remove `max_num_public_values` in `Program`/`Elf`.
- Improve serialization/deserialization of `Program`.

For a Program with 100,000 instructions:
Previous:
- Serialize: 3.1969ms
- Deserialize: 3.2417ms
- Size: 3625020 bytes

Now:
- Serialize: 1.3015ms
- Deserialize: 1.9343ms
- Size: 4000024 bytes

closes INT-3131
closes INT-3771
Added a build script that automatically adds calls to `moduli_init,
complex_init, sw_init` appropriately by reading the vm config.
…1603)

We no longer need to manually call `setup_*` at the start of main for
the moduli and curves. Instead, setup is automatically done on first use
of each modulus or curve.

Depends on #1596

---------

Co-authored-by: Jonathan Wang <[email protected]>
delete getrandom dependency from platform since getrandom now makes
enabling of the custom backend opt-in via extern function and --cfg flag

closes INT-3934

This comment has been minimized.

…ons (#1647)

Resolves INT-4000, INT-3883, and INT-3662. In general, we would like
`cargo openvm build` to align as closely with `cargo build` as possible.
OpenVM users should be able to almost completely replace the latter with
the former in their development workflows.

Implements the following:

- Parity between `cargo openvm build` and `cargo build` options
- Ability to build multiple targets when building at the workspace level
- `cargo openvm build` works outside of project root
- Default paths in OpenVM CLI evaluate environment variable `HOME` at
runtime

OpenVM-generated artifacts being stored in `${CARGO_TARGET_DIR}/.openvm`
is still to be implemented, but in order to maintain coherency between
`cargo openvm build` and `cargo openvm run/prove` this change will be
added later.

This comment has been minimized.

- Add new type `E2eStarkProof` as the format of the final internal
proof. `E2eStarkProof` supports `Encode` so it can be deserialized in
other languages.
- Add function `wrap_e2e_stark_proof` to wrap the final internal proof
to `RootVerifierInput`.
- Add `cargo openvm prove stark` to generate e2e stark proof.

closes INT-3784
- Add `kv_store` into `Streams`. More details at `docs/specs/ISA.md`.
- Add a new phantom instruction `Rv32HintLoadByKey` which can hint data
based on a key at runtime. More details at `docs/specs/ISA.md`.
- SDK support will be added in the future PRs.

close INT-3893
- Add a function `build_kernel_asm` into `RootVmVerifierConfig`. The
generated ASM can be used in kernel functions for guest program to
verify starks. More details could be found in the doc comments of the
function.
- Fix a confusing naming. `num_public_values` is actually the number of
user public values instead of the number of public values of the proof.
Use `num_user_public_values` instead.

closes INT-3894
- Add a RISC-V custom instruction `nativestorew` into
`Rv32IoTranspilerExtension`.
- Add macro `define_verify_openvm_stark`, which can define a function
for guest program to verify a stark proof.

closes INT-3896
- `AppExecutionCommit` stores `u32` instead of `BabyBear`.
- Rename `E2eStarkProof` to `VmStarkProof`.
- Add
`compute_hint_key_for_verify_openvm_stark`/`encode_rv32_public_values`
for users to prepare inputs for `verify_openvm_stark`. But it still
seems hard to understand what happens.
- Improve docs about `Rv32HintLoadByKey`.
- `cargo openvm setup` supports skipping halo2 proving keys.
- `cargo openvm setup` outputs halo2 PK and stark PK as separated files.
- `cargo openvm build` outputs `AppExecutionCommit` in json. The old
output(`exe_commit.bytes`) was incorrect.

close INT-3950

This comment has been minimized.

Fixes the path from which verifier contract is read.

I tested the full CI flow on an aws instance to double check everything
is working.

This comment has been minimized.

Adds CHANGELOG.md to the repo.

- [x] CHANGELOG notes for `v1.1.0` to be added

---------

Co-authored-by: Jonathan Wang <[email protected]>

This comment has been minimized.

Copy link

group app.proof_time_ms app.cycles app.cells_used leaf.proof_time_ms leaf.cycles leaf.cells_used
verify_fibair (-57 [-4.7%]) 1,149 334,023 17,675,870 - - -
fibonacci (-21 [-0.9%]) 2,448 1,500,277 50,589,503 - - -
regex (+18 [+0.2%]) 7,498 4,165,226 166,511,152 - - -
ecrecover (-40 [-2.9%]) 1,346 (+20412 [+7.1%]) 309,859 (+672913 [+4.7%]) 15,143,099 - - -
pairing (+44 [+1.0%]) 4,616 (+36796 [+2.0%]) 1,857,232 (+1223114 [+1.3%]) 97,055,521 - - -

Commit: 274c422

Benchmark Workflow

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants