wasm-tools 1.0.49

CLI tools for interoperating with WebAssembly files
Documentation
name: CI
on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

# Cancel any in-flight jobs for the same PR/branch so there's only one active
# at a time
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: true

jobs:
  test:
    name: Test
    runs-on: ${{ matrix.os }}
    strategy:
      matrix:
        build: [stable, beta, nightly, macos, windows]
        include:
          - build: stable
            os: ubuntu-latest
            rust: stable
          - build: beta
            os: ubuntu-latest
            rust: beta
          - build: nightly
            os: ubuntu-latest
            rust: nightly
          - build: macos
            os: macos-latest
            rust: stable
          - build: windows
            os: windows-latest
            rust: stable
    steps:
    - uses: actions/checkout@v3
      with:
        submodules: true
    - name: Install Rust (rustup)
      run: rustup update ${{ matrix.rust }} --no-self-update && rustup default ${{ matrix.rust }}
      shell: bash
    - run: cargo test --locked --all
    - run: cargo test --locked -p wasmparser --benches
    - run: cargo test --locked -p wasm-encoder --all-features
    - run: cargo build --manifest-path crates/wast/Cargo.toml --no-default-features
    - run: cargo build --manifest-path crates/wast/Cargo.toml --no-default-features --features wasm-module
    - run: cmake -S ${{github.workspace}}/examples -B ${{github.workspace}}/examples/build -DCMAKE_BUILD_TYPE=Release
    - run: cmake --build ${{github.workspace}}/examples/build --config Release

  wasm:
    name: Test on WebAssembly
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        submodules: true
    - name: Install Rust
      run: rustup update stable --no-self-update && rustup default stable
    - run: rustup target add wasm32-wasi
    - run: |
        tag=v10.0.1
        curl -LO https://github.com/bytecodealliance/wasmtime/releases/download/${tag}/wasmtime-${tag}-x86_64-linux.tar.xz
        tar xf wasmtime-${tag}-x86_64-linux.tar.xz
        echo `pwd`/wasmtime-${tag}-x86_64-linux >> $GITHUB_PATH
        echo CARGO_TARGET_WASM32_WASI_RUNNER='wasmtime run --dir . --' >> $GITHUB_ENV
        echo CARGO_BUILD_TARGET='wasm32-wasi' >> $GITHUB_ENV
    - run: |
        cargo --locked test --workspace \
          --exclude fuzz-stats \
          --exclude wasm-tools-fuzz \
          --exclude wasm-mutate-stats

  rustfmt:
    name: Rustfmt
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
    - name: Install Rust
      run: rustup update stable && rustup default stable && rustup component add rustfmt
    # Note that this doesn't use `cargo fmt` because that doesn't format
    # modules-defined-in-macros which is in use in `wast` for example. This is
    # the best alternative I can come up with at this time
    - run: find . -name '*.rs' | xargs rustfmt --check --edition 2021

  fuzz:
    name: Fuzz
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@v3
      with:
        submodules: true
    - name: Install Rust
      run: rustup update nightly && rustup default nightly
    - run: cargo install cargo-fuzz
    - run: cargo fuzz build --dev -s none
    - run: cargo fuzz build --dev --features wasmtime -s none

  check:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: cargo check --benches -p wasm-smith
      - run: cargo check --no-default-features
      - run: cargo check --no-default-features --features print
      - run: cargo check --no-default-features --features parse
      - run: cargo check --no-default-features --features validate
      - run: cargo check --no-default-features --features smith
      - run: cargo check --no-default-features --features shrink
      - run: cargo check --no-default-features --features mutate
      - run: cargo check --no-default-features --features dump
      - run: cargo check --no-default-features --features objdump
      - run: cargo check --no-default-features --features strip
      - run: cargo check --no-default-features --features compose
      - run: cargo check --no-default-features --features demangle
      - run: cargo check --no-default-features --features component
      - run: cargo check --no-default-features --features metadata
      - run: cargo check --no-default-features --features wit-smith
      - run: cargo check --no-default-features --features addr2line

  doc:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - run: cargo doc --all