Skip to content

Refactor of opening reduction (stage 6 & 7) #4044

Refactor of opening reduction (stage 6 & 7)

Refactor of opening reduction (stage 6 & 7) #4044

Workflow file for this run

name: Build and Test Jolt
on:
push:
branches: [main]
pull_request:
branches: ["**", main]
env:
RUSTFLAGS: -D warnings
CARGO_TERM_COLOR: always
concurrency:
group: ${{ github.workflow }}-${{ github.head_ref || github.ref || github.run_id }}
cancel-in-progress: true
jobs:
fmt:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: rustfmt
- name: cargo fmt
run: cargo fmt --all --check
clippy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
with:
components: clippy
- name: cargo clippy --features allocative,host
run: cargo clippy --all --all-targets --features allocative,host
- name: cargo clippy --no-default-features
run: cargo clippy --all --all-targets --no-default-features
machete:
runs-on: ubuntu-latest
steps:
- uses: bnjbvr/cargo-machete@main
- name: cargo machete
run: cargo machete --with-metadata
build-wasm:
name: Build Wasm
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install wasm32 target
run: rustup target add wasm32-unknown-unknown
- name: Build Wasm
working-directory: ./jolt-core
run: RUSTFLAGS='--cfg getrandom_backend="wasm_js"' cargo build --release --target wasm32-unknown-unknown
test-core:
runs-on: ubuntu-latest
name: Test jolt-core
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Cache Jolt RISC-V Rust toolchain
uses: actions/cache@v4
with:
key: jolt-rust-toolchain-${{hashFiles('guest-toolchain-tag')}}
path: ~/.jolt
- name: Install Jolt RISC-V Rust toolchain
run: cargo run install-toolchain
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Run jolt-core tests
run: cargo nextest run --release -p jolt-core
typos:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: crate-ci/typos@v1.30.0
with:
files: .
test-sdk:
name: jolt binary check
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Build the `jolt` binary
run: cargo build --release --bin jolt
- name: Use the `jolt` binary to generate code
run: ./target/release/jolt new sample_project
- name: Pin jolt-sdk to current commit in Cargo.toml files
run: |
COMMIT_HASH=$(git rev-parse HEAD)
# Pin jolt-sdk in the host Cargo.toml
sed -i 's|jolt-sdk = { git = "https://github.com/a16z/jolt", features = \["host"\] }|jolt-sdk = { git = "https://github.com/a16z/jolt", rev = "'$COMMIT_HASH'", features = ["host"] }|' sample_project/Cargo.toml
# Pin jolt-sdk in the guest Cargo.toml
sed -i 's|jolt = { package = "jolt-sdk", git = "https://github.com/a16z/jolt" }|jolt = { package = "jolt-sdk", git = "https://github.com/a16z/jolt", rev = "'$COMMIT_HASH'" }|' sample_project/guest/Cargo.toml
- name: Make sure the generated code runs
working-directory: ./sample_project
run: cargo run --release
test-inlines:
name: Test inlines
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Discover inline crates
id: discover_inlines
shell: bash
run: |
set -euo pipefail
pkgs=$(cargo metadata --format-version=1 --no-deps \
| jq -r '.packages[].name' \
| grep '^jolt-inlines-' \
| tr '\n' ' ')
echo "Found inline crates: $pkgs"
echo "pkgs=$pkgs" >> "$GITHUB_OUTPUT"
- name: Test each inline crate (host)
shell: bash
run: |
set -euo pipefail
for pkg in ${{ steps.discover_inlines.outputs.pkgs }}; do
cargo nextest run --features host -p "$pkg"
done
test-sdk-verifier:
name: Jolt SDK Verifier Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Cache Jolt RISC-V Rust toolchain
uses: actions/cache@v4
with:
key: jolt-rust-toolchain-${{hashFiles('guest-toolchain-tag')}}
path: ~/.jolt
- name: Install Jolt RISC-V Rust toolchain
run: cargo run install-toolchain
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Generate test fixtures
run: bash jolt-sdk/tests/gen-fixtures.sh
- name: Run SDK verifier tests
run: cargo nextest run --release -p jolt-sdk --features host
test-tracer:
runs-on: ubuntu-latest
name: Test tracer
steps:
- uses: actions/checkout@v5
- uses: actions-rust-lang/setup-rust-toolchain@v1
- name: Cache Jolt RISC-V Rust toolchain
uses: actions/cache@v4
with:
key: jolt-rust-toolchain-${{hashFiles('guest-toolchain-tag')}}
path: ~/.jolt
- name: Install Jolt RISC-V Rust toolchain
run: cargo run install-toolchain
- name: Install nextest
uses: taiki-e/install-action@nextest
- name: Run tracer tests
run: cargo nextest run --release -p tracer
zklean-extractor-tests:
name: ZkLean extractor tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Run extractor tests
working-directory: ./zklean-extractor
run: cargo test
compile-extracted-lean:
name: Compile extracted Lean
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Extract Jolt ZkLean package
working-directory: ./zklean-extractor
run: cargo run --release -- -o -p jolt-zklean
# - name: Run lake build on the extracted model
# uses: leanprover/lean-action@v1
# with:
# lake-package-directory: ./zklean-extractor/jolt-zklean
# build: true
# test: true