merni 0.1.3

A low overhead metrics implementation.
name: CI

on:
  push:
    branches: [master, main]
  pull_request:
  workflow_dispatch:

concurrency:
  group: ${{ github.head_ref || github.run_id }}
  cancel-in-progress: true

env:
  CARGO_TERM_COLOR: always
  RUSTFLAGS: -Dwarnings
  RUSTDOCFLAGS: -Dwarnings

jobs:
  lint:
    name: Lints
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - run: rustup show active-toolchain
      - run: rustup component add rustfmt clippy
      - uses: Swatinem/rust-cache@v2

      - run: cargo fmt --all -- --check
      - run: cargo clippy --locked --workspace --all-features --all-targets -- -D clippy::all
      - uses: obi1kenobi/cargo-semver-checks-action@v2

  doc:
    name: Documentation
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - run: rustup show active-toolchain
      - uses: Swatinem/rust-cache@v2

      - run: cargo test --locked --workspace --all-features --doc
      - run: cargo doc --locked --workspace --all-features --document-private-items --no-deps

  test:
    strategy:
      fail-fast: false
      matrix:
        os: [ubuntu-latest, windows-latest]

    name: Tests on ${{ matrix.os }}
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4

      - run: rustup show active-toolchain
      - run: rustup component add llvm-tools
      - uses: taiki-e/install-action@cargo-llvm-cov
      - uses: taiki-e/install-action@nextest
      - uses: Swatinem/rust-cache@v2

      - run: cargo llvm-cov nextest --locked --workspace --all-features --lib --bins --examples --tests --lcov --output-path lcov.info

      - uses: codecov/test-results-action@v1
        if: ${{ !cancelled() }}
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: target/nextest/default/junit.xml
          disable_search: true

      - uses: codecov/codecov-action@v5
        with:
          token: ${{ secrets.CODECOV_TOKEN }}
          files: lcov.info
          disable_search: true

  benchmark:
    name: Benchmarks
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - run: rustup show active-toolchain
      - uses: cargo-bins/cargo-binstall@main
      - run: cargo binstall cargo-codspeed
      - uses: Swatinem/rust-cache@v2

      - run: cargo codspeed build --workspace
      - uses: CodSpeedHQ/action@v3
        with:
          token: ${{ secrets.CODSPEED_TOKEN }}
          run: cargo codspeed run

  miri:
    name: Miri
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4

      - run: rustup toolchain install nightly --profile minimal --component miri --no-self-update
      - run: cargo +nightly miri setup
      - uses: taiki-e/install-action@nextest

      - run: cargo +nightly miri nextest run --locked --workspace --all-features --lib --bins --examples --tests