name: CI
on: [push, pull_request]
permissions:
contents: read
jobs:
test:
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-latest]
rust: [stable]
include:
- os: ubuntu-latest
rust: 1.85.0
runs-on: ${{ matrix.os }}
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{ matrix.rust }}
- run: cargo test --all-features
- run: cargo test --no-default-features
- run: cargo test --no-default-features --features serde
- run: cargo test --no-default-features --features simd
- run: cargo test --release --all-features -- --include-ignored
quality:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
- run: cargo fmt --all -- --check
- run: cargo clippy --all-targets --all-features -- -D warnings
- run: cargo clippy --all-targets --no-default-features -- -D warnings
- run: cargo doc --no-deps --all-features
env:
RUSTDOCFLAGS: -D warnings
portable:
runs-on: ubuntu-latest
strategy:
matrix:
target:
- aarch64-unknown-linux-gnu
- powerpc64-unknown-linux-gnu
- thumbv6m-none-eabi
- thumbv7em-none-eabi
- riscv32imac-unknown-none-elf
- wasm32-unknown-unknown
- x86_64-unknown-none
- x86_64-unknown-uefi
- x86_64-fortanix-unknown-sgx
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
with:
targets: ${{ matrix.target }}
- run: cargo build --lib --all-features --target ${{ matrix.target }}
- run: cargo build --lib --no-default-features --target ${{ matrix.target }}
miri:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@nightly
with:
components: miri
- run: cargo miri test --all-features
- run: cargo miri test --no-default-features --target powerpc64-unknown-linux-gnu --test conversions
avx2:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@stable
- run: cargo build --lib --all-features
env:
RUSTFLAGS: -C target-feature=+avx2