Skip to content

docs(readme): add GPU compatibility matrix; fix sm_121 arch routing #153

docs(readme): add GPU compatibility matrix; fix sm_121 arch routing

docs(readme): add GPU compatibility matrix; fix sm_121 arch routing #153

Workflow file for this run

name: CI
on:
push:
branches: [main, master]
pull_request:
branches: [main, master]
env:
CARGO_TERM_COLOR: always
RUST_BACKTRACE: 1
# Note: CUDA tests require NVIDIA GPU + nvcc and are skipped in CI.
# CUDA features are opt-in (not default) so workspace builds succeed without nvcc.
# Run CUDA tests locally with: cargo test -p ringkernel-cuda --features cuda
jobs:
# Format check
fmt:
name: Format
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt
- name: Check formatting
run: cargo fmt --all -- --check
# Clippy lints (production code only — tests may use unwrap())
clippy:
name: Clippy
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: clippy
- uses: Swatinem/rust-cache@v2
- name: Run clippy on library and binaries
run: cargo clippy --workspace --lib --bins -- -D warnings
- name: Run clippy on tests (warnings allowed)
run: cargo clippy --workspace --tests --benches --examples -- -A clippy::unwrap_used -A clippy::expect_used
# Unit tests
test:
name: Test
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run tests
run: cargo test --workspace --lib --bins
# Integration tests (excludes CUDA tests that require nvcc)
integration:
name: Integration Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Run integration tests
run: cargo test --workspace --test '*' --features cpu
# Doc tests
doc:
name: Documentation
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Check documentation
run: cargo doc --workspace --no-deps
- name: Run doc tests
run: cargo test --workspace --doc
# Build check
build:
name: Build
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Build workspace
run: cargo build --workspace
- name: Build with CPU features
run: cargo build --workspace --features cpu
# Dependency security audit
audit:
name: Security Audit
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- name: Install cargo-audit
run: cargo install --locked cargo-audit
- name: Run cargo audit
# Uses .cargo/audit.toml for ignored advisories (documented transitive deps).
# Unmaintained warnings are informational and do not fail the build.
run: cargo audit
# Feature matrix: test key feature combinations that work without GPU hardware
feature-matrix:
name: Feature Matrix
runs-on: ubuntu-latest
strategy:
matrix:
features:
- "" # no optional features
- "cpu" # CPU backend only
- "enterprise" # enterprise features
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@v2
- name: Check with features '${{ matrix.features }}'
run: cargo check --workspace --features "${{ matrix.features }}"
# Minimum Supported Rust Version check
msrv:
name: MSRV (1.75)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@1.75.0
- uses: Swatinem/rust-cache@v2
# Core library + backends honor MSRV 1.75 for downstream users.
# Showcase apps with GUIs (accnet, procint) track latest stable.
- name: Check MSRV (core + backends)
run: cargo check --workspace --exclude ringkernel-accnet --exclude ringkernel-procint