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

Details

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

    Description

      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).

       

      Attachments

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

        Activity

          People

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

            Dates

              Created:
              Updated:

              Gerrit Reviews

                There are no open Gerrit changes