isoalloc 0.2.9

Security oriented allocator
Documentation
name: build/test

on:
  push:
    branches: [ "main" ]
  pull_request:
    branches: [ "main" ]

env:
  CARGO_TERM_COLOR: always

jobs:
  # FIXME: later on let's upgrade ubuntu VM for userfaultfd
  linux:
    runs-on: ubuntu-22.04
    name: Ubuntu
    steps:
    - uses: actions/checkout@v3
    - name: Prepare
      run: git submodule update --init
    - name: Build
      run: cargo build --verbose --features userfaultfd,sanity
    - name: Run tests
      run: cargo test --verbose --features userfaultfd,sanity

  # FIXME: no TLS support for ios it seems
  macos:
    runs-on: macOS-14
    name: macOS
    steps:
    - uses: actions-rs/toolchain@v1
      with:
        profile: default
        toolchain: nightly
    - uses: actions/checkout@v3
    - name: Prepare
      run: git submodule update --init
    - name: Install
      run: rustup toolchain install nightly --component clippy && rustup target add x86_64-apple-darwin && rustup target add aarch64-apple-ios
    - name: Clippy
      run: cargo clippy
    - name: Build ARM64 macOs
      run: cargo build --verbose --features neon,sanity --target aarch64-apple-darwin
    - name: Build X86_64 macOs
      run: cargo build --verbose --features sanity --target x86_64-apple-darwin
    - name: Build ARM64 iOs
      run: cargo build --verbose --features neon,sanity,nothread,smallmem --target aarch64-apple-ios
    - name: Run tests
      run: cargo test --verbose --features sanity

  # FIXME: sanity is buggy on freebsd
  freebsd:
    runs-on: ubuntu-22.04
    name: FreeBSD
    steps:
    - uses: actions/checkout@v3
    - name: FreeBSD CI
      id: test
      uses: vmactions/freebsd-vm@v1
      with:
        usesh: true
        sync: rsync
        copyback: false
        mem: 2048
        release: "14.0"
        prepare: |
          pkg install -y git curl bash sudo
          curl https://sh.rustup.rs -sSf | sh -s -- -y
        run: |
          git config --global --add safe.directory /home/runner/work/isoalloc-rs/isoalloc-rs
          . "$HOME/.cargo/env"
          git submodule update --init
          cargo build --verbose --features sanity
          cargo test --verbose #--features sanity