rustix-dlmalloc 0.2.2

A Rust port of the dlmalloc allocator, ported to rustix
Documentation
name: CI
on: [push, pull_request]

jobs:
  test:
    name: Test
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        include:
          - os: ubuntu-latest
            rust: stable
          - os: ubuntu-latest
            rust: beta
          - os: ubuntu-latest
            rust: nightly
          - os: macos-latest
            rust: stable
          - os: windows-latest
            rust: stable
          - os: ubuntu-latest
            rust: stable
            target: wasm32-wasip1
    steps:
    - uses: actions/checkout@v4
    - run: rustup update ${{ matrix.rust }} --no-self-update && rustup default ${{ matrix.rust }}
      shell: bash

    # Configure cross-builds by adding the rustup target and configuring future
    # cargo invocations.
    - run: |
        rustup target add ${{ matrix.target }}
        echo CARGO_BUILD_TARGET=${{ matrix.target }} >> $GITHUB_ENV
      if: matrix.target != ''

    # For wasm install wasmtime as a test runner and configure it with Cargo.
    - name: Setup `wasmtime`
      uses: bytecodealliance/actions/wasmtime/setup@v1
      if: matrix.target == 'wasm32-wasip1'
    - run: echo CARGO_TARGET_WASM32_WASIP1_RUNNER=wasmtime >> $GITHUB_ENV
      if: matrix.target == 'wasm32-wasip1'

    - run: cargo test
    - run: cargo test --features debug
    - run: cargo test --features global
      if: matrix.os == 'ubuntu-latest'
    - run: cargo test --release
      env:
        CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS: true
    - run: cargo test --release
      env:
        CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS: false
    - run: cargo test --features debug --release
      env:
        CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS: true
    - run: RUSTFLAGS='--cfg test_lots' cargo test --release
      shell: bash
      env:
        CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS: true
    - run: RUSTFLAGS='--cfg test_lots' cargo test --release --features debug
      shell: bash
      env:
        CARGO_PROFILE_RELEASE_DEBUG_ASSERTIONS: true

  rustfmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Install Rust
      run: rustup update stable && rustup default stable && rustup component add rustfmt
    - run: cargo fmt -- --check

  wasm:
    name: WebAssembly
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Install Rust
      run: rustup update stable && rustup default stable && rustup target add wasm32-unknown-unknown
    - run: cargo build --target wasm32-unknown-unknown
    - run: cargo build --target wasm32-unknown-unknown --release

  external-platform:
    name: external-platform
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Install Rust
      run: rustup update stable && rustup default stable && rustup target add x86_64-fortanix-unknown-sgx
    - run: cargo build --target x86_64-fortanix-unknown-sgx

  fuzz:
    name: Build Fuzzers
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v4
    - name: Install Rust
      run: rustup update nightly && rustup default nightly
    - run: cargo install cargo-fuzz
    - run: cargo fuzz build --dev

# Disable until miri supports mmap64
#  miri:
#    name: Miri
#    runs-on: ubuntu-latest
#    steps:
#    - uses: actions/checkout@v4
#    - name: Install Miri
#      run: |
#        rustup toolchain install nightly --component miri
#        rustup override set nightly
#        cargo miri setup
#    - name: Test with Miri Stack Borrows
#      run: cargo miri test
#    - name: Test with Miri Tree Borrows
#      run: cargo miri test
#      env:
#        MIRIFLAGS: -Zmiri-tree-borrows