Re: [Development] Windows 7 support will be dropped in Qt 6

2020-06-15 Thread Kevin Kofler
Volker Hilsheimer wrote:
> Sounds like y’all have a wonderful new business opportunity ahead of
> yourselves: charge your new-leaf-app-on-old-OS customers handsomely for
> the extra effort. After all, you do have to keep your Windows 7 test rigs
> around (and secured); perhaps even pay some extra retainers to those
> developers on your team that know about those Windows 7 quirks. That can’t
> be cheap in terms of net and esp opportunity cost!

You are still stuck in the commercial world there. In the Free Software 
world, I run a shell script that builds an .exe with cross-MinGW(-w64) and 
an installer with cross-NSIS, and only if I'm really nice, I'll run the 
output with WINE once for a minute or two. Then I upload it. Testing is what 
I have users for. :-p

Kevin Kofler

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Windows 7 support will be dropped in Qt 6

2020-06-15 Thread Volker Hilsheimer
Sounds like y’all have a wonderful new business opportunity ahead of 
yourselves: charge your new-leaf-app-on-old-OS customers handsomely for the 
extra effort. After all, you do have to keep your Windows 7 test rigs around 
(and secured); perhaps even pay some extra retainers to those developers on 
your team that know about those Windows 7 quirks. That can’t be cheap in terms 
of net and esp opportunity cost!

Share some of the remaining profit with my employer to get access to the 
commercial-only 5.15 LTS releases.

Cheers,
Volker



From: Development  on behalf of Kevin 
Kofler 
Sent: Tuesday, June 16, 2020 1:36:54 AM
To: development@qt-project.org 
Subject: Re: [Development] Windows 7 support will be dropped in Qt 6

Edward Welbourne wrote:
> How many of those Win 7 users are routinely upgrading the software on
> their systems ?  Given that they're not updating the O/S, it seems
> reasonable to presume that they are, at least, somewhat conservative
> about upgrades; they don't want the shiny new features the folk you
> dismiss as "cool kids" are upgrading for, so why would they care if the
> Qt apps they're using are upgraded to Qt 6 ?  Surely such conservative
> users are likely to *prefer* to have such updates as they do take in
> contain only security fixes - i.e. the sorts of change that happen on an
> LTS version of Qt, rather than the radical change that comes with a new
> major version.

I cannot really know what goes in the mind of Windows users (as I cannot
fathom why one would want to use that operating system to begin with), but
at least here on GNU/Linux, it is a common request by users to want their
core system to never change, but the latest applications on top of
it. That, apparently contradictory, request is often hard to cater for, but
it always keeps coming up (leading to ideas such as Fedora/RHEL Modularity,
which come with their own can of worms, but that is not the topic here).

So, if Windows users are anything like GNU/Linux users, they will definitely
want the latest leaf applications on their old Windows 7, which implies also
the latest Qt if those applications happen to use Qt. Unless, of course, the
developers of the application never upgrade to Qt 6, but surely that cannot
be your targeted outcome.

Another possible outcome that I can imagine is somebody backporting the LGPL
Qt 6 to Windows 7, which would not only be an enormous waste of developer
effort (to basically readd all the compatibility code that you removed), but
would also lead to a version of Qt circulating that you cannot quality-
control (chances are that such a community port would have more bugs than an
official port) nor sell commercial licenses for (chances are that the port
would never get submitted under your CLA, since it is unlikely that a
patchset reverting a deliberate upstream change would ever get merged).

> For reference, at home I'm one of those conservative users - albeit on
> Linux - using Debian/stable and often sliding into Debian/old-stable
> rather than update, just because there's a newer stable available.  I
> like the stability and don't care so much about the shiny new things; so
> don't try accusing me of looking down on those who stick with the tried
> and trusted things they have; and don't try telling me that software
> developers should make sure their newest versions work on those stable
> systems, because I - like many such conservative users - don't want
> shiny new versions, I only want security fixes to stable versions,
> sacrificing shiny new features in favour of reliability.

I can tell you from experience that, while truly conservative users like you
definitely exist (it's not just you), there is also plenty of user demand
for shiny new applications on a conservative base system.

> That's adaptation by the app developers in their "new release" versions;
> we understand perfectly well that app maintainers (in so far as *they*
> care to continue supporting legacy versions of any O/S) also *want* to
> have a stable version, whose security and stability they know well from
> experience; which means sticking with LTS versions of the libraries they
> use.  Just as we have our stable branches and our shiny new version, app
> maintainers who care about supporting legacy platforms used by
> conservative users have their stable versions, that they maintain atop
> stable versions of their prerequisites.

That only works if you actually make your LTS versions available to the
large community of Qt developers, most of whom use the LGPL version of Qt
and cannot use commercial licenses for various reasons.

If the plan to provide LTS versions only to commercial customers is
implemented for 5.15 as planned, LTS will be completely useless to the vast
majority of Qt developers.

> If we *never* allow ourselves breaking changes, we'd still have a nice
> stable product that worked great on an O/S or two from the last century.
> Qt would thus be irrelevant.


Re: [Development] Windows 7 support will be dropped in Qt 6

2020-06-15 Thread Kevin Kofler
Edward Welbourne wrote:
> How many of those Win 7 users are routinely upgrading the software on
> their systems ?  Given that they're not updating the O/S, it seems
> reasonable to presume that they are, at least, somewhat conservative
> about upgrades; they don't want the shiny new features the folk you
> dismiss as "cool kids" are upgrading for, so why would they care if the
> Qt apps they're using are upgraded to Qt 6 ?  Surely such conservative
> users are likely to *prefer* to have such updates as they do take in
> contain only security fixes - i.e. the sorts of change that happen on an
> LTS version of Qt, rather than the radical change that comes with a new
> major version.

I cannot really know what goes in the mind of Windows users (as I cannot 
fathom why one would want to use that operating system to begin with), but 
at least here on GNU/Linux, it is a common request by users to want their 
core system to never change, but the latest applications on top of 
it. That, apparently contradictory, request is often hard to cater for, but 
it always keeps coming up (leading to ideas such as Fedora/RHEL Modularity, 
which come with their own can of worms, but that is not the topic here).

So, if Windows users are anything like GNU/Linux users, they will definitely 
want the latest leaf applications on their old Windows 7, which implies also 
the latest Qt if those applications happen to use Qt. Unless, of course, the 
developers of the application never upgrade to Qt 6, but surely that cannot 
be your targeted outcome.

Another possible outcome that I can imagine is somebody backporting the LGPL 
Qt 6 to Windows 7, which would not only be an enormous waste of developer 
effort (to basically readd all the compatibility code that you removed), but 
would also lead to a version of Qt circulating that you cannot quality-
control (chances are that such a community port would have more bugs than an 
official port) nor sell commercial licenses for (chances are that the port 
would never get submitted under your CLA, since it is unlikely that a 
patchset reverting a deliberate upstream change would ever get merged).

> For reference, at home I'm one of those conservative users - albeit on
> Linux - using Debian/stable and often sliding into Debian/old-stable
> rather than update, just because there's a newer stable available.  I
> like the stability and don't care so much about the shiny new things; so
> don't try accusing me of looking down on those who stick with the tried
> and trusted things they have; and don't try telling me that software
> developers should make sure their newest versions work on those stable
> systems, because I - like many such conservative users - don't want
> shiny new versions, I only want security fixes to stable versions,
> sacrificing shiny new features in favour of reliability.

I can tell you from experience that, while truly conservative users like you 
definitely exist (it's not just you), there is also plenty of user demand 
for shiny new applications on a conservative base system.

> That's adaptation by the app developers in their "new release" versions;
> we understand perfectly well that app maintainers (in so far as *they*
> care to continue supporting legacy versions of any O/S) also *want* to
> have a stable version, whose security and stability they know well from
> experience; which means sticking with LTS versions of the libraries they
> use.  Just as we have our stable branches and our shiny new version, app
> maintainers who care about supporting legacy platforms used by
> conservative users have their stable versions, that they maintain atop
> stable versions of their prerequisites.

That only works if you actually make your LTS versions available to the 
large community of Qt developers, most of whom use the LGPL version of Qt 
and cannot use commercial licenses for various reasons.

If the plan to provide LTS versions only to commercial customers is 
implemented for 5.15 as planned, LTS will be completely useless to the vast 
majority of Qt developers.

> If we *never* allow ourselves breaking changes, we'd still have a nice
> stable product that worked great on an O/S or two from the last century.
> Qt would thus be irrelevant.

Nonsense. We would have a nice stable product that just works on old and new 
operating systems alike. New operating systems are either supported out of 
the box thanks to backwards compatibility, or support can be added without 
any breaking changes.

Supporting a new operating system version does not require dropping support 
for older versions, and most definitely does not require the other (entirely 
unrelated) breaking changes (deprecations etc.) that are being implemented 
in Qt 6.

> Just had a quick look at that issue [QTBUG-74687]; and I note that it
> *didn't* ask your opinion, it set out to evaluate how practical it would
> be to drop Win 7.

Huh? How do you "evaluate how practical it would be to drop Win 7" WITHOUT 

Re: [Development] First Qt6.0.0 Snaphot available

2020-06-15 Thread Thiago Macieira
On Monday, 15 June 2020 09:37:31 PDT Alexandru Croitor wrote:
> Thanks for the feedback. Usually Qt forces usage of the bundled 3rd party
> libs via -qt-libpng flags, etc

And that just goes to show why you shouldn't use those binaries.

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel System Software Products



___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] ?==?utf-8?q? First Qt6.0.0 Snaphot available

2020-06-15 Thread Bernhard Rosenkraenzer via Development
On Monday, June 15, 2020 14:06 CEST, Jani Heikkinen  
wrote: 
 
> Hi Everyone,
> 
> We have published first Qt6.0.0 snapshot today, see more info from Tuukka's 
> blog post: https://www.qt.io/blog/first-qt-6.0-snapshot-available

Hi,
is the source available somewhere? Can't find any 6.0 tarballs on 
download.qt-project.org yet. Would be nice to keep the snapshots in sync...

ttyl
bero

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


[Development] About Qt6 and qt-solitions repository

2020-06-15 Thread Vincas Dargis

Hi list,

I see more and more discussions about Qt6, and though what future will look like for qt-solutions 
[0] repo? It has some useful tools like qtservice and qtsingleapplication, though other "solutions" 
seems not really updated any more.


Anyhow, I guess it's purely community effort to make any of this work with Qt6 
(and CMake)?

Maybe there should be qt6-solutions repo for Qt6 port?

..or just if-def'ing them to make work for Qt6 *and* Qt5, like it's also made 
to work with Qt4? [1]

When writing CMakeLists.txt/.cmake, should "include/link [2] logic still be 
there?

Also, what about configure script that asks about these two use cases? [3]

Or maybe some one is already answered these questions and is planning to do any 
of this work?

Thanks!

[0] https://code.qt.io/cgit/qt-solutions/qt-solutions.git/
[1] 
https://code.qt.io/cgit/qt-solutions/qt-solutions.git/tree/qtservice/src/qtservice.cpp?id=7244e43695a8597bb14bf97b693536ba80a3dd03#n76
[2] 
https://code.qt.io/cgit/qt-solutions/qt-solutions.git/tree/qtservice/src/qtservice.pri?id=290bd1fd7d4ab837ad42e933518a1d08666a2cd8#n7
[3] 
https://code.qt.io/cgit/qt-solutions/qt-solutions.git/tree/qtservice/configure?id=5019ece540d1f9dc08157f67b55d1c4ed896ae39

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Windows 7 support will be dropped in Qt 6

2020-06-15 Thread Corey Pendleton
Hi Max,
I get the issues as you present them. Why drop support for the 2nd most popular 
OS version out there?! This also doubles the effort required for Qt developers 
who want to target older systems with Qt 6 apps. That is certainly a pain 
point! There are couple more thoughts I've had after reviewing your excellent 
metrics.

1. Currently Win 7 usage is declining at a little over 1% per month based on 
the articles you shared. This indicates that by the time Qt 6.2 (the next LTS) 
is released next year, Win 7 usage will most likely drop below MacOS, and 
further, it will be mostly gone by the time 5.15 LTS support ends (IF trends 
continue). This leads me to believe that the majority of Qt app developers 
could safely branch, or else delay migration to Qt 6 for a few more months in 
order to give the majority of their customers time to move with the industry. 
As a cross-platform framework, we do have to consider the "most common" usage 
scenarios first. But I can tell you understand this.
2. It may be completely possible for customers to build a version of Qt that 
still works with Windows 7! The key point would be that the onus moves to the 
Qt developers who need this support to do their own build. This is extra 
effort, but there seem to be only a few particular APIs that Qt is looking to 
remove support for. If an app doesn't use these APIs, this would not be a 
problem. Or you could revert a few patches and do a custom build for Win7.

Ok, 3 thoughts. 
I think it's worth noting in addition to what Eddy shared, the Qt team did a 
pretty decent job of responding to the concerns raised on that QTBUG in spite 
of the fact that it was not intended as a feedback mechanism. We recognize that 
any big shift in support causes pain for the development community. Some more 
than others. And yet, in order to move forward we must all face the pain of 
evolution (to wax a little philosophical  ). Making the majority of these 
breaks happen with a Major version release makes the most sense as it 
consolidates this pain into one point in time hopefully making the OVERALL 
experience of developing and maintaining Qt projects over time, as smooth and 
painless as possible.

Thanks again to all our great developers for all the insightful discussion 
shared here!
Corey Pendleton
Senior Solutions Engineer, Americas


-Original Message-
From: Development  On Behalf Of Edward 
Welbourne
Sent: Monday, June 15, 2020 5:35 AM
To: Max Paperno 
Cc: development@qt-project.org; inter...@qt-project.org
Subject: Re: [Development] Windows 7 support will be dropped in Qt 6

Max Paperno (13 June 2020 03:28) wrote:
> I would restate my objection by pointing out again [1] that Win 7 is 
> still the 2nd most popular desktop OS in the world, with 3x more users 
> than all MacOS versions combined.  Never mind Linux, which is on par 
> with Win XP users (the previous "known good" Windows version prior to 
> 7).

How many of those Win 7 users are routinely upgrading the software on their 
systems ?  Given that they're not updating the O/S, it seems reasonable to 
presume that they are, at least, somewhat conservative about upgrades; they 
don't want the shiny new features the folk you dismiss as "cool kids" are 
upgrading for, so why would they care if the Qt apps they're using are upgraded 
to Qt 6 ?  Surely such conservative users are likely to *prefer* to have such 
updates as they do take in contain only security fixes - i.e. the sorts of 
change that happen on an LTS version of Qt, rather than the radical change that 
comes with a new major version.

For reference, at home I'm one of those conservative users - albeit on Linux - 
using Debian/stable and often sliding into Debian/old-stable rather than 
update, just because there's a newer stable available.  I like the stability 
and don't care so much about the shiny new things; so don't try accusing me of 
looking down on those who stick with the tried and trusted things they have; 
and don't try telling me that software developers should make sure their newest 
versions work on those stable systems, because I - like many such conservative 
users - don't want shiny new versions, I only want security fixes to stable 
versions, sacrificing shiny new features in favour of reliability.

Meanwhile, at work, I use shiny new things so that I can deliver shiny new 
things to those who *do* want them; and I fix bugs in old things so that those 
who want stability get it.  Because software developers should cater to what 
their users want - some of them care more about stability, others about shiny 
new things.  In the end, giving the latter what they want today is the way to 
ensure the former get what they'll be wanting in a few years time (once the 
shiny new things have been tried, tested, fixed and made stable, while those 
using them have found which of them live up to their shininess and which fade 
too fast to be worth caring about).  So we have stable versions and we make 

Re: [Development] First Qt6.0.0 Snaphot available

2020-06-15 Thread Alexandru Croitor


> On 15. Jun 2020, at 18:01, Albert Astals Cid via Development 
>  wrote:
> 
> El dilluns, 15 de juny de 2020, a les 14:06:00 CEST, Jani Heikkinen va 
> escriure:
>> Hi Everyone,
>> 
>> We have published first Qt6.0.0 snapshot today, see more info from Tuukka's
>> blog post: https://www.qt.io/blog/first-qt-6.0-snapshot-available
>> 
>> Qt 6.0.0 snapshot can be found from 'Preview' category in Qt online
>> installer/Maintenance tool. This snapshot is based on quite old content but
>> we are planning to do silent updates occasionally so please also check
>> updates now and then.
> 
> The Linux packages are "incomplete"
>  libQt6Core.so.6.0.0 is linked against libdouble-conversion.so.1 
>  libQt6Gui.so.6.0.0 is linked against libpng15.so.15 
> but neither of them are shipped
> 
> So unless you're using the old RedHat that the binary packages have been 
> built 
> against, the binary packages are not very useful.
> 
> You already ship libicu* so i guess you have a way of shipping non Qt libs 
> that are actually needed for the binary package to be actually binary/
> standalone.

Hi Albert,

Thanks for the feedback. Usually Qt forces usage of the bundled 3rd party libs
via -qt-libpng flags, etc

These snapshots were the first snapshots made with the CMake built Qt, and thus 
some of those options were missing.
I've pushed a change to address that.
https://codereview.qt-project.org/c/qt/qt5/+/304445


___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] First Qt6.0.0 Snaphot available

2020-06-15 Thread Albert Astals Cid via Development
El dilluns, 15 de juny de 2020, a les 14:06:00 CEST, Jani Heikkinen va 
escriure:
> Hi Everyone,
> 
> We have published first Qt6.0.0 snapshot today, see more info from Tuukka's
> blog post: https://www.qt.io/blog/first-qt-6.0-snapshot-available
> 
> Qt 6.0.0 snapshot can be found from 'Preview' category in Qt online
> installer/Maintenance tool. This snapshot is based on quite old content but
> we are planning to do silent updates occasionally so please also check
> updates now and then.

The Linux packages are "incomplete"
  libQt6Core.so.6.0.0 is linked against libdouble-conversion.so.1 
  libQt6Gui.so.6.0.0 is linked against libpng15.so.15 
but neither of them are shipped

So unless you're using the old RedHat that the binary packages have been built 
against, the binary packages are not very useful.

You already ship libicu* so i guess you have a way of shipping non Qt libs 
that are actually needed for the binary package to be actually binary/
standalone.

Cheers,
  Albert

> 
> br,
> Jani Heikkinen
> Release Manager
> ___
> Development mailing list
> Development@qt-project.org
> https://lists.qt-project.org/listinfo/development


-- 
Albert Astals Cid | albert.astals@kdab.com | Senior Software Engineer
Klarälvdalens Datakonsult AB, a KDAB Group company
Tel: Sweden (HQ) +46-563-540090, USA +1-866-777-KDAB(5322)
KDAB - The Qt, C++ and OpenGL Experts

___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


[Development] First Qt6.0.0 Snaphot available

2020-06-15 Thread Jani Heikkinen
Hi Everyone,

We have published first Qt6.0.0 snapshot today, see more info from Tuukka's 
blog post: https://www.qt.io/blog/first-qt-6.0-snapshot-available

Qt 6.0.0 snapshot can be found from 'Preview' category in Qt online 
installer/Maintenance tool. This snapshot is based on quite old content but we 
are planning to do silent updates occasionally so please also check updates now 
and then.

br,
Jani Heikkinen
Release Manager
___
Development mailing list
Development@qt-project.org
https://lists.qt-project.org/listinfo/development


Re: [Development] Windows 7 support will be dropped in Qt 6

2020-06-15 Thread Edward Welbourne
Max Paperno (13 June 2020 03:28) wrote:
> I would restate my objection by pointing out again [1] that Win 7 is
> still the 2nd most popular desktop OS in the world, with 3x more users
> than all MacOS versions combined.  Never mind Linux, which is on par
> with Win XP users (the previous "known good" Windows version prior to
> 7).

How many of those Win 7 users are routinely upgrading the software on
their systems ?  Given that they're not updating the O/S, it seems
reasonable to presume that they are, at least, somewhat conservative
about upgrades; they don't want the shiny new features the folk you
dismiss as "cool kids" are upgrading for, so why would they care if the
Qt apps they're using are upgraded to Qt 6 ?  Surely such conservative
users are likely to *prefer* to have such updates as they do take in
contain only security fixes - i.e. the sorts of change that happen on an
LTS version of Qt, rather than the radical change that comes with a new
major version.

For reference, at home I'm one of those conservative users - albeit on
Linux - using Debian/stable and often sliding into Debian/old-stable
rather than update, just because there's a newer stable available.  I
like the stability and don't care so much about the shiny new things; so
don't try accusing me of looking down on those who stick with the tried
and trusted things they have; and don't try telling me that software
developers should make sure their newest versions work on those stable
systems, because I - like many such conservative users - don't want
shiny new versions, I only want security fixes to stable versions,
sacrificing shiny new features in favour of reliability.

Meanwhile, at work, I use shiny new things so that I can deliver shiny
new things to those who *do* want them; and I fix bugs in old things so
that those who want stability get it.  Because software developers
should cater to what their users want - some of them care more about
stability, others about shiny new things.  In the end, giving the latter
what they want today is the way to ensure the former get what they'll be
wanting in a few years time (once the shiny new things have been tried,
tested, fixed and made stable, while those using them have found which
of them live up to their shininess and which fade too fast to be worth
caring about).  So we have stable versions and we make new versions that
break old stuff in order to deliver new things - and stay relevant.

> Any software publisher not catering exclusively to the "cool kids"
> with the "latest and greatest" mentality would be shooting themselves
> in the foot by dropping Win 7 support at this point.  That's millions
> of potential users.  Depending on one's market, of course.

And Qt won't be dropping support for Win 7, it'll still be supported by
5.15, which will have the types of change that conservative users and
sysadmins are willing to take in on the machines whose O/S they're not
willing to upgrade.

> I would bet Qt could save a lot more resources by dropping MacOS/Linux
> support entirely.  Not saying that's a good idea, but dropping the 2nd
> most popular OS instead doesn't make any sense to me either.

Any saving is only meaningful in terms of what it lets you get instead.
A platform with more *users* isn't necessarily a platform with more
downloads of software previously absent from that platform, or upgrades
of software previously in use.  A platform whose users routinely upgrade
their O/S is also a platform on which one can reasonably expect users to
routinely upgrade their other software.  Numbers of users are only
relevant via their contribution to numbers of downloads / installs /
upgrades.

> Yes, anyone needing to support Win 7 can still use Qt 5, which is
> what's going to happen for several more years at least.

... and that's what most users of Win 7 are likely to want; the only
updates they want are security fixes.  If they wanted shiny new
features, they'd be upgrading the O/S, too.

> I though one of the goals for Qt 6 was quicker adaptation than the Qt
> 4 -> 5 migration.

That's adaptation by the app developers in their "new release" versions;
we understand perfectly well that app maintainers (in so far as *they*
care to continue supporting legacy versions of any O/S) also *want* to
have a stable version, whose security and stability they know well from
experience; which means sticking with LTS versions of the libraries they
use.  Just as we have our stable branches and our shiny new version, app
maintainers who care about supporting legacy platforms used by
conservative users have their stable versions, that they maintain atop
stable versions of their prerequisites.

> From this move, and everything I've seen discussed on the devs list
> lately, I just don't see that happening. Seems like one breaking
> change after another (even if each individual one is relatively minor,
> they add up quickly).

If we *never* allow ourselves breaking changes, we'd still have a nice
stable 

Re: [Development] Text streaming interface & function_view

2020-06-15 Thread Fawzi Mohamed
Ehm I realised that I did not explain how such a lightweight streaming 
interface would look like:
* function accepting a string -> function accepting a Dumpable: either a 
QStringView or a void(Sink) function, always behaving like a void(Sink function)
* function returning a string -> void(Sink) function (i.e. QString toString() 
-> void dump(Sink))
This makes sense only for functions immediately using the string passed in, but 
is lightweight to implement, and allows streaming in the result without 
creating temporary QStrings (it also can help when decoding on the fly).

Fawzi

> On 15. Jun 2020, at 01:27, Fawzi Mohamed  wrote:
> 
> In the past I worked with the tango library with the D language, that did try 
> to avoid heap allocations and in my own blip library I had build most of the 
> text output on a Sink: a functor that accepts a string.
> For graphical user interfaces that is not an issue still I think that a Sink 
> defined as
> ```
> using Sink = std::function(void(QStringView));
> ```
> can give a nice lightweight “text streaming” interface.
> I played a bit with it, but my goal wasn’t developing that part, but I wanted 
> to come back and benchmark it to see if my feeling was correct.
> 
> I basically benchmarked 
> ```
> void writeQString(QTextStream , int repeat = 100) {
>s << QLatin1String("start\n");
>for (int i = 0; i < repeat; ++i) {
>QString base = QStringLiteral(u"bla bla");
>for (int j = 0; j < 3; ++j) {
>s << base.repeated(j);
>s << QStringLiteral(u"%1 bla %2 %3\n").arg(QStringLiteral(u"  
> ").repeated(j), base, base + base);
>}
>}
>s << QLatin1String("end\n");
> }
> ```
> 
> 
> Against a version using a Sink
> ```
> void repeatOut(Sink sink, int nrepeat, std::function dumper) {
>for (int i = 0; i < nrepeat; ++i)
>dumper(sink);
> }
> 
> void writeDumper(QTextStream , int repeat = 100) {
>Sink sink = [](QStringView str){ s << str; };
>sink(u"start\n");
>for (int i = 0; i < repeat; ++i) {
>QStringView base = u"bla bla";
>for (int j = 0; j < 3; ++j) {
>repeatOut(sink, j, [base](Sink sink) { sink(base); });
>[base, j](Sink sink) {
>repeatOut(sink, j, [](Sink sink) { sink(u"  "); });
>sink(u" bla ");
>sink(base);
>sink(u" ");
>sink(base);
>sink(base);
>sink(u"\n");
>}(sink);
>}
>}
>sink(u"end\n");
> }
> ```
> What I learnt is that
> 
> 1) you have to be careful about comparing with String::repeated because 
> adding a large string enlarges the cache of the QTextStram and makes 
> comparison invalid (QString seems then much faster).
> 
> Not having understood point 1 I looked at passing all function objects as 
> const & (which was faster), and finally using a non owing functor reference 
> (like function_view discussed by Vittorio Romeo in 
> https://vittorioromeo.info/index/blog/passing_functions_to_functions.html ), 
> which was even faster (in D1 delegates were non owning).
> 
> The full source of my benchmark  is available at 
> https://github.com/fawzi/qtIoTest and on my macBook 2.3 GHz i9 with flash 
> storage I got the following numbers:
> 
> Debug
> "QStringAlloc" write: "485.847010" writeFlush: "485.879594" ioTime: 
> "486.158937" flushFails: 0
> "LambdaAndSink" write: "987.612934" writeFlush: "987.640574" ioTime: 
> "987.993028" flushFails: 0
> "LambdaAndSinkCRef" write: "843.016367" writeFlush: "843.030152" ioTime: 
> "844.147218" flushFails: 0
> "LambdaAndSinkView" write: "483.614625" writeFlush: "483.630823" ioTime: 
> "483.777161" flushFails: 0
> 
> Release
> "QStringAlloc" write: "305.894019" writeFlush: "305.924705" ioTime: 
> "306.177800" flushFails: 0
> "LambdaAndSink" write: "102.757184" writeFlush: "102.768369" ioTime: 
> "102.955962" flushFails: 0
> "LambdaAndSinkCRef" write: "91.224731" writeFlush: "91.232051" ioTime: 
> "91.642540" flushFails: 0
> "LambdaAndSinkView" write: "79.895681" writeFlush: "79.915456" ioTime: 
> "80.602022" flushFails: 0
> 
> In debug mode the function_view Is just as fast, but in release mode it is 
> *much* faster, indeed all streaming options win over the plain String 
> allocation.
> 
> So I have two points in my conclusion:
> 
> a) I think that it could make sense, if there is interest, to use Sink and 
> void(Sink) functions (or function_view) more, and provide corresponding API 
> (one can for example define a Dumpable that can be  instantiated with either 
> a QStringView of a void(Sink) function, and thus have format(Sink, 
> QStringView, Dumpable, Dumpable,…), or even a wrapper around a Sink that 
> provides nicer stream like interface.
> Strict GUI programming might not gain much, but any string output would be a 
> bit faster, and I think, cleaner.
> 
> b) Independently from the text streaming discussion, a non owning function 
> pointer like function_view could