// Copyright (C) 2024 The Qt Company Ltd. // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GFDL-1.3-no-invariants-only /*! \page qt-releases.html \title Qt Releases \brief Information about Qt versioning and release schedules. The Qt Framework consists of various \l{All Modules}{modules} and tools released under a common version number. In the following, we explain Qt's versioning scheme and the related compatibility promises. Finally, we present the typical release schedules, and introduce the long-term support (LTS) releases and support periods provided. \note Some tools like \l{Qt Creator Manual}{Qt Creator} or \l{Qt Design Studio Manual}{\QDS} and related products like \l{Qt for MCUs} are released independently and have their own versioning scheme and release schedule. \section1 Versioning Qt uses \l{https://semver.org/}{semantic versioning}. Each release is identified by a \e{major}, \e{minor}, and \e{patch} number, separated by a dot. For instance, \e{Qt \QtVersion}. \e{Major releases} increment the \e{major} version number, resetting minor and patch numbers to zero. Major releases feature a rework of some of Qt's functionality, module structure, and Application Programming Interfaces (APIs). \e{Minor releases} increment the \e{minor} version number, resetting the patch version number to zero. Minor versions contain new functionality, as well as various fixes and improvements. \e{Patch releases} increment just the \e patch version number. Patch releases consist of bug fixes (including fixes for possible security issues), documentation fixes, and performance improvements. When not relevant, the patch version number is often left out. That is, when the documentation refers to Qt 6.6, the documentation applies to Qt 6.6.0, Qt 6.6.1, Qt 6.6.2, and so on. \section1 Compatibility promises Usually, you start developing your applications against a specific Qt version. As time passes, new Qt versions get released, and you need to update your Qt version---be it because you want to benefit from bugs fixed or features introduced in more recent versions, or because the old Qt version is not supported anymore. To aid you with this, Qt makes the following compatibility guarantees. \section2 Source compatibility To be \e{source compatible} means that you can compile your application unmodified against two different Qt versions. For each release, Qt aims to keep source compatibility with previous releases of the same major version. That is, an application developed against Qt 6.0.0 should still compile when built with any other Qt 6 release (though maybe with warnings due to API being deprecated). Note that modules or APIs marked as \e{Technical Preview}, \e{under development}, or \e{subject to change}, as well as pre-releases, are excluded from this promise. There are situations where adding new functionality or fixing issues still requires changes that might break source compatibility in minor releases. \l{https://contribute.qt-project.org/quips/6}{QUIP-6} lists some of these. \section2 Binary compatibility To be \e{binary compatible} means that you can run your dynamically compiled application against two different Qt versions. Qt aims to keep \e{backwards binary compatibility} with previous Qt releases of the same major version. That is, an application compiled against Qt 6.0.0 should still run with any other Qt 6 release, but not necessarily the other way around. There is no universal C++ standard for Application Binary Interfaces (ABIs), so this promise only applies when using the same toolchain (compiler) and system environment for both versions. It is also valid only for dynamic builds of Qt, excludes pre-releases and modules or API marked as \e{Technical Preview}, and requires both Qt versions to be built with the same \l{Qt configure options}{configuration}. \section1 Release schedules \e{Major} releases of Qt happen rarely---Qt 4.0.0 was released in 2005, Qt 5.0.0 in 2012, and Qt 6.0.0 in 2020. \e{Minor} releases of Qt happen twice a year. For each minor release, we typically provide two or three \e{patch} releases-- until the next minor release of Qt is out. Exceptions are security issues that might warrant a new patch-level release even later and \e{Long-Term Support releases}. \section1 Long-Term Support releases For selected Qt minor versions, \l{The Qt Company} provides additional patch-level releases for an extended period. Such additional releases are called Long-Term Support (LTS) releases, and the minor Qt version is said to be an LTS version. While the initial patch releases of such an LTS version are also available to open-source users, immediate access to LTS releases is limited to commercial customers of The Qt Company, under the \l{Qt Licensing}{commercial license}. Typically, every third minor Qt version gets additional LTS releases. The bug fixes and security updates provided in such releases, as well as the longer support period, make LTS versions a good choice for developing bigger applications. Note that, for LTS releases, the \l{Qt WebEngine} module is treated differently: Due to parts of it being only available under LGPL, the Qt WebEngine code remains available under its \l{Qt WebEngine Licensing}{default licenses}. \section1 Commercial support The Qt Company provides \l{https://www.qt.io/qt-support/}{commercial support} for Qt. Under \l{https://www.qt.io/terms-conditions/#appendix-9}{standard support conditions}, each minor version of Qt is supported for one year, starting from the date of the minor release. For Qt LTS versions the support is extended to three years, starting from the original minor release (Qt x.y.0 release). Even longer support can be negotiated individually. */