1Qt 5.9 introduces many new features and improvements as well as bugfixes
2over the 5.8.x series. For more details, refer to the online documentation
3included in this distribution. The documentation is also available online:
4
5http://doc.qt.io/qt-5/index.html
6
7The Qt version 5.9 series is binary compatible with the 5.8.x series.
8Applications compiled for 5.8 will continue to run with 5.9.
9
10Some of the changes listed in this file include issue tracking numbers
11corresponding to tasks in the Qt Bug Tracker:
12
13https://bugreports.qt.io/
14
15Each of these identifiers can be entered in the bug tracker to obtain more
16information about a particular change.
17
18****************************************************************************
19*                        Important Behavior Changes                        *
20****************************************************************************
21
22 - [QTBUG-48658][QTBUG-56306] The linuxfb and bsdfb platform plugins now
23   follow the behavior of eglfs by making the first window fullscreen. This
24   provides consistency and avoids applications having to make their
25   windows match the screen size manually. The new behavior can be disabled
26   by setting the environment variable QT_QPA_FB_FORCE_FULLSCREEN=0.
27 - [QTBUG-59391] A QVariant containing a std::nullptr_t is now streamable
28   to/from QDataStream.
29 - Whitespace inside identifiers in logging rule files is not ignored
30   anymore. That is, "[my category]" and "[mycategory]" are now two different
31   categories.
32 - [QTBUG-59849] QSysInfo::productType() and QFileSelector behavior on
33   macOS was restored to match what Qt used to return in version 5.7.0 and
34   earlier. The behavior found in Qt 5.6.2, 5.7.1 and 5.8.0 is removed.
35 - [QTBUG-60771] Reverted a change that caused Qt 5.6 through 5.8 not to
36   connect to QSystemSemaphore and QSharedMemory created by running
37   applications using Qt earlier than 5.6. Unfortunately, this means that Qt
38   5.9 will not connect to 5.6-5.8.
39
40 - QTouchEvent
41   * Touch point ids are now unique even between different devices. As a
42     consequence of that, you cannot anymore assume that
43     QTouchEvent::TouchPoint::id has the same value as given by the native
44     platform nor the same value as given by synthesized touch points.
45
46****************************************************************************
47*                               General Notes                              *
48****************************************************************************
49
50Deprecation Notice
51------------------
52
53 - QSysInfo::windowsVersion() and QSysInfo::macVersion() are deprecated and
54   are replaced by the newly introduced class QOperatingSystemVersion.
55 - [QTBUG-57288] Removed support for WinRT/Windows Phone 8.1.
56 - Support for CMake < 3.1 is deprecated and will be removed in Qt 5.10.
57
58Future Compatibility Notice
59---------------------------
60
61 - [QTBUG-59849] The identifiers that QSysInfo::productType() and
62   QFileSelector will use to identify macOS systems will change in Qt 6.0
63   to match the Apple naming guidelines which will be current then.
64
65Potentially Source-Incompatible Changes
66---------------------------------------
67
68 - The internal Q_COMPILER_UNICODE_STRINGS macro is now defined if the
69   compiler supports charNN_t, even if the standard library does not. To
70   check for availability of std::uNNstring, use the new
71   Q_STDLIB_UNICODE_STRINGS macro.
72
73Third-Party Code
74----------------
75
76 - Sqlite was updated to version 3.16.1.
77 - libpng was updated to version 1.6.28.
78 - Bundled HarfBuzz-NG copy updated to 1.4.1
79 - Gradle wrapper 3.4.1 was added as a third-party component (see
80   src/3rdparty/gradle). The code is licensed under Apache License 2.0, and is
81   used to create Android packages.
82 - PCRE 8.39 (src/3rdparty/pcre) was removed as a third-party component.
83 - PCRE 2 10.22 was added in src/3rdparty/pcre2 as a third-party
84   component. The code is licensed under the BSD 3-clause "New" or "Revised"
85   License, and is required by QRegularExpression (at least version 10.20).
86
87****************************************************************************
88*                               Library                                    *
89****************************************************************************
90
91QtCore
92------
93
94 - QProcessEnvironment is now available on iOS, tvOS, watchOS, and VxWorks.
95 - [QTBUG-57715] QCoreApplication::applicationVersion now defaults to an
96   appropriate platform-specific value. On Windows, it defaults to the
97   PRODUCTVERSION parameter of the VERSIONINFO resource for classic desktop
98   apps, and the version attribute of the application package manifest for
99   Univeral Windows Platform apps. On Apple Platforms (macOS, iOS, tvOS,
100   watchOS), it defaults to the CFBundleVersion property of the information
101   property list (Info.plist) file. On Android, it defaults to the
102   android:versionName attribute of the AndroidManifest.xml manifest
103   element. On other platforms, the default remains an empty string.
104 - Added QStaticByteArrayMatcher.
105 - Added new qfloat16 class.
106 - QStringLiteral is now guaranteed to be evaluated at compile-time. The
107   last platform (QNX) to use the QString::fromUtf8() fallback has been
108   ported to allocate the string data statically, too.
109
110 - Event loop:
111   * [QTBUG-33489][QTBUG-48717] QCoreApplication::flush() is now
112     deprecated. Use QCoreApplication::processEvents() and
113     QCoreApplication::sendPostedEvents() instead.
114
115 - QByteArray:
116   * Added toHex() overload to insert a separator character between the hex
117     bytes.
118
119 - QChar:
120   * Disambiguated comparisons with nullptr constants such as '\0', which
121     5.8.0 broke. As a consequence, QChar<->int comparisons are no longer
122     deprecated, as this was a failed attempt at fixing the ambiguity.
123
124 - QCryptographicHash:
125   * [QTBUG-59770] QCryptographicHash now properly calculates SHA3 message
126     digests. Before, when asked to calculate a SHA3 digest, it calculated
127     a Keccak digest instead.
128
129 - QDataStream:
130   * Added operator<< and operator>> overloads that take std::nullptr_t, to
131     facilitate generic code.
132   * Added operator<< and operator>> for streaming QFlags into and out of
133     QDataStreams.
134
135 - QDateTime:
136   * [QTBUG-52284][QTBUG-56397][QTBUG-56460][QTBUG-56345] Fixed a number of
137     bugs related to handling of timezone offsets close to or during daylight
138     savings changeovers, as well as timezones changing their standard
139     offset.
140   * [QTBUG-57298][QTBUG-57320] Fixed the handling of time zones in the
141     toString() overload taking Qt::TextDate.
142
143 - QDir:
144   * Fixed a bug that caused QDir::mkpath() to create the wrong directory
145     if the requested path contained a symbolic link and "../".
146   * Added isEmpty(), that can help determining if a directory listing would
147     be empty.
148
149 - QFileInfo:
150   * [QTBUG-48306] Made sure that all file lifecycle times are in local
151     time. This was probably true before, but is now explicit.
152
153 - QFileSelector:
154   * [QTBUG-51230] Removed the requirement for an unused default base file
155     in case you want to load only a variant.
156
157 - QFlags:
158   * Added operator<< and operator>> for streaming QFlags into and out of
159     QDataStreams.
160
161 - QHash / QMultiHash:
162   * [QTBUG-60395] Fixed a bug that caused operator== to fail in the presence
163     of duplicated keys.
164
165 - QLocale:
166   * Additional flags in QLocale::NumberOption allow generating strings
167     from doubles in accordance to EcmaScript's Number.toPrecision(n).
168   * Qt functions now always use the system time zone on Apple platforms,
169     the same that low-level C APIs like localtime() does. Previously,
170     converting dates and times to strings would use the "default" time
171     zone (which is almost always the same as the "system" time zone but
172     could be changed with the Apple API).
173
174 - QLockFile:
175   * [QTBUG-49640] Fixed a bug that caused QLockFile not to recognize a
176     stale lock file if the machine's hostname contained non-US-ASCII
177     characters, on Unix. A Windows fix is still pending.
178   * Fixed a deadlock occurring if a corrupted lock file's modification
179     time is in the future.
180
181 - QMetaObject:
182   * [QTBUG-60185] Fixed crash in QMetaObject::invokeMethod() and
183     QMetaMethod::invoke() with QueuedConnection and types whose metatype gets
184     automatically registered.
185
186 - QObject:
187   * QObject::dumpObjectInfo and QObject::dumpObjectTree are now fully
188     functional even in a non-debug build of Qt.
189   * QObject::dumpObjectInfo and QObject::dumpObjectTree now have const
190     overloads.
191   * Added a startTimer() overload taking std::chrono values.
192   * [QTBUG-58054] Fixed an incompatibility with using noexcept functions as
193     connect() targets in C++17 mode.
194
195 - QSettings:
196   * [QTBUG-34919] Added proper support for system-wide configuration file
197     lookup based on XDG spec (XDG_CONFIG_DIRS) on Unix based systems.
198   * [QTBUG-58531] Fixed data corruption when reading byte arrays on macOS.
199
200 - QSharedPointer:
201   * [QTBUG-49824] Fixed undefined behavior when creating an object with
202     QSharedPointer::create() and its constructor throws an exception.
203
204 - QStorageInfo:
205   * Added QStorageInfo::subvolume(), which returns the name of the
206     subvolume of a volume that was mounted, if one was detected. This is
207     currently implemented only for btrfs on Linux.
208
209 - QString:
210   * toLocal8Bit() now preserves nullness of the input QString (outputs
211     null QByteArray).
212   * QString::null is now deprecated. When used to construct a QString, use
213     QString() instead. When used to compare to a QString, replace with
214     QString::isNull().
215
216 - QStringRef:
217   * toLocal8Bit() and toLatin1() now preserve nullness of the input
218     QStringRef (output null QByteArrays).
219
220 - QThreadPool:
221   * The cancel() function suffers from several subtle issues and has been
222     replaced with a new tryTake() function.
223
224 - QUrl:
225   * The temporary compatibility in QUrl::resolved() that treated the base
226     URL as relative if its scheme matched the current URL's scheme has
227     been removed.
228   * [QTBUG-60364] Fixed a bug that caused certain domain names that look
229     like Internationalized Domain Names to become corrupt in decoded forms
230     of QUrl, notably toString() and toDisplayString().
231
232 - QVarLengthArray:
233   * Fixed a bug involving appending an item already in the container to
234     the container again.
235   * Added rvalue overloads of append() and push_back().
236
237 - QVariant:
238   * [QTBUG-56073] Fixed a bug that caused wrong results for comparisons of
239     QVariants containing either NaN or infinite numbers.
240   * Can now convert QUuid to and from QByteArray, not just QString.
241   * [QTBUG-58296] isNull() now returns true if the QVariant contains nullptr.
242
243QtGui
244-----
245
246 - OpenGL:
247   * [QTBUG-55496] QOpenGLShaderProgram now offers a built-in program binary
248     disk cache for systems with OpenGL ES 3.x or GL_ARB_get_program_binary.
249     This can lead to significant increases in performance when it comes to
250     application startup times for example.  Usage is opt-in for direct C++
251     users of the class, however Qt's own main users of shaders, including Qt
252     Quick and QPainter's OpenGL engine, are migrated to use the new,
253     cache-enabled APIs. Opting out on application level is always possible
254     via Qt::AA_DisableShaderDiskCache.
255
256 - QIcon:
257   * [QTBUG-49820] Implemented support for Scale directory key according to
258     Icon Theme Spec. Icons created via QIcon::fromTheme() now have high
259     DPI support by specifying the Scale in the appropriate entry of the
260     relevant index.theme file.
261
262 - QImage:
263   * A new method reinterpretAsFormat() is has been added to change the
264     format of a QImage without converting the data.
265
266 - QMatrix4x4:
267   * operator*=() now calculates the correct result even if the RHS and LHS
268     are the same object.
269
270 - QPA:
271   * QPlatformScreen: Added an API to list available modes for a screen,
272     that is resolution and refresh rate.
273   * [QTBUG-58383] The function createForeignWindow() has been added to
274     QPlatormIntegration and is now responsible for creating foreign
275     windows. The function isForeignWindow() in QPlatformWindow has been
276     added, and platforms should implement this to return true for windows
277     created by createForeignWindow().
278
279 - QPainter:
280   * [QTBUG-28851] Fixed fills of negatively sized QRects.
281
282 - QRgba64:
283   * The default constructor on Clang and GCC builds now no longer
284     initializes with 0s, but leaves the value uninitialized. This is
285     consistent with MSVC behavior and pre-C++11 behavior of GCC and Clang.
286
287 - QScreen:
288   * Added manufacturer, model and serialNumber properties.
289
290 - QTextLine:
291   * Fixed a possible undefined behavior in the calculation of glyph right
292     bearing when a QTextLine layout is performed.
293
294 - QTouchEvent:
295   * TouchPoint::rect(), sceneRect() and screenRect() are deprecated; a
296     touchpoint is now modeled as an ellipse centered on a point, so please
297     use pos(), scenePos(), screenPos(), and ellipseDiameters() instead.
298   * QTouchEvent::TouchPoint::id values are now unique even between
299     different devices.
300
301 - QWindow:
302   * [QTBUG-58383] The "_q_foreignWinId" dynamic property is no longer set
303     nor read.
304
305 - Text:
306   * [QTBUG-56538] Added QTextDocument::toRawText() function.
307   * [QTBUG-48005] Fixed clipping errors and too small bounding rects for
308     some right-to-left text.
309   * [QTBUG-57241] Fixed crash for very tall glyphs
310
311QtNetwork
312---------
313
314 - The connect timeout from QAbstractSocket is now configurable through
315   QNetworkConfiguration.
316 - Added redirects policy to QNAM.
317 - Added HTTP Strict Transport Security to QNAM.
318
319 - Bearer management:
320   * [QTBUG-56228][QTBUG-52988] Fixed a bug that could cause a crash on
321     application exit, depending on the order of destruction of the
322     QCoreApplication object and the QtDBus manager thread.
323
324 - QHostAddress:
325   * QHostAddress is now implicitly shared.
326   * Added operator!=(SpecialAddress, QHostAddress).
327
328 - QSslSocket:
329   * Fixed connection to international domains (IDN) by normalizing to
330     ASCII equivalent before comparing the host name in the certificate.
331   * [QTBUG-56102] Allow QSslSocket (Secure Transport back-end) to use a temporary
332     keychain on macOS instead of a default one; this can be enabled via a special
333     environment variable QT_SSL_USE_TEMPORARY_KEYCHAIN (this feature is disabled
334     by default).
335   * [QTBUG-60233] QSslSocket (Secure Transport back-end) now respects CA
336     certificates set in QSslConfiguration (before was always implicitly using
337     the built-in anchor certificates in addition to a user provided configuration).
338   * [QTBUG-59480] Added a missing cipher (Secure Transport).
339   * [QTBUG-59930] Fixed spurious socket notifications in QCFSocketNotifer.
340   * [QTBUG-58214] Fixed spurious socket notifications on Windows.
341
342QtTest
343------
344
345 - QUuids are now printed on failure.
346 - Added QTest::addRow(), which is like newRow(), but can take printf-style
347   formatted strings.
348
349QtWidgets
350---------
351
352 - [QTBUG-26116] QWidget now has a tabletTracking property, analogous to
353   mouseTracking, which will enable TabletMove events while the stylus is
354   hovering, even if no button is pressed. This allows applications to show
355   feedback based on the other tablet event properties such as rotation and
356   tilt.
357
358 - Input:
359   * [QTBUG-42074][QTBUG-57003] Characters in the Unicode Private Use Area, as
360     well as zero-width joiners and zero-width non-joiners, are now accepted
361     as input in QLineEdit and QTextEdit.
362
363 - Qt::WA_WindowPropagation:
364   * [QTBUG-59106] Locale is now propagated consistently, along with font and
365     palette, within the widget hierarchy. Previously, setLocale() propagated
366     the new locale from parents to children (recursively) but new children
367     didn't inherit from their parents.
368
369 - QColorDialog:
370   * [QTBUG-58424] Fixed long standing bug that prevented custom colors in
371     QColorDialog to be stored in the settings.
372
373 - QDialog:
374   * [QTBUG-6018][QTBUG-12156][QTBUG-14430] Fixed a bug where accessing the
375     result of QDialog's result could yield an incorrect value in some
376     situation like using it as a delegate for item views.
377
378 - QErrorMessage:
379   * Critical (QtCriticalMsg) and informational (QtInfoMsg) messages are now
380     displayed properly. Previously, they appeared as if they were debug
381     (QtDebugMsg) ones.
382
383 - QFormLayout:
384   * [QTBUG-58693][QTBUG-15990] The functions takeRow() and removeRow(),
385     new in 5.8.0, now take and remove the correct row.
386
387 - QMacStyle:
388   * [QTBUG-57470] PE_IndicatorMenuCheckMark now looks for State_On instead of
389     the State_Selected to set its highlighted state. Its color is picked from
390     the style option palette.
391
392 - QPixmapStyle:
393   * Now handles progress bars with minimum != 0 correctly.
394
395 - QSizePolicy:
396   * Added transposed() method.
397
398 - QSystemTrayIcon:
399   * [QTBUG-49283] Support for custom icons in showMessage() was added.
400
401 - QTextEdit:
402   * [QTBUG-59196] Fixed initial char format of input method text as it is
403     in pre-edit mode.
404
405****************************************************************************
406*                         Platform-specific Changes                        *
407****************************************************************************
408
409Android
410-------
411
412 - [QTBUG-44697] Removed old work-around which was causing OpenGL shader
413   compilation to fail on updated Android emulators.
414 - QTouchEvent::TouchPoints have correct ellipseDiameters() and rotation().
415
416XCB/X11
417-------
418 - [QTBUG-60389] Every QTouchEvent includes up-to-date keyboard modifiers.
419 - [QTBUG-59415] Every QTabletEvent includes up-to-date keyboard modifiers.
420
421Linux
422-----
423
424 - Added an option to switch from mailbox to FIFO mode in eglfs' EGLStream
425   backend. This is done by setting the environment variable
426   QT_QPA_EGLFS_STREAM_FIFO_LENGTH to a >= 1 value, the desired length of the
427   FIFO queue.
428 - [QTBUG-57411] Added support for cross-compilation for the MIPS CI20.
429 - Added support for cross-compilation targeting 64-bit Jetson TX1 systems.
430 - Added support for cross-compilation targeting Renesas R-Car H2 (Lager)
431   systems.
432 - The Raspberry Pi 3 device specs have been renamed from linux-rpi3-* to
433   linux-rasp-pi3-* in order to follow the pattern of the RPi 1 and 2 specs.
434 - [QTBUG-57980] Added support for specifying the primary screen in the
435   JSON config file in QT_QPA_EGLFS_KMS_CONFIG when running on DRM/KMS with
436   eglfs.
437 - The evdevtouch plugin now has the option to apply filtering and
438   prediction. Enabled by passing "filtered" as an argument. Prediction can
439   be specified by passing "prediction=X" as an argument, where X is in
440   milliseconds.
441
442 - linuxfb:
443   * [QTBUG-56306] Added experimental support for DRM dumb buffers. Enable
444     by setting the environment variable QT_QPA_FB_DRM to 1.
445
446macOS
447-----
448
449 - Extra mouse buttons are now correctly be mapped to correct Qt::MouseButton
450   values.
451
452 - Accessibility:
453   * [QTBUG-39008][QTBUG-54776][QTBUG-56043][QTBUG-57146] A common crash in
454     accessibility on macOS was fixed.
455
456Solaris
457-------
458
459 - [QTBUG-56293] Support for the Illumos distribution OpenIndiana (release
460   "Hipster") has been added. This is a community-supported partial port.
461
462Windows
463-------
464
465 - Support for Visual Studio 2017 has been added.
466 - Fixed frameMargins for WM_NCCALCSIZE when handled inside with
467   QAbstractNativeEventFilter.
468 - [QTBUG-55510][QTBUG-48242] Windows are now automatically resized when they
469   are moved on a screen to adapt to the new pixel ratio.
470 - [QTBUG-58446] Fixed a bug that caused applications to crash with
471   "Illegal instruction" faults when compiled with Visual Studio and run on
472   some older processors.
473 - [QTBUG-57023] Fixed a bug that caused QFile to create files with
474   truncated names if the file name was invalid. Now, QFile::open correctly
475   fails to create such files.
476
477 - PDF:
478   * [QTBUG-58954] Fixed a bug in PDF output when using high-dpi scaling
479     which was causing the display of warnings when opening the file in
480     Adobe Reader.
481
482****************************************************************************
483*                                Tools                                     *
484****************************************************************************
485
486moc
487---
488
489 - [QTBUG-59351] Fixed parsing errors in presence of C++14 digit separators.
490 - Added Support for C++17 nested namespaces
491 - Move-only types are now supported as return types of signals and slots.
492
493configure & build system
494------------------------
495
496 - [QTBUG-30083] Generalized command line overrides of installation
497   paths of external dependencies; see configure -help. Use configure
498   -list-libraries to find about known libraries.
499 - [QTBUG-42937][iOS] Added support for the configure -shared flag.
500 - [QTBUG-56225] Re-introduced creation of config.summary.
501 - [QTBUG-57908][QTBUG-59062] Fixed parsing of configure --xxx options.
502 - [QTBUG-57656][macOS] Fixed installation of header-only modules like
503   QtUiPlugin in framework builds of Qt.
504 - [QTBUG-58321] Switching to a different qmakespec for user projects will
505   now properly enable C++11 support if necessary.
506 - [QTBUG-58411] Added configure -list-features option. This is useful
507   for finding unnecessary features to disable with -no-feature-XXX.
508 - [QTBUG-58511] Fixed QMAKE_CXXFLAGS, etc. assignments on the configure
509   command line being ignored when building bootstrapped Qt tools while
510   not cross-building (in cross-builds, they are intentionally ignored).
511 - [QTBUG-60016] configure will now refuse to run if it finds variables
512   in its environment which are known to cause trouble.
513 - [QTBUG-60382] Fixed query of library paths from pkg-config.
514 - Added possibility to merge ANGLE's libEGL and libGLESv2 into QtANGLE;
515   configure option -combined-angle-lib.
516 - [Windows] The -no-rtti configure option was removed, as Qt fails
517   to build under that condition. To disable RTTI in user code, add
518   CONFIG+=rtti_off to your project file.
519 - [GCC] Debug builds of Qt are now optimized with -Og if available;
520   use -no-optimize-debug to disable. This is also applicable to user
521   projects; add CONFIG+=optimize_debug to your project file.
522 - Added possibility to optimize release builds for size instea of speed;
523   configure option -optimize-size.
524
525qmake
526-----
527
528 - [QTBUG-51598] Libs.private is now written to .pc files only when building
529   static libraries.
530 - [QTBUG-55279] Static plugins are now imported also into dynamic libraries,
531   not only executables. Various other improvements to static linking.
532 - [QTBUG-56965][Darwin] Fixed overriding QMAKE_*_DEPLOYMENT_TARGET from
533   within project files.
534 - [QTBUG-57343] Fixed execution of extra compilers' depend_commands in build
535   directories containing shell meta characters in their names,.
536 - [QTBUG-57276] Fixed QMAKE_PRE_LINK (always) and QMAKE_POST_LINK (in one
537   case) being ignored when building static libraries for Unix.
538 - [QTBUG-57435][VS] Fixed capitalization of <PlatformToolset> tags in the
539   generated vcxproj files.
540 - [QTBUG-57694][VS] Fixed bogus ToolsVersion attributes in the generated
541   vcxproj files.
542 - [QTBUG-57914][VS] Fixed handling of RC_FILE when generating single-
543   configuration vcxproj files.
544 - [QTBUG-59630][VS] Fixed uninitialized value of GenerateDebugInformation,
545   which was particularly bad if DebugFastLink was emitted for VS < 2015.
546 - [QTBUG-58710][MSVC/nmake] Fixed overlong lines in response files generated
547   for link.exe and lib.exe.
548 - [QTBUG-57502][Darwin] Added support for launch images in asset catalogs.
549 - [QTBUG-58126] Fixed the target compiler's default include and library paths
550   interfering with the build of host tools when cross-building.
551 - [QTBUG-58764] Fixed building of moc'able files with a Qt installation
552   in a path containing spaces.
553 - [QTBUG-58857] Added the ability to use CONFIG+=no_moc_predefs to suppress
554   the collection of the compiler's predefined macros for moc's use.
555 - [QTBUG-59004][Windows] '(n)make install' will now copy the timestamps of
556   the installed files, like it was already done on Unix.
557 - [QTBUG-59319] Fixed $$shadowed() function for the case where the source
558   tree lives in a symlinked or substituted path.
559 - [QTBUG-59779][Android][MinGW] Fixed CONFIG+=separate_debug_info.
560 - [QTBUG-38782][iOS] Added support for setting the Xcode development team
561   and provisioning profile.
562 - [QTBUG-58754][iOS] Fixed handling of bitcode.
563 - [Darwin] Binaries now automatically get @executable_path/Frameworks
564   added to RPATH, and libraries additionally @loader_path/Frameworks.
565   Suppress with CONFIG+=no_default_rpath.
566 - [Darwin][Xcode] QMAKE_BUNDLE_DATA now supports embedding Frameworks
567   and PlugIns.
568 - [macOS] Support for universal binaries has been re-introduced.
569 - Added the command line options -early and -late, plus -before (which is
570   the default) for symmetry with -after.
571 - The $$prompt() function will now exit qmake upon EOF on stdin.
572 - The touch() function now uses nanosecond precision if available.
573 - [MSVC] Qt now has a common mkspec for all Visual Studio versions, called
574   "win32-msvc". The old names which contained the version number are now
575   gone (but qmake scopes based on the old names continue to work).
576   In qmake project files, the version of the compiler can be obtained from
577   the MSC_VER and MSVC_VER variables (for example, for Visual Studio 2015,
578   those contain the values 1900 and 14.0, respectively). Those variables
579   are also available with the Intel compiler (win32-icc) and with Clang
580   (win32-clang-msvc).
581 - [Windows] The win32-clang-msvc qmakespec will now adjust the emulated
582   MSVC version to match that of the cl.exe found in PATH.
583 - [Windows] Fixed make 'install' targets to be idempotent.
584 - [Windows] '(n)make install' will not fail on file names containing the
585   plus sign any more.
586 - Numerous obsolete qmakespecs have been pruned.
587