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