Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
c41ac8e
Add browser WASM transport
pirate May 9, 2026
ffd2d77
Add browser WASM test coverage
pirate May 9, 2026
fdcf192
Tighten browser WASM generated bindings
pirate May 9, 2026
60495f5
Improve browser WASM happy path
pirate May 9, 2026
cb468f1
build(node): remove unused WASM build scripts and dependencies
riyaneel May 14, 2026
396d8cc
ci(emsdk): add script to install Emscripten SDK
riyaneel May 15, 2026
eed853f
ci(setup): reorganize scripts and update ci readme
riyaneel May 15, 2026
b9644b9
ci(workflows): reorganize script paths
riyaneel May 15, 2026
cd710b2
ci(actions): add Emscripten setup action
riyaneel May 15, 2026
de3a15f
build(cmake): add Emscripten toolchain and presets
riyaneel May 15, 2026
a044266
build(cmake): conditionally enable tests and deps management
riyaneel May 15, 2026
ddaab8f
feat(core): add wasm compatibility via emscripten
riyaneel May 15, 2026
0484f7c
feat(core): add shm pointer accessor for wasm
riyaneel May 15, 2026
2b83184
ci: add C++ WASM job
riyaneel May 15, 2026
c656067
fox(cmake): fix TACHYON_CORE_SRCS usage in lib def
riyaneel May 15, 2026
ee8b684
style(core): fix formatting in shm.cpp
riyaneel May 15, 2026
9c8b786
ci(workflows): fix path for emsdk setup action
riyaneel May 15, 2026
8356144
refactor(bindings): rename `node/` to `js/`
riyaneel May 15, 2026
f308fdf
feat(js): add script to copy WASM artefacts
riyaneel May 15, 2026
79e9815
ci(workflows): update paths for `node/` to `js/`
riyaneel May 15, 2026
4291d0d
fix(core): validate size limits for WASM builds
riyaneel May 15, 2026
2d416b9
ci: fix test directory path
riyaneel May 15, 2026
ab7f530
fix(core): correct WASM build configs and add Emscripten exports support
riyaneel May 15, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
21 changes: 21 additions & 0 deletions .github/actions/setup-emsdk/action.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Setup Emscripten
description: Install Emscripten SDK
inputs:
version:
description: Emscripten Version
required: false
default: 'latest'
runs:
using: composite
steps:
- name: Run setup script
shell: bash
run: bash ci/setup/install_emsdk.sh ${{ inputs.version }}

- name: Inject Global Environment
shell: bash
run: |
EMSDK_DIR="${GITHUB_WORKSPACE}/.emsdk"
source "${EMSDK_DIR}/emsdk_env.sh" > /dev/null 2>&1
env | grep '^EMSDK' >> $GITHUB_ENV
echo "$PATH" | tr ':' '\n' | grep "${EMSDK_DIR}" >> $GITHUB_PATH
146 changes: 110 additions & 36 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:

- name: Install Toolchain (Clang)
if: matrix.compiler == 'clang'
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Configure (${{ matrix.compiler }}-${{ matrix.build_type}})
run: |
Expand Down Expand Up @@ -80,7 +80,7 @@ jobs:
sudo apt-get install -y --no-install-recommends gcc-aarch64-linux-gnu libstdc++-14-dev-arm64-cross

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Configure
run: cmake --preset clang-aarch64-release -DTACHYON_ENABLE_BENCH=OFF
Expand Down Expand Up @@ -111,7 +111,7 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Configure
run: cmake --preset asan -DTACHYON_ENABLE_BENCH=OFF
Expand Down Expand Up @@ -143,10 +143,10 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Build Instrumented libc++
run: bash ci/build_msan_libcxx.sh 21
run: bash ci/setup/build_msan_libcxx.sh 21

- name: Configure
run: cmake --preset msan -DTACHYON_ENABLE_BENCH=OFF
Expand Down Expand Up @@ -177,7 +177,7 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Configure
run: cmake --preset tsan -DTACHYON_ENABLE_BENCH=OFF
Expand Down Expand Up @@ -212,6 +212,44 @@ jobs:
- name: Test
run: ctest --test-dir build/macos-${{ matrix.build_type }}/test --output-on-failure --parallel 4

cpp_wasm:
name: C++ (Emscripten, ${{ matrix.build_type }}
runs-on: ubuntu-24.04
strategy:
fail-fast: false
matrix:
build_type: [ debug, release ]
env:
CMAKE_C_COMPILER_LAUNCHER: ccache
CMAKE_CXX_COMPILER_LAUNCHER: ccache
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup ccache
uses: ./.github/actions/setup-ccache

- name: Setup Kitware
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/setup/install_llvm.sh 21

- name: Setup Emscripten
uses: ./.github/actions/setup-emsdk

- name: Configure
run: cmake --preset emscripten-${{ matrix.build_type }}

- name: Build
run: cmake --build --preset emscripten-${{ matrix.build_type }}

- name: Check WASM artefacts
run: |
ls -lh build/emscripten-${{ matrix.build_type }}/core/libtachyon.a || exit 1
ls -lh build/emscripten-${{ matrix.build_type }}/core/tachyon.js || exit 1
ls -lh build/emscripten-${{ matrix.build_type }}/core/tachyon.wasm || exit 1

cpp_format_check:
name: C++ Format Check
runs-on: ubuntu-24.04
Expand All @@ -223,7 +261,7 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Install Clang Format
run: |
Expand Down Expand Up @@ -251,7 +289,7 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Configure
run: cmake --preset tachyon-top
Expand Down Expand Up @@ -343,6 +381,12 @@ jobs:
run: cargo test
working-directory: bindings/rust

- name: Check WASM target
run: |
rustup target add wasm32-unknown-unknown
cargo check -p tachyon-ipc --target wasm32-unknown-unknown
working-directory: bindings/rust

rust_macos:
name: Rust bindings (${{ matrix.runner }})
runs-on: ${{ matrix.runner }}
Expand Down Expand Up @@ -382,7 +426,7 @@ jobs:
cache-dependency-path: 'bindings/go'

- name: Vendor C++ core
run: bash ci/vendor.sh go
run: bash ci/setup/vendor.sh go

- name: Go Test
env:
Expand Down Expand Up @@ -419,7 +463,7 @@ jobs:
cache-dependency-path: 'bindings/go'

- name: Vendor C++ core
run: bash ci/vendor.sh go
run: bash ci/setup/vendor.sh go

- name: Go Test
env:
Expand All @@ -445,7 +489,7 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Setup Java
uses: actions/setup-java@v5
Expand All @@ -458,7 +502,7 @@ jobs:
bindings/java/**/gradle-wrapper.properties

- name: Vendor C++ core
run: bash ci/vendor.sh java
run: bash ci/setup/vendor.sh java

- name: Build Native library
env:
Expand Down Expand Up @@ -495,7 +539,7 @@ jobs:
bindings/java/**/gradle-wrapper.properties

- name: Vendor C++ core
run: bash ci/vendor.sh java
run: bash ci/setup/vendor.sh java

- name: Build Native library
run: |
Expand All @@ -519,7 +563,7 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Setup Java
uses: actions/setup-java@v5
Expand All @@ -532,7 +576,7 @@ jobs:
bindings/kotlin/**/gradle-wrapper.properties

- name: Vendor C++ core
run: bash ci/vendor.sh java
run: bash ci/setup/vendor.sh java

- name: Build Native library
env:
Expand Down Expand Up @@ -569,7 +613,7 @@ jobs:
bindings/kotlin/**/gradle-wrapper.properties

- name: Vendor C++ core
run: bash ci/vendor.sh java
run: bash ci/setup/vendor.sh java

- name: Build Native library
run: |
Expand All @@ -596,45 +640,75 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: bindings/node/package-lock.json
cache-dependency-path: bindings/js/package-lock.json

- name: Vendor C++ core
run: bash ci/vendor.sh node
run: bash ci/setup/vendor.sh node

- name: Install dependencies & build native library
working-directory: bindings/node
working-directory: bindings/js
env:
CC: clang-21
CXX: clang++-21
run: npm install && npm run build:native

- name: Type check
working-directory: bindings/node
working-directory: bindings/js
run: npx tsc --noEmit

- name: Format check
working-directory: bindings/node
working-directory: bindings/js
run: npm run format:check

- name: Lint check
working-directory: bindings/node
working-directory: bindings/js
run: npm run lint

- name: Build TypeScript
working-directory: bindings/node
working-directory: bindings/js
run: npm run build:ts

- name: Tests
working-directory: bindings/node
working-directory: bindings/js
run: npm test

nodejs_browser_wasm:
name: Browser WASM tests
runs-on: ubuntu-24.04
steps:
- name: Checkout
uses: actions/checkout@v6

- name: Setup Node.js
uses: actions/setup-node@v6
with:
node-version: 24
cache: 'npm'
cache-dependency-path: bindings/js/package-lock.json

- name: Install dependencies
working-directory: bindings/js
run: npm install --ignore-scripts

- name: Check Chromium
run: /usr/bin/chromium --version

# - name: Browser WASM tests
# working-directory: bindings/js
# env:
# CHROMIUM_BIN: /usr/bin/chromium
# Do not run build:wasm in this test job. The generated WASM bindings are
# committed, and CI should validate the committed artifacts instead of
# regenerating them and potentially masking a stale generated-code diff.
# run: npm run test:browser

nodejs_macos:
name: Node.js bindings ${{ matrix.runner }} (Node ${{ matrix.node-version }})
runs-on: ${{ matrix.runner }}
Expand All @@ -652,33 +726,33 @@ jobs:
with:
node-version: ${{ matrix.node-version }}
cache: 'npm'
cache-dependency-path: bindings/node/package-lock.json
cache-dependency-path: bindings/js/package-lock.json

- name: Vendor C++ core
run: bash ci/vendor.sh node
run: bash ci/setup/vendor.sh node

- name: Install dependencies & build native library
working-directory: bindings/node
working-directory: bindings/js
run: npm install && npm run build:native

- name: Type check
working-directory: bindings/node
working-directory: bindings/js
run: npx tsc --noEmit

- name: Format check
working-directory: bindings/node
working-directory: bindings/js
run: npm run format:check

- name: Lint check
working-directory: bindings/node
working-directory: bindings/js
run: npm run lint

- name: Build TypeScript
working-directory: bindings/node
working-directory: bindings/js
run: npm run build:ts

- name: Tests
working-directory: bindings/node
working-directory: bindings/js
run: npm test

csharp_linux:
Expand All @@ -692,7 +766,7 @@ jobs:
uses: ./.github/actions/kitware-apt

- name: Install LLVM 21
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Setup .NET
uses: actions/setup-dotnet@v5
Expand All @@ -702,7 +776,7 @@ jobs:
10.x

- name: Vendor C++ core
run: bash ci/vendor.sh c#
run: bash ci/setup/vendor.sh c#

- name: Build native library
env:
Expand Down Expand Up @@ -740,7 +814,7 @@ jobs:
10.x

- name: Vendor C++ core
run: bash ci/vendor.sh c#
run: bash ci/setup/vendor.sh c#

- name: Build Native library
run: |
Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ jobs:

- name: Install LLVM 21
if: matrix.language == 'c-cpp' || matrix.language == 'csharp' || matrix.language == 'java-kotlin'
run: bash ci/install_llvm.sh 21
run: bash ci/setup/install_llvm.sh 21

- name: Setup Java
if: matrix.language == 'java-kotlin'
Expand Down Expand Up @@ -92,7 +92,7 @@ jobs:
CC: clang-21
CXX: clang++-21
run: |
bash ci/vendor.sh c#
bash ci/setup/vendor.sh c#
cmake --preset clang-release -DTACHYON_ENABLE_BENCH=OFF
cmake --build --preset clang-release --parallel
mkdir -p bindings/csharp/src/TachyonIpc/runtimes/linux-x64/native
Expand All @@ -105,7 +105,7 @@ jobs:
CC: clang-21
CXX: clang++-21
run: |
bash ci/vendor.sh java
bash ci/setup/vendor.sh java
cmake --preset clang-release -DTACHYON_ENABLE_BENCH=OFF
cmake --build --preset clang-release --parallel
cmake --build --preset clang-release --target tachyon_java_resources
Expand Down
Loading
Loading