impetus 0.23.3

Physics engine — 2D/3D rigid body simulation, collision detection, constraints, and spatial queries for AGNOS
Documentation
name: Release
on:
  push:
    tags: ["*"]
permissions:
  contents: write
jobs:
  ci:
    name: CI Gate
    uses: ./.github/workflows/ci.yml
  build:
    name: Build (${{ matrix.name }})
    runs-on: ${{ matrix.os }}
    needs: [ci]
    strategy:
      fail-fast: false
      matrix:
        include:
          - target: x86_64-unknown-linux-gnu
            os: ubuntu-latest
            name: linux-amd64
          - target: aarch64-unknown-linux-gnu
            os: ubuntu-latest
            name: linux-arm64
            cross: true
          - target: aarch64-apple-darwin
            os: macos-latest
            name: macos-arm64
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@master
        with:
          toolchain: "1.89"
      - run: rustup target add ${{ matrix.target }}
      - uses: Swatinem/rust-cache@v2
        with:
          key: ${{ matrix.target }}
      - name: Cross deps (arm64)
        if: matrix.cross
        run: |
          sudo apt-get update
          sudo apt-get install -y gcc-aarch64-linux-gnu
          mkdir -p .cargo
          echo '[target.aarch64-unknown-linux-gnu]' >> .cargo/config.toml
          echo 'linker = "aarch64-linux-gnu-gcc"' >> .cargo/config.toml
      - run: cargo build --release --target ${{ matrix.target }}
  publish:
    name: Publish to crates.io
    runs-on: ubuntu-latest
    needs: [ci, build]
    steps:
      - uses: actions/checkout@v4
      - uses: dtolnay/rust-toolchain@stable
      - name: Verify version
        run: |
          FILE_VERSION=$(cat VERSION | tr -d '[:space:]')
          TAG_VERSION="${GITHUB_REF_NAME#v}"
          [ "$FILE_VERSION" = "$TAG_VERSION" ] || { echo "VERSION mismatch: file=$FILE_VERSION tag=$TAG_VERSION"; exit 1; }
      - run: cargo publish
        env:
          CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}
  release:
    name: Create GitHub Release
    runs-on: ubuntu-latest
    needs: [ci, build, publish]
    steps:
      - uses: actions/checkout@v4
      - uses: softprops/action-gh-release@v2
        with:
          generate_release_notes: true