build(deps): update itertools requirement from 0.12 to 0.13 #108
Workflow file for this run
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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 |