Skip to content

Commit 58f3f91

Browse files
committed
4x
1 parent 226e5b9 commit 58f3f91

File tree

9 files changed

+311
-266
lines changed

9 files changed

+311
-266
lines changed

CMakeLists.txt

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,16 @@ target_link_libraries(pyjs PRIVATE ${PYTHON_UTIL_LIBS} pybind11::embed)
115115

116116
target_compile_options(pyjs
117117
PUBLIC --std=c++17
118+
PUBLIC -msimd128
118119
PUBLIC -Wno-deprecated
119-
PUBLIC "SHELL: -fexceptions"
120+
PUBLIC "SHELL: -fwasm-exceptions"
120121
)
121122

122123
target_link_options(pyjs
123-
PRIVATE -lembind
124124
PUBLIC -Wno-unused-command-line-argument
125-
PUBLIC "SHELL: -fexceptions"
125+
PUBLIC "SHELL: -fwasm-exceptions"
126+
PUBLIC "SHELL: -lembind"
127+
# PUBLIC "SHELL: -fsanitize=address"
126128
#PUBLIC "SHELL:-s EXPORT_EXCEPTION_HANDLING_HELPERS"
127129
#PUBLIC "SHELL:-s EXCEPTION_CATCHING_ALLOWED=['we only want to allow exception handling in side modules']"
128130
)
@@ -198,44 +200,54 @@ target_link_libraries(pyjs_runtime_browser PRIVATE pyjs pybind11::embed ${PYTHO
198200
target_compile_options(pyjs_runtime_browser
199201
PUBLIC --std=c++17
200202
PUBLIC -Wno-deprecated
203+
PUBLIC -msimd128
201204
PUBLIC "SHELL: -s ENVIRONMENT=${ENVIRONMENT}"
202-
PUBLIC "SHELL: -fexceptions"
203-
#PUBLIC "SHELL:-s EXPORT_EXCEPTION_HANDLING_HELPERS"
205+
PUBLIC "SHELL: -fwasm-exceptions"
206+
PUBLIC "SHELL: -sSUPPORT_LONGJMP"
207+
PUBLIC "SHELL: -s EXPORT_EXCEPTION_HANDLING_HELPERS"
204208
PUBLIC "SHELL: -s FORCE_FILESYSTEM"
205-
PUBLIC "SHELL: -s LZ4=1"
206-
PUBLIC "SHELL: -flto"
207-
# PUBLIC "SHELL: -s WASM_BIGINT"
209+
PUBLIC "SHELL: -s EXPORT_ALL=1"
210+
# PUBLIC "SHELL: -flto"
211+
# PUBLIC "SHELL: -s MAXIMUM_MEMORY=2GB"
212+
# PUBLIC "SHELL: -fsanitize=address"
208213
)
209214

210215
target_link_options(pyjs_runtime_browser
211-
PRIVATE -lembind
212216
PUBLIC -Wno-unused-command-line-argument
213217
PUBLIC "SHELL: -s MODULARIZE=1"
214218
PUBLIC "SHELL: -s EXPORT_NAME=\"createModule\""
215-
PUBLIC "SHELL: -s EXPORT_ES6=0"
216-
PUBLIC "SHELL: -s USE_ES6_IMPORT_META=0"
217-
PUBLIC "SHELL: -s DEMANGLE_SUPPORT=0"
218-
PUBLIC "SHELL: -s ASSERTIONS=0"
219+
PUBLIC "SHELL: -s EXPORT_ALL=1"
220+
PUBLIC "SHELL: -s EXPORT_EXCEPTION_HANDLING_HELPERS"
221+
# PUBLIC "SHELL: -s EXPORT_ES6=0"
222+
# PUBLIC "SHELL: -s DEMANGLE_SUPPORT=0"
223+
# PUBLIC "SHELL: -s ASSERTIONS=0"
219224
PUBLIC "SHELL: -s ALLOW_MEMORY_GROWTH=1"
220-
PUBLIC "SHELL: -s EXIT_RUNTIME=1"
221-
PUBLIC "SHELL: -s WASM=1"
225+
# PUBLIC "SHELL: -s EXIT_RUNTIME=1"
226+
PUBLIC "SHELL: -s INITIAL_MEMORY=20971520"
227+
PUBLIC "SHELL: -s MAXIMUM_MEMORY=4GB"
228+
# PUBLIC "SHELL: -s WASM=1"
222229
PUBLIC "SHELL: -s USE_PTHREADS=0"
223230
PUBLIC "SHELL: -s ENVIRONMENT=${ENVIRONMENT}"
224-
PUBLIC "SHELL: -fexceptions"
231+
PUBLIC "SHELL: -fwasm-exceptions"
232+
PUBLIC "SHELL: -sSUPPORT_LONGJMP"
225233
PUBLIC "SHELL: -s MAIN_MODULE=1"
226-
PUBLIC "SHELL: -s ENVIRONMENT=${ENVIRONMENT}"
227-
PUBLIC "SHELL: -s TOTAL_STACK=16mb"
228-
PUBLIC "SHELL: -s INITIAL_MEMORY=64mb"
234+
# PUBLIC "SHELL: -s MAXIMUM_MEMORY=2GB"
229235
PUBLIC "SHELL: -s FORCE_FILESYSTEM"
230-
PUBLIC "SHELL: -s LZ4=1"
231236
PUBLIC "SHELL: --post-js pyjs_post.js"
232237
PUBLIC "SHELL: --pre-js pyjs_pre.js"
233-
PUBLIC "SHELL: -flto"
234-
PUBLIC "SHELL: -lidbfs.js"
235-
PUBLIC "SHELL: -s WASM_BIGINT"
238+
# PUBLIC "SHELL: -flto"
239+
# PUBLIC "SHELL: -lidbfs.js"
240+
PUBLIC "SHELL: -lembind"
241+
# PUBLIC "SHELL: -fsanitize=address"
236242
)
237243

238244

245+
# target_link_options(pyjs_runtime_browser PRIVATE
246+
# "-sEXPORTED_FUNCTIONS=['_emscripten_dlopen_promise','_dlerror','FS']"
247+
# )
248+
249+
250+
239251
install(TARGETS pyjs_runtime_browser
240252
DESTINATION ${CMAKE_INSTALL_PREFIX}/lib_js/pyjs)
241253
install(FILES

environment-dev.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
name: pyjs-wasm
22
channels:
33
- conda-forge
4+
- /Users/thorstenbeier/src/recipes/output
45
- https://repo.prefix.dev/emscripten-forge-dev
6+
57
dependencies:
68
- cmake
79
- pip
@@ -27,7 +29,7 @@ dependencies:
2729
- notebook >=7,<8 # to include the extension to switch between JupyterLab and Notebook
2830
# pyjs_code_runner dev deps
2931
- hatchling
30-
- emscripten_emscripten-wasm32
32+
- emscripten_emscripten-wasm32 == 4.0.9
3133
- pip:
3234
- JLDracula
3335
- pyjs_code_runner >= 3.0

include/pyjs/post_js/fixes.js

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,3 +7,11 @@ Module['PATH'] = PATH
77
Module['LDSO'] = LDSO
88
Module['getDylinkMetadata'] = getDylinkMetadata
99
Module['loadDynamicLibrary'] = loadDynamicLibrary
10+
Module['getPromise'] = getPromise
11+
Module['promiseMap'] = promiseMap
12+
13+
Module['stackSave'] = stackSave
14+
Module['stackRestore'] = stackRestore
15+
Module['runtimeKeepalivePush'] = runtimeKeepalivePush
16+
Module['UTF8ToString'] = UTF8ToString
17+
Module['stringToUTF8OnStack'] = stringToUTF8OnStack

0 commit comments

Comments
 (0)