spaik 0.3.1

The SPAIK Programming Language
Documentation
set positional-arguments

export MIRIFLAGS := "-Zmiri-disable-isolation -Zmiri-tree-borrows"
export CARGO_TARGET_WASM32_WASI_RUNNER := "tools/wasmtime.sh"
export WASMTIME_BACKTRACE_DETAILS := "1"

install-tools:
    command -v cargo-hack &>/dev/null || cargo install cargo-hack
    rustup component add miri
    rustup target add wasm32-unknown-unknown
    rustup target add x86_64-unknown-linux-musl
    rustup target add x86_64-unknown-linux-gnu

test:
    just test-wasm
    cargo test --no-default-features

test-wasm:
    cargo test --target wasm32-wasi

build-wasm:
    cargo build --profile wasm \
                --target wasm32-unknown-unknown \
                -Z build-std=std,panic_abort \
                -Z build-std-features=panic_immediate_abort \
                --no-default-features \
                --features wasm
    mkdir -p target/wasm-opt
    @echo "optimizing wasm files ..."
    fd . -d1 -ewasm target/wasm32-unknown-unknown/wasm \
         -x wasm-opt -Oz -o target/wasm-opt/{/} {}
    @echo "optimized wasm files saved to target/wasm-opt"

build-mini:
    cargo build --profile wasm \
                --target x86_64-unknown-linux-gnu \
                -Z build-std=std,panic_abort \
                -Z build-std-features=panic_immediate_abort \
                --no-default-features

test-all: install-tools
    just build-wasm
    just test-wasm
    cargo hack test --feature-powerset
    cargo build --target x86_64-unknown-linux-musl
    cargo build --target x86_64-unknown-linux-gnu
    cargo miri test

@miri *args:
    cargo miri "$@"

default:
    @just --list