[Interest] Qt 5.8.0 RC build under windows

Thiago Macieira thiago.macieira at intel.com
Sun Jan 22 07:11:40 CET 2017

On domingo, 22 de janeiro de 2017 00:10:53 PST Prav wrote:
> Hello, Thiago.
> >> For example I do not understand : if c-compiler is simply a console app
> >> with 10's years history of development ... what so important it could
> >> need from WinVista so that it CAN NOT be run on older Windows?
> > 
> > It's a tiny functionality called "getting the time". It's required so that
> > the event loop knows how much time has elapsed and so it can fire QTimer
> > correctly.
> You did not get. I told you about vc-compiler. You are explaining about Qt.

Ah, right, I did. But still, Microsoft may be using APIs that aren't available 
on older versions.

Also note that we are not talking about a console app. We are talking about a 
full development environment suite, including a debugger that supports 
snapshotting, backtracking and hot-patching code. Microsoft did not ship the 
compiler separately from the rest of the installation up until 2016. And it's 
still hard to install it just like that: a minimal install of Visual C++ is 
6 GB.

And don't forget that the compiler is compiled with that compiler and uses its 
own libraries. The C++ runtime library may not support older versions. In 
fact, I know for a fact that it doesn't, because of a tiny functionality 
called "getting the time". You can easily tell by looking at the C++ headers 
that it calls QueryPerformanceTimer.

> > Note that the compatibility check, even if a simple check-and-branch code,
> > ran EVERY TIME the event loop tried to get the time. Which is about 1000
> > times per second...
> You really think that execution of "if (boolflag)" 1000 times per second
> will give visible difference for PC? And you REALLY lost compatibility with
> XP for the whole Qt just because of that!?

Yes and yes. And because it simplified the code. And because we wanted to drop 
XP compatibility anyway.

> >> I ask myself same question differently : why we lost compatibility?
> > 
> > Because we need some definitions from Windows headers so that we can call
> > Windows 10 functions when the application detects it's running on Windows
> > 10.
> Which "Windows 10 functions" are necessary?

I don't know, I haven't looked at the code in question.

> Mike Chinander told that he managed to build Qt 5.8.0 RC with Win8SDK. How
> Win8SDK can have "Windows 10 functions"? I think you are mistaken here.

I could be. I'm going by your error message, that said "win10functions".

> My opinion :
> I belive that some function (helpful only for WinRT build of Qt) is tried to
> be compiled under desktop version of Qt. That is why desktop Qt now need
> WinRT header files. And that is why Win7SDK compatibility was lost. And
> that explains why Win8SDK is also possible. (WinRT is absent in Win7 and
> appeared in Win8)

It's possible.

> This is what I mean when I am telling you about dependence from WinRT.
> Discussed header file in inside "winrt" folder of WinSDK.

Even if you're right, you still haven't given us a good reason to change 
anything. Why do you want your application to behave poorly if the user 
upgrades Windows?

> Is such explanation "good reason" for you to restore compatibility with
> Win7SDK?

No. You have not given a good reason why an application should not work the 
best way it can when run under Windows 8, 8.1 or 10.

Please explain why an application should not detect recent versions of Windows 
and use extra functionality that is there, making it better and/or more 
integrated with the OS.

Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center

More information about the Interest mailing list