Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
45c9c4f
challenger: add `observe_base_as_algebra_element ` to `FieldChallenge…
tcoratger Nov 18, 2025
fc1c39e
Add Preprocessed trace setup and VKs (#1150)
sai-deng Nov 18, 2025
77d4f38
monty31: const assert in dot product (#1154)
tcoratger Nov 19, 2025
a677ca6
Add preprocessed column support in batch-STARK (#1151)
sai-deng Nov 19, 2025
b1f8c02
Make generate_trace_rows_for_perm public (#1159)
4l0n50 Nov 24, 2025
dab374b
challenger: add unit tests for `observe_base_as_algebra_element` (#1155)
tcoratger Nov 24, 2025
3c7c004
refactor: deduplicate field JSON serialization tests (#1162)
andrewshab3 Nov 25, 2025
dbb5c7d
Update lookup traits and add folders with lookups (#1160)
LindaGuiga Nov 25, 2025
ad3f6aa
ExtensionBuilder for SymbolicAirBuilder (#1161)
LindaGuiga Nov 25, 2025
eb871f9
Derive Clone for PreprocessedInstanceMeta (#1166)
LindaGuiga Nov 27, 2025
c9d8c3e
matrix: make `HorizontallyTruncated` more generic (#1170)
tcoratger Dec 1, 2025
25d7554
uni-stark: add unit tests for SymbolicExpression (#1169)
tcoratger Dec 1, 2025
dd2f840
build(deps): update criterion requirement from 0.7 to 0.8 (#1173)
dependabot[bot] Dec 1, 2025
7cbdbbf
uni stark: small touchups (#1163)
tcoratger Dec 1, 2025
02cae28
Clarify quotient degree vs quotient chunks naming (#1156)
sai-deng Dec 1, 2025
94bc0a7
core: add error messages to error enums via thiserror (#1168)
tcoratger Dec 1, 2025
6e85b7a
feat: add `SubAirBuilder` module (#1172)
Nashtare Dec 1, 2025
cdfc24a
doc: add intra-doc links (#1174)
Nashtare Dec 1, 2025
8970106
Allow users to impl either permute or permute_mut (#1175)
SyxtonPrime Dec 2, 2025
2c6bb78
Integrate lookups to prover and verifier (#1165)
LindaGuiga Dec 4, 2025
01e5b79
Automated releases with `release-plz` (#909)
BGluth Dec 8, 2025
72ceb6e
challenger: add `observe_algebra_elements` method (#1176)
tcoratger Dec 9, 2025
39ff9cb
core: small touchups (#1186)
tcoratger Dec 9, 2025
84b8bf6
challenger: use `observe_algebra_slice` when possible (#1187)
tcoratger Dec 10, 2025
c7ce97f
feat: add PoW phase for batching in FRI commit phase (#1164)
zlangley Dec 11, 2025
c17e973
fix(keccak-air): align state indexing with Keccak specification (#1177)
Himess Dec 11, 2025
66b5f6b
Implement uniform sampling of bits from field elements (#1050)
Vindaar Dec 11, 2025
4f0841c
Stopped `examples` from being published (#1189)
BGluth Dec 11, 2025
8e72884
matrix: add `pad_to_power_of_two_height` (#1185)
tcoratger Dec 12, 2025
23a8ba2
feat: revert `builder.assert_bool` to previous impl (#1191)
zlangley Dec 12, 2025
58c6adc
chore: release v0.4.0 (#1193)
BGluth Dec 12, 2025
3899100
Removed `examples` from release-plz (#1195)
BGluth Dec 12, 2025
9555524
mersenne 31: optimize Poseidon2 for aarch64 Neon (#1196)
tcoratger Dec 15, 2025
1eed8e6
fix: remove undefined WIDTH const in interleave module (#1199)
Nashtare Dec 16, 2025
65bdaa3
chore: release v0.4.1 (#1205)
Nashtare Dec 18, 2025
a008faa
chore: refer to local paths for dev-dependencies (#1207)
Nashtare Dec 18, 2025
584ab6f
chore(field): Make `BinomialExtensionField::new` public (#1209)
adr1anh Dec 18, 2025
0b7afce
chore(field): revert making `BinomialExtensionField::new` public and …
adr1anh Dec 18, 2025
d421e32
refactor(field): Add packed field extraction helpers and FieldArray u…
adr1anh Dec 19, 2025
a9d5bbb
SIMD optimization for proof-of-work grinding in DuplexChallenger (#1208)
x-senpai-x Dec 23, 2025
0ee1f06
refactor: add public const `new` and `new_array` for all fields (#1222)
adr1anh Dec 23, 2025
af78dd9
bincode: deprecate and replace by postcard (#1224)
tcoratger Dec 23, 2025
f723a7f
Enable ZK for preprocessing and in batch-stark (#1178)
LindaGuiga Dec 26, 2025
52b9e41
feat: use compile-time asserts for const generic parameters (#1232)
Himess Dec 31, 2025
7bd1358
Small changes for recursive lookups (#1229)
LindaGuiga Jan 5, 2026
cfba46c
Avoid change of Pcs's `open` method signature (#1230)
LindaGuiga Jan 5, 2026
0835481
chore: release v0.4.2 (#1234)
Nashtare Jan 5, 2026
9321ea8
field: relax redundant bounds in From<[A; D]> for BinomialExtensionFi…
Olexandr88 Jan 5, 2026
7895d23
refactor: integrate `Lookup` logic into the `Air` trait (#1239)
Nashtare Jan 12, 2026
2453fb9
chore: minor fixes (#1246)
Nashtare Jan 13, 2026
38c8083
refactor: remove `PairBuilder` (#1250)
Nashtare Jan 13, 2026
a298b87
tests: add backward-compat proof fixtures for uni/batch verifiers (#1…
sai-deng Jan 13, 2026
80c1e0e
fix(air): correct IsTransition degree_multiple from 0 to 1
Al-Kindi-0 Jan 14, 2026
522249c
feat(air): add PeriodicAirBuilder trait for periodic column support
Al-Kindi-0 Jan 14, 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
39 changes: 39 additions & 0 deletions .github/workflows/release-plz.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
name: Release-plz

on:
pull_request:
types: [closed]
branches:
- main
# Allow manual re-runs if publish fails (e.g., crates.io outage)
workflow_dispatch:

jobs:
release-plz-release:
name: Release-plz release
runs-on: ubuntu-latest
if: >-
${{
github.repository_owner == 'Plonky3' &&
(
github.event_name == 'workflow_dispatch' ||
(github.event.pull_request.merged == true && contains(github.event.pull_request.labels.*.name, 'release'))
)
}}
permissions:
contents: write
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.RELEASE_PLZ_TOKEN }}
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
- name: Run release-plz
uses: release-plz/[email protected]
with:
command: release
env:
GITHUB_TOKEN: ${{ secrets.RELEASE_PLZ_TOKEN }}
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
72 changes: 36 additions & 36 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -62,11 +62,10 @@ transmute_undefined_repr = "allow"
cognitive_complexity = "allow"

[workspace.dependencies]
bincode = { version = "2.0.0", default-features = false }
blake3 = { version = "1.5", default-features = false }
clap = { version = "4.5.23", features = ["derive"] }
clap_derive = "4.5.18"
criterion = "0.7"
criterion = "0.8"
hashbrown = "0.16.0"
hex-literal = "1.0.0"
itertools = { version = "0.14.0", default-features = false, features = [
Expand All @@ -84,6 +83,7 @@ serde_json = "1.0.113"
sha2 = { version = "0.10.8", default-features = false }
sha3 = { version = "0.10.8", default-features = false }
spin = "0.10.0"
thiserror = { version = "2.0", default-features = false }
tiny-keccak = "2.0.2"
tracing = { version = "0.1.37", default-features = false, features = [
"attributes",
Expand All @@ -95,45 +95,45 @@ tracing-subscriber = { version = "0.3.17", default-features = false, features =
transpose = "0.2.3"

# Local dependencies
p3-air = { path = "air", version = "0.3.0" }
p3-baby-bear = { path = "baby-bear", version = "0.3.0" }
p3-blake3 = { path = "blake3", version = "0.3.0" }
p3-blake3-air = { path = "blake3-air", version = "0.3.0" }
p3-bn254 = { path = "bn254", version = "0.3.0" }
p3-challenger = { path = "challenger", version = "0.3.0" }
p3-circle = { path = "circle", version = "0.3.0" }
p3-commit = { path = "commit", version = "0.3.0" }
p3-dft = { path = "dft", version = "0.3.0" }
p3-air = { path = "air", version = "0.4.2" }
p3-baby-bear = { path = "baby-bear", version = "0.4.2" }
p3-blake3 = { path = "blake3", version = "0.4.2" }
p3-blake3-air = { path = "blake3-air", version = "0.4.2" }
p3-bn254 = { path = "bn254", version = "0.4.2" }
p3-challenger = { path = "challenger", version = "0.4.2" }
p3-circle = { path = "circle", version = "0.4.2" }
p3-commit = { path = "commit", version = "0.4.2" }
p3-dft = { path = "dft", version = "0.4.2" }
p3-examples = { path = "examples", version = "0.3.0" }
p3-field = { path = "field", version = "0.3.0" }
p3-field-testing = { path = "field-testing", version = "0.3.0" }
p3-fri = { path = "fri", version = "0.3.0" }
p3-goldilocks = { path = "goldilocks", version = "0.3.0" }
p3-interpolation = { path = "interpolation", version = "0.3.0" }
p3-keccak = { path = "keccak", version = "0.3.0" }
p3-keccak-air = { path = "keccak-air", version = "0.3.0" }
p3-koala-bear = { path = "koala-bear", version = "0.3.0" }
p3-lookup = { path = "lookup", version = "0.3.0" }
p3-matrix = { path = "matrix", version = "0.3.0" }
p3-maybe-rayon = { path = "maybe-rayon", version = "0.3.0" }
p3-mds = { path = "mds", version = "0.3.0" }
p3-merkle-tree = { path = "merkle-tree", version = "0.3.0" }
p3-mersenne-31 = { path = "mersenne-31", version = "0.3.0" }
p3-monty-31 = { path = "monty-31", version = "0.3.0" }
p3-multilinear-util = { path = "multilinear-util", version = "0.3.0" }
p3-poseidon = { path = "poseidon", version = "0.3.0" }
p3-poseidon2 = { path = "poseidon2", version = "0.3.0" }
p3-poseidon2-air = { path = "poseidon2-air", version = "0.3.0" }
p3-rescue = { path = "rescue", version = "0.3.0" }
p3-sha256 = { path = "sha256", version = "0.3.0" }
p3-symmetric = { path = "symmetric", version = "0.3.0" }
p3-uni-stark = { path = "uni-stark", version = "0.3.0" }
p3-util = { path = "util", version = "0.3.0" }
p3-field = { path = "field", version = "0.4.2" }
p3-field-testing = { path = "field-testing", version = "0.4.2" }
p3-fri = { path = "fri", version = "0.4.2" }
p3-goldilocks = { path = "goldilocks", version = "0.4.2" }
p3-interpolation = { path = "interpolation", version = "0.4.2" }
p3-keccak = { path = "keccak", version = "0.4.2" }
p3-keccak-air = { path = "keccak-air", version = "0.4.2" }
p3-koala-bear = { path = "koala-bear", version = "0.4.2" }
p3-lookup = { path = "lookup", version = "0.4.2" }
p3-matrix = { path = "matrix", version = "0.4.2" }
p3-maybe-rayon = { path = "maybe-rayon", version = "0.4.2" }
p3-mds = { path = "mds", version = "0.4.2" }
p3-merkle-tree = { path = "merkle-tree", version = "0.4.2" }
p3-mersenne-31 = { path = "mersenne-31", version = "0.4.2" }
p3-monty-31 = { path = "monty-31", version = "0.4.2" }
p3-multilinear-util = { path = "multilinear-util", version = "0.4.2" }
p3-poseidon = { path = "poseidon", version = "0.4.2" }
p3-poseidon2 = { path = "poseidon2", version = "0.4.2" }
p3-poseidon2-air = { path = "poseidon2-air", version = "0.4.2" }
p3-rescue = { path = "rescue", version = "0.4.2" }
p3-sha256 = { path = "sha256", version = "0.4.2" }
p3-symmetric = { path = "symmetric", version = "0.4.2" }
p3-uni-stark = { path = "uni-stark", version = "0.4.2" }
p3-util = { path = "util", version = "0.4.2" }

[workspace.package]
# General description field used for the sub-crates that are currently missing a description.
description = "Plonky3 is a toolkit for implementing polynomial IOPs (PIOPs), such as PLONK and STARKs."
version = "0.3.0"
version = "0.4.2"
edition = "2024"
license = "MIT OR Apache-2.0"
repository = "https://github.com/Plonky3/Plonky3"
Expand Down
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ Hashes
- [x] BLAKE3
- [ ] modifications to tune BLAKE3 for hashing small leaves
- [x] Keccak-256
- [x] SHA-256
- [x] Monolith


Expand Down
50 changes: 50 additions & 0 deletions RELEASING.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Releasing Plonky3

This document describes how to create a new release of Plonky3.

## Prerequisites

- Install [release-plz](https://release-plz.dev/docs/usage/installation)
- Set the `GIT_TOKEN` environment variable with a GitHub token that has permission to create PRs

## Creating a Release

1. Ensure your local `main` branch is up-to-date with the remote:
```bash
git checkout main
git pull origin main
```

2. Run the release script:
```bash
./create_release.sh
```

3. This creates a PR with:
- Version bumps for all crates (in lock-step)
- Updated changelogs based on conventional commits

4. Review and merge the PR. Once merged, CI automatically publishes all crates to crates.io.

## How It Works

- **Version grouping**: All crates share the same version via `version_group = "plonky3"` in `release-plz.toml`
- **Changelog generation**: Uses [git-cliff](https://git-cliff.org/) configured in `cliff.toml`
- **Version bump detection**: `release-plz` uses [cargo-semver-checks](https://github.com/obi1kenobi/cargo-semver-checks) to automatically detect the appropriate version bump:
- Breaking API changes (removed/changed public items) → major bump
- New public API additions → minor bump
- Bug fixes, internal changes, docs → patch bump
- **Conventional commits** (optional): If used, commit prefixes like `feat!:` can also signal breaking changes

## Troubleshooting

### CI publish failed

If the publish step fails (e.g., crates.io outage), you can manually re-run the workflow:

1. Go to Actions → Release-plz
2. Click "Run workflow" on the main branch

### release-plz says "no changes to release"

This means there are no conventional commits since the last release tag. Ensure your commits follow the [conventional commits](https://www.conventionalcommits.org/) format.
35 changes: 35 additions & 0 deletions air/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Changelog

All notable changes to this project will be documented in this file.

The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).

## [Unreleased]
## [0.4.2] - 2026-01-05
### Authors

## [0.4.1] - 2025-12-18
### Authors

## [0.4.0] - 2025-12-12
### Merged PRs
- Chore: add descriptions to all sub-crate manifests (#906) (Himess)
- Air: more unit tests for air utils (#936) (Thomas Coratger)
- Replace `Copy` with `Clone` in `AirBuilder`'s `Var` (#930) (Linda Guiga)
- Air: better doc for traits (#935) (Thomas Coratger)
- Chore: various small changes (#944) (Thomas Coratger)
- Weaken the trait bound of AirBuilder to allow `F` to be merely a Ring. (#977) (AngusG)
- Doc: add better doc in air and fix TODO (#1061) (Thomas Coratger)
- Clippy: small step (#1102) (Thomas Coratger)
- Clippy: add semicolon_if_nothing_returned (#1107) (Thomas Coratger)
- Add preprocessed/transparent columns to uni-stark (#1114) (o-k-d)
- Integrate lookups to prover and verifier (#1165) (Linda Guiga)

### Authors
- AngusG
- Himess
- Linda Guiga
- Thomas Coratger
- o-k-d

4 changes: 3 additions & 1 deletion air/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,11 @@ categories.workspace = true
[dependencies]
p3-field.workspace = true
p3-matrix.workspace = true
serde = { workspace = true, features = ["derive", "alloc"] }
tracing.workspace = true

[dev-dependencies]
p3-baby-bear.workspace = true
p3-baby-bear = { path = "../baby-bear" }

[lints]
workspace = true
Loading