Details
-
Task
-
Resolution: Unresolved
-
P2: Important
-
None
-
None
Description
Overview / Intro
By default Qt for WebAssembly binaries are statically linked, where all object files are combined into a single .wasm binary. This has several advantages such as allowing for relatively simple distribution, where only small number of files needs to be deployment. In addition static linking enables size and performance optimizations such as dead code elimination and link-time optimization.
We introduced TP support for dynamic linkin in Qt 6.6 but a number of enhancements are still needed:
• Make multithreaded shared library builds work (QTBUG-114256)
• Make plugin loading work on Chrome (may require async emscripten_dlopen())
• Investigate Qt Quick Controls missing symbol error
• Test more modules (Qt Quick3D, Slate app, ++)
• Implement / demo just-in-time plugin loading (alternative to preloading).
• Link the (static) wasm platform plugin to QtGui (currently links to the app)
• Investigate if calling dlopen() on a secondary thread is possible
• Investigate emscripten_dlopen() and asyncify
• Investigate bug where emscripten_dlopen() appears to bypass the in-memory file system
• Investigate use of MAIN_MODULE=2
• Support cmake install and qt_generate_deploy_app_script() QTBUG-113849
Attachments
Issue Links
- blocks
-
QTBUG-100127 Official WebAssembly Support
- Closed
-
QTBUG-103347 Qt for WebAssembly 6.4 Release Activities
- Closed
- clones
-
QTBUG-63925 WebAssembly: shared libraries and dynamic linking
- In Progress
- depends on
-
QTBUG-108230 wasm: embind has unstable type-ids between shared libraries and executable
- Reported
-
QTBUG-106208 wasm: implement wasmdeploy to facilitate deploying shared libs
- Open
-
QTBUG-108232 wasm: shared lib: test qtdeclarative is working
- Open
-
QTBUG-108231 wasm: shared libs: get plugins and dlopen working
- In Progress