From 8a11dd8ca4638a126f6106242b4bbbb6736ebc20 Mon Sep 17 00:00:00 2001 From: Manuel Raimann Date: Fri, 30 Jan 2026 18:02:36 +0100 Subject: [PATCH] feat: enhance CI configuration with additional jobs for MSRV, Cargo Deny, Semver Check, Miri, Minimal Versions, and Typos --- .github/workflows/ci.yml | 97 ++++++++++++++++++++++++++++++++++++++++ Cargo.toml | 1 + deny.toml | 24 ++++++++++ 3 files changed, 122 insertions(+) create mode 100644 deny.toml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 884a0e6..4764645 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -110,3 +110,100 @@ jobs: token: ${{ secrets.CODECOV_TOKEN }} files: lcov.info fail_ci_if_error: true + + msrv: + name: MSRV (1.88) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - name: Install Rust 1.88 + run: | + rustup override set 1.88 + rustup update 1.88 + - uses: Swatinem/rust-cache@v2 + - name: Check compilation + run: cargo check --all-features + + deny: + name: Cargo Deny + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: EmbarkStudios/cargo-deny-action@v2 + + semver: + name: Semver Check + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - name: Install Rust + run: | + rustup override set stable + rustup update stable + - uses: Swatinem/rust-cache@v2 + - name: Install cargo-semver-checks + uses: taiki-e/install-action@cargo-semver-checks + - name: Check semver + run: cargo semver-checks check-release + + miri: + name: Miri + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - name: Install Rust nightly and Miri + run: | + rustup toolchain install nightly --component miri + rustup override set nightly + - uses: Swatinem/rust-cache@v2 + - name: Setup Miri + run: cargo miri setup + - name: Run tests under Miri + run: cargo miri test + env: + MIRIFLAGS: -Zmiri-strict-provenance + + minimal-versions: + name: Minimal Versions + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - name: Install Rust nightly + run: | + rustup toolchain install nightly + rustup override set nightly + - uses: Swatinem/rust-cache@v2 + - name: Generate minimal version lockfile + run: cargo +nightly -Z minimal-versions update + - name: Install Rust stable + run: | + rustup override set stable + rustup update stable + - name: Check with minimal versions + run: cargo check --all-features --locked + + cross-platform: + name: ${{ matrix.os }} + runs-on: ${{ matrix.os }} + strategy: + fail-fast: false + matrix: + os: [windows-latest, macos-latest] + steps: + - uses: actions/checkout@v6 + - name: Install Rust + run: | + rustup override set stable + rustup update stable + - uses: Swatinem/rust-cache@v2 + - name: Check compilation + run: cargo check --all-features + - name: Run tests + run: cargo test --all-features + + typos: + name: Typos + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v6 + - uses: crate-ci/typos@v1 diff --git a/Cargo.toml b/Cargo.toml index 9ec9eea..d51d584 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -2,6 +2,7 @@ name = "optimize" version = "0.1.0" edition = "2024" +rust-version = "1.88" license = "MIT" authors = ["Manuel Raimann