diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 3133f6b..a4a42b5 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -1,11 +1,10 @@ name: CI on: - workflow_dispatch: pull_request: push: branches: - - main + - main schedule: - cron: '0 2 * * *' # run at 2 AM UTC @@ -17,8 +16,7 @@ jobs: strategy: fail-fast: false - matrix: - emsdk_ver: ["3.1.45"] + steps: - uses: actions/checkout@v4 @@ -32,15 +30,6 @@ jobs: environment-file: environment-wasm-build.yml environment-name: xeus-javascript-wasm-build - ################################################################ - # emsdk itself - ################################################################ - - name: Setup emsdk - shell: bash -l {0} - run: | - - emsdk install ${{ matrix.emsdk_ver }} - ################################################################ # C++ build ################################################################ @@ -48,15 +37,13 @@ jobs: shell: bash -l {0} run: | - emsdk activate ${{ matrix.emsdk_ver }} - source $CONDA_EMSDK_DIR/emsdk_env.sh - micromamba create -f environment-wasm-host.yml --platform=emscripten-wasm32 + + micromamba create -f environment-wasm-host.yml --platform=emscripten-wasm32 --yes mkdir build pushd build - export EMPACK_PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-javascript-wasm-build export PREFIX=$MAMBA_ROOT_PREFIX/envs/xeus-javascript-wasm-host export CMAKE_PREFIX_PATH=$PREFIX export CMAKE_SYSTEM_PREFIX_PATH=$PREFIX @@ -97,7 +84,7 @@ jobs: # upload to github pages ################################################################ - name: Upload Pages artifact - uses: actions/upload-pages-artifact@v2 + uses: actions/upload-pages-artifact@v3 with: path: _output @@ -126,4 +113,4 @@ jobs: steps: - name: Deploy to GitHub Pages id: deployment - uses: actions/deploy-pages@v3 # or specific "vX.X.X" version tag for this action + uses: actions/deploy-pages@v4 # or specific "vX.X.X" version tag for this action diff --git a/CMakeLists.txt b/CMakeLists.txt index 7232797..a5d435d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -6,7 +6,7 @@ #The full license is in the file LICENSE, distributed with this software. ############################################################################# -cmake_minimum_required(VERSION 3.4.3) +cmake_minimum_required(VERSION 4.0.0) project(xeus-javascript) set(CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/cmake;${CMAKE_MODULE_PATH}") @@ -57,7 +57,7 @@ if(EMSCRIPTEN) SET(XEUS_JAVASCRIPT_BUILD_STATIC ON) SET(XEUS_JAVASCRIPT_BUILD_SHARED OFF) SET(XEUS_JAVASCRIPT_BUILD_EXECUTABLE OFF) - SET(XEUS_JAVASCRIPT_USE_SHARED_XEUS OFF) + SET(XEUS_JAVASCRIPT_USE_SHARED_XEUS ON) SET(XEUS_JAVASCRIPT_USE_SHARED_XEUS_JAVASCRIPT OFF) SET(XEUS_JAVASCRIPT_BUILD_TESTS OFF) endif() @@ -261,17 +261,28 @@ if (XEUS_JAVASCRIPT_BUILD_STATIC) list(APPEND XEUS_JAVASCRIPT_TARGETS xeus-javascript-static) endif () +target_link_options(xeus-javascript-static + PUBLIC "SHELL: -s WASM_BIGINT=1" + PUBLIC "SHELL: -s ALLOW_MEMORY_GROWTH=1" +) include(WasmBuildOptions) add_executable(xjavascript src/main_emscripten_kernel.cpp ) -target_compile_options(xjavascript PRIVATE -fPIC) +target_compile_options(xjavascript +PRIVATE "-fPIC" +PUBLIC "SHELL: -s WASM_BIGINT=1" +PUBLIC "SHELL: -s ALLOW_MEMORY_GROWTH=1" +) XEUS_JAVASCRIPT_set_kernel_options(xjavascript) xeus_wasm_compile_options(xjavascript) xeus_wasm_link_options(xjavascript "web,worker") # target_link_options(xjavascript + PUBLIC "SHELL: -s WASM_BIGINT=1" + PUBLIC "SHELL: -s ALLOW_MEMORY_GROWTH=1" + PUBLIC "SHELL: -s MAIN_MODULE=1" PUBLIC "SHELL: -s NO_EXIT_RUNTIME=1" PUBLIC "SHELL: -s FORCE_FILESYSTEM=1" PUBLIC "SHELL: --pre-js ${CMAKE_CURRENT_SOURCE_DIR}/src/pre.js" diff --git a/environment-wasm-build.yml b/environment-wasm-build.yml index dccaf99..a543748 100644 --- a/environment-wasm-build.yml +++ b/environment-wasm-build.yml @@ -1,11 +1,13 @@ name: xeus-javascript-wasm-build channels: + - https://repo.prefix.dev/emscripten-forge-dev - conda-forge dependencies: + - cmake + - pkg-config + - emscripten_emscripten-wasm32==3.1.73 - anywidget - cmake - - emsdk >=3.1.46 - - empack >=3.2.0 - jupyter_server # to enable contents - jupyterlite-core - jupyterlite-xeus diff --git a/environment-wasm-host.yml b/environment-wasm-host.yml index 77b52e5..6e0ca82 100644 --- a/environment-wasm-host.yml +++ b/environment-wasm-host.yml @@ -1,8 +1,8 @@ name: xeus-javascript-wasm-host channels: - - https://repo.mamba.pm/emscripten-forge + - https://repo.prefix.dev/emscripten-forge-dev - https://repo.mamba.pm/conda-forge dependencies: - nlohmann_json - - xeus-lite >=3.0.0,<4.0 - - xeus >=5.0.0,<6.0 + - xeus-lite >= 4.0.0 + - xeus >= 2.4.0 diff --git a/src/post.js b/src/post.js index 9fa6b9f..4c024a9 100644 --- a/src/post.js +++ b/src/post.js @@ -685,8 +685,12 @@ Module._complete_request = _complete_request; Module.FS = FS; Module.ijs = ijs; +if (!('wasmTable' in Module)) { + Module['wasmTable'] = wasmTable +} -// function get_comm_manager(){ -// return Module._com_manager; -// } -// Module.get_comm_manager = get_comm_manager; +Module['FS'] = FS +Module['PATH'] = PATH +Module['LDSO'] = LDSO +Module['getDylinkMetadata'] = getDylinkMetadata +Module['loadDynamicLibrary'] = loadDynamicLibrary