Sync prototyping to main: ML flavor docs, VSIX coverage (95.13%), hygiene #69
Workflow file for this run
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: CI (Windows) | |
| # Windows build + smoke test for the Osprey compiler (Rust). Like ci.yml, this | |
| # runs ONLY on PRs to main — merging to main triggers nothing. | |
| on: | |
| pull_request: | |
| branches: [main] | |
| # Website-only PRs don't touch the compiler — skip the Windows build entirely. | |
| # windows-core is NOT a required status check, so skipping the whole workflow | |
| # via path filtering here is safe and won't leave a pending check blocking the | |
| # merge. (ci.yml's required `ci` job uses job-level `if` skipping instead.) | |
| paths-ignore: | |
| - 'website/**' | |
| workflow_dispatch: | |
| concurrency: | |
| group: ${{ github.workflow }}-${{ github.ref }} | |
| cancel-in-progress: true | |
| jobs: | |
| windows-core: | |
| name: Windows Core Build & Smoke Test | |
| runs-on: windows-latest | |
| timeout-minutes: 25 | |
| steps: | |
| - uses: actions/checkout@v4 | |
| - name: Install Rust (stable) | |
| uses: dtolnay/rust-toolchain@stable | |
| - name: Cache cargo registry + target | |
| uses: actions/cache@v4 | |
| with: | |
| path: | | |
| ~/.cargo/registry/index/ | |
| ~/.cargo/registry/cache/ | |
| ~/.cargo/git/db/ | |
| target/ | |
| key: ${{ runner.os }}-cargo-osprey-${{ hashFiles('Cargo.lock') }} | |
| restore-keys: ${{ runner.os }}-cargo-osprey- | |
| # gcc + winpthreads back the fiber/effects C runtime; the `clang` package | |
| # provides the MinGW clang driver (`/ucrt64/bin/clang.exe`) osprey shells | |
| # out to when linking — the `llvm` package ships only the LLVM tools | |
| # (llc/opt), not the driver, so without `clang` osprey would fall back to | |
| # the runner's system MSVC clang and fail to link the MinGW runtime. | |
| - uses: msys2/setup-msys2@v2 | |
| with: | |
| msystem: UCRT64 | |
| path-type: inherit | |
| update: true | |
| install: >- | |
| make | |
| mingw-w64-ucrt-x86_64-gcc | |
| mingw-w64-ucrt-x86_64-clang | |
| mingw-w64-ucrt-x86_64-llvm | |
| mingw-w64-ucrt-x86_64-pkgconf | |
| mingw-w64-ucrt-x86_64-openssl | |
| # Build the C runtime archives with the MinGW toolchain. The root | |
| # Makefile auto-detects this MSYS2 shell (via $MSYSTEM) and runs the | |
| # recipe under bash; only the compiler/archiver need overriding. | |
| - name: Build C runtime archives (MinGW) | |
| shell: msys2 {0} | |
| run: make _runtime CC=gcc AR=ar | |
| - name: Build osprey (release) | |
| run: cargo build --release -p osprey-cli | |
| - name: Verify version contract | |
| shell: msys2 {0} | |
| run: | | |
| set -euo pipefail | |
| ./target/release/osprey.exe --version | grep -Fx "osprey 0.0.0-dev" | |
| # osprey.exe is a NATIVE Windows process: when it shells out to link the | |
| # emitted IR it searches the Windows PATH, where the runner's system | |
| # (MSVC-target) clang shadows the MSYS2 one — that clang can't link the | |
| # MinGW-built runtime archive. Pin OSPREY_CC to the UCRT64 clang via a | |
| # Windows-style path (cygpath -m) so native CreateProcess can find it. | |
| - name: Pin the MinGW clang for osprey --run | |
| shell: msys2 {0} | |
| run: | | |
| set -euo pipefail | |
| CC_PATH="$(cygpath -m /ucrt64/bin/clang.exe)" | |
| "$CC_PATH" --version | head -1 | |
| echo "OSPREY_CC=$CC_PATH" >> "$GITHUB_ENV" | |
| # fiber_showcase exercises spawn/await/yield/channels/select — i.e. the | |
| # winpthreads-backed fiber runtime. feature_omnibus covers lists/maps/ | |
| # strings/pattern-matching. Neither uses HTTP, so both are valid core | |
| # Windows smoke tests; clang resolves to the MSYS2 LLVM inside this shell. | |
| - name: Smoke test — fiber showcase | |
| shell: msys2 {0} | |
| run: | | |
| set -euo pipefail | |
| ./target/release/osprey.exe examples/tested/fiber/fiber_showcase.osp --run --quiet > out.txt | |
| cat out.txt | |
| grep -Fq "=== Fiber Showcase Complete ===" out.txt | |
| grep -Fq "map-reduce total = 1400" out.txt | |
| grep -Fq "pipeline = 200" out.txt | |
| - name: Smoke test — feature omnibus | |
| shell: msys2 {0} | |
| run: | | |
| set -euo pipefail | |
| ./target/release/osprey.exe examples/tested/basics/feature_omnibus.osp --run --quiet > omni.txt | |
| cat omni.txt |