tarc 0.1.6

Transposable, type-erasable, and FFI-safe Arc
Documentation
name: Build and test

on: [push, pull_request]

env:
  CARGO_TERM_COLOR: always
  CARGO_NET_GIT_FETCH_WITH_CLI: true

jobs:

  build-base:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        toolchain: ["1.33.0", "stable"]
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          override: true

      - name: Build without examples
        run: cargo build --verbose

  build-nostd:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [macos-14, ubuntu-latest, windows-latest]
        toolchain: ["1.73.0", "stable"]
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          target: x86_64-unknown-none
          override: true

      - name: Build without examples
        run: cargo build --target x86_64-unknown-none --no-default-features --verbose

  build-nightly:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        toolchain: ["1.33.0", "stable", "nightly-2023-02-24"]
        include:
          - os: macos-14
            toolchain: "stable"
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          override: true

      - name: Build
        run: cargo build ${{ matrix.toolchain == 'stable' && '--all-features' || '' }} --verbose

      - name: Build examples
        run: cargo build ${{ matrix.toolchain == 'stable' && '--all-features' || '' }} --examples --verbose

  build-cross-aarch64:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        toolchain: ["1.33.0", "stable"]
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          target: aarch64-unknown-linux-gnu
          override: true
      - uses: actions-rs/cargo@v1
        with:
          use-cross: true
          command: build
          args: --target aarch64-unknown-linux-gnu --verbose

  test:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        toolchain: ["1.33.0", "stable"]
        include:
          - os: macos-14
            toolchain: "stable"
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          override: true

      - name: Run all tests
        run: cargo test --verbose

  test-all-features:
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        os: [ubuntu-latest, windows-latest]
        toolchain: ["1.33.0", "stable", "nightly-2023-02-24"]
        include:
          - os: macos-14
            toolchain: "stable"
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          override: true

      - name: Run all tests
        run: cargo test ${{ matrix.toolchain == 'stable' && '--all-features' || '' }} --verbose

  lint:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        features: ["--all-features", ""]
    steps:
      - uses: actions/checkout@v2
      - run: rustup component add clippy
      - name: Check formatting
        run: cargo fmt -- --check
      - uses: actions-rs/clippy-check@v1
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          args: --all-targets ${{ matrix.features }}

  miri:
    runs-on: ubuntu-latest
    strategy:
      matrix:
        toolchain: ["nightly-2023-02-24"]
    steps:
      - uses: actions/checkout@v2
      - uses: actions-rs/toolchain@v1
        with:
          toolchain: ${{ matrix.toolchain }}
          override: true
      - run: rustup component add miri
      - name: Run miri
        run: |
          MIRIFLAGS="-Zmiri-ignore-leaks -Zmiri-symbolic-alignment-check" cargo miri test