diff --git a/.github/workflows/fast-smoke.yml b/.github/workflows/fast-smoke.yml new file mode 100644 index 00000000..cac57f2f --- /dev/null +++ b/.github/workflows/fast-smoke.yml @@ -0,0 +1,64 @@ +name: fast-smoke + +on: + push: + branches: [ "**" ] + workflow_dispatch: + +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +jobs: + fast: + runs-on: ubuntu-latest + timeout-minutes: 20 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Rust (stable) + uses: dtolnay/rust-toolchain@stable + + - name: Cache cargo + uses: Swatinem/rust-cache@v2 + + - name: Install LLVM 18 and Python deps + run: | + sudo apt-get update + sudo apt-get install -y curl ca-certificates lsb-release wget gnupg python3-pip + curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 18 + llvm-config-18 --version + python3 -m pip install --upgrade pip + python3 -m pip install llvmlite jsonschema + + - name: Build (release) + run: | + cargo build --release -j 2 + cargo build --release -p nyash-llvm-compiler -j 2 + cargo build --release -p nyrt -j 2 + + - name: EXE smoke (ternary_basic -> 10) + run: | + mkdir -p tmp + ./target/release/nyash --emit-mir-json tmp/tb.json --backend mir apps/tests/ternary_basic.nyash + ./target/release/ny-llvmc --in tmp/tb.json --emit exe --nyrt target/release --out tmp/tb + set +e; ./tmp/tb >/dev/null 2>&1; CODE=$?; set -e + echo "exit=$CODE"; test "$CODE" -eq 10 + + - name: EXE smoke (ternary_nested -> 50) + run: | + ./target/release/nyash --emit-mir-json tmp/tn.json --backend mir apps/tests/ternary_nested.nyash + ./target/release/ny-llvmc --in tmp/tn.json --emit exe --nyrt target/release --out tmp/tn + set +e; ./tmp/tn >/dev/null 2>&1; CODE=$?; set -e + echo "exit=$CODE"; test "$CODE" -eq 50 + + - name: EXE smoke (peek_expr_block -> 1) + run: | + ./target/release/nyash --emit-mir-json tmp/pb.json --backend mir apps/tests/peek_expr_block.nyash + ./target/release/ny-llvmc --in tmp/pb.json --emit exe --nyrt target/release --out tmp/pb + set +e; ./tmp/pb >/dev/null 2>&1; CODE=$?; set -e + echo "exit=$CODE"; test "$CODE" -eq 1 + diff --git a/.github/workflows/llvm-ny-llvmc-exe.yml b/.github/workflows/llvm-ny-llvmc-exe.yml new file mode 100644 index 00000000..fee953e0 --- /dev/null +++ b/.github/workflows/llvm-ny-llvmc-exe.yml @@ -0,0 +1,61 @@ +name: llvm-ny-llvmc-exe + +on: + push: + branches: [ main, master, "**" ] + pull_request: + branches: [ "**" ] + +jobs: + ny-llvmc-exe: + runs-on: ubuntu-latest + timeout-minutes: 25 + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Rust (stable) + uses: dtolnay/rust-toolchain@stable + + - name: Cache cargo + uses: Swatinem/rust-cache@v2 + + - name: Install LLVM 18 and Python deps + run: | + sudo apt-get update + sudo apt-get install -y curl ca-certificates lsb-release wget gnupg python3-pip + curl -fsSL https://apt.llvm.org/llvm.sh -o llvm.sh + chmod +x llvm.sh + sudo ./llvm.sh 18 + llvm-config-18 --version + python3 -m pip install --upgrade pip + python3 -m pip install llvmlite jsonschema + + - name: Build nyash and ny-llvmc (release) + run: | + cargo build --release -j 2 + cargo build --release -p nyash-llvm-compiler -j 2 + cargo build --release -p nyrt -j 2 + + - name: EXE build+run (ternary_basic -> exit 10) + run: | + mkdir -p tmp + ./target/release/nyash --emit-mir-json tmp/tb.json --backend mir apps/tests/ternary_basic.nyash + ./target/release/ny-llvmc --in tmp/tb.json --emit exe --nyrt target/release --out tmp/tb + set +e; ./tmp/tb >/dev/null 2>&1; CODE=$?; set -e + echo "exit=$CODE"; test "$CODE" -eq 10 + + - name: EXE build+run (ternary_nested -> exit 50) + run: | + ./target/release/nyash --emit-mir-json tmp/tn.json --backend mir apps/tests/ternary_nested.nyash + ./target/release/ny-llvmc --in tmp/tn.json --emit exe --nyrt target/release --out tmp/tn + set +e; ./tmp/tn >/dev/null 2>&1; CODE=$?; set -e + echo "exit=$CODE"; test "$CODE" -eq 50 + + - name: EXE build+run (peek_expr_block -> exit 1) + run: | + ./target/release/nyash --emit-mir-json tmp/pb.json --backend mir apps/tests/peek_expr_block.nyash + ./target/release/ny-llvmc --in tmp/pb.json --emit exe --nyrt target/release --out tmp/pb + set +e; ./tmp/pb >/dev/null 2>&1; CODE=$?; set -e + echo "exit=$CODE"; test "$CODE" -eq 1 +