tskit 0.15.0

rust interface to tskit
Documentation
on:
  push:
    branches: [main, dev]
  pull_request:

name: 64 bit CI

jobs:
  test-64bit:
    name: Run tests on toolchain-version (64 bit)
    runs-on: ${{ matrix.os }}
    #container:
    #  image: ubuntu:20.10
    strategy:
      matrix:
        os: [ubuntu-24.04, ubuntu-24.04-arm,  macos-latest]
        rust:
          - stable
    steps:
      - name: Cancel Previous Runs
        uses: styfle/cancel-workflow-action@0.12.1
        with:
          access_token: ${{ secrets.GITHUB_TOKEN }}

      - uses: actions/checkout@v6.0.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          submodules: recursive
      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
      - uses: Swatinem/rust-cache@v2.8.2
      - uses: taiki-e/install-action@cargo-hack
      - run: sudo apt-get update -y
        if: (matrix.os == 'ubuntu-24.04') || (matrix.os == 'ubuntu-24.04-arm')
      - name: update toolchain
        run: rustup toolchain install
      - name: cargo check (powerset)
        run: cargo hack check --feature-powerset --no-dev-deps
      - name: cargo check examples (powerset)
        run: cargo hack check --examples --feature-powerset
      - name: run tests (powerset)
        run: |
            cargo hack test --all-targets --feature-powerset
      - name: run doc tests (powerset)
        run: |
            cargo hack test --doc --feature-powerset

  test-64bit-stable:
    name: Run tests on stable (64 bit)
    runs-on: ${{ matrix.os }}
    #container:
    #  image: ubuntu:20.10
    strategy:
      matrix:
        os: [ubuntu-24.04]
        rust:
          - stable
    steps:
      - name: Cancel Previous Runs
        uses: styfle/cancel-workflow-action@0.12.1
        with:
          access_token: ${{ secrets.GITHUB_TOKEN }}

      - uses: actions/checkout@v6.0.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          submodules: recursive
      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
      - uses: Swatinem/rust-cache@v2.8.2
      - uses: taiki-e/install-action@cargo-hack
      - run: sudo apt-get update -y
        if: (matrix.os == 'ubuntu-24.04') || (matrix.os == 'ubuntu-24.04-arm')
      - name: cargo check (powerset)
        run: cargo +stable hack check --feature-powerset --no-dev-deps --verbose
      - name: cargo check examples (powerset)
        run: cargo +stable hack check --examples --feature-powerset
      - name: run tests (powerset)
        run: |
            cargo +stable hack test --all-targets --feature-powerset
      - name: run doc tests (powerset)
        run: |
            cargo +stable hack test --doc --feature-powerset

  fmt:
    name: rust fmt
    runs-on: ubuntu-24.04
    steps:
      - uses: actions/checkout@v6.0.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          submodules: recursive
      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: stable
          components: rustfmt
      - run: |
          /bin/bash -c "find src -type f | grep -v auto_bindings | grep -v lib | xargs rustfmt --check"

  clippy:
    name: clippy!!
    runs-on: ubuntu-24.04
    strategy:
      matrix:
        rust:
          - stable
    steps:
      - uses: actions/checkout@v6.0.0
      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
          components: clippy
      - uses: Swatinem/rust-cache@v2.8.2
      - uses: taiki-e/install-action@cargo-hack
      - name: update toolchain
        run: rustup toolchain install
      - name: clippy (all targets, feature powerset)
        run: cargo hack clippy --all-targets --feature-powerset -- -D warnings

  msrv:
    name: Verify MSRV
    runs-on: ubuntu-24.04
    strategy:
      matrix:
        rust:
          - stable
    steps:
      - uses: actions/checkout@v6.0.0
      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
      - uses: taiki-e/install-action@cargo-hack
      - name: cargo check msrv
        # The rust-toolchain file will override the matrix.rust
        # version!  So we force cargo to use the (claimed) MSRV
        # for the build tests
        run: cargo +${{ matrix.rust }} hack check --rust-version --verbose --feature-powerset --all-targets

  doc:
    name: Build docs
    runs-on: ubuntu-24.04
    strategy:
      matrix:
        rust:
          - stable
    steps:
      - uses: actions/checkout@v6.0.0
      - uses: dtolnay/rust-toolchain@v1
        with:
          toolchain: ${{ matrix.rust }}
      - name: cargo doc
        run: cargo doc --all-features