[Releasing] Switch of MinGW toolchain for Qt 5.1
Koehne Kai
Kai.Koehne at digia.com
Thu Apr 4 11:38:36 CEST 2013
Hi there,
I'd like to update the recommended 32 bit MinGW toolchain (that we also ship in binary installers) for 5.1 from
x32-4.7.2-release-posix-sjlj-rev8
to
x32-4.8.0-release-posix-dwarf-rev1
The recommended 64 bit toolchain would change accordingly from
x64-4.7.2-release-posix-sjlj-rev8
to
x64-4.8.0-release-posix-seh-rev1
Download links:
http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.0/32-bit/threads-posix/dwarf/x32-4.8.0-release-posix-dwarf-rev1.7z/download
http://sourceforge.net/projects/mingwbuilds/files/host-windows/releases/4.8.0/64-bit/threads-posix/seh/x64-4.8.0-release-posix-seh-rev1.7z/download
Since this is a major upgrade, I'd like to invite anyone interested to give the combination a try early on, preferably before we release 5.1.0 :) The upgrade would however mean that all users would have to re-compile their apps (mixing the old and new toolchain is not supported).
REASONS:
It turned out that the SJLJ exception model of the existing toolchain has a severe performance penalty for any Qt app, see e.g.
http://sourceforge.net/mailarchive/message.php?msg_id=30532139
and https://bugreports.qt-project.org/browse/QTBUG-29653
With gcc 4.8.0 64 bit there's now SEH, which I understood is superior to SJLJ in any way. For 32 bit there's dwarf, which has problems when it comes to throwing exceptions to 'alien' stack frames (think of windows callbacks). There are also issues when using LoadLibrary without FreeLibrary, or mixing static and dynamic libgcc_s_dw2 linkage. Anyhow, I think these issues do not outweigh the heavy performance penalty for SJLJ.
Apart from SEH exception handling this gcc 4.8 brings lots of general improvements. If we still however find blockers with gcc 4.8.0 an alternative would be to go for 4.7.2 / 4.7.3, but still switch the exception model to dwarf for 32 bit.
Regards
Kai
More information about the Releasing
mailing list