|
1 | 1 | # Changelog
|
2 | 2 |
|
| 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 | + |
3 | 59 | ## v1.1.2 (2025-05-08)
|
4 | 60 |
|
5 | 61 | - 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