idr-ebr 0.3.2

An efficient concurrent ID to object resolver
Documentation
name: CI

on:
  push:
    branches: [ master ]
  pull_request:
    branches: [ master ]

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -Dwarnings
  RUSTDOCFLAGS: -Dwarnings
  RUST_BACKTRACE: 1
  MSRV: 1.85.0

# TODO: check also i686-unknown-linux-musl
jobs:
  build:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: rustup show active-toolchain -v
    - run: cargo build --all-targets --all-features

  msrv:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: rustup toolchain install ${{ env.MSRV }} --profile minimal
      - run: rustup override set ${{ env.MSRV }}
      - run: rustup show active-toolchain -v
      - run: cargo build
        env:
          RUSTFLAGS: "" # remove -Dwarnings

  rustfmt:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: rustup show active-toolchain -v
    - run: rustup component add rustfmt
    - run: cargo fmt --version
    - run: cargo fmt -- --check

  clippy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: rustup show active-toolchain -v
    - run: rustup component add clippy
    - run: cargo clippy --version
    - run: cargo clippy --all-targets --all-features
    - run: RUSTFLAGS="$RUSTFLAGS --cfg idr_ebr_loom" cargo clippy --all-targets --all-features

  test:
    needs: build
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: taiki-e/install-action@cargo-llvm-cov
    - run: rustup show active-toolchain -v
    - run: cargo llvm-cov test --codecov --output-path codecov.json
    - uses: codecov/codecov-action@v5
      with:
        flags: regular
        files: codecov.json
        token: ${{ secrets.CODECOV_TOKEN }}
        fail_ci_if_error: true

  loom:
    needs: build
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - uses: taiki-e/install-action@cargo-llvm-cov
    - run: rustup show active-toolchain -v
    - run: TEST_CMD_PREFIX='llvm-cov --codecov --output-path codecov.json' ./tests/loom.sh
    - uses: codecov/codecov-action@v5
      with:
        flags: loom
        files: codecov.json
        token: ${{ secrets.CODECOV_TOKEN }}
        fail_ci_if_error: true

  miri:
    needs: build
    runs-on: ubuntu-latest
    env:
      # sdd doesn't follow strict provenance
      # it stores tags in the lowest bits of pointers
      MIRIFLAGS: -Zmiri-permissive-provenance
    steps:
      - uses: actions/checkout@v4
      - run: rustup toolchain install nightly --component miri
      - run: rustup override set nightly
      - run: rustup show active-toolchain -v
      - run: cargo miri setup
      - run: cargo miri test

  docs:
    needs: build
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - run: rustup toolchain install nightly
    - run: rustup override set nightly
    - run: rustup show active-toolchain -v
    - run: cargo doc --all-features