feat: compile on wasm (#71) #295
  
    
      This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
      Learn more about bidirectional Unicode characters
    
  
  
    
  | name: tests | |
| on: | |
| push: | |
| branches: | |
| # This helps fill the caches properly, caches are not shared between PRs. | |
| - main | |
| pull_request: | |
| branches: | |
| - main | |
| env: | |
| MSRV: "1.75" | |
| RUST_BACKTRACE: 1 | |
| RUSTFLAGS: -Dwarnings | |
| jobs: | |
| lint: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: swatinem/rust-cache@v2 | |
| - name: cargo fmt | |
| run: cargo fmt --all -- --check | |
| - name: cargo clippy | |
| run: cargo clippy --locked --workspace --all-targets --all-features | |
| test: | |
| runs-on: ${{ matrix.target.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: | |
| - os: "ubuntu-latest" | |
| toolchain: "x86_64-unknown-linux-gnu" | |
| name: "Linux GNU" | |
| - os: "macOS-latest" | |
| toolchain: "x86_64-apple-darwin" | |
| name: "macOS" | |
| - os: "windows-latest" | |
| toolchain: "x86_64-pc-windows-msvc" | |
| name: "Windows MSVC" | |
| - os: "windows-latest" | |
| toolchain: "x86_64-pc-windows-gnu" | |
| name: "Windows GNU" | |
| channel: | |
| - "stable" | |
| - "beta" | |
| - "nightly" | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.channel }} | |
| targets: ${{ matrix.target.toolchain }} | |
| - uses: swatinem/rust-cache@v2 | |
| - name: cargo test | |
| run: cargo test --locked --workspace --all-features --bins --tests --examples | |
| test-release: | |
| runs-on: ${{ matrix.target.os }} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| target: | |
| - os: "ubuntu-latest" | |
| toolchain: "x86_64-unknown-linux-gnu" | |
| name: "Linux GNU" | |
| - os: "macOS-latest" | |
| toolchain: "x86_64-apple-darwin" | |
| name: "macOS" | |
| - os: "windows-latest" | |
| toolchain: "x86_64-pc-windows-msvc" | |
| name: "Windows MSVC" | |
| - os: "windows-latest" | |
| toolchain: "x86_64-pc-windows-gnu" | |
| name: "Windows GNU" | |
| channel: | |
| - "stable" | |
| - "beta" | |
| - "nightly" | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@master | |
| with: | |
| toolchain: ${{ matrix.channel }} | |
| targets: ${{ matrix.target.toolchain }} | |
| - uses: swatinem/rust-cache@v2 | |
| - name: cargo test | |
| run: cargo test --release --locked --workspace --all-features --bins --tests --examples | |
| # Checks correct runtime deps and features are requested by not including dev-dependencies. | |
| check-deps: | |
| runs-on: ubuntu-latest | |
| steps: | |
| - uses: actions/checkout@v2 | |
| - uses: dtolnay/rust-toolchain@stable | |
| - uses: swatinem/rust-cache@v2 | |
| - name: cargo check | |
| run: cargo check --workspace --all-features --lib --bins | |
| wasm_build: | |
| name: Build wasm32 | |
| runs-on: ubuntu-latest | |
| env: | |
| RUSTFLAGS: '--cfg getrandom_backend="wasm_js"' | |
| steps: | |
| - name: Checkout sources | |
| uses: actions/checkout@v4 | |
| - name: Install stable toolchain | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Add wasm target | |
| run: rustup target add wasm32-unknown-unknown | |
| - name: Install wasm-tools | |
| uses: bytecodealliance/actions/wasm-tools/setup@v1 | |
| - name: wasm32 build | |
| run: cargo build --target wasm32-unknown-unknown | |
| # If the Wasm file contains any 'import "env"' declarations, then | |
| # some non-Wasm-compatible code made it into the final code. | |
| - name: Ensure no 'import "env"' in wasm | |
| run: | | |
| ! wasm-tools print --skeleton target/wasm32-unknown-unknown/debug/bao_tree.wasm | grep 'import "env"' | |
| # minimal-crates: | |
| # runs-on: ubuntu-latest | |
| # steps: | |
| # - uses: actions/checkout@v2 | |
| # - uses: dtolnay/rust-toolchain@nightly | |
| # - uses: swatinem/rust-cache@v2 | |
| # - name: cargo check | |
| # run: | | |
| # rm -f Cargo.lock | |
| # cargo +nightly check -Z minimal-versions --workspace --all-features --lib --bins |