New Wasmi bytecode (take 2) #4099
Workflow file for this run
This file contains 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: Rust - Continuous Integration | |
on: | |
push: | |
branches: [main] | |
pull_request: | |
branches: [main] | |
# disable running jobs on earlier commits | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} | |
cancel-in-progress: true | |
jobs: | |
check: | |
name: Build | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
targets: wasm32-unknown-unknown, x86_64-unknown-none | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Build (default features) | |
run: cargo build --workspace --locked --verbose | |
- name: Build (all features) | |
run: cargo build --workspace --locked --all-features --verbose | |
- name: Build (no_std) | |
run: >- | |
cargo build | |
--package wasmi | |
--package wasmi_c_api_impl | |
--locked | |
--lib | |
--no-default-features | |
--target x86_64-unknown-none | |
--verbose | |
- name: Build (no_std + no-hash-maps) | |
run: >- | |
cargo build | |
--package wasmi | |
--locked | |
--lib | |
--no-default-features | |
--features no-hash-maps | |
--target x86_64-unknown-none | |
--verbose | |
- name: Build (no_std + wasm32) | |
run: >- | |
cargo build | |
--package wasmi | |
--package wasmi_c_api_impl | |
--locked | |
--lib | |
--no-default-features | |
--target wasm32-unknown-unknown | |
--verbose | |
- name: Build (CMake) | |
run: | | |
cmake --version | |
cmake -S crates/c_api -B target/c_api --install-prefix "$(pwd)/artifacts" | |
cmake --build target/c_api --target install | |
test-asan: | |
name: Test (Address Sanitizer) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Show Rust Toolchain | |
run: rustup show | |
- name: "Add Rust Component: `rust-src`" | |
run: rustup component add rust-src --toolchain nightly-x86_64-unknown-linux-gnu | |
- name: Build Tests | |
env: | |
RUSTFLAGS: "-C debug-assertions -Zsanitizer=address" | |
run: cargo build --tests --workspace --locked -Zbuild-std --target x86_64-unknown-linux-gnu --verbose | |
- name: Test | |
env: | |
RUSTFLAGS: "-C debug-assertions -Zsanitizer=address" | |
run: cargo test --workspace --locked --tests -Zbuild-std --target x86_64-unknown-linux-gnu | |
test: | |
name: Test | |
strategy: | |
matrix: | |
os: [ubuntu-latest, windows-latest, macos-latest] | |
runs-on: ${{ matrix.os }} | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Build (default features) | |
env: | |
RUSTFLAGS: "--cfg debug_assertions" | |
run: cargo build --tests --workspace --locked --verbose | |
- name: Test (default features) | |
env: | |
RUSTFLAGS: "--cfg debug_assertions" | |
run: cargo test --workspace --locked | |
- name: Build (all features) | |
env: | |
RUSTFLAGS: "--cfg debug_assertions" | |
run: cargo build --tests --workspace --locked --all-features --verbose | |
- name: Test (all features) | |
env: | |
RUSTFLAGS: "--cfg debug_assertions" | |
run: cargo test --workspace --locked --all-features | |
fmt: | |
name: Formatting | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: rustfmt | |
- name: Foramtting | |
run: cargo fmt --all -- --check | |
- name: Formatting (fuzz) | |
run: pushd fuzz && cargo fmt --all -- --check && popd | |
- name: Format (CMake) | |
run: | | |
cmake --version | |
cmake -S crates/c_api -B target/c_api --install-prefix "$(pwd)/artifacts" | |
cmake --build target/c_api --target check-format | |
doc: | |
name: Documentation | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
- uses: dtolnay/rust-toolchain@stable | |
with: | |
components: rust-docs, rust-src | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Check Docs | |
env: | |
RUSTDOCFLAGS: "-D warnings" | |
run: cargo doc --workspace --locked --all-features --no-deps --document-private-items | |
- name: Install Doxygen | |
run: | | |
tar --version | |
curl -L https://sourceforge.net/projects/doxygen/files/rel-1.11.0/doxygen-1.11.0.linux.bin.tar.gz/download | tar xzf - -C $GITHUB_WORKSPACE | |
echo "$GITHUB_WORKSPACE/doxygen-1.11.0/bin" >> $GITHUB_PATH | |
- name: Configure CMake for Wasmi C-API | |
run: cmake -S crates/c_api -B target/c_api | |
- name: Generate Docs via Cmake and Doxygen | |
run: cmake --build target/c_api --target doc | |
audit: | |
name: Audit | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Install cargo-audit | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-audit was already installed on the CI runner. | |
cargo install cargo-audit || true | |
- name: Check Audit | |
run: cargo audit | |
udeps: | |
name: uDeps | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-udeps | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-udeps was already installed on the CI runner. | |
cargo install --locked cargo-udeps || true | |
- name: Check uDeps | |
run: cargo udeps --all-targets | |
fuzz-translate: | |
name: Fuzz (Translation) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-directories: | | |
~/fuzz/corpus/translate/ | |
~/fuzz/corpus/translate_metered/ | |
- name: Install cargo-fuzz | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-udeps was already installed on the CI runner. | |
cargo install cargo-fuzz || true | |
- name: Build Fuzzing | |
run: cargo fuzz build translate | |
- name: Fuzz (Translation) | |
run: cargo fuzz run translate -j 2 --verbose -- -max_total_time=60 # 1 minute of fuzzing | |
- name: Fuzz (Translation) + fuel | |
run: cargo fuzz run translate_metered -j 2 --verbose -- -max_total_time=60 # 1 minute of fuzzing | |
fuzz-execute: | |
name: Fuzz (Execution) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-directories: | | |
~/fuzz/corpus/execute/ | |
- name: Install cargo-fuzz | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-udeps was already installed on the CI runner. | |
cargo install cargo-fuzz || true | |
- name: Build Fuzzing | |
run: cargo fuzz build execute | |
- name: Fuzz (Execution) | |
run: cargo fuzz run execute -j 2 --verbose -- -max_total_time=120 # 2 minutes of fuzzing | |
fuzz-differential: | |
name: Fuzz (Differential) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@nightly | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
with: | |
cache-directories: | | |
~/fuzz/corpus/differential/ | |
- name: Install cargo-fuzz | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-udeps was already installed on the CI runner. | |
cargo install cargo-fuzz || true | |
- name: Build Fuzzing | |
run: cargo fuzz build differential | |
- name: Fuzz (Differential) | |
run: cargo fuzz run differential -j 2 --verbose -- -max_total_time=120 # 2 minutes of fuzzing | |
miri: | |
name: Miri | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: miri | |
targets: x86_64-unknown-linux-gnu | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-nextest | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-nextest was already installed on the CI runner. | |
cargo install cargo-nextest || true | |
- name: Miri (setup) | |
run: cargo miri setup --target x86_64-unknown-linux-gnu --lib --workspace --locked | |
- name: Miri (--lib) | |
run: cargo miri nextest run --target x86_64-unknown-linux-gnu --lib --workspace --locked | |
- name: Miri (--doc) | |
run: cargo miri test --target x86_64-unknown-linux-gnu --doc --workspace --locked | |
miri-spec: | |
name: Miri (spec) | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: miri | |
targets: x86_64-unknown-linux-gnu | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Install cargo-nextest | |
run: | | |
# Note: We use `|| true` because cargo install returns an error | |
# if cargo-nextest was already installed on the CI runner. | |
cargo install cargo-nextest || true | |
- name: Miri (setup) | |
run: cargo miri setup --target x86_64-unknown-linux-gnu --locked | |
- name: Miri - Wasm Spec Testsuite (store) | |
# We just run the `store.wast` test since running the entire Wasm spec testsuite | |
# simply takes too long to do on every pull request commit. There exists an entire | |
# CRON job that runs the entire Wasm spec testsuite using miri every night. | |
run: cargo miri nextest run --target x86_64-unknown-linux-gnu ::wasm_store --locked | |
clippy: | |
name: Clippy | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
- uses: dtolnay/rust-toolchain@nightly | |
with: | |
components: clippy | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Clippy (default features) | |
run: cargo clippy --workspace --locked -- -D warnings | |
- name: Clippy (all features) | |
run: cargo clippy --workspace --locked --all-features -- -D warnings | |
- name: Clippy (no_std) | |
run: cargo clippy --workspace --locked --no-default-features -- -D warnings | |
- name: Clippy (tests) | |
run: cargo clippy --workspace --locked --tests -- -D warnings | |
- name: Clippy (benches) | |
run: cargo clippy --workspace --locked --benches -- -D warnings | |
- name: Clippy (fuzz) | |
run: pushd fuzz && cargo clippy -- -D warnings && popd | |
coverage: | |
name: Coverage | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout repository | |
uses: actions/checkout@692973e3d937129bcbf40652eb9f2f61becf3332 | |
with: | |
submodules: true | |
fetch-depth: 0 | |
- uses: dtolnay/rust-toolchain@stable | |
- name: Set up Rust cache | |
uses: Swatinem/rust-cache@v2 | |
- name: Run cargo-tarpaulin (default features) | |
uses: actions-rs/tarpaulin@v0.1.3 | |
with: | |
version: "0.18.0" | |
args: --workspace --locked | |
- name: Upload to codecov.io | |
uses: codecov/codecov-action@v4.5.0 | |
with: | |
token: ${{secrets.CODECOV_TOKEN}} | |
- name: Archive code coverage results | |
uses: actions/upload-artifact@v4 | |
with: | |
name: code-coverage-report | |
path: cobertura.xml |