Skip to content

feat: root and deferred #4985

feat: root and deferred

feat: root and deferred #4985

Workflow file for this run

name: PR
on:
push:
branches: [main, dev]
pull_request:
branches:
- "**"
paths:
- "crates/**"
- "examples/**"
- "Cargo.toml"
- ".github/workflows/**"
merge_group:
concurrency:
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }}
cancel-in-progress: true
jobs:
test-x86:
name: Test (x86-64)
runs-on:
[
runs-on,
runner=64cpu-linux-x64,
spot=false,
"run-id=${{ github.run_id }}",
]
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup CI
uses: ./.github/actions/setup
- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
toolchain: 1.79.0
args: --all-targets --all-features
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
toolchain: 1.79.0
args: --release --features native-gnark --workspace --exclude sp1-recursion-core --exclude sp1-recursion-program --exclude sp1-recursion-circuit
env:
RUSTFLAGS: -Copt-level=3 -Cdebug-assertions -Coverflow-checks=y -Cdebuginfo=0 -C target-cpu=native
RUST_BACKTRACE: 1
FRI_QUERIES: 1
SP1_DEV: 1
test-arm:
name: Test (ARM)
runs-on:
[
runs-on,
runner=64cpu-linux-arm64,
spot=false,
"run-id=${{ github.run_id }}",
]
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup CI
uses: ./.github/actions/setup
- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
toolchain: 1.79.0
args: --all-targets --all-features
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
toolchain: 1.79.0
args: --release --features native-gnark --workspace --exclude sp1-recursion-core --exclude sp1-recursion-program --exclude sp1-recursion-circuit
env:
RUSTFLAGS: -Copt-level=3 -Cdebug-assertions -Coverflow-checks=y -Cdebuginfo=0 -C target-cpu=native
RUST_BACKTRACE: 1
FRI_QUERIES: 1
SP1_DEV: 1
lint:
name: Formatting & Clippy
runs-on: [runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}"]
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup CI
uses: ./.github/actions/setup
- name: Run cargo fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
env:
CARGO_INCREMENTAL: 1
- name: Run cargo clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-features --all-targets -- -D warnings -A incomplete-features
env:
CARGO_INCREMENTAL: 1
- name: Add wasm target
run: rustup target add wasm32-unknown-unknown
- name: Check wasm compatibility for sdk
uses: actions-rs/cargo@v1
with:
command: check
args: -p sp1-sdk --target wasm32-unknown-unknown --no-default-features
examples:
name: Examples
runs-on: [runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}"]
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup CI
uses: ./.github/actions/setup
- name: Install SP1 toolchain
run: |
curl -L https://sp1.succinct.xyz | bash
~/.sp1/bin/sp1up
~/.sp1/bin/cargo-prove prove --version
- name: Install SP1 CLI
run: |
cd crates/cli
cargo install --force --locked --path .
~/.sp1/bin/cargo-prove prove install-toolchain
cd ~
- name: Run cargo check
run: |
RUSTFLAGS="-Copt-level=3 -Cdebug-assertions -Coverflow-checks=y -Cdebuginfo=0 -C target-cpu=native" \
cargo check --manifest-path examples/Cargo.toml --all-targets --all-features
- name: Run cargo check on RSP
run: |
cd examples/rsp/script
RUSTFLAGS="-Copt-level=3 -Cdebug-assertions -Coverflow-checks=y -Cdebuginfo=0 -C target-cpu=native" \
cargo check --all-targets --all-features
cli:
name: CLI
runs-on: [runs-on, runner=8cpu-linux-x64, "run-id=${{ github.run_id }}"]
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup CI
uses: ./.github/actions/setup
- name: Install SP1 toolchain
run: |
curl -L https://sp1.succinct.xyz | bash
~/.sp1/bin/sp1up
~/.sp1/bin/cargo-prove prove --version
- name: Install SP1 CLI
run: |
cd crates/cli
cargo install --force --locked --path .
cd ~
- name: Run cargo prove new
run: |
cargo prove new fibonacci --version dev
- name: Build program and run script
run: |
cd fibonacci
cd program
cargo add sp1-zkvm --path $GITHUB_WORKSPACE/crates/zkvm/entrypoint
cargo prove build
cd ../script
cargo remove sp1-sdk
cargo add sp1-sdk --path $GITHUB_WORKSPACE/crates/sdk
SP1_DEV=1 RUST_LOG=info cargo run --release -- --prove
performance:
name: Performance
runs-on: [runs-on, family=c7a.48xlarge, "run-id=${{ github.run_id }}"]
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup CI
uses: ./.github/actions/setup
- name: Install SP1 toolchain
run: |
curl -L https://sp1.succinct.xyz | bash
~/.sp1/bin/sp1up
~/.sp1/bin/cargo-prove prove --version
- name: Run Evaluation
run: |
cd crates/eval
RUSTFLAGS='-C target-cpu=native' cargo run --release -- \
--programs fibonacci,ssz-withdrawals,tendermint \
--post-to-slack ${{ github.ref == 'refs/heads/dev' }} \
--slack-channel-id "${{ secrets.SLACK_CHANNEL_ID }}" \
--slack-token "${{ secrets.SLACK_TOKEN }}" \
--post-to-github ${{ github.event_name == 'pull_request' }} \
--github-token "${{ secrets.GITHUB_TOKEN }}" \
--repo-owner "${{ github.repository_owner }}" \
--repo-name "${{ github.event.repository.name }}" \
--pr-number "${{ github.event.pull_request.number }}" \
--branch-name "${{ github.head_ref || github.ref_name }}" \
--commit-hash "${{ github.sha }}" \
--author "${{ github.event.pull_request.user.login || github.actor }}"
low-memory:
name: Low Memory
strategy:
matrix:
mem_limit: [16, 32, 64]
runs-on:
[
runs-on,
"ram=${{ matrix.mem_limit}}",
family=c7a,
image=ubuntu22-full-x64,
"run-id=${{ github.run_id }}",
]
env:
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
steps:
- name: Checkout sources
uses: actions/checkout@v4
- name: Setup CI
uses: ./.github/actions/setup
- name: Install SP1 toolchain
run: |
curl -L https://sp1.succinct.xyz | bash
~/.sp1/bin/sp1up
~/.sp1/bin/cargo-prove prove --version
- name: Install SP1 CLI
run: |
cd crates/cli
cargo install --force --locked --path .
cd ~
- name: Run tendermint script
run: |
cd examples/tendermint/program
cargo add sp1-zkvm --path $GITHUB_WORKSPACE/crates/zkvm/entrypoint
cargo prove build
cd ../script
cargo remove sp1-sdk
cargo add sp1-sdk --path $GITHUB_WORKSPACE/crates/sdk
SP1_DEV=1 RUST_LOG=info cargo run --release
- name: Run cycle tracking script
run: |
cd examples/cycle-tracking/script
cargo add sp1-sdk --path $GITHUB_WORKSPACE/crates/sdk
SP1_DEV=1 RUST_LOG=info cargo run --release
toolchain-test:
name: "Test toolchain installation (${{ matrix.name }})"
strategy:
fail-fast: false
matrix:
include:
- name: "Ubuntu 24.04 (x86_64)"
runner: "ubuntu-24.04"
- name: "Ubuntu 22.04 (x86_64)"
runner: "ubuntu-22.04"
- name: "Ubuntu 20.04 (x86_64)"
runner: "ubuntu-20.04"
- name: "macOS Monterey (x86_64)"
runner: "macos-12"
- name: "macOS Ventura (x86_64)"
runner: "macos-13"
- name: "macOS Sonoma (ARM64)"
runner: "macos-14"
runs-on: "${{ matrix.runner }}"
steps:
- name: "Checkout source code"
uses: "actions/checkout@v4"
- name: "Install cargo-prove"
run: |
cargo install --locked --path ./crates/cli
- name: "Install SP1 toolchain"
run: |
cargo prove install-toolchain --token ${{ secrets.GITHUB_TOKEN }}
- name: "Create SP1 project from template"
run: |
cargo prove new hello
- name: "Build SP1 project"
run: |
cd ./hello/program
cargo prove build
toolchain-test-ec2:
name: "Test toolchain installation (${{ matrix.name }})"
strategy:
fail-fast: false
matrix:
include:
# AMI from `us-east-1`
- name: "Debian 12 (x86_64)"
ec2-instance: "c5.2xlarge"
ami: "ami-064519b8c76274859"
volume: "/dev/xvda"
- name: "Debian 12 (ARM64)"
ec2-instance: "c6g.2xlarge"
ami: "ami-0789039e34e739d67"
volume: "/dev/xvda"
uses: "./.github/workflows/toolchain-ec2.yml"
with:
image-id: "${{ matrix.ami }}"
instance-type: "${{ matrix.ec2-instance }}"
root-volume: "${{ matrix.volume }}"
secrets:
AWS_REGION: "${{ secrets.AWS_REGION }}"
AWS_ACCESS_KEY_ID: "${{ secrets.AWS_ACCESS_KEY_ID }}"
AWS_SECRET_ACCESS_KEY: "${{ secrets.AWS_SECRET_ACCESS_KEY }}"
AWS_SUBNET_ID: "${{ secrets.AWS_SUBNET_ID }}"
AWS_SG_ID: "${{ secrets.AWS_SG_ID }}"
GH_PAT: "${{ secrets.GH_PAT }}"