Skip to content

Commit 6b2030a

Browse files
Merge pull request #19 from Blosc/wasm32-jit
Wasm32 builds and tests
2 parents b6d8ff1 + b77ca27 commit 6b2030a

65 files changed

Lines changed: 23937 additions & 457 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 89 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,15 +9,11 @@ on:
99
jobs:
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
@@ -54,3 +52,86 @@ jobs:
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 ==="

.gitignore

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,10 @@ dkms.conf
5353

5454
# debug information files
5555
*.dwo
56+
57+
# Build directory
58+
build/
59+
60+
# CodeQL build directory
61+
_codeql_build_dir/
62+
_codeql_detected_source_root

0 commit comments

Comments
 (0)