Skip to content

Commit 48b049e

Browse files
authored
chore: merge v0.23.0 release
2 parents 467484b + 7df68f9 commit 48b049e

File tree

143 files changed

+13523
-2690
lines changed

Some content is hidden

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

143 files changed

+13523
-2690
lines changed

.github/actions/workspace-release/action.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ runs:
3232
3333
- name: Install Rust toolchain
3434
uses: dtolnay/rust-toolchain@stable
35+
with:
36+
toolchain: "1.90"
3537

3638
- name: Cache cargo registry and git index
3739
uses: actions/cache@v4
@@ -55,8 +57,14 @@ runs:
5557
shell: bash
5658
run: cargo binstall --no-confirm --force cargo-msrv
5759

60+
- name: Install Rust 1.91 for cargo-msrv
61+
shell: bash
62+
run: rustup toolchain install 1.91
63+
5864
- name: Check MSRV
5965
shell: bash
66+
env:
67+
RUSTUP_TOOLCHAIN: "1.91"
6068
run: |
6169
export PATH="$HOME/.cargo/bin:$PATH"
6270
./scripts/check-msrv.sh

.github/workflows/docs.yml

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Generates and deploys crate documentation to GitHub Pages
2+
3+
name: docs
4+
5+
on:
6+
push:
7+
branches:
8+
- next
9+
paths:
10+
- "**.rs"
11+
- "Cargo.toml"
12+
- "Cargo.lock"
13+
workflow_dispatch:
14+
15+
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
16+
permissions:
17+
contents: write
18+
pages: write
19+
id-token: write
20+
21+
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued
22+
concurrency:
23+
group: "pages"
24+
cancel-in-progress: false
25+
26+
jobs:
27+
docs:
28+
name: Generate and deploy crate documentation
29+
runs-on: ubuntu-latest
30+
steps:
31+
- uses: actions/checkout@main
32+
33+
- name: Cleanup large tools for build space
34+
uses: ./.github/actions/cleanup-runner
35+
36+
- name: Install LLVM/Clang
37+
uses: ./.github/actions/install-llvm
38+
with:
39+
version: "17"
40+
41+
- name: Generate documentation
42+
run: |
43+
rustup update --no-self-update
44+
rustup default stable
45+
make doc
46+
47+
- name: Deploy documentation
48+
uses: peaceiris/actions-gh-pages@373f7f263a76c20808c831209c920827a82a2847 # pin@v3
49+
with:
50+
github_token: ${{ secrets.GITHUB_TOKEN }}
51+
publish_dir: ./target/doc
52+
destination_dir: docs

.github/workflows/fuzz.yml

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ jobs:
2323
runs-on: ubuntu-latest
2424
strategy:
2525
fail-fast: false
26+
max-parallel: 1
2627
matrix:
2728
target: [primitives, collections, string, vint64, goldilocks, budgeted]
2829
timeout-minutes: 15
@@ -31,33 +32,38 @@ jobs:
3132
- name: Cleanup large tools for build space
3233
uses: ./.github/actions/cleanup-runner
3334
- uses: dtolnay/rust-toolchain@nightly
35+
with:
36+
toolchain: nightly
3437
- uses: Swatinem/rust-cache@v2
3538
- name: Install cargo-fuzz
36-
run: cargo install cargo-fuzz --locked
39+
run: cargo +nightly install cargo-fuzz --locked
3740
- name: Run fuzz target (smoke test)
3841
working-directory: miden-serde-utils
3942
run: |
40-
cargo fuzz run ${{ matrix.target }} -- -max_total_time=60 -runs=10000
43+
cargo +nightly fuzz run ${{ matrix.target }} -- -max_total_time=60 -runs=10000
4144
4245
fuzz-miden-crypto:
4346
name: fuzz miden-crypto (${{ matrix.target }})
4447
runs-on: ubuntu-latest
4548
strategy:
4649
fail-fast: false
50+
max-parallel: 1
4751
matrix:
48-
target: [word, merkle, smt_serde]
52+
target: [word, merkle, merkle_store, smt_serde, mmr, crypto, aead, signatures]
4953
timeout-minutes: 15
5054
steps:
5155
- uses: actions/checkout@main
5256
- name: Cleanup large tools for build space
5357
uses: ./.github/actions/cleanup-runner
5458
- uses: dtolnay/rust-toolchain@nightly
59+
with:
60+
toolchain: nightly
5561
- uses: Swatinem/rust-cache@v2
5662
- name: Install cargo-fuzz
57-
run: cargo install cargo-fuzz --locked
63+
run: cargo +nightly install cargo-fuzz --locked
5864
- name: Run fuzz target (smoke test)
5965
run: |
6066
# Build the fuzz target first
61-
cargo fuzz build --fuzz-dir miden-crypto-fuzz ${{ matrix.target }}
67+
cargo +nightly fuzz build --fuzz-dir miden-crypto-fuzz ${{ matrix.target }}
6268
# Run directly to avoid cargo-fuzz wrapper SIGPIPE issue
6369
miden-crypto-fuzz/target/x86_64-unknown-linux-gnu/release/${{ matrix.target }} -max_total_time=60 -runs=10000

.github/workflows/lint.yml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,17 @@ jobs:
118118
tool: cargo-deny
119119
- run: make cargo-deny
120120

121+
zeroize-audit:
122+
name: zeroize-audit
123+
runs-on: ubuntu-latest
124+
steps:
125+
- uses: actions/checkout@v4
126+
- name: Rustup
127+
run: |
128+
rustup update --no-self-update nightly
129+
- name: Zeroize audit
130+
run: make zeroize-audit
131+
121132
fuzz-check:
122133
name: check fuzz crate
123134
runs-on: ubuntu-latest

.github/workflows/test.yml

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ jobs:
2525
matrix:
2626
toolchain: [stable, nightly]
2727
os: [ubuntu]
28-
args: [default, hashmaps, no-std, large-smt]
28+
args: [default, no-std, large-smt]
2929
timeout-minutes: 30
3030
steps:
3131
- uses: actions/checkout@main
@@ -69,6 +69,8 @@ jobs:
6969
if: ${{ github.event_name == 'pull_request' && (github.base_ref == 'main' || github.base_ref == 'next') }}
7070
strategy:
7171
fail-fast: false
72+
matrix:
73+
toolchain: [stable]
7274
steps:
7375
- uses: actions/checkout@main
7476
- name: Cleanup large tools for build space
@@ -83,3 +85,21 @@ jobs:
8385
rustup update --no-self-update
8486
rustup default ${{ matrix.toolchain }}
8587
make test-docs
88+
89+
doc-build:
90+
name: doc-build
91+
runs-on: ubuntu-latest
92+
if: ${{ github.event_name == 'pull_request' && (github.base_ref == 'main' || github.base_ref == 'next') }}
93+
steps:
94+
- uses: actions/checkout@main
95+
- name: Cleanup large tools for build space
96+
uses: ./.github/actions/cleanup-runner
97+
- name: Install LLVM/Clang
98+
uses: ./.github/actions/install-llvm
99+
with:
100+
version: "17"
101+
- name: Build docs
102+
run: |
103+
rustup update --no-self-update nightly
104+
rustup default nightly
105+
make doc

CHANGELOG.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,27 @@
1+
## 0.23.0 (2026-03-11)
2+
3+
- Replaced `Subtree` internal storage with bitmask layout ([#784](https://github.com/0xMiden/crypto/pull/784)).
4+
- [BREAKING] `PartialMmr::open()` now returns `Option<MmrProof>` instead of `Option<MmrPath>` ([#787](https://github.com/0xMiden/crypto/pull/787)).
5+
- [BREAKING] Refactored BLAKE3 to use `Digest<N>` struct, added `Digest192` type alias ([#811](https://github.com/0xMiden/crypto/pull/811)).
6+
- [BREAKING] Added validation to `PartialMmr::from_parts()` and `Deserializable` implementation, added `from_parts_unchecked()` for performance-critical code ([#812](https://github.com/0xMiden/crypto/pull/812)).
7+
- [BREAKING] Removed `hashbrown` dependency and `hashmaps` feature; `Map`/`Set` type aliases are now tied to the `std` feature ([#813](https://github.com/0xMiden/crypto/pull/813)).
8+
- [BREAKING] Renamed `NodeIndex::value()` to `NodeIndex::position()`, `NodeIndex::is_value_odd()` to `NodeIndex::is_position_odd()`, and `LeafIndex::value()` to `LeafIndex::position()` ([#814](https://github.com/0xMiden/crypto/pull/814)).
9+
- Fixed `LargeSmtForest::truncate` to remove emptied lineages from `non_empty_histories` ([#818](https://github.com/0xMiden/crypto/pull/818)).
10+
- [BREAKING] Fixed OOMs in Merkle/SMT deserialization ([#820](https://github.com/0xMiden/crypto/pull/820)).
11+
- Fixed `SmtForest` to remove nodes with zero reference count from store ([#821](https://github.com/0xMiden/crypto/pull/821)).
12+
- Cross-checked RPO test vectors against the Python reference implementation after state layout change ([#822](https://github.com/0xMiden/crypto/pull/822)).
13+
- Fixed tuple `min_serialized_size()` to exclude alignment padding, fixing `BudgetedReader` rejecting valid data ([#827](https://github.com/0xMiden/crypto/pull/827)).
14+
- Fixed possible panic in `XChaCha::decrypt_bytes_with_associated_data` and harden deserialization with fuzzing across 7 new targets ([#836](https://github.com/0xMiden/crypto/pull/836)).
15+
- Added `Signature::from_der()` for ECDSA signatures over secp256k1 ([#842](https://github.com/0xMiden/crypto/pull/842)).
16+
- [BREAKING] Added info context field to secret box, bind IES HKDF info to a stable context string, scheme identifier, and ephemeral public key bytes. ([#843](https://github.com/0xMiden/crypto/pull/843)).
17+
- Use `read_from_bytes_with_budget()` instead of read_from_bytes for deserialization from untrusted sources, setting the budget to the actual input byte slice length. ([#846](https://github.com/0xMiden/crypto/pull/846)).
18+
- [BREAKING] Removed `PartialEq`/`Eq` for AEAD `SecretKey` in non-test builds, fix various hygiene issues in dealing with secret keys ([#849](https://github.com/0xMiden/crypto/pull/849)).
19+
- Added `PublicKey::from_der()` for ECDSA public keys over secp256k1 ([#855](https://github.com/0xMiden/crypto/pull/855)).
20+
- [BREAKING] Fixed `NodeIndex::to_scalar_index()` overflow at depth 64 by returning `Result<u64, MerkleError>` ([#865](https://github.com/0xMiden/crypto/issues/865)).
21+
- [BREAKING] Removed `RpoRandomCoin` and `RpxRandomCoin` and introduced a Poseidon2-based `RandomCoin` ([#871](https://github.com/0xMiden/crypto/pull/871)).
22+
- Harden MerkleStore deserialization and fuzz coverage ([#878](https://github.com/0xMiden/crypto/pull/878)).
23+
- [BREAKING] Upgraded Plonky3 from 0.4.2 to 0.5.0 and replaced `p3-miden-air`, `p3-miden-fri`, and `p3-miden-prover` with the unified `p3-miden-lifted-stark` crate. The `stark` module now re-exports the Lifted STARK proving system from [p3-miden](https://github.com/0xMiden/p3-miden).
24+
125
## 0.22.4 (2026-03-03)
226

327
- Make `SmtLeaf::get_value` public ([#872](https://github.com/0xMiden/crypto/pull/872)).

0 commit comments

Comments
 (0)