99jobs :
1010 build-and-test :
1111 strategy :
12+ fail-fast : false
1213 matrix :
13- os : [ubuntu-latest, macos-latest, windows-latest ]
14+ os : [ubuntu-latest, macos-latest]
1415 compiler : [gcc]
15- exclude :
16- - os : windows-latest
17- compiler : gcc
1816 include :
19- # - os: windows-latest
20- # compiler: msvc
2117 - os : windows-latest
2218 compiler : clang-cl
2319 runs-on : ${{ matrix.os }}
@@ -34,14 +30,16 @@ jobs:
3430 run : |
3531 if [ "$RUNNER_OS" == "Windows" ]; then
3632 # Visual Studio generators are multi-config; select Release at build time.
37- cmake -S . -B build -G "Visual Studio 17 2022" -T ClangCL
33+ cmake -S . -B build -G "Visual Studio 17 2022" -T ClangCL \
34+ -DCMAKE_C_COMPILER=clang-cl
35+ grep -Ei '^CMAKE_C_COMPILER:(FILEPATH|STRING|UNINITIALIZED)=.*clang-cl' build/CMakeCache.txt
3836 else
3937 cmake -S . -B build -DCMAKE_BUILD_TYPE=Release
4038 fi
4139 if [ "$RUNNER_OS" == "Windows" ]; then
4240 cmake --build build --config Release
4341 else
44- cmake --build build
42+ cmake --build build --parallel
4543 fi
4644
4745 - name : Build and run tests
5452 ctest --test-dir build --output-on-failure || \
5553 ctest --test-dir build --rerun-failed --output-on-failure
5654 fi
55+
56+ - name : Trace DSL JIT backend activity
57+ if : ${{ false }}
58+ shell : bash
59+ run : |
60+ set -o pipefail
61+ if [ "$RUNNER_OS" == "Windows" ]; then
62+ ME_DSL_TRACE=1 ctest --test-dir build -C Release -R "^test_dsl_jit_runtime_cache$" -V \
63+ 2>&1 | tee build/dsl-jit-trace.log
64+ else
65+ ME_DSL_TRACE=1 ctest --test-dir build -R "^test_dsl_jit_runtime_cache$" -V \
66+ 2>&1 | tee build/dsl-jit-trace.log
67+ fi
68+ grep -E "jit ir built:|jit runtime (built|skip|hit|stubbed):" build/dsl-jit-trace.log || true
69+
70+ miniexpr-wasm32 :
71+ runs-on : ubuntu-latest
72+
73+ steps :
74+ - uses : actions/checkout@v4
75+
76+ - name : Set up Node.js
77+ uses : actions/setup-node@v4
78+ with :
79+ node-version : ' 24'
80+
81+ - name : Set up Emscripten
82+ uses : mymindstorm/setup-emsdk@v14
83+ with :
84+ version : latest
85+
86+ - name : Configure wasm32 build
87+ shell : bash
88+ run : |
89+ emcmake cmake -S . -B build-wasm32 -G Ninja \
90+ -DCMAKE_BUILD_TYPE=Release \
91+ -DCMAKE_CROSSCOMPILING_EMULATOR=node \
92+ -DMINIEXPR_BUILD_SHARED=OFF \
93+ -DMINIEXPR_BUILD_STATIC=ON \
94+ -DMINIEXPR_BUILD_BENCH=OFF \
95+ -DMINIEXPR_BUILD_EXAMPLES=OFF \
96+ -DMINIEXPR_USE_SLEEF=OFF \
97+ -DMINIEXPR_BUILD_BUNDLED_LIBTCC=OFF \
98+ -DMINIEXPR_DSL_TRACE_DEFAULT=ON
99+
100+ - name : Verify wasm32 CMake flags
101+ shell : bash
102+ run : |
103+ grep -E '^MINIEXPR_BUILD_BUNDLED_LIBTCC:BOOL=OFF$' build-wasm32/CMakeCache.txt
104+ grep -E '^MINIEXPR_ENABLE_TCC_JIT:BOOL=ON$' build-wasm32/CMakeCache.txt
105+
106+ - name : Build wasm32 miniexpr + tests
107+ shell : bash
108+ run : |
109+ cmake --build build-wasm32 -j
110+
111+ - name : Run wasm32 tests
112+ shell : bash
113+ run : |
114+ ctest --test-dir build-wasm32 --output-on-failure || \
115+ ctest --test-dir build-wasm32 --rerun-failed --output-on-failure
116+
117+ - name : Trace DSL JIT behavior (wasm32)
118+ shell : bash
119+ run : |
120+ set -o pipefail
121+ : > build-wasm32/dsl-trace.log
122+ node -e 'global.Module={ENV:{ME_DSL_TRACE:"1"}}; require("./build-wasm32/tests/test_dsl_jit_ir.js");' \
123+ >> build-wasm32/dsl-trace.log 2>&1
124+ node -e 'global.Module={ENV:{ME_DSL_TRACE:"1"}}; require("./build-wasm32/tests/test_dsl_syntax.js");' \
125+ >> build-wasm32/dsl-trace.log 2>&1
126+ echo "=== DSL JIT Trace Summary (wasm32) ==="
127+ if grep -E "\\[me-dsl\\] (jit ir (built|skip|reject):|jit runtime (built|skip|hit|stubbed):)" \
128+ build-wasm32/dsl-trace.log > /tmp/dsl-trace-summary.raw; then
129+ sed -E 's/fingerprint=[0-9a-f]+/fingerprint=<fp>/g; s/key=[0-9a-f]+/key=<key>/g' \
130+ /tmp/dsl-trace-summary.raw \
131+ | sort \
132+ | uniq -c \
133+ | sed -E 's/^ +//'
134+ else
135+ echo "No DSL JIT trace lines captured"
136+ fi
137+ echo "=== End Summary ==="
0 commit comments