Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-63925 WebAssembly: shared libraries and dynamic linking
  3. QTBUG-125024

QLibrary: support async library download and load using emscripten_dlopen()

XMLWordPrintable

    • Icon: Technical task Technical task
    • Resolution: Unresolved
    • Icon: P2: Important P2: Important
    • None
    • Core: Plugins
    • None
    • WebAssembly

      We should be able to support async library loading under any one of the following conditions:

      • Asyncify is enabled (Qt can block the main thread)
      • The load() call is being made on a secondary thread (which can be blocked)
      • Async load API is used (private or public) (no need to block)

      However, there are issues which combining asyncify with dynamic linking and multithreading with dynamic linking. This makes using an async API the most via option.

      emscripten_dlopen() itself is async with a callback. That can be transformed into a blocking call using the standard QEventLoop::exec() approach.

      QTBUG-124884 tracks the addition of public API to QLibrary. For this task we can start with a private API.

      The implementation should handle the case where dlopen() is called more than once for the same library, before the first load has completed. (This is not currently handled by Emscripten).

       

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

            qt.webassembly qt.webassembly
            sorvig Morten Sørvig
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

              Created:
              Updated:

                There are no open Gerrit changes