Skip to content

build(deps): update itertools requirement from 0.12 to 0.13 #108

build(deps): update itertools requirement from 0.12 to 0.13

build(deps): update itertools requirement from 0.12 to 0.13 #108

Workflow file for this run

name: CI
on:
pull_request:
push:
branches: [master]
jobs:
lint:
name: Lint (Format, Clippy)
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
components: rustfmt, clippy
- name: Format
uses: actions-rs/cargo@v1
with:
command: fmt
args: --all -- --check
- name: Clippy
uses: actions-rs/cargo@v1
with:
command: clippy
args: --all-targets -- -D warnings
build:
name: Build (${{matrix.os}}, Rust ${{matrix.rust}})
runs-on: ${{matrix.os}}
needs: lint
strategy:
matrix:
os:
- ubuntu-latest
- windows-latest
- macos-latest
rust:
- stable
- beta
- nightly
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: ${{matrix.rust}}
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
args: --verbose --all
- name: Test
uses: actions-rs/cargo@v1
with:
command: test
args: --verbose
- name: Test (instruction sets)
uses: actions-rs/cargo@v1
with:
command: test
args: --verbose --tests --features "test_instruction_sets"
# Generate assembly for automatic inspection
- name: Emit ASM
uses: actions-rs/cargo@v1
with:
command: rustc
args: --release -- --emit asm
- name: Check ASM
run: |
# Check there are no undefined instructions in the crate.
# This is symptom of unhandled situations leading to panic or slice indices out of bounds
! grep -q 'ud2' target/release/deps/dcv_color_primitives*.s
# Check for accidental performance degradation.
# For example, non-inlined avx2 code might produce function generation for every used intrinsic
! grep -q 'call.*_mm256' target/release/deps/dcv_color_primitives*.s
shell: bash
wasm:
name: Build (WASM)
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: stable
targets: wasm32-unknown-unknown
- name: Install wasm-pack
run: curl https://rustwasm.github.io/wasm-pack/installer/init.sh -sSf | sh
- name: Build
uses: actions-rs/cargo@v1
with:
command: build
- name: Test
run: wasm-pack test --node
sanitizer:
name: Sanitizer
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
targets: x86_64-unknown-linux-gnu
- name: Sanitizer
run: cargo +nightly test --verbose --tests --target=x86_64-unknown-linux-gnu
env:
RUSTFLAGS: -Zsanitizer=address
- name: Sanitizer (instruction sets)
run: cargo +nightly test --verbose --tests --target=x86_64-unknown-linux-gnu --features "test_instruction_sets"
env:
RUSTFLAGS: -Zsanitizer=address
coverage:
name: Coverage
runs-on: ubuntu-latest
needs: sanitizer
steps:
- uses: actions/checkout@v4
- uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly
components: llvm-tools
- name: Install cargo-llvm-cov
run: cargo install cargo-llvm-cov
- name: Coverage
run: cargo +nightly llvm-cov test --features "test_instruction_sets" --lcov --output-path lcov.info
- name: Upload to codecov.io
uses: codecov/codecov-action@v4
with:
file: lcov.info
fail_ci_if_error: false