Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
990e85f
chore: increment crate versions to v0.26.0
bobbinth May 1, 2026
0cd8f30
chore(ci): check fuzz crates in build (#990)
huitseeker May 4, 2026
e25383d
ci: fix cargo-fuzz install on nightly (#994)
huitseeker May 7, 2026
458c230
Migrate to rand 0.10.0 (#995)
huitseeker May 7, 2026
35d103d
fix: link fuzz targets in PR checks (#999)
huitseeker May 9, 2026
aa3966b
ci: add GitHub Actions hygiene checks (#1005)
huitseeker May 10, 2026
9b4f904
Per-AIR quotient evaluation on the native coset (#991)
Al-Kindi-0 May 12, 2026
4e578ab
refactor(stark): consolidate utility helpers into `util` module
adr1anh May 10, 2026
631c802
Merge pull request #1000 from 0xMiden/adr1anh/reorg-stark
adr1anh May 13, 2026
5277710
perf: fuse per-group accumulator and defer allocations (#1008)
Nashtare May 13, 2026
45d5846
Add BackendReader trait (#986)
sergerad May 14, 2026
9346332
refactor(domain): Coset trait, EvaluationDomain wrapper, fallible con…
adr1anh May 11, 2026
ab2cbb5
refactor(pcs/fri): route LDE blowup through LiftedDomain
adr1anh May 11, 2026
ebabbeb
refactor(stark): unify ascending instance-domain construction
adr1anh May 13, 2026
cdf4c9c
refactor(domain): canonical_lde_shift returns Option, panic-doc audit
adr1anh May 14, 2026
f98a382
Merge pull request #993 from 0xMiden/adr1anh/uniform-coset
adr1anh May 14, 2026
dd92644
ci: consolidate rustdoc validation
huitseeker May 14, 2026
2729698
Merge pull request #1015 from 0xMiden/fix/docs-ci-rustdoc
bitwalker May 14, 2026
01c5097
docs: add security policy (#1016)
huitseeker May 15, 2026
bdcc3f7
chore: bump plonky3 deps (#1019)
Nashtare May 18, 2026
08badb0
Merge branch 'main' into next
bobbinth May 22, 2026
1dc41c1
chore: fix fuzz build
bobbinth May 22, 2026
e62b12b
refactor(smt/large_forest): introduce a two-phase mutation API (#1018)
kkovaacs May 27, 2026
249b22c
Fix RocksDB CLI safety, serde canonicality, and WordWrapper paths (#1…
huitseeker May 28, 2026
dda2d19
refactor: simplify backend interface for LargetSmtForest (#1030)
kkovaacs May 29, 2026
a07721c
refactor: change LargeSmt cache depth from 24 to 16 (#1011)
sergerad May 29, 2026
7187a2d
refactor(lifted-air,lifted-stark): redesign the multi-AIR statement a…
adr1anh May 19, 2026
225f2df
refactor(lifted-air,lifted-stark): add validate + debug modules + max…
adr1anh May 20, 2026
b241f4c
refactor(lifted-air,lifted-stark): switch prover/verifier to new vali…
adr1anh May 20, 2026
d533f0f
refactor(lifted-air,lifted-stark): replace Instance/ProverInstance tr…
adr1anh May 20, 2026
e2c15dd
refactor(lifted-air): make MultiAir own its AIRs via airs()
adr1anh May 21, 2026
5d4df89
refactor(lifted-air,lifted-stark): address PR review comments
adr1anh May 21, 2026
f41d177
refactor(lifted-stark): make TraceOrder crate-internal; rename instan…
adr1anh May 21, 2026
3688d76
refactor(lifted-air,lifted-stark): inline validation into Statement/P…
adr1anh May 21, 2026
4ae6aff
test(lifted-stark): prune redundant error-return tests
adr1anh May 21, 2026
4b572e4
build(lifted-air): drop unused p3-goldilocks dev-dependency
adr1anh May 21, 2026
d018728
build(lifted-air): disable test harness for testless lib target
adr1anh May 22, 2026
3bc5916
docs(lifted-air,lifted-stark): tighten docs, drop dead placeholders, …
adr1anh May 22, 2026
1224489
refactor(lifted-air,lifted-stark): move aux-trace building to LiftedA…
adr1anh May 22, 2026
0d7b310
test(lifted-stark): replace bus-mock test with minimal eval_external …
adr1anh May 22, 2026
1a64830
docs(lifted-stark): refresh READMEs against the multi-AIR API
adr1anh May 22, 2026
cc7f6a9
docs(stark): fix dangling lifting.md links and a private-field doc re…
adr1anh May 22, 2026
4742506
refactor(lifted-stark): clarify quotient-degree calc and harden windo…
adr1anh May 26, 2026
224f3f5
Address lifted STARK review nits
adr1anh May 27, 2026
be6f35c
Address lifted STARK review feedback
adr1anh May 28, 2026
fe25ca4
refactor(lifted-stark): simplify transcript shape binding docs
adr1anh May 29, 2026
0b7bf44
refactor(stark): reduce public API surface + rename proof view types
adr1anh May 21, 2026
2b5336e
refactor(stark): drop panicking domain constructors
adr1anh May 21, 2026
8a0064c
docs(stark): propagate proof-view renames + de-link private domain refs
adr1anh May 22, 2026
19b3092
refactor(stark): validate fixed-arity FRI target
adr1anh May 28, 2026
c4eda48
fix(lifted-air,lifted-stark): frame observed inputs and reject one-ro…
adr1anh May 31, 2026
537f113
docs(lifted-stark): clarify per-air quotient construction
adr1anh May 31, 2026
24260bb
fix(lifted-stark): support one-chunk quotients
adr1anh May 31, 2026
cfa5b88
refactor(lifted-stark): inline aux trace construction
adr1anh Jun 1, 2026
e4bbda6
docs: clarify multi-air assertion terminology
adr1anh Jun 1, 2026
050dec5
Merge pull request #992 from 0xMiden/adr1anh/external-public-inputs
adr1anh Jun 1, 2026
adb4396
refactor: make iterators of LargeSmt fallible (#1032)
kkovaacs Jun 2, 2026
fc57cdb
feat(lifted-air,lifted-stark): preprocessed traces as a reusable setu…
adr1anh Jun 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/actions-hygiene.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
name: GitHub Actions hygiene

on:
push:
branches: [main, next]
paths:
- ".github/workflows/**"
- ".github/actions/**"
- ".github/actionlint.yaml"
pull_request:
types: [opened, reopened, synchronize]
paths:
- ".github/workflows/**"
- ".github/actions/**"
- ".github/actionlint.yaml"
workflow_dispatch:

permissions: {}

jobs:
actionlint:
name: Run actionlint
runs-on: ubuntu-latest
permissions:
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # pin@v4
with:
persist-credentials: false

- name: Set up Go
uses: actions/setup-go@4a3601121dd01d1626a1e23e37211e3254c1c06c # pin@v6
with:
go-version: "1.25.x"

- name: Install actionlint
run: go install github.com/rhysd/actionlint/cmd/actionlint@v1.7.12

- name: Run actionlint
run: |
"$(go env GOPATH)/bin/actionlint" -config-file .github/actionlint.yaml

zizmor:
name: Run zizmor
runs-on: ubuntu-latest
permissions:
actions: read
contents: read
steps:
- name: Checkout repository
uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # pin@v4
with:
persist-credentials: false

- name: Run zizmor
uses: zizmorcore/zizmor-action@71321a20a9ded102f6e9ce5718a2fcec2c4f70d8 # pin@v0.5.2
with:
advanced-security: false
version: 1.23.1
25 changes: 25 additions & 0 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,3 +56,28 @@ jobs:
rustup default ${{ matrix.toolchain }}
rustup target add wasm32-wasip2
make build-target-miden

fuzz-check:
name: Check fuzz crates
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # pin@v4
with:
persist-credentials: false
- name: Cleanup large tools for build space
uses: ./.github/actions/cleanup-runner
- name: Install Rust toolchain
run: |
rustup toolchain install --no-self-update
rustup toolchain install --no-self-update nightly
- uses: WarpBuilds/rust-cache@9d0cc3090d9c87de74ea67617b246e978735b1a1 # pin@v2
with:
# Fuzz crates are separate workspaces, so cache them explicitly.
workspaces: |
.
miden-crypto-fuzz
miden-serde-utils/fuzz
- name: Install cargo-fuzz
run: cargo +nightly install cargo-fuzz --version 0.13.1
- name: Check fuzz crates
run: make check-fuzz
18 changes: 8 additions & 10 deletions .github/workflows/fuzz.yml
Original file line number Diff line number Diff line change
Expand Up @@ -33,12 +33,11 @@ jobs:
persist-credentials: false
- name: Cleanup large tools for build space
uses: ./.github/actions/cleanup-runner
- uses: dtolnay/rust-toolchain@5b842231ba77f5c045dba54ac5560fed2db780e2 # pin@nightly
with:
toolchain: nightly
- uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # pin@v2
- name: Install Rust toolchain
run: rustup update --no-self-update nightly
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # pin@v2.9.1
- name: Install cargo-fuzz
run: cargo +nightly install cargo-fuzz --locked
run: cargo +nightly install cargo-fuzz --version 0.13.1
- name: Run fuzz target (smoke test)
working-directory: miden-serde-utils
run: |
Expand All @@ -59,12 +58,11 @@ jobs:
persist-credentials: false
- name: Cleanup large tools for build space
uses: ./.github/actions/cleanup-runner
- uses: dtolnay/rust-toolchain@5b842231ba77f5c045dba54ac5560fed2db780e2 # pin@nightly
with:
toolchain: nightly
- uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # pin@v2
- name: Install Rust toolchain
run: rustup update --no-self-update nightly
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # pin@v2.9.1
- name: Install cargo-fuzz
run: cargo +nightly install cargo-fuzz --locked
run: cargo +nightly install cargo-fuzz --version 0.13.1
- name: Run fuzz target (smoke test)
run: |
# Build the fuzz target first
Expand Down
19 changes: 5 additions & 14 deletions .github/workflows/lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ jobs:
run: |
rustup update --no-self-update nightly
rustup +nightly component add rustfmt
- uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # pin@v2
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # pin@v2.9.1
with:
save-if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/next') }}
- name: Fmt
Expand All @@ -50,7 +50,7 @@ jobs:
persist-credentials: false
- name: Cleanup large tools for build space
uses: ./.github/actions/cleanup-runner
# Added: LLVM/Clang for RocksDB/bindgen
# `make doc` uses --all-features, which enables RocksDB with bindgen.
- name: Install LLVM/Clang
uses: ./.github/actions/install-llvm
with:
Expand All @@ -59,7 +59,7 @@ jobs:
run: |
rustup update --no-self-update
rustup component add clippy
- uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # pin@v2
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # pin@v2.9.1
with:
save-if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/next') }}
- name: Clippy
Expand Down Expand Up @@ -106,7 +106,7 @@ jobs:
version: "17"
- name: Rustup
run: rustup update --no-self-update
- uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # pin@v2
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # pin@v2.9.1
with:
save-if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/next') }}
- name: Build docs
Expand Down Expand Up @@ -150,15 +150,6 @@ jobs:
- name: Zeroize audit
run: make zeroize-audit

fuzz-check:
name: check fuzz crate
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # pin@v4
with:
persist-credentials: false
- run: make check-fuzz

check-features:
name: check all feature combinations
runs-on: ubuntu-latest
Expand All @@ -178,7 +169,7 @@ jobs:
- uses: taiki-e/install-action@055f5df8c3f65ea01cd41e9dc855becd88953486 # pin@v2.75.18
with:
tool: cargo-hack
- uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # pin@v2
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # pin@v2.9.1
with:
save-if: ${{ github.event_name == 'push' && (github.ref == 'refs/heads/main' || github.ref == 'refs/heads/next') }}
- name: Check all feature combinations
Expand Down
22 changes: 1 addition & 21 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -90,7 +90,7 @@ jobs:
persist-credentials: false
- name: Cleanup large tools for build space
uses: ./.github/actions/cleanup-runner
- uses: Swatinem/rust-cache@42dc69e1aa15d09112580998cf2ef0119e2e91ae # pin@v2
- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # pin@v2.9.1
- name: Install LLVM/Clang
uses: ./.github/actions/install-llvm
with:
Expand All @@ -101,26 +101,6 @@ jobs:
rustup default ${{ matrix.toolchain }}
make test-docs

doc-build:
name: doc-build
runs-on: ubuntu-latest
if: ${{ github.event_name == 'pull_request' && (github.base_ref == 'main' || github.base_ref == 'next') }}
steps:
- uses: actions/checkout@34e114876b0b11c390a56381ad16ebd13914f8d5 # pin@v4
with:
persist-credentials: false
- name: Cleanup large tools for build space
uses: ./.github/actions/cleanup-runner
- name: Install LLVM/Clang
uses: ./.github/actions/install-llvm
with:
version: "17"
- name: Build docs
run: |
rustup update --no-self-update nightly
rustup default nightly
make doc

test-p3-parallel:
name: test Miden STARK crates parallel ${{ matrix.toolchain }}
runs-on: ubuntu-latest
Expand Down
17 changes: 17 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,20 @@
## 0.26.0 (TBD)

- [BREAKING] Added reusable preprocessed trace setup artifacts for Lifted STARKs: AIRs can declare fixed preprocessed columns, provers build and reuse a `Preprocessed` commitment bundle, and verifier instances receive the trusted preprocessed commitment ([#1021](https://github.com/0xMiden/crypto/pull/1021)).
- [BREAKING] Extracted `BackendReader`, allowing `LargeSmtForest<S>` to work with read-only storage backends ([#986](https://github.com/0xMiden/crypto/pull/986)).
- Optimized prover quotient evaluation by evaluating each AIR's quotient on its native coset (size `n_j · D_j`) and lifting per-AIR, instead of always on the global maximum coset; constraint division is fused into the constraint evaluation loop ([#991](https://github.com/0xMiden/crypto/pull/991)).
- [BREAKING] Replaced the per-AIR witness/aux-builder proving model (`AirInstance`, `AirWitness`, `AuxBuilder`, `prove_multi` / `verify_multi`) with a `MultiAir` trait that owns its AIRs (each builds its own aux trace via `LiftedAir::build_aux_trace`), plus validated `Statement` / `ProverStatement` structs carried by `ProverInstance` / `VerifierInstance`. `LiftedAir::reduced_aux_values` and `num_var_len_public_inputs` are replaced by `MultiAir::eval_external`, which returns the cross-AIR external assertions as a flat list of extension-field values that must equal zero, fed by an `aux_inputs` slice whose schema each `MultiAir` owns and validates ([#992](https://github.com/0xMiden/crypto/pull/992)).
- [BREAKING] Refactored `miden-lifted-stark::domain` around a uniform `Coset` trait shared by `TwoAdicSubgroup` and `TwoAdicCoset`, slimmed the `LiftedDomain` surface (drops dead getters, removes silently-dispatched `points`/`bit_reversed_points`/`vanishing_at` in favour of explicit `trace_subgroup()` / `lde_coset()` access), made `LiftedDomain` constructors fallible, moved selector logic onto `LiftedDomain`, and changed `log_blowup` to return `u8` ([#993](https://github.com/0xMiden/crypto/pull/993)).
- [BREAKING] Upgraded direct `rand` dependencies to 0.10, updating RNG trait bounds and removing direct `rand_hc` usage ([#995](https://github.com/0xMiden/crypto/pull/995)).
- [BREAKING] Reorganized `miden-lifted-stark` internals: consolidated `align`, `bitrev`, `horner`, and `packing` helpers under a new `util` module; removed the legacy `fri::*` re-export facade ([#1000](https://github.com/0xMiden/crypto/pull/1000)).
- perf: fuse per-group accumulator and defer allocations ([#1008](https://github.com/0xMiden/crypto/pull/1008)).
- [BREAKING] Reduced `LargeSmt<S>` cache depth from 24 to 16 levels ([#1011](https://github.com/0xMiden/crypto/pull/1011)).
- [BREAKING] Implemented two-phase commit_mutations() / apply_mutations()-style API for `LargeSmtForest` ([#1018](https://github.com/0xMiden/crypto/pull/1018)).
- [BREAKING] Tightened the `miden-lifted-stark` public API surface: dropped the wide crate-root re-export list (callers now import from `miden_lifted_stark::air` and `miden_lifted_stark::{lmcs, pcs, proof, prover, verifier}` directly), demoted internal submodules to `pub(crate)`/`pub(super)`, and folded the `transcript` module into `proof` (`TranscriptChallenger` / `TranscriptData` / `TranscriptError` are re-exported there). Renamed the proof artifact types — `StarkProof` → `StarkProofData` (wire artifact) and `StarkTranscript` → `StarkProof` (parsed view, built via `StarkProof::from_data`) — and `*::from_verifier_channel` → `*::read_from_channel` on the PCS sub-proofs. Dropped the panicking domain constructors (`TwoAdicCoset::unshifted`, `LiftedDomain::{canonical, sub_domain}`) in favour of the fallible `try_*` variants ([#1020](https://github.com/0xMiden/crypto/pull/1020)).
- [BREAKING] Fixed RocksDB CLI safety, non-canonical serde input handling, and qualified `WordWrapper` derive paths ([#1022](https://github.com/0xMiden/crypto/pull/1022)).
- [BREAKING] Simplify `LargeSmtForest` backend API ([#1030](https://github.com/0xMiden/crypto/pull/1030)).
- [BREAKING] Made `LargeSmt` leaf/entry/inner node iterators fallible.

## 0.25.1 (2026-05-21)

- Fixed `miden-lifted-stark` builds when `p3-maybe-rayon/parallel` is enabled without `miden-lifted-stark/parallel` ([#1023](https://github.com/0xMiden/crypto/pull/1023)).
Expand Down
Loading
Loading