Lisandro Damián Nicanor Pérez Meyer wrote:
Any feedback will be kindly appreciated.
I've always thought there is something fundamentally wrong.
What is qreal supposed to be used for? If it's supposed to be used for
things where float would be adequate then shouldn't it be float on all
platforms? If it's supposed to be used for things where float is
inadequate then why isn't it double on all platforms?
The current situation leads to people who develop on i386 and amd64
(which is most developers) assuming that qreal is equivilent to double.
Then we try and build it on arm* and float gets used. Sometimes this is
ok because there was really no reason for the developer to be using
double precision in the first place and there were no incorrect
conversion assumptions. Sometimes this causes build failures which can
be difficult to resolve* and I bet in some cases it causes more subtule
bugs. It also goes against the principle of offering to the greatest
extent possible the same functionality on all platforms.
Making qreal double on armhf but leaving it as float on armel will mean
that canonical are no longer forced for fix bugs surrounding it. I'm
sure canonical would like that but I also suspect it may cause severe
degredation in the maintainance of QT software on those ports that stick
On the other hand presumablly there would be a performance hit from
switching from float to double, especially on platforms which use
software floating point (I presume that was why whoever controlled qt at
the time made qreal float on arm in the first place).
I found some older upstream discussion on what to do about float at
I also found some discussion at
http://comments.gmane.org/gmane.comp.lib.qt.qt5-feedback/700 saying that
on coretex A8 double was significantly slower than float.
Finally has there been any discussion with other linux distros. This is
obviously something that impacts the ABI in a big way so ideally it's
not something where we want different distros doing different things.
* See scribus for an especially nasty example.