This epic captures the work planned in QtCore for Qt 6, with the individual user stories and subtasks documenting the details.
The overall goal for QtCore in Qt 6 is to
- general cleanup
- get rid of legacy an deprecated code
- remove 3rd party components
- review and remove static variables
- increase consistency and compatibility with the C++ standard library in containers and value types
- consistently use View classes in Qt APIs
- API overloads for ranges
- be UTF-8 friendly
- streamline the Qt object model and type system
- remove duplications and special case handling (such as QML-specific code paths, QVariant/QMetaType)
- optimisations in signal emissions
- cleaner abstractions for I/O and similar operating system services
- Investigate a QIODevice redesign
- Investigate a "QPA for OS services"
Get rid of some third-party components:
- Get rid of legacy Text Codecs (EUC-JP, EUC-KR, GBK, JIS, Shift-JIS, TSCII, Big5, Big5-HKSCS)
- Get rid of copy of Public Suffix List / QUrl::topLevelDomain
Unify QList and QVector (QList as an alias to QVector)
Better STL compatibility
- using QPair = std:pair
- use std::unordered_map and std::map for QHash and QMap?
- consider std::byte
Revisit QObject, signals, slots and properties
- Can we optimise performance?
- Remove 2 mallocs for QObject
- Add support for QML style bindings from C++ (e.g: https://woboq.com/blog/property-bindings-in-cpp.html)
new meta type system
- Generate more of the data at compile time
- What do we do with QVariant and implicit conversions?
Get rid of QRegExp
- evaluate C++11 support for regular expressions: QTBUG-80050
Move Text codecs into a separate library
Revisit Multithreading Technologies in Qt?
- std::thread / std::async / std::future (see: https://en.cppreference.com/w/cpp/thread)
Make QDir and friends consistent about their handling of absolute/relative for MS-paths; this may involve some compatibility breakage. The core of the problem is that QFileSystemEntry isn't consistent with itself.
Investigate faster implementation of QStateMachine based on SCXML state machine implementation. Also remove the childMode property on the QStateMachine (see the comment in the constructor). The class should be moved into its own module.
|metatype: support compile-time resolution of type-information||Reported||Unassigned|
|moc: use new meta-type id system in meta-objects||Reported||Unassigned|
|Research replacing QVariant||Reported||Unassigned|
|New property system||Reported|
|new meta-object data structures||Reported|
|Fix performance of QQueue||Reported|
|Move 3rdparty code out of qtbase||Open|
|Consider moving QFuture* classes out of Qt Core||Reported|
|qvariant: Avoid dangling QObject pointers||Reported|
|Add an optional mode argument to QDir::mkdir(name [, mode])||Reported|
|QLocale: make fuller and more faithful use of the CLDR data||Reported||
|Equip QDateTime to distinguish the two passes through an "overlap" hour during a time-zone fall-back, such as the end of DST||Reported||
|Evaluate C++11 support for regular expressions||Reported|