@@ -245,12 +245,72 @@ jobs:
245245 export CC=${{matrix.cc}}
246246 make -kj$(nproc) -C krmllib/dist/generic -f Makefile.basic
247247
248+ build-and-test-pulse :
249+ runs-on : ubuntu-latest
250+ needs : build-deps
251+ steps :
252+ - name : Setup ocaml
253+ uses : ocaml/setup-ocaml@v3
254+ with :
255+ ocaml-compiler : 5.3.0
256+
257+ # Note, we prefer to restore the -fstar2 cache, but if it doesn't exist,
258+ # we restore the latest normal one.
259+ - name : Restore OPAM state
260+ uses : actions/cache/restore@v4
261+ with :
262+ fail-on-cache-miss : true
263+ path : _opam
264+ key : opam-${{ runner.os }}-${{ runner.arch }}-fstar2-${{ github.run_id }}
265+ restore-keys : |
266+ opam-${{ runner.os }}-${{ runner.arch }}-fstar2-
267+ opam-${{ runner.os }}-${{ runner.arch }}-
268+
269+ # Build F*, branch fstar2
270+ - run : opam update
271+ - run : opam pin -n fstar git+https://github.com/FStarLang/FStar#fstar2
272+ - run : opam install fstar
273+
274+ # Save OPAM state, note fstar2- in key.
275+ - name : Save OPAM state
276+ uses : actions/cache/save@v4
277+ with :
278+ path : _opam
279+ key : opam-${{ runner.os }}-${{ runner.arch }}-fstar2-${{ github.run_id }}
280+
281+ - name : Install Z3 with script
282+ run : |
283+ wget https://raw.githubusercontent.com/FStarLang/FStar/refs/heads/master/.scripts/get_fstar_z3.sh -O get_fstar_z3.sh
284+ chmod +x get_fstar_z3.sh
285+ ./get_fstar_z3.sh /usr/local/bin
286+ # If these fail, stop right now.
287+ - run : which z3-4.8.5
288+ - run : which z3-4.13.3
289+
290+ - uses : actions/checkout@master
291+ with :
292+ path : karamel
293+
294+ - uses : actions/setup-node@v4
295+ with :
296+ node-version : 16
297+
298+ - run : echo "KRML_HOME=$(pwd)/karamel" >> $GITHUB_ENV
299+
300+ - name : Karamel CI (test-pulse)
301+ working-directory : karamel
302+ run : |
303+ eval $(opam env)
304+ export OCAMLRUNPARAM=b
305+ make -kj$(nproc) test-pulse
306+
248307 # A single no-op job to use for branch protection
249308 ciok :
250309 runs-on : ubuntu-latest
251310 if : ${{ cancelled() || contains(needs.*.result, 'cancelled') || contains(needs.*.result, 'failure') }}
252311 needs :
253312 - build-and-test
313+ - build-and-test-pulse
254314 - build-krmllib
255315 steps :
256316 # Note: this only runs when a dependency fails. If they all succeed,
0 commit comments