Qt wiki will be updated on October 12th 2023 starting at 11:30 AM (EEST) and the maintenance will last around 2-3 hours. During the maintenance the site will be unavailable.
QtCS2021 - Plugin-based I/O: Difference between revisions
(Created page with "Category:QtCS2021 ==Session Summary== QML and Qt Quick have some ad-hoc QNetworkRequest code for fetching qml files and image files from web servers, but it seems a bit...") |
(notes) |
||
Line 7: | Line 7: | ||
==Session Owners== | ==Session Owners== | ||
* Shawn Rutledge (shawn.rutledge@qt.io) | *Shawn Rutledge (shawn.rutledge@qt.io) | ||
==Notes== | ==Notes== | ||
KF6 has an option not to fork slaves | |||
first solve the blocking IO problem before worrying about plugins | |||
stat, ls, etc... not just reading/writing | |||
Linux has io_uring now | |||
GIO if at all, not GVfs | |||
maybe use d-bus API instead of gio lib? | |||
some Qt APIs are already async; we just need a few more | |||
push vs. pull: more data available; signals? | |||
QDir listing is not async, for example | |||
could return generators / iterators | |||
don't block the main thread (QFuture or signal) | |||
get results as they come (signal) | |||
will be much better with coroutines | |||
<nowiki>https://qcoro.dvratil.cz/</nowiki> | |||
<nowiki>https://youtu.be/URP22JsL1XM?t=5884</nowiki> | |||
just make a new KIO frontend API for Qt, reuse the plugins | |||
but that would involve code duplication too | |||
threading KIO requires a re-design anyway | |||
job-based API worked out well in practice, many other places than just KIO | |||
webkit uses QNAM with different schemes; it's also job-based | |||
some protocols need UI : e.g. ssl prompts, password prompts | |||
signal of course | |||
http, file and qrc would be in qt by default (and more?) | |||
when the slave wants something how does it ask? second pass protocol change: make that possible | |||
gnome/kde interop problem... | |||
mounting an existing FUSE filesystem | |||
need a freedesktop standard for sharing credentials over d-bus | |||
d-bus without a daemon for non-Linux? but there is p2p qdbus |
Revision as of 15:14, 22 June 2021
Session Summary
QML and Qt Quick have some ad-hoc QNetworkRequest code for fetching qml files and image files from web servers, but it seems a bit short-sighted that this is not done on top of some abstraction for reading files from various kinds of sources. (PDF files are rendered via Image, with this being one reason: to reuse that code rather that duplicating it. QTextDocument should support network loading too: that way it will become possible to load QML Text from a URL, or in widget apps with QTextBrowser, etc.) Http will not always be enough: the distributed web is an up-and-coming concept, and there have always been other protocols for fetching files and assets. Maybe we want to allow loading remote assets in QtQuick3D too, etc. Currently KIO is nicely extensible, but it's not built-in to Qt, and the architecture that requires a separate process for each operation is not ideal. What should we do about it? Another aspect of this is that we should probably have an I/O API in QML eventually; and it should probably follow good asynchronous design principles, and look familiar to Javascript developers. Hopefully it could be built upon the same I/O layer. Therefore we should design the new abstraction to be suitable for that.
Session Owners
- Shawn Rutledge (shawn.rutledge@qt.io)
Notes
KF6 has an option not to fork slaves
first solve the blocking IO problem before worrying about plugins
stat, ls, etc... not just reading/writing
Linux has io_uring now
GIO if at all, not GVfs
maybe use d-bus API instead of gio lib?
some Qt APIs are already async; we just need a few more
push vs. pull: more data available; signals?
QDir listing is not async, for example
could return generators / iterators
don't block the main thread (QFuture or signal)
get results as they come (signal)
will be much better with coroutines
https://qcoro.dvratil.cz/
https://youtu.be/URP22JsL1XM?t=5884
just make a new KIO frontend API for Qt, reuse the plugins
but that would involve code duplication too
threading KIO requires a re-design anyway
job-based API worked out well in practice, many other places than just KIO
webkit uses QNAM with different schemes; it's also job-based
some protocols need UI : e.g. ssl prompts, password prompts
signal of course
http, file and qrc would be in qt by default (and more?)
when the slave wants something how does it ask? second pass protocol change: make that possible
gnome/kde interop problem...
mounting an existing FUSE filesystem
need a freedesktop standard for sharing credentials over d-bus
d-bus without a daemon for non-Linux? but there is p2p qdbus