@@ -47,12 +47,12 @@ jobs:
4747 steps :
4848 - uses : actions/checkout@v4
4949
50- - name : Install LLVM 17
50+ - name : Install LLVM 21
5151 run : |
5252 curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/llvm-archive-keyring.gpg
53- echo "deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-17 main" | sudo tee /etc/apt/sources.list.d/llvm.list
53+ echo "deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-21 main" | sudo tee /etc/apt/sources.list.d/llvm.list
5454 sudo apt-get update
55- sudo apt-get install -y --no-install-recommends llvm-17 llvm-17 -dev libpolly-17 -dev clang-17 lld-17
55+ sudo apt-get install -y --no-install-recommends llvm-21 llvm-21 -dev libpolly-21 -dev clang-21 lld-21
5656 env :
5757 DEBIAN_FRONTEND : noninteractive
5858
6464 key : clippy
6565 - run : cargo clippy --workspace --all-targets -- -D warnings
6666 env :
67- LLVM_SYS_170_PREFIX : /usr/lib/llvm-17
67+ LLVM_SYS_211_PREFIX : /usr/lib/llvm-21
6868
6969 # Main test suite
7070 test :
@@ -75,12 +75,12 @@ jobs:
7575 steps :
7676 - uses : actions/checkout@v4
7777
78- - name : Install LLVM 17
78+ - name : Install LLVM 21
7979 run : |
8080 curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | sudo gpg --dearmor -o /usr/share/keyrings/llvm-archive-keyring.gpg
81- echo "deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-17 main" | sudo tee /etc/apt/sources.list.d/llvm.list
81+ echo "deb [signed-by=/usr/share/keyrings/llvm-archive-keyring.gpg] http://apt.llvm.org/$(lsb_release -cs)/ llvm-toolchain-$(lsb_release -cs)-21 main" | sudo tee /etc/apt/sources.list.d/llvm.list
8282 sudo apt-get update
83- sudo apt-get install -y --no-install-recommends llvm-17 llvm-17 -dev libpolly-17 -dev clang-17 lld-17
83+ sudo apt-get install -y --no-install-recommends llvm-21 llvm-21 -dev libpolly-21 -dev clang-21 lld-21
8484 env :
8585 DEBIAN_FRONTEND : noninteractive
8686
9292 - name : Build
9393 run : cargo build --workspace
9494 env :
95- LLVM_SYS_170_PREFIX : /usr/lib/llvm-17
95+ LLVM_SYS_211_PREFIX : /usr/lib/llvm-21
9696
9797 - name : Rust unit tests
9898 id : rust-tests
@@ -106,7 +106,7 @@ jobs:
106106 echo "RUST_TESTS=$RUST_TESTS" >> $GITHUB_ENV
107107 echo "RUST_FAILED=$RUST_FAILED" >> $GITHUB_ENV
108108 env :
109- LLVM_SYS_170_PREFIX : /usr/lib/llvm-17
109+ LLVM_SYS_211_PREFIX : /usr/lib/llvm-21
110110
111111 - name : Ori language tests
112112 id : ori-tests
@@ -120,7 +120,7 @@ jobs:
120120 echo "ORI_TESTS=$ORI_TESTS" >> $GITHUB_ENV
121121 echo "ORI_FAILED=$ORI_FAILED" >> $GITHUB_ENV
122122 env :
123- LLVM_SYS_170_PREFIX : /usr/lib/llvm-17
123+ LLVM_SYS_211_PREFIX : /usr/lib/llvm-21
124124
125125 - name : Ori runtime tests
126126 id : rt-tests
@@ -191,29 +191,29 @@ jobs:
191191 name : ${{ matrix.os }}
192192 needs : [format, clippy] # Don't waste CI time if basics fail
193193 runs-on : ${{ matrix.os }}
194- timeout-minutes : 7
194+ timeout-minutes : 12
195195 strategy :
196196 fail-fast : false
197197 matrix :
198198 os : [macos-latest, windows-latest]
199199 steps :
200200 - uses : actions/checkout@v4
201201
202- - name : Install LLVM 17 (macOS)
202+ - name : Install LLVM 21 (macOS)
203203 if : runner.os == 'macOS'
204204 run : |
205- brew install llvm@17
206- echo "LLVM_SYS_170_PREFIX =$(brew --prefix llvm@17 )" >> $GITHUB_ENV
205+ brew install llvm@21
206+ echo "LLVM_SYS_211_PREFIX =$(brew --prefix llvm@21 )" >> $GITHUB_ENV
207207
208- - name : Install LLVM 17 (Windows)
208+ - name : Install LLVM 21 (Windows)
209209 if : runner.os == 'Windows'
210210 run : |
211- $LLVM_URL = "https://github.com/upstat-io/llvm-package-windows/releases/download/v17.0.6 /LLVM-17.0.6 -win64.7z"
211+ $LLVM_URL = "https://github.com/upstat-io/llvm-package-windows/releases/download/v21.1.8 /LLVM-21.1.8 -win64.7z"
212212 Write-Host "Downloading LLVM from $LLVM_URL"
213213 curl.exe -fLO $LLVM_URL
214214 Write-Host "Extracting LLVM to C:\LLVM..."
215- 7z x LLVM-17.0.6 -win64.7z -oC:\LLVM
216- echo "LLVM_SYS_170_PREFIX =C:\LLVM" >> $env:GITHUB_ENV
215+ 7z x LLVM-21.1.8 -win64.7z -oC:\LLVM
216+ echo "LLVM_SYS_211_PREFIX =C:\LLVM" >> $env:GITHUB_ENV
217217 echo "C:\LLVM\bin" >> $env:GITHUB_PATH
218218
219219 - name : Set up MSVC environment (Windows)
@@ -234,6 +234,39 @@ jobs:
234234 - name : Ori language tests
235235 run : cargo run -p oric --bin ori -- test tests/
236236
237+ - name : AOT smoke test (compile + link + run)
238+ continue-on-error : true # macOS ARM64: compiler stack overflow in LLVM codegen (tracked)
239+ shell : bash
240+ run : |
241+ SMOKE_DIR="${RUNNER_TEMP}/aot_smoke"
242+ mkdir -p "$SMOKE_DIR"
243+
244+ # Write a minimal Ori program that exercises string + print (touches ori_rt)
245+ cat > "$SMOKE_DIR/smoke.ori" << 'ORIEOF'
246+ @main () -> void = print(msg: "hello from AOT");
247+ ORIEOF
248+
249+ EXE_SUFFIX=""
250+ if [[ "$RUNNER_OS" == "Windows" ]]; then
251+ EXE_SUFFIX=".exe"
252+ fi
253+
254+ BUILD_ARGS=(build "$SMOKE_DIR/smoke.ori" -o "$SMOKE_DIR/smoke${EXE_SUFFIX}")
255+
256+ # macOS: put Homebrew LLVM on PATH so lld is available
257+ if [[ "$RUNNER_OS" == "macOS" ]]; then
258+ LLVM_BIN="$(brew --prefix llvm@21)/bin"
259+ if [[ -d "$LLVM_BIN" ]]; then
260+ export PATH="$LLVM_BIN:$PATH"
261+ if command -v lld >/dev/null 2>&1; then
262+ BUILD_ARGS+=(--linker=lld)
263+ fi
264+ fi
265+ fi
266+
267+ cargo run -p oric --bin ori -- "${BUILD_ARGS[@]}"
268+ "$SMOKE_DIR/smoke${EXE_SUFFIX}"
269+
237270 # Single status check for branch protection
238271 ci-success :
239272 name : CI Success
0 commit comments