Skip to content

feat: SDK refactor #6447

feat: SDK refactor

feat: SDK refactor #6447

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,
disk=large,
"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 from repo
run: |
cargo run -p sp1-cli -- prove install-toolchain
cd crates/cli
cargo install --force --locked --path .
cargo clean
- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
toolchain: 1.81.0
args: --all-targets --all-features
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
toolchain: 1.81.0
args: --release --features native-gnark
env:
RUSTFLAGS: -Copt-level=3 -Cdebug-assertions -Coverflow-checks=y -Cdebuginfo=0 -C target-cpu=native
RUST_BACKTRACE: 1
SP1_DEV: 1
test-arm:
name: Test (ARM)
runs-on:
[
runs-on,
runner=64cpu-linux-arm64,
spot=false,
disk=large,
"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 from repo
run: |
cargo run -p sp1-cli -- prove install-toolchain
cd crates/cli
cargo install --force --locked --path .
cargo clean
- name: Run cargo check
uses: actions-rs/cargo@v1
with:
command: check
toolchain: 1.81.0
args: --all-targets --all-features
- name: Run cargo test
uses: actions-rs/cargo@v1
with:
command: test
toolchain: 1.81.0
args: --release --features native-gnark
env:
RUSTFLAGS: -Copt-level=3 -Cdebug-assertions -Coverflow-checks=y -Cdebuginfo=0 -C target-cpu=native
RUST_BACKTRACE: 1
SP1_DEV: 1
lint:
name: Formatting & Clippy
runs-on: [runs-on, runner=16cpu-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 from repo
run: |
cargo run -p sp1-cli -- prove install-toolchain
cd crates/cli
cargo install --force --locked --path .
cargo clean
- name: Run cargo fmt
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
env:
CARGO_INCREMENTAL: 1
- name: Check test-artifacts
uses: actions-rs/cargo@v1
with:
command: check
args: -p test-artifacts
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
check:
name: Cargo Check
runs-on: [runs-on, runner=16cpu-linux-x64, disk=medium, "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 from repo
run: |
cargo run -p sp1-cli -- prove install-toolchain
cd crates/cli
cargo install --force --locked --path .
cargo clean
- name: Check workspace no features
uses: actions-rs/cargo@v1
with:
command: check
args: --workspace --all-targets --no-default-features
- name: Check workspace with default features
uses: actions-rs/cargo@v1
with:
command: check
args: --workspace --all-targets
- name: Check workspace with all features
uses: actions-rs/cargo@v1
with:
command: check
args: --workspace --all-targets --all-features
examples:
name: Examples
runs-on:
[
runs-on,
runner=64cpu-linux-x64,
disk=large,
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: Install SP1 toolchain from repo
run: |
cargo run -p sp1-cli -- prove install-toolchain
cd crates/cli
cargo install --force --locked --path .
cargo clean
- name: Run cargo fmt
run: |
cd ./examples/
cargo fmt --all -- --check
- name: Run cargo check
run: |
cd ./examples/
cargo check --all-targets --all-features
- name: Run cargo clippy
run: |
cd ./examples/
cargo clippy --all-targets --all-features -- -D warnings -A incomplete-features
cli:
name: CLI
runs-on: [runs-on, runner=8cpu-linux-x64, disk=large, "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 from repo
run: |
cargo run -p sp1-cli -- prove install-toolchain
cd crates/cli
cargo install --force --locked --path .
cargo clean
- name: Run cargo prove new
run: |
cargo prove new fibonacci --version dev --evm
- 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 from repo
run: |
cargo run -p sp1-cli -- prove install-toolchain
cd crates/cli
cargo install --force --locked --path .
cargo clean
- 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}}",
disk=large,
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 from repo
run: |
cargo run -p sp1-cli -- prove install-toolchain
cd crates/cli
cargo install --force --locked --path .
cargo clean
- 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 --force --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 }}"
typos:
name: Spell Check
runs-on: ubuntu-latest
steps:
- name: Checkout Actions Repository
uses: actions/checkout@v4
- name: Check all typos
uses: crate-ci/typos@master
with:
write_changes: true
- uses: getsentry/action-git-diff-suggestions@main
with:
message: typos
check-verifier-no-std:
name: Check Verifier `no_std`
runs-on: ubuntu-latest
timeout-minutes: 10
strategy:
fail-fast: false
steps:
- name: Checkout Actions Repository
uses: actions/checkout@v4
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@stable
with:
targets: riscv32imac-unknown-none-elf
- name: Install target support
run: rustup target add riscv32imac-unknown-none-elf
- name: Check build
run: cargo check --target riscv32imac-unknown-none-elf --no-default-features -p sp1-verifier
lock-files:
name: "Check lock files"
runs-on:
[
runs-on,
cpu=64,
ram=256,
family=m7i+m7a,
disk=large,
image=ubuntu22-full-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: "Remove lock files"
run: |
find -name Cargo.lock -type f -exec rm {} \;
# We need the SP1 toolchain to be installed in order to build test-artifacts
- name: Install SP1 toolchain
run: |
cargo run -p sp1-cli -- prove install-toolchain
- name: "Build SP1 without lock files"
run: |
cargo build --all --all-targets
- name: "Build examples without lock files"
run: |
cd examples
cargo build --all --all-targets