CopperSpice Overview

Portions of this timeline were obtained from Wikipedia, Safari Books, and press releases. All of the dates and information about CopperSpice were noted during development.

Major Milestones


June 1999

  • TrollTech releases Qt 2.0 for X11 and Windows
  • For X11, TrollTech is releaseed under the QPL Open Source license
  • On Windows Qt is only available under a proprietary license
  • The Qt Professional Edition is available for development of proprietary/commercial software on both X11 and Windows


August 2000

  • TrollTech releases Qt Embedded Linux under the GPL license

September 2000

  • TrollTech releases Qt X11 under the GPL license, for open source development


October 2001

  • TrollTech releases Qt 3.0 with support for Linux, Windows, and Mac OS X
  • Windows and Mac OS X are available only under a proprietary license for commercial development


June 2003

  • TrollTech releases Qt 3.2, Mac OS X support is changed to GPL for open source development


June 2005

  • TrollTech releases Qt 4.0 and changes Qt for Windows to GPL
  • Qt 4 is offered under TrollTech's dual-licensing business model for all supported platforms
  • Dual-licensed software is sold under a commercial license for proprietary/commercial development and is under GPL for open source development projects

November 2005

  • Nokia ships the first Maemo tablet, using GTK


January 17, 2008

  • Qt is licensed under the GPL v3 in addition to the GPL v2

May 2008

  • Harmattan (codename for Maemo 6) is announced

June 17, 2008

  • Nokia acquired by TrollTech


January 14, 2009

  • Nokia announces Qt will be released under LGPL, starting with Qt 4.5

March 3, 2009

  • Nokia announces all versions of Qt will be available under the LGPL v 2.1 license
  • Qt now licensed under LGPL, GPL, and commercial
  • Nokia introduces Qt Creator which is a new lightweight cross platform IDE
  • Qt Creator will be available under the terms of the LGPL v 2.1 license

July 2009

  • Nokia gives details of Harmattan (Maemo 6), which is a fork of Maemo using Qt instead of GTK

August 12, 2009

  • In a Microsoft press release, Nokia and Microsoft announce a partnership. Their goal is to bring Microsoft Office Mobile and related software to Nokia smartphones


February 2010

  • Intel's Moblin and Nokia's Maemo merged
  • Maemo is ported from GTK to Qt, and the name is changed to MeeGo

September 2010

  • Mr. Elop leaves Microsoft
  • Mr. Elop is hired at Nokia as CEO

Fourth Quarter 2010

  • Symbian is selling very well and Nokia profits are rising


January 2011

  • Harmattan is released

February 6, 2011

  • Mr. Elop releases the now famous "Burning Platform" memo disparaging the future of Qt

February 11, 2011

  • Nokia announces they will be adopting Windows Phone 7 for smartphones
  • Forced migration from Symbian to the Windows Phone platform is announced
  • Nokia stocks drop 14% after this announcement
  • Press releases later announces Qt will not be supported on WP7
  • Silverlight and XNA frameworks are the only options for WP7 developers

March 2011

  • Digia acquires Qt licensing from Nokia, Digia is the exclusive license provider for Qt

March 28, 2011

  • Nokia publishes an open letter to the Symbian development community

" feel confident we will have a strong Symbian portfolio of new products during our transition in 2011 and 2102."

  • Promises the Symbian platform has not been abandoned
  • Did not say precisely how long Symbian will be supported
  • Establishes that Windows Phone is the true migration path for Symbian developers
  • Implies there will be no more Symbian handsets after 2012

March 11, 2011

  • Nokia announces they are paying Mr. Elop a $6M signing bonus

June 2011

  • Nokia outsources Symbian to Accenture
  • Accenture will provide Symbian development and support to Nokia through 2016
  • Nokia announces its first MeeGo/Harmattan smartphone device

September 2011

  • Nokia ships the Nokia N9, MeeGo smartphone device
  • Intel announces that in collaboration with Samsung, MeeGo will be replaced with Tizen during 2012
  • MeeGo project was canceled

October 2011

  • Digia announces development of Qt will be governed as an open source project
  • Mer project announced, based upon the work from the MeeGo project. They plan to share efforts with the Tizen project
  • The Register (on line newspaper) reports that Nokia is developing Meltemi, a low end operating system, based on Linux
  • Nokia never made an official announcement about Meltemi

November 2011

  • Intel and Nokia were working on Wayland, then they parted ways
  • Intel hired most of the Helsinki Engineers
  • Wayland is no longer part of MeeGo / Tizen. Tizen is a proprietary SDK


April 3, 2012

  • Nokia releases Qt 5.0 Alpha

May 21, 2012

  • CopperSpice officially forked from Qt 4.8.2
  • Work begins on developing files to support building without using QMake

June 2012

  • Nokia sells Vertu luxury phone unit to EQT Partners. Vertu is known for selling jewel encrusted phones which sell for thousands of dollars
  • Meltemi project is canceled and Nokia announces that around 10,000 employees will be let go from the company
  • Nokia shares drop significantly
  • Microsoft announces that Windows Phone 7 phones can not be upgraded to WP 8

"Microsoft has confirmed that current Windows Phone handsets won't get an upgrade to Windows Phone 8, but they will get a halfway measure: a branching upgrade called Windows Phone 7.8"

July 5, 2012

  • Head manager and the entire MeeGo team leaves Nokia
  • The team formed a start up company called Jolla to develop new MeeGo devices by the end of 2012

July 16, 2012

  • CopperSpice successfully built on Debian
  • CopperSpice successfully built on Windows XP 32-bit
  • CopperSpice libraries were built using Autotools, GNU Make, and GCC 4.7

August 1, 2012

  • Nokia employees in Brisbane Australia announce their office will be closed by the end of the month
  • Qt 5 Beta is expected to ship by the end of the month when the Australian office is closed
  • Rumors emerge that Nokia will sell or relinquish all Qt assets

August 9, 2012

  • Digia announces they have agreed to acquire Qt from Nokia for a very low price
  • Around 125 Nokia developers are asked to join Digia and not all of them chose to accept the offer

August 2012

  • CopperSpice successfully built on Mac OS X
  • CopperSpice successfully built on Windows Vista 64 for 32-bit Windows platforms
  • CopperSpice successfully built on a VM running Fedora 17
  • GStreamer plugin for Debian and Fedora successfully compiled, Phonon works on both X11 platforms
  • KitchenSink demo application project started
  • KS Demonstrates examples showcasing the fundamental features of CopperSpice

September 2012

  • QJson class added to CopperSpice which required changes to internal string implementations
  • Changed license macros to "open source"
  • Remove S60 source code
  • Initial development of the Diamond Editor application using Qt commences

September 18, 2012

  • Digia officially takes over management of the entire Qt project

October 2012

  • CopperSpice - compiled central portions of Corelib using Autotools without moc
  • CopperSpice - implemented QtMetaObject::className() without moc
  • CopperSpice - created enhanced and simplified registration syntax for Signals and Slots

November 2012

  • Migrate Diamond Editor to compile using Autotools instead of QMake
  • Diamond Editor ported to the CopperSpice libraries
  • CopperSpice - implemented Signal and Slot registration without moc
  • CopperSpice - Signal / Slot parameters can be of any data type
  • CopperSpice - Signal / Slot parameters can have a default value
  • CopperSpice - implemented QMetaObject::superClass() without moc
  • CopperSpice - template classes can now inherit from QObject

December 2012

  • Added new samples to the KitchenSink project to demonstrate graphics functionality
  • CopperSpice - implemented enum registration without requiring moc
  • CopperSpice - implemented properties without moc
  • CopperSpice - enhanced properties to allow usage of complex data types


January 2013

  • PepperMill application started
  • Implemented to parse header files and migrate from Qt syntax to CopperSpice syntax
  • CopperSpice Overview documentation generated
  • Explains changes in property system and macros
  • Documented debug procedures using QtCreator 2.6 on Windows
  • Obsolete platform and operating system defines removed from CopperSpice
  • All Qt3 source code removed from CopperSpice
  • CopperSpice supports MetaClassInfo without moc

February 2013

  • Updated Mac system to Apple clang 3.2 for OS X
  • Modified CopperSpice makefiles on OS X to use libc++
  • Resolved several warnings from clang on OS X
  • Incorporated 4.8.3 and 4.8.4 changes into CopperSpice

March 2013

  • PepperMill converts a majority of the Qt macros to CopperSpice syntax
  • Added changes from Qt 5 related to QJson classes
  • Resolved an existing Qt bug in QTextEngine
  • Resolved existing native dialog OS X printing issues
  • Added several Qt 5 classes to QVariant and QMetaType
  • Set up CopperSpice CI server with multiple virtual machines

April 2013

  • CopperSpice supports MetaEnums without moc
  • Added QStandardPaths to CopperSpice
  • Enhanced QFileDialog for Windows 7 and Windows 8
  • CopperSpice generates signal methods without moc

May 2013

  • CopperSpice Signals support connections to lambda expressions
  • Signal and Slot connections are checked at compile time when passed as a method pointer
  • CopperSpice API documentation created using Doxygen

June 2013

  • PepperMill can convert almost all Qt macros to CopperSpice macro syntax
  • QMetaClassInfo, QMetaEnum, QMetaMethod, and QMetaProperty have been fully implemented in CopperSpice
  • CopperSpice fully supports Signals and Slots without moc or any preprocessor

July 2013

  • Incorporated 4.8.5 changes (through 05/03/2013) into CopperSpice
  • CopperSpice auto builds plugins for PostgreSQL and MySQL when DBMS installed

August 2013

  • Road trip to Oregon for a holiday

September 2, 2013

  • Nokia sold to Microsoft

September 2013

  • PepperMill conversion utility completed
  • Incorporated hundreds of Qt 5.0 and Qt 5.1 changes into CopperSpice
  • Added QCommandLineParser, QFileDevice, QFileDialog, and QSaveFile classes

October 2013

  • Vacation in Washington DC and New Orleans

November 2013

  • Incorporated 4.8.5 changes (through 11/22/2013) into CopperSpice
  • Incorporated hundreds of Qt 5 changes into CopperSpice
  • Added Qt 5 QTemporaryDir
  • Added Qt 5 QTemporaryFile
  • Added Qt 5 QArrayData class
  • Modified QString, QByteArray, and QVector to use the new Qt 5 QArrayData class

December 2013

  • Incorporated 4.8.5 changes (through 12/17/2013) into CopperSpice
  • Code modified to remove warnings on X11, Windows, and OS X for all non-3rd party source
  • Modified QPointer to use QWeakPointer, similar to changes made in Qt 5
  • PepperMill run on CsCore current header files to produce pure C++ code
  • PepperMill run on CsGui current header files to produce pure C++ code
  • MOC (Meta-Object Compiler) is obsolete when compiling all of with CsCore and CsGui


January 2014

  • PepperMill is run on the remaining header files to produce pure C++ code
  • MOC (Meta-Object Compiler) is obsolete when compiling with CsNetwork, CsSql, CsXml, CsXmlPatterns

February 2014

  • Signal / Slot connections modified to include the full signature
  • MOC (Meta-Object Compiler) is obsolete when compiling with CsOpenGL, CsMultimedia, CsScript, CsSvg

March 2014

  • MOC (Meta-Object Compiler) is obsolete when compiling with CsWebKit
  • Updated private header file defines to use the correct file name
  • KitchenSink test application modified to include additional examples
  • KitchenSink compiled with CopperSpice libraries, MOC is not used
  • Diamond Editor compiled with CopperSpice libraries, MOC is not used

April 2014

  • Incorporated 4.8.6 changes (through 04/23/2014) into CopperSpice
  • Source files updated with the appropriate license and copyright information
  • CopperSpice version set to 1.0.0
  • MOC (Meta-Object Compiler) is obsolete when compiling with CsPhonon
  • CopperSpice tested on Windows 7 using GCC 4.8
  • CI server updated to newer versions of Debian (Wheezy), Fedora 20, and Ubuntu 14.04

May 2014

  • Incorporated 4.8.x changes (through 05/07/2014) into CopperSpice
  • CopperSpice packaging
  • PepperMill packaging
  • KitchenSink and Diamond packaging

May 21, 2014

  • Initial release of source code
  • Binary files published for multiple platforms
CopperSpice 1.0.0 release
PepperMill 1.0.0 release
KitchenSink 1.0.0 release
Diamond 1.0.0 release

June 2014

  • Update CS build system, platform specifics, and type traits
  • CopperSpice source code reformatted with AStyle and header files cleaned up

July 2014

  • Incorporate 4.8.x changes (through 07/10/2014) in CopperSpice 1.1.x
  • Update various font libraries, update SQLite in CopperSpice 1.1.x
  • Several legacy issues resolved
  • CopperSpice web site fully operational
CopperSpice 1.0.1 release
Diamond 1.1.0 release

Aug 2014 - Sept 2014

  • Summer vacation

October 2014

  • Incorporate 4.8.x changes (through 10/01/2014) into CopperSpice 1.1.x
  • Renamed source code folder for CsCore library from src/corelib to src/core
  • Consolidate mkspec headers, created src/core/global/qplatformdefs.h src/core/global/qplatformposix.h
  • Refactored qglobal.h

November 2014

  • Update CopperSpice to use GStreamer 1.0
  • Update various font libraries
  • Used QDoc on Qt 4.8.6 source code to generate html output for CopperSpice API documentation
  • Merged several Qt 5.x html pages with Qt 4.x html output
  • Developed a parser to convert html documentation to the Doxygen format

December 2014

  • Incorporated 4.8.x changes (through 12/01/2014) into CopperSpice 1.1.x
  • Discovered Doxygen program was not sufficient for accurate C++11 API documentation
  • DoxyPress was derived from Doxygen 1.8.8
  • Renamed Doxygen to DoxyPress
  • Renamed DoxyWizard to DoxyPressApp
  • New build files were created
  • Removed usage of Qt 1.9
  • Migrated DoxyPress and DoxyPressApp to link with the CopperSpice libraries


January 2015

  • Major development work on DoxyPress
  • Changed DoxyPress to use a JSON project file

February 2015

  • Modify and rewrite the API documentation for CopperSpice
  • Continued development on DoxyPress
  • Created documentation for DoxyPress project

March 2015

  • Incorporated 4.8.x changes (through 03/31/2015) into CopperSpice 1.1.x
  • Used clang tools to optimize CopperSpice 1.1.0

April 2015

  • Update 3rd party libPng to version 1.6.17
  • Update 3rd party libTiff to version 4.0.3
  • Enhanced QMap with an optional third template parameter to specify a user defined comparison
  • Modify QFileSystemModel to use the new QMap template parameter for case insensitive comparisons on Windows
DoxyPress 1.0.0 beta release
DoxyPressApp 1.0.0 beta release

May 2015

  • Incorporated 4.8.x changes (through 04/28/2015) into CopperSpice 1.1.x
  • Extensive work on the CS API documentation and DoxyPress

June 2015

  • Substantial work on DoxyPress
  • Reconfigured CI setup and VM's
  • Minor changes for OS X 10.10
CopperSpice 1.0.2 release
CopperSpice 1.0.3 release

July 2015

  • Incorporated 4.8.x changes (through 06/09/2015) into CopperSpice 1.1.x
  • Back port QEnableSharedFromThis and QMakeSharedPointer
  • Enhanced QJson by adding new methods
  • Enhanced portability of WebKit
CopperSpice 1.1.0 release
Diamond 1.1.2 release

August 2015

  • Redesign of the macro registration system enhancing QMetaObject to be C++11 compliant
  • On Linux distributions the size of the .so files are roughly 50% smaller than CS 1.1.0 files
  • On Windows the .dll files are 10-15% smaller than CS 1.1.0 files
  • Redesign atomic classes to use the C++11 native atomic classes
  • Back port and redesign qHash() to use the new atomic classes
  • CMake files for building CopperSpice are being developed by a contributor
  • CI server updated to newer versions of Debian (Jessie) and Fedora 22
  • Initial CopperSpice API documentation released, built using DoxyPress
CopperSpice 1.2.0 release
PepperMill 1.2.0 release
KitchenSink 1.2.0 release
Diamond 1.2.0 release
DoxyPress 1.1.0 release
DoxyPressApp 1.1.0 release

September 2015

  • Attended CppCon in Seattle, Washington
  • Presented a session discussing the CopperSpice libraries
  • Presented a session to introduce our DoxyPress application
  • Presented a lightning talk about our Compile Time Counter

November 2015

  • Enhance CI computer hardware
  • Reconfigure VM's and CI software
  • Extensive development on the DoxyPress application
DoxyPress 1.1.1 release
DoxyPressApp 1.1.1 release

December 2015

  • Added Fedora 23 to CI system
  • Added FreeBSD 10.1 to CI system
  • Finish merging CMake build system files
  • Update copyright


January 2016

  • Uploaded source to Github
  • Build system modified, CopperSpice libraries can be built with CMake
  • Added Windows 10 to CI server
  • Update Mac OS X CI to version 10.10
  • Merge several pull requests from other developers
  • Begin development of the CsSignal library
  • Library designed to provide improved cross threaded signal delivery
DoxyPress 1.2.0 release
DoxyPressApp 1.2.0 release

February 2016

  • Move minimum GCC version to 4.8.1
  • Start alpha testing for new Signal library
  • Merge several pull requests from other developers

March 2016

  • Merge several pull requests from other developers
  • Clean up GCC warnings
  • Development of libGuarded began
  • Library designed to manage access to shared data in multithreaded programs
  • Integrate new CsSignal library into CopperSpice
  • Link CsSignal with the libGuarded library
CopperSpice 1.2.2 release

April 2016

  • CsSignal library released
  • Refactor QObject to use CsSignal
CopperSpice 1.3.0 release
KitchenSink 1.2.1 release
CsSignal 1.0.0 release
libGuarded 1.0.0 release
Diamond 1.2.1 release
DoxyPress 1.2.1 release
DoxyPressApp 1.2.1 release

May 2016

  • CppNow 2016 presentation on CopperSpice and our new CsSignal library
  • CppNow 2016 presentation on DoxyPress demonstrating how clang can be used to parse C++
  • CppNow 2016 presentation on libGuarded
  • Upgrade to use CMake 3.4.3 to build CopperSpice
  • Merge pull requests from other developers
DoxyPress 1.2.2 release
DoxyPressApp 1.2.2 release

June 2016

  • Enhance AutoTools build to include the CMake files in the tar and zip source distribution
  • Change both build systems to properly display library version
  • Work on documentation for developer contributions

July 2016

  • CopperSpice team on temporary leave as Barbara recovers from a Total Knee Replacement
    Thank you to the community for their wonderful support and encouragement during this time
  • Merge changes for DragonFly BSD

August 2016

  • Update CS overview documentation
  • Merge pull request for audio on Linux
  • Modify build files on Linux to make new audio libraries optional
  • Add Fedora 24 to CI server
  • Add Ubuntu 16.04 to CI server

September 2016

  • Remove "-0" from Cs library file names
  • Resolved Fedora and OS X build issues
CopperSpice 1.3.1 release
DoxyPress 1.2.4 release
DoxyPressApp 1.2.4 release

November 2016

  • Initiated new design of the container classes

December 2016

  • Enhance QSharedPointer
  • Internal changes for QMap to improve readability
  • Continued design of the container classes
  • CopperSpice tested on Windows 10 using GCC 5.3
  • Update copyright
  • Add 'override' to inherited methods
    • Added for Linux and Windows
    • OS X 10.10 overrides not validated
    • Libraries modified: Core, Gui, Multimedia, Network, OpenGL, SQL, SVG, XML, XMLPatterns
    • Libraries modified: Phonon, phonon_ds9, phonon_gstreamer
  • Modified foreach macro to expand to a range based "for"
  • Change "foreach" to a C++11 range based "for"
    • Libraries modified: Core, Multimedia, Network, OpenGL, SQL, SVG, XML, XMLPatterns
    • Libraries modified: Phonon, phonon_ds9, phonon_gstreamer, phonon_qt7
CopperSpice 1.3.3 release
DoxyPress 1.2.5 release
DoxyPressApp 1.2.5 release


January 2017

  • Reimplement the following containers to leverage the C++ standard library containers, iterators, and algorithms
    • QVector, QList, QLinkedList, QSet
    • QPair, QQueue, QStack, QStringList
  • Add methods to support move semantics for constructors, append, insert, etc
  • Add reverse iterators
  • Expand the API
    • Add methods to support the STL API (Example: empty(), push_back(), etc)
    • Maintain the full existing CopperSpice API (Example: isEmpty(), append(), etc)
  • Rewrite documentation to reflect changes in the sequential containers
  • Remove several obsolete defines in Core and Gui
  • Change foreach() to a C++11 range based for() in CsGui
  • Clean up source code and docs to improve the API documentation
  • Changed name of qsqlpsql plugin to match CopperSpice version notation
  • Cherry pick pull request #51 to correct FreeType build issues with CMake
  • New development begins on the CsString library
  • Update CopperSpice copyright
CopperSpice 1.4.0 release
KitchenSink 1.2.2 release
CsSignal 1.0.1 release
Diamond 1.2.2 release
DoxyPress 1.2.6 release
DoxyPressApp 1.2.6 release

February 2017

  • Update CopperSpice API documentation
    • Document changes to the new sequential container classes
    • Add information about 'range based for' usage as related to containers
    • Add a new tutorial to define how reference data types are used with containers
  • Adding new classes to libGuarded for deadlock free containers
  • Added classes to support thread safe concurrent access to containers
  • Add Fedora 25 to CI server

March 2017

  • CsSignal library uses libGuarded to handle the connection lists and avoid race conditions
  • Refactor QTabBar to remove raw pointers, QList of tabs now stores shared pointers
  • Continue development on the CsString library
  • Unicode aware library supporting UTF-8 and UTF-16 natively
  • CsString uses policy classes so any encoding can be supported
DoxyPress 1.2.7 release
DoxyPressApp 1.2.7 release

April 2017

  • Continued development on CsString library, added test suite
  • Preliminary DoxyPress documentation for CsString library
  • Initial development on the new QString8 class which uses the CsString library to support UTF-8

May 2017

  • CppNow 2017 presentation on CsString, a Unicode aware string library
  • CppNow 2017 presentation on libGuarded, new RCU container classes
CopperSpice 1.4.1 release
KitchenSink 1.2.3 release
CsSignal 1.1.0 release
CsString 1.0.0 release
libGuarded 1.1.0 release
Diamond 1.2.3 release
DoxyPress 1.2.8 release
DoxyPressApp 1.2.8 release
DoxyPress 1.2.9 release
DoxyPressApp 1.2.9 release

June 2017

  • Reimplement the following containers to leverage the C++ standard library containers, iterators, and algorithms
    • QMap, QMultiMap, QHash, QMultiHash
  • Add methods to support move semantics for constructors, append, and insert, etc
  • Add reverse iterators to QMap and QMultiMap
  • Add hash and equality template parameters for QHash and QMultiHash
  • Implement QMultiHash and QMultiMap as separate classes from QHash and QMap
  • Minor change to QMultiHash implemented in favor of the STL semantics
  • QMultiHash class does not guarantee the order of elements with the same key, if this behavior is required simply use QMultiMap
  • Expand the API
    • Add methods to support the STL API
    • Maintain the majority of the CopperSpice API
  • Update CopperSpice API documentation
    • Document changes to the new associative container classes
    • For QMultiHash and QMultiMap document the full classes
  • Enhance CMake build system for packaging support with CPack

July 2017

  • Enhance API documentation
  • Record CppCast interview
  • Start a new CopperSpice YouTube channel
  • Accepted as speakers for CppCon 2017 presenting CsString, a Unicode aware string library
  • Accepted as speakers for CppCon 2017 presenting libGuarded, new RCU container classes
CopperSpice 1.4.2 release
PepperMill 1.2.1 release
DoxyPress 1.2.10 release
DoxyPressApp 1.2.10 release

August 2017

  • Update from Unicode 5 to Unicode 8
  • Add additional methods to QString8 and QChar32
  • Update CsNetwork library adding full support for OpenSSL version 1.0.x
  • Add Fedora 26 to CI server
  • Upgrade FreeBSD 10.1 to 10.3 on CI server
  • Update minimum required clang version to 3.8.1 for building CopperSpice
  • Update minimum required GCC version to 5.4 for building CopperSpice
  • Migrate to C++14 on all platforms

September 2017

  • Add two networking examples to KitchenSink
  • Added normalization methods to QString8
  • Add iterator based overloaded methods to QString8
  • Build files updated for CMake, CsMultimedia, CsOpenGL, CsPhonon, CsWebkit can each be disabled and will not be built
  • Build files updated for CMake, OpenSSL can be disabled so it will not be included when building CsNetwork
  • Build files updated for Autotools, CsMultimedia, CsPhonon, CsWebkit can each be disabled and will not be built
  • Build files updated for Autotools, OpenSSL can be disabled so it will not be included when building CsNetwork
  • Add OS X 10.12 to CI Server
  • Presented talks on CsString and libGuarded at CppCon in Bellevue, Washington
CopperSpice 1.4.3 release
CopperSpice 1.4.4 release
KitchenSink 1.3.0 release
CsSignal 1.2.0 release
CsString 1.1.0 release
Diamond 1.2.4 release
DoxyPress 1.2.11 release
DoxyPressApp 1.2.11 release

October 2017

  • Begin design on a new container class named QFlatMap
  • Make QPair an alias for std:pair
  • Update OS running CI Server, update CI software tooling
  • Test configuration for building CopperSpice on ArchLinux

November 2017

  • Uploaded our tenth video to the CopperSpice YouTube channel
  • Presented a talk on C++ fundamentals for ACCU / C++ meeting
  • Add QFlatMap, an ordered map which stores elements in contiguous memory as a sorted vector of pairs
  • Remove the majority of the algorithms in CsCore, CopperSpice updated to use the STL algorithms when possible
  • Move Q_ASSERT and related functions to a new header file
  • Move qDebug, qWarning, qCritical, and qFatal functions to a new header file
  • Clean up qglobal file, add missing public headers
  • Remove obsolete methods, merge several redundant overloaded methods
  • QChar32 class added
  • Move additional string methods to QString8 and optimize
  • Add overloaded methods in QString8 for rvalues, for example operator+()

December 2017

  • Add Debian 9 (Stretch) to CI server
  • Update Overview and API documentation
  • Add CMake build files for the KitchenSink sample program
  • QString toInt(), toLong(), toLongLong(), and toShort() methods consolidated into toInteger()
  • QString arg() methods were renamed and split into formatArg() and formatArgs(), depending on the passed arguments
  • Add QStringParser class
  • Move string methods for split(), arg(), and number() to QStringParser
  • Move string methods for toInteger(), toDouble, and toFloat() to QStringParser
  • Move QStringList::join() method to QStringParser
  • Redesign variations of arg() and number() methods in QStringParser as templates for efficiency
  • Redesign number() and toInteger() to use iostream
  • Add wrappers in QString8 to call all of the static methods in QStringParser
  • Add QStringView class, templated class where the template parameter must be a string data type
  • Add overloaded methods in QString8 which take a QStringView8


January 2018

  • Update copyright
  • Update API documentation adding new classes and methods
  • Upgrade Mac OS X 10.10 to 10.13 on CI server
  • Modify QFlags class to accept a strongly typed enum class
  • Add methods to support sections in QString8
  • Refactor and modernize third party regex library
  • Add new QRegularExpression class, templated class where the template parameter must be a string data type
  • Add new QRegularExpressionMatch class, templated class where the template parameter must be a string data type
  • QRegExp is not used in QString8 or QString16 and is deprecated
  • QString becomes a typedef for QString8, UTF-8 is the default encoding
  • QString16 class supports UTF-16 encoding
  • Presented a talk on Multithreading and libGuarded for ACCU / C++ meeting
CopperSpice 1.4.5 release
DoxyPress 1.2.12 release
DoxyPressApp 1.2.12 release

February 2018

  • Add remaining functionality to QRegularExpression
  • Add overloaded methods in QString8 which take a QRegularExpression as a parameter
  • Refactor regex code
  • Remove QByteArrayMatcher
  • Remove obsolete code for datastream operator methods before version 4
  • Remove obsolete softkey support
  • Replace qvsnprintf with std functions
  • Add support for SHA-2, Keccak, and SHA-3
  • Update QUrl classes to support IDN
  • Improve URL encoding
  • Enhance CsNetwork to support newer versions of TLS, add support for SPDY
  • Add SecureTransport support for Mac OS X, prefer over OpenSSL

March 2018

  • Update API documentation for CsCore classes and methods
  • Add full documentation for new QString and QRegularExpression
  • Add migration examples for QString and QRegExp to QRegularExpression
  • Remove QChar, QString (old UTF-16 class), QLatin1Char, QLatin1String, and QStringLiteral
  • Remove QCharRef, QStringRef, and QRegExp
  • QChar32 replaces QChar
  • QString8 replace QString
  • QStringView replaces QStringRef
  • QRegularExpression and QRegularExpressionMatch classes replace QRegExp
  • QChar typedef added for QChar32
  • QString typedef added for QString8
  • QString16 added to support UTF-16 strings
  • QLocale classes heavily refactored to use UTF-8 string classes
  • Update codec classes to use UTF-8 string classes
  • Full rewrite of all QJson classes optimizing for UTF-8 storage
  • Removed duplicated string classes embedded in the JSON implementation
  • Changed storage of internal JSON data to better match the API
  • Improved Unicode string handling in JSON classes
  • Update Sqlite to version 3.22.0
DoxyPress 1.2.13 release
DoxyPressApp 1.2.13 release

April 2018

  • Build all CopperSpice libraries with the new string classes, string parser class, and regular expression class
  • Remove string surrogate checking since it is not required with UTF-8 / UTF-16 encoding
  • Correct multiple cases of legacy undefined behavior found while integrating UTF-8 string classes
  • CopperSpice libraries build successfully on Windows
  • Update KitchenSink demo application to use the new CopperSpice libraries supporting UTF-8 strings

May 2018

  • Enhance QVariant to work with additional data types
  • Change SVG rendering to use iterators and improve speed of drawing
  • Clean up text encodings for Linux
  • Clean up source for Mac OS X to remove warnings
  • CopperSpice libraries build successfully on Linux
  • Update libtiff to version 4.06
  • Add new countries to HarfBuzz enum

June 2018

  • Presented a talk on Overload Resolution for ACCU / C++ meeting
  • Several new methods added to QString and QStringView
  • Remove compiler warnings for overridden methods and Mac OS X specific code
  • CopperSpice libraries build successfully on Mac OS X
  • Add Ubuntu 18.04 to CI server
  • DoxyPress fully migrated to CopperSpice 1.5.0
  • DoxyPressApp fully migrated to CopperSpice 1.5.0
CopperSpice 1.5.0 release
KitchenSink 1.4.0 release
DoxyPress 1.3.0 release
DoxyPressApp 1.3.0 release

July 2018

  • Remove Fedora 24 from CI Server
  • Add Fedora 27 to CI Server
  • Add Fedora 28 to CI Server
  • Upgrade FreeBSD 10.3 to 11.2 on CI server
  • Update minimum required GCC version to 7.3 for building CopperSpice on Windows
  • Minor changes to remove warnings reported by MinGW 7.3 on Windows
  • Add missing includes for FreeBSD
  • Optimize CsString classes

August 2018

  • Enhance CMake build files to work with MSVC
  • Visual Studio 2017 Version 15.8 or newer is required
  • Modify global settings to define Q_CC_MSVC when building with Visual Studio
  • Remove several functions which are now supported natively in MSVC
  • Minor change in CsNetwork to resolve missing data type for DnsRecord with MSVC
  • When compiling with MSVC a few export commands were removed in Core registration, no changes with MinGW
  • Turn on assembly files in CsWebkit which are required only when using MSVC
  • Remove class export command from QStringList to accommodate how MSVC handles inheriting from a template
  • Mark QStringList methods as exported
  • Update KitchenSink CMake build files to work with MSVC
DoxyPress 1.3.1 release
DoxyPressApp 1.3.1 release

September 2018

  • Merge MSVC test branch with main trunk
  • Add information in CopperSpice Overview documentation detailing how to build with MSVC
  • Minor improvement in regular expressions requiring an escape sequence
  • Attended CppCon in Seattle, Washington
  • Presented a talk on Undefined Behavior at CppCon in Bellevue, Washington
CopperSpice 1.5.1 release
KitchenSink 1.4.1 release
Diamond 1.3.0 release
DoxyPress 1.3.2 release
DoxyPressApp 1.3.2 release

October 2018

  • Update CopperSpice to use Unicode 11.0
  • Improved QString class
  • Migrate branch to HarfBuzz 2.1.1
  • HarfBuzz library is used for text shaping, newer version has built in UTF-8 support
  • Update CsCore to use the new version of HarfBuzz
  • Initial clean up of CsGui pending the new version of HarfBuzz
  • Remove all unsupported qws files in CsGui
  • Add new math functions

November 2018

  • Added several pull requests to CopperSpice
  • Update compiler and cpu detection code
  • Reorganize CsGui files to facilitate improved maintainability
  • Move all files associated with printing to a new printing directory
  • Remove obsolete inputContext classes
  • Add new classes for printing
  • Remove unused CsGui embedded files
  • Remove obsolete files for qpa in CsGui
  • Update QCoreApplication API
  • Initial changes to support a cross platform paint engine
  • Initial changes to support improved printing

December 2018

  • Resolved HarfBuzz issue to support scripts added in Unicode 11
  • Update MySQL driver
  • Improve QVector::data()
  • Add support for time zones and 64-bit timestamps in the QDateTime class
  • Add new enums values and type traits to the QNameSpace class
  • Optimized several existing QString methods
  • Resolved a reported issue with QDockWidget
  • Remove workarounds for older versions of MSVC
  • Remove obsolete files for egl support
  • Add policy to prevent warnings when using a version up to CMake 3.13
  • Continued major work on CsCore and CsGui to support the new cross platform paint engine
  • Update CsNetwork to use the new plugin system
  • Update CsXmlPatterns to use the new date methods


January 2019

  • Central new classes added to CsCore: QMarginsF, QTimeZone, QVersionNumber
  • CsCore classes with significant changes: QCoreApplication, QMargins, QDebug, QDateTime, QFileInfo, QObject, QRect, QTimer
  • Central new classes added to CsGui: QBackingStore, QKeySequenceEdit, QPageLayout, QScroller, QTouchDevice, QWindow
  • CsGui classes with significant changes: QIcon, QIconEngine, QImage, QKeySequence, QLCDNumber, QMenu, QPixmap
  • Enhance QMenu so a method pointer can be used as an action
  • Remove undefined behavior in Zlib
  • Paint engine updated to leverage newer cpu architecture
  • Delete obsolete CDE, CleanLooks, Motif, and Plastique styles
  • Added Fusion style
  • Maintain qreal data types in math3D classes
  • Convert math3D qreal values to GLFloat when calling OpenGL
  • Merge overloaded methods where default arguments can be utilized
  • Change multiple enums to constexpr variables
  • Remove unused parameters in a large number of methods

February 2019

  • Update meta system files to report metatype issues at compile time
  • Redesign internals for the plugin system in CsCore
  • Added new plugin macros: CS_PLUGIN_IID and CS_PLUGIN_KEY
  • Remove unused plugin files
  • Add support for newer versions of OpenGL in CsGui
  • Improve print support
  • Reorganize and consolidate enums in QPaintDevice, QPdfWriter, QPrinter, QPageLayout, and QPageSize
  • Update network manager to use the new plugin system
  • Fixed memory leak in QJsonObject
  • Update CsSvg with a redesigned css parser
  • Improve API documentation to reflect the new platform and plugin systems
  • CopperSpice 1.6.x features
    • New platform support system
    • Redesign entire plugin system
    • Support for XCB on Unix platforms
    • HarfBuzz 2.1.1 UTF-8 support
    • Support for HighDPI on all platforms
    • OpenGL support improved
    • New classes for printer support, styles, locales, dates, time zones, and more
    • Extensive changes to CsGui
    • Update CsSql to use the new plugin system
CopperSpice 1.5.2 release
KitchenSink 1.4.2 release
CsString 1.2.0 release
Diamond 1.3.1 release
DoxyPress 1.3.3 release
DoxyPressApp 1.3.3 release

March 2019

  • Presentation, Dutch C++ Group in Amsterdam, NetherlandsOverload Resolution
  • Presentation, emBO++ in Bochum, GermanyUndefined Behavior
  • Presentation, emBO++ in Bochum, GermanyMultithreading in C++
  • Presentation, emBO++ in Bochum, GermanyOverload Resolution
  • Presentation, C++ User Group Düsseldorf, GermanyOverload Resolution
  • Presentation, C++ User Group Munich, GermanyUndefined Behavior
  • Presentation, C++ User Group London, EnglandUndefined Behavior

April 2019

  • Remove obsolete third party wintab library and related source due to their license issues
  • Improve CopperSpice CMake files for MSVC support
  • Add defines for newer versions of Mac OS X
  • Redesign QVarLength, add STL API methods and reverse iterators
  • Remove support for obsolete QDataStream versions
  • Minor changes to Webkit for Max OS X
  • Support new versions of PostgreSQL
  • Fix QRegularExpression which used a \d regexp
  • Fix locale aware compare method in QString for Windows
  • Refactor unix standard paths in QStandardPaths
  • Change Signal/Slot delivery to allow the Slot to return a bool
  • Migrate Signal/Slot calls to connect() in CsGui to use method pointers
  • Redesign plugin system
  • Refactor QFactoryLoader, remove platform specific code
  • Enhance CI to use Docker instead of a Virtual Machines for all Unix platforms
  • Remove Fedora 25 from CI Server
  • Remove Fedora 26 from CI Server
  • Add Fedora 29 to CI Server

May 2019

  • Remove defines for XCB-ICCCM version 0.3.8
  • Add files to support FontConfig for XCB
  • Update build files to allow XCB support without using GTK
  • Remove third party IAccessible2 library for Windows
  • Add CS_SHOW_DEBUG #define to display a variety of debug messages only when enabled
  • Clean up multiple qDebug message for improved readability
  • Add support in platform code to use the new QFactoryLoader class
  • Redesigned QText classes in CsGui to use HarfBuzz 2.3.1 UTF-8 text shaping
  • Cocoa platform specific GUI support
  • Windows platform specific GUI support
  • XCB platform specific GUI support

June 2019

  • Added plugin support for Multimedia Play List Formats
  • Added plugin support for Multimedia Windows Player, DirectShow
  • Reorganized SQL source, moved plugin source code to the SQL plugin directory
  • Change plugin library name from qsqlpsql to CsSqlPsql
  • Standardized the code for loading plugins in GUI, Multimedia, and SQL
  • Change a majority of the calls to connect() to use method pointers
  • Enhance meta type system to allow reference parameters when calling invokeMethod()
  • Improve CMake build files
  • Clean up debug and assert message

July 2019

  • Remove Phonon library in favor of CsMultimedia
  • Build files updated to support both GStreamer 0.10 and GStreamer 1.0
  • Multimedia DirectShow (Windows), GStreamer (Unix), AV Foundation (Mac OS x) plugins added
  • Add plugin printer support for Windows
  • Cups printer support plugin for Unix and Mac
  • Additional plugin for Mac printing
  • Add new command line options in UIC
  • Enhance internal usage of QMetaObject::invokeMethod() in CsMultimedia
  • Add missing overloads in Multimedia and plugins
  • Change several containers so erase() accepts a const iterator
  • Remove FOREACH macro, all internal code updated
  • Remove FOREVER macro, all internal code updated
  • Update Overview documentation with additional getting started information
  • Update tables in the CopperSpice Overview documentation listed the required XCB packages for Unix
  • Retain documentation on website for CopperSpice 1.5 stable
  • Upload documentation for CopperSpice 1.6 release
  • Add a cs-1.5 tag for the KitchenSink application, marks the last commit using CopperSpice 1.5 stable
  • KitchenSink updated to use CopperSpice 1.6
  • Change KitchenSink music example which was redesigned to use CsMultimedia
  • Accepted as speakers for CppCon 2019 in Denver, Colorado
  • Accepted as speakers for MeetingC++ 2019 in Berlin, Germany
  • Accepted as speakers for code::dive 2019 in Wrocław, Poland

August 2019

  • Docker is fully configured for all Linux platforms
  • Remove Debian 8 from CI Server
  • Add Debian 10 (Buster) to CI Server
  • Add Fedora 30 to CI Server
  • Add Arch Linux to CI Server
  • Upgrade FreeBSD 11.2 to 12.0 for CI Server
  • Update documentation for CopperSpice 1.5
  • Update documentation for CopperSpice 1.6
  • Update CopperSpice Overview Documentation
  • Minor changes in CMake build files for GStreamer 1.0 on Unix platforms
  • Various build file changes for X11 and stylesheet support on Windows
  • Multiple enhancements to improve DoxyPress outputs
  • Update DoxyPressApp to use CS 1.6 for High DPI support
CopperSpice 1.5.3 stable
KitchenSink 1.4.3 stable
KitchenSink 1.4.4 stable
CopperSpice 1.6.0 release
PepperMill 1.2.2 release
KitchenSink 1.6.0 release
DoxyPress 1.3.5 release
DoxyPressApp 1.3.5 release

September 2019

  • Attended CppCon in in Denver, Colorado
  • Presented a talk on "High performance graphics on the GPU" at CppCon in in Denver, Colorado
  • Drop support for Autotools build system with CopperSpice
  • Update to CMake 3.8 as the minimum required version

October 2019

  • Modernize CMake build files for CopperSpice
  • Update CMake files for better MSVC support
  • Improve CMake functions to install CS libraries for a project linking with CopperSpice
  • Streamline rpath support for Linux and Mac OS X
  • Update minimum required clang version to 6.0 for building CopperSpice
  • Update minimum required GCC version to 7.3 for building CopperSpice
  • Move to C++17 on all platforms
  • Drop support for Autotools build system with KitchenSink
  • Modernize CMake build files for KitchenSink
  • Move to C++17 on all platforms
  • Drop support for Autotools build system with Diamond
  • Modernize CMake build files for Diamond
  • Move to C++17 on all platforms
  • Drop support for Autotools build system with DoxyPress and DoxyPressApp
  • Modernize CMake build files for DoxyPress and DoxyPressApp
  • Move to C++17 on all platforms
  • Merge github pull requests
  • Fix issue with lupdate for translation files
  • Research optimization options provided in C++17

November 2019

  • Drop support for Autotools build system for CsSignal
  • Add CMake build files for CsSignal
  • Move to C++17 on all platforms
  • Finalize build files to adjust rpath during deployment
  • Refactor Core source code to utilize C++17
  • Improve registration, remove unnecessary headers
  • CopperSpice European Tour
    • Speaker at Meeting C++ 2019 Conference in Berlin, Germany
    • Presented an updated talk on "High performance graphics and rendering text on the GPU"
    • Speaker at code::dive 2019 in Wrocław, Poland
    • Presented "Undefined Behavior is Not an Error"
    • C++ and CopperSpice training in Bochum, Germany
    • Speaker at C++ User Group in the Netherlands
CopperSpice 1.6.1 release
KitchenSink 1.6.1 release
CsSignal 1.2.1 release
Diamond 1.3.2 release
DoxyPress 1.3.6 release
DoxyPressApp 1.3.6 release

December 2019

  • Adjust registration to improve compile speed on Unix platforms
  • Review QVariant and QMetaType and develop a new abstraction
  • Clean up source code to remove compiler warnings
  • Use compiler attributes instead of macros
  • Replace Q_REQUIRED_RESULT with the attribute [[nodiscard]]
  • Add support for clang 9
  • Update required gcc and clang versions
  • Update ignore file for source distribution
  • Remove deprecated methods in Core and Gui
  • Delete extraneous header files which only included a previously listed header
  • Improve compile speed on Unix platforms by reorganizing registration macros


January 2020

  • Drop support for Autotools build system for CsLibGuarded
  • Add CMake build files for CsLibGuarded
  • Move to C++17 on all platforms
  • Change libGuarded to CsLibGuarded
  • Drop support for Autotools build system for CsString
  • Add CMake build files for CsString
  • Drop support for Autotools build system for PepperMill
  • Add CMake build files for PepperMill
  • Release new version of PepperMill for customers migrating to CopperSpice
  • Update CMake package detection for MySQL / MariaDB plugins
  • Continue removing compiler warnings and deprecated methods
  • Add [[fallthrough]] attribute for switch cases which do not break or return
  • Drop support for Q_DECLARE_TYPEINFO, replace with C++ standard type traits
  • Study the interaction between QVariant, QMetaType, and the property system
  • Experiment with using std::variant and std::optional
  • Mac OS X CI supported versions: 10.13 and 10.14
  • Minimum required XCode version: 10.1
  • Release tags were added to DoxyPress
  • Several enhancements made to DoxyPress

February 2020

  • Update CS Overview documentation, add extended notes about migrating to CopperSpice
  • Text file containing sha512 checksums added for prebuilt binary download pages
  • New installers added to download page for MSVC prebuilt binaries
  • Create a prototype for the new QVariant class
  • Document the overall impact on CopperSpice
  • Remove Fedora 27 from CI
  • Add Fedora 31 in CI
  • Add Centos 8 in CI
  • Improve build files
  • Remove dependency on NAS audio for Unix
  • Add support for OpenSSL 1.1 in CsNetwork
  • Improve CsLibGuarded build files
  • Git release tags were added to KitchenSink
  • Git release tags were added to Diamond
CopperSpice 1.6.2 release
PepperMill 1.6.0 release
KitchenSink 1.6.2 release
CsPaint 1.0.0 release
CsLibGuarded 1.2.0 release
Diamond 1.3.3 release
DoxyPress 1.3.7 release
DoxyPressApp 1.3.7 release

March 2020

  • Rename Gui OpenGL and Network files for improved readability
  • Clean up code to remove additional warnings
  • Improve code in SVG handling
  • Remove obsolete headers in Core and Gui
  • Adjust const correctness in QSet
  • Remove unnecessary Q_DECLARE_SHARED_STL macro
  • Remove obsolete methods in GUI
  • Improve core state machine performance and functionality
  • Redesign QVariant and QMetaType classes
    • Change calls to qvariant_cast<T>() to use value<T>(), mark qvariant_cast obsolete
    • Expand QVariant::Type enum to include enum values from QMetaType
    • Change code base to use QVariant enum instead of QMetaType enum
    • Add new methods to support the redesigned QVariant system
    • Use QVariant::typeToTypeId() instead of qMetaTypeId()
    • Use constexpr in the internal typeToName() function instead of SFINAE
  • Improve property system macros
  • Optimize sql drivers using the new QVariant system
  • Improve bundle creation for Diamond on Mac OS X
KitchenSink 1.6.3 release

April 2020

  • Correct GUI animation issue on MSVC
  • Remove usingYosemiteOrLater bool since Mac OS X 10.13 or greater required
  • Improve CMake macros to support Mac OS X bundles
  • Remove elements from QVariant
    • Drop the union in QVariant, use std::variant
    • Remove obsolete QVariant structs
    • Remove the use of placement new to end the lifetime of a Variant
    • Remove qRegisterMetaType<T>(), obsolete function
    • Remove multiple obsolete methods
  • Redesign QVariant system
    • Use std::visit in QVariant methods to process stored data
    • Custom data types
      • Add abstract CustomType class
      • CustomType is used to store a shared pointer to non simple types
      • Add templated class CustomType_T, inherits from CustomType
    • Change the return type for several QVariant methods to use std::optional<T>
    • Change int to uint as the return type for several QVariant methods
    • Refactor all methods in QVariant
  • Remove unnecessary duplicated code for cs_typeName_internal() in Multimedia
  • Major redesign of Core animation, leverage the new QVariant system
  • Remove Ubuntu 14.04 from CI
  • Add Ubuntu 20.04 in CI
  • Add bundle creation for KitchenSink on Mac OS X
  • Numerous changes to improve DoxyPress
  • Correct the majority of compiler warnings in DoxyPress
  • Update the version of Hunspell to version 1.7 for Windows
  • Add #define in Diamond to support changes added in Hunspell version 1.5
CopperSpice 1.6.3 release
KitchenSink 1.6.4 release
Diamond 1.3.4 release
DoxyPress 1.3.8 release
DoxyPressApp 1.3.8 release

May 2020

  • Correct CMake build file, iconv package is now always searched on Unix
  • Drop in updated CsLibGuarded headers
  • Redesign QVariant system
    • Add abstract QVariantBase class to extend QVariant outside of the Core library
    • Remove QVariant::streamDebug() method
  • Major redesign of Gui animation, leverage the new QVariant system
  • Redesign and simplify several CsScript classes based on the new QVariant system
  • Minor improvements to the UI in the KitchenSink demo program
  • Minor changes in KitchenSink to work with the pending version of CopperSpice

June 2020

  • Remove Mac OS X 10.13 from CI since the support for C++17 is too limited
  • Minimum required version for OS X is now XCode 11.3.1
  • Rework CsScript classes, improve implementation
  • Minor changes in CsWebKit to leverage the new QVariant API
  • Update Mac OS X platform plugin related to variant changes
  • Replace internal QDataBuffer class with QVector
  • Continued changes for the new QVariant system
  • Switch to using C++17 type traits
  • Change code in several places to use a structured binding
  • Merge QVariant branch with the main branch, resolve conflicts
  • Update the QVariant API documentation
  • Rewrite descriptions and examples for all of the container classes
  • Standardize syntax
  • Improve documentation for flags

July 2020

  • Extensive testing for new QVariant implementation
  • Add additional conversions in canConvert() in QVariant
  • Remove erroneous conversions in canConvert() in QVariant
  • Coordinate convert() method with canConvert() in QVariant
  • Add support for PostgreSQL 12
  • Add move append() to QList
  • Incorporate user reported modifications and improvements
  • Fix QCompleter destroy model use after free error
  • Expand Q_DISABLE_COPY() macro
  • Rename the Windows platform plugin files for readability

August 2020

  • Rename the XCB platform plugin files for readability
  • Add build files to create the OpenGL integration plugin for XCB
  • Update Overview documentation to include the xcb-glx package requirements
  • Redesign execution of statements for MySQL plugin related to QVariant enhancements
  • Update SQLite to version 3.33
  • Change CMake files for iconv and cups running on FreeBSD
  • Correct detection for gstreamer ABI version
  • Update QStringView compare methods, add the exact data type for iterators

September 2020

  • Visual Studio 2019 Version 16.6 or newer is required for MSVC
  • Remove support for CopperSpice 1.5
  • CopperSpice 1.6.3 is now the stable release
  • CppCon 2020 presentation on Lambda Expressions
CopperSpice 1.7.0 release
KitchenSink 1.7.0 release
CsString 1.3.0 release
Diamond 1.3.5 release
DoxyPress 1.4.0 release
DoxyPressApp 1.4.0 release

October 2020

  • Add camera classes to CsMultimedia
  • Update DirectShow for camera support
  • Add new camera support plugins for Linux and OS X
  • Use platform version of libjpeg when available
  • QLockFile class added
  • Improvements to QFontDatabase, application start up time reduced

November 2020

  • Update required version for VS is now MSVC 2019 16.6
  • Add new methods to return an iterator based on the raw storage in QString
  • Mark several methods in QDate and QTime with [[nodiscard]]
  • Remove potential issue in floating point comparisons

December 2020

  • Add missing length() method in QLinkedList
  • Add insert() method which takes an std::pair in all map containers
  • Improved initializer list support for all map containers
  • Change all zeros to nullptr in CsCore
  • Add missing methods in QVariant
  • Add missing methods in QMultiMap
  • Improve QDataStream, remove usage of unions
  • Add new QFlags constructor to initialize with an empty value
  • Update documentation to include a sample script for building KitchenSink
  • Update CopperSpice API documentation


January 2021

  • Update copyright date for all projects
  • Change string constructors for better support of string literals
  • Replace int with size_type in string encoding
  • Add new method overloads for QAtomicInt and QAtomicPointer
  • Redesign debug and warning message processing
  • Enhance meta object system to return an empty object when searching for a meta class which does not exist
  • Correct ligature string processing
  • Correct binary format for QSettings on Windows
  • Integrate Catch2 software for unit testing
CopperSpice 1.7.1 release
KitchenSink 1.7.1 release
CsSignal 1.2.2 release
CsString 1.3.1 release
Diamond 1.3.6 release
DoxyPress 1.4.1 release
DoxyPressApp 1.4.1 release

February 2021

  • Modify QVector data() methods to return compliant value for an empty container
  • Fix iterator problem for wheel event when popup list is empty
  • Delete QString constructor for std::nullptr_t data type
  • Optimize QString::formatArgs by using std::forward
  • Correct container access for QFontFamily lookup
  • Modify platform specific code for OS X to process font names correctly
  • Reorganize files in the CsGui library, add two new folders
  • Adjust distribution for MSVC, add missing file
  • Fix QTimeZone constructor on OS X when an empty is passed
  • Refactor QTemporaryFile
  • Improve and add new catch unit tests
  • Add new Qt::EmptyFlag data type for initializing QFlags to an empty value
  • Change 0 to nullptr or Qt::EmptyFlag in multiple libraries and plugins

March 2021

  • Remove Fedora 28 and Fedora 29 from CI
  • Add Fedora 32 and Fedora 33 in CI
  • Add default QElapsedTimer() constructor
  • Fix QString::chop() when the number of chars is larger than the string
  • Continue changing 0 to nullptr or Qt::EmptyFlag in multiple libraries, removes warnings
  • Redesign lupdate tool which is used for generating .TS files for translations
  • Update the lrelease tool which is used to create a .QM file from a .TS translation file
  • Remove trUtf8() and UTF8 macros
  • Redesign QCoreApplication::translate() and the QTranslator class
  • Deprecate QT_TR_NOOP macros, add cs_mark_tr() function as a replacement
  • Deprecate QT_TRID_NOOP macros, add cs_mark_tr_id() function as a replacement
  • emBO++ 2021 Conference, Presentation on "Data Types"

April 2021

  • Update Arch in CI
  • New design for parsing marked translation text by the Linguist lupdate application
  • Create new TS files for all CopperSpice strings marked for translation
  • Change Linguist to use UTF-8 strings exclusively
  • Port Linguist Application to CopperSpice, full rewrite
  • Initialize variables in QTimeZone
  • Added new TS_OUTPUT_DIR variable in the CMake build files, allows overriding location of the QM files
  • Update KitchenSink demo program to use the new TS_OUTPUT_DIR variable
  • Rewrite CopperSpice documentation for Translations and the Linguist Application
  • Announced as C++OnSea 2021 Keynote Speakers

May 2021

  • Update to FreeBSD 12.2 in CI
  • Add missing include, required for gcc 11
  • Use the local copy of zlib when found, enhance CMake messages
  • Turn off pthread.h check on MSVC for PostgreSQL
  • Improve CMake messages for PostgreSQL and MySQL
  • For MSVC only, add CMake build option to enforce methods pointers have a unique address
  • Add new unit tests and update existing unit tests for CsCore
  • Correct UTF-16 handling for fonts in Windows plugin
  • Add template allocator to fromUtf8(), refactor methods which called fromUtf8()
  • Add fromUtf16 to CsString
  • Add cs_mp_cast<Args>() and cs_cmp_cast<Args>() to resolve overloads in connect()
  • Change mime url in OS X plugin
  • Continue changing 0 to nullptr in multiple libraries, removes a warning
  • Use method pointers instead of strings for connect() in several hundred places
  • Correct usage of erase() in Spdy protocol
  • Change char to QString in Statemachine
  • Use const iterators in multiple places in CsCore
  • Add indexOfSignal() and indexOfMethod which receive a method pointer

June 2021

  • Enhance QGraphicsScene to use QMetaMethod instead of indexes
  • Improve Accessibility in CsGui
  • Add overload for QObject::disconnect() when the slot method is a nullptr
  • Refactor QImage
  • Modify iterator operator==() for associative containers
  • Add comparison operators in QStringView for optimization
  • Add storage iterators for CsStringView
  • Refactor comparison operators in QString, update QString16::replace()
  • Improve unit tests for QChar and QString classes
  • Add new constructors to QString for support of the char8_t data type, only when compiling with C++20
  • C++OnSea 2021 Keynote Speakers ( June 30 - July 2 2021 )

July 2021

  • Add Mac OS X CI 10.16 to CI server
  • Remove Mac OS X 10.14
  • Fix operator==() in QJsonDocument
  • Add constructor in QString16 which takes a data type of char16_t
  • Improve variable names in CsCore and CsGui, synchronize with documentation
  • Official release of CsCrypto
CopperSpice 1.7.2 release
KitchenSink 1.7.2 release
CsSignal 1.2.3 release
CsString 1.3.2 release
CsCrypto 1.0.0 release
DoxyPress 1.4.2 release
DoxyPressApp 1.4.2 release

  • Improve variable names in CsCore, synchronize with documentation
  • Move CsCore locale files from core/tools to core/locale
  • Update HarfBuzz from 2.3.1 to version 2.8.3
  • Fix nullptr warnings in HarfBuzz source
  • Migrate HarfBuzz files from CsCore to CsGui
  • Refactor CsGui text interface to use the new version of HarfBuzz

August 2021

  • Remove Fedora 30 and Fedora 31 from CI Server
  • Add Fedora 34 to CI Server
  • Files in utilities/unicode used to generate Unicode tables
  • Delete utilities/unicode Autotools build files, add new CMake build files
  • Remove unused utilities/unicode files
  • Files in utilities/cldr used to generate locale tables
  • Add source code to generate enums and timezone tables using the Common Locale Data Repository (CLDR)
  • Update Country, Language, and Script enums in QLocale data
  • Add new unit tests for QLocale and QTimeZone
  • Update FreeType from 2.5.3 to version 2.11.0
  • Update Zlib from 1.2.8 to version 1.2.11
  • Add and improve variable names in multiple libraries to synchronize with documentation
  • Correct glyph shaping for split text blocks
  • Handle null QByteArray when reading translation files
  • Rename QFileDialog::Option enum to QFileDialog::FileDialogOption
  • Add deprecated using for QFileDialog::Option enum and flag

September 2021

  • Change QGraphicsItem variable from flags to itemFlags for readability
  • Change function style cast of Qt::WindowFlags() to constexpr Qt::EmptyFlag value
  • Add implementation for setLabelText() in QFileDialog
  • Remove obsolete data members in QWheelEvent
  • Remove functions used for obsolete test system
  • Remove dead code
  • Update variable names in methods to synchronize with API documentation
  • Accepted as speakers for CppCon 2021 to present two BackToBasic talks

October 2021

  • Add new QRecursiveMutex class
  • Add new QRecursiveMutexLocker class
  • Correct all calls to use QMutex instead of QBasicMutex
  • Refactor all mutex variables which were initialized with QMutex::Recursive
  • Add const qualification to mutex() in QRecursiveMutexLocker
  • Redesign QMutex using composition with classes from the STL
  • Redesign QMutexLocker using composition with classes from the STL
  • Remove include for qmutex_p.h and test for isRecursive()
  • Redesign QMutexPool class using the new QRecursiveMutex class
  • Remove QMutexData and obsolete methods for platform specific code
  • Add intersects() to QPolygon and QPolygonF
  • Replace macro calls to Q_GLOBAL_STATIC_WITH_ARGS() with a static function
  • Replace macro calls to Q_DECLARE_FLAGS() with a using statement
  • Remove Q_DECLARE_FLAGS macro
  • Update multiple unit tests
  • CppCon 2021 presentation on Back To Basics: Overload Resolution
  • CppCon 2021 presentation on Back To Basics: Undefined Behavior

November 2021

  • Rename version file in 3rdParty JavascriptCore to support building on new versions of Mac OS X
  • Add include file to prevent a warning on Linux
  • Change "falls through" comment to use the [[fallthrough]] attribute
  • Modify variable name for Qt::WindowFlags data member
  • Merge two constructors in QTabletEvent
  • Add [[nodiscard]] attribute to QTransform
  • Update to CMake 3.16 as the minimum required version
  • Improve variable names in CsGui methods to synchronize with API documentation

December 2021

  • Remove unused private headers
  • Merge overloads in QTextLayout
  • Clean up comments
  • Refactor code which removes buttons at run time in a QDialogButtonBox
  • Support new library names for newer versions of OpenSSL
  • Various changes to support ARM processor for 32 bit and 64 bit
  • Add 85 new unit tests for QVariant


January 2022

  • Update copyright for all projects
  • Changes in Webkit to support ARM processors
  • CopperSpice builds on M1 systems
  • Modify a few units tests for Mac OS X
CopperSpice 1.7.3 release
KitchenSink 1.7.3 release
Diamond 1.3.7 release
DoxyPress 1.4.2 release
DoxyPressApp 1.4.2 release

  • Replace Q_DISABLE_COPY() macro with actual declaration in CsXmlPatterns
  • Resolve CMake issue in find_library() to locate dll files
  • Add defines for newer versions of Mac OS X
  • Add additional methods in QStringView
  • Remove obsolete functionality in QErrorMessage
  • Improve about CS message box
  • Correct int data type when saving and restoring to a data stream
  • Publish first installment of the new CopperSpice Journal
    • Concise instructions about how to build CopperSpice from source on multiple platforms
    • Installing pre-build binary files of the CopperSpice libraries on all supported platforms
    • Simple GUI example which shows exactly how to build and link a program using CopperSpice
    • Several blog entries about Signals and Slots, ToolChains, and CopperSpice
    • Short introductory GUI examples with full source code and text to explain the code

February 2022

  • Add cs_mark_string_tr() to support marking a QString for translation ( C string support existed )
  • Modify Gadget macro to support reflection
  • Refactor QItemSelection to improve using the SelectionFlag enum
  • Redesign Qt::staticMetaObject for CS_Gadget
  • Fix getSignature() for pure virtual slots
  • Redesign QFlags to support combining enums values for all integer types
  • Remove redundant enum Qt::Modifier, replace with Qt::KeyboardModifier
  • Add missing CS_ENUM() and CS_FLAG() macro calls
  • Resolve ambiguous overload in QDialogButtonBox constructor
  • Add isEnum() and enumToInteger() in QVariant to support run time access to enum values
  • Improve property system to accurately determine the value for designable, scriptable, stored, and user
  • Improve the meta object system for properties, enums, and flags
  • Add new data members for QMetaProperty, change constructor
  • Register enums and flags for CsCore
  • Add new catch unit tests for properties and enums

March 2022

  • Register enums and flags in CsGui, required for CS Designer
  • Correct enum registration in CsNetwork
  • Add methods to set and retrieve the internal QWidgetItemFactory object
  • Correct default values for QMetaProperty::isUser()
  • Add POWER architecture detection
  • Support for OpenSSL 3 added to CsNetwork
  • Standardize variable names for QDataStream in CsCore
  • Fix QMultiMap insert() when a hint iterator is passed
  • Relax rules to check if the geometry is set correctly on Windows
  • Require CsXml when building CopperSpice

April 2022

  • Remove Fedora 32 from CI Server
  • Add Debian 11 and Fedora 35 to CI Server
  • Update zlib from 1.2.11 to version 1.2.12
  • Resolve issue when calling setChecked() on a radio button with no parent
  • Add Catch2 source to distribution, remove catch find_package() function
  • Standardize variable names for QDataStream in CsGui
  • Standardize variable names for QDataStream in CsOpenGL
  • Move swap() functions out of the std namespace
  • Add move constructor and move assignment for QHostInfo
  • Expand Q_GLOBAL_STATIC macro in CsNetwork
  • Improve variable names in CsMultimedia methods to synchronize with API documentation
  • Change handling of String data in exec() to use SQLITE_TRANSIENT
  • Add the CsXml library as part of the minimum build
  • Initial release of CS Designer Application
CopperSpice 1.7.4 release
KitchenSink 1.7.4 release
CS Designer 1.0.0 release

May 2022

  • Update build files to support cross-compiling for Raspberry PI
  • Add new CS Overview documentation instructions for building CopperSpice for Raspberry PI
  • Add Raspberry PI to CI Server
  • Update catch unit tests for type traits
  • Update Catch2 to support newer operating systems
  • Remove unnecessary template parameter in QFutureInterface to support GCC 11
  • Add new method in QTemporaryDir
  • Modify build system to create SVG image format plugin
  • CopperSpice Journal expanded to 24 unique GUI examples with full explanations and multiple technical tutorials
Diamond 1.3.8 release

June 2022

  • Significant improvements to the CS API documentation
  • Add links to the CopperSpice Journal in the CS Overview documentation
  • Correct QStringView chop() method
  • Add new catch unit tests for QString and QStringView
  • Development on a new graphics library
  • Comprehensive modifications to DoxyPress application

July 2022

  • Migrate Centos 8 to Rocky Linux 8.6 in CI
  • Improve markdown and parsing support in DoxyPress documentation generation
  • New command added in DoxyPress to ensure inherited methods are documented
  • Continue development on a new graphics library to support a Vulkan surface
  • Add API documentation for the new CsVulkan library
  • Disable searching for PulseAudio on Mac OS X

August 2022

  • Remove Ubuntu 16.04 from CI Server
  • Add Ubuntu 22.04 to CI Server
  • Upgrade FreeBSD 12.2 to 13.1 on CI server
  • Prevent a warning using CMake 3.17 or newer when searching for the XCB package
  • Improve implementation of QUuid to resolve a GCC compiler warning
  • Correct compiler warning in QTranslator
  • Fixes memset() warning reported in GCC 11
  • Update QString unit tests
  • Expand range of supported CMake versions
  • Extensive work on new CsVulkan library
  • CopperSpice Journal expanded to 31 unique GUI examples with full explanations and multiple technical tutorials

September 2022

  • Add Mac OS X CI 11.5 to CI server
  • Remove Mac OS X 10.16
  • Merge CsVulkan development branch
  • Change the way PkgConfig is found in CMake build files
  • Refactor QStandardPaths for Windows, minor changes for Unix files
  • Update catch unit test for QSettings, add new tests
  • Release new CsVulkan library
  • Remove support for CopperSpice 1.6
  • CopperSpice 1.7.4 is now the stable release
CopperSpice 1.8.0 release
KitchenSink 1.8.0 release
CsLibGuarded 1.3.0 release
CS Designer 1.0.1 release
Diamond 1.4.0 release
DoxyPress 1.5.0 release
DoxyPressApp 1.5.0 release
  • Register enum for dynamic usage
  • Minor changes to CsCore to improve user application compile times
  • Add missing GUI prefix to macros in one file

October 2022

  • Add over 300 new catch tests for CsNetwork
  • ODBC SQL plugin
    • Remove QLatin1String and QLatin1Char
    • Change 0 to nullptr
    • Untangle code in UNICODE define
    • Reformat source code
    • Change isNull() to isValid() for QVariant
    • Rename several static methods

November 2022

  • Update QStringParser class to support section() with a QRegularExpression
  • Add new QStringParser section() unit tests
  • Modify CsNetwork build file to export SSL status
  • Remove unused private header in CsNetwork
  • Multiple changes for SQL support
  • Enable building ODBC SQL plugin
  • Modify build files to use system SQLite3 when found
  • Add instructions for building OpenSSL on Windows to the CS Overview documentation
  • Modify the CsLibGuarded library CMake build files to support exporting targets
  • Modify the CsSignal library CMake build files to support exporting targets
  • Modify the CsString library CMake build files to support exporting targets

December 2022

  • Move CsCore embedded CsLibGuarded source files to src/annex/cs_libguarded
  • Move CsCore embedded CsSignal source files to src/annex/cs_signal
  • Move CsCore embedded CsString source files to src/annex/cs_string
  • Enhance source and test CMake files to use target_include_directories()
  • Add calls to find_package() for CsLibGuarded, CsSignal, and CsString in the top level CS CMake file
  • Redesign CMake files to find a system version of CsLibGuarded, CsSignal, and CsString when building CsCore
    • If a system version of the given library is found and the CMake variable CS_INSTALL_MODE is Package, link with the system version and do not copy the headers to the install folder
    • If a system version of the given library is found and the CMake variable CS_INSTALL_MODE is Deploy, link with the system version and copy the headers to the install folder
    • If no system path was specified or the system library was not found, the files located in src/annex will be used
  • Add functionality when calling find_package(CopperSpice) from a downstream project
    • Add support to pass a version number in the format find_package(CopperSpice x.y.z)
    • When building on MSVC or when the downstream CMake variable CS_CHECK_BUILD_TYPE is true, the build type of the downstream project must match the build type of CS, otherwise the find package fails
  • Correct a template issue when building CsVulkan on MSVC
  • Register additional enums and flags, required for CS Designer


January 2023

  • Support unsigned enum values in QMetaEnum
  • Redesign numeric conversions in QVariant
  • Update copyright for all projects
CopperSpice 1.8.1 release
KitchenSink 1.8.1 release
CsCrypto 1.0.1 release
CsLibGuarded 1.4.0 release
CsPaint 1.1.1 release
CsSignal 1.3.0 release
CsString 1.4.0 release
CS Designer 1.0.2 release
Diamond 1.4.1 release
DoxyPress 1.5.1 release
DoxyPressApp 1.5.1 release

February 2023

  • Correct enum data type
  • Redesign QSettings to use std::unique_ptr
  • Remove internal pointer classes which are no longer used
  • Update winver for Windows
  • Remove obsolete Windows platform code
  • Add new classes for CsUniquePointer and CsUniqueArrayPointer based on the C++ Standard Library for std::unique_ptr
  • Reimplement QScopedPointer and QScopedArrayPointer using CsUniquePointer and CsUniqueArrayPointer
  • Add QUniquePointer and QUniqueArrayPointer as a typedef for QScopedPointer and QScopedArrayPointer respectively
  • Change class name QScopedPointerPodDeleter to QMallocDeleter, mark QScopedPointerPodDeleter as deprecated
  • Add new catch tests for QScopedPointer and QScopedArrayPointer
  • Update documentation for pointer classes

March 2023

  • Remove Fedora 33 and Fedora 34 from CI Server
  • Add Fedora 36 and Fedora 37 to CI Server
  • Windows 64 MinGW CI migrated from 7.3 to 10.4
  • Release a new git repository for mingw-cs-10.4 for 64-bit builds of C++
  • Support building on newer versions of MinGW ( QFileSystemEngine )
  • Add missing inline in QString8 to correct a DLL export warning
  • Add char8_t support in QString16
  • Remove obsolete header files
  • Multiple corrections to resolve enhanced compiler warnings
  • Rework regex code to remove deprecated std::iterator
  • Correct pkgconfig ld -l flag
  • Improve compiler warning messages

April 2023

  • Remove Debian 9 from CI Server
  • Update CI for Windows 64 MinGW, build with MinGW-w64 10.4
  • Improve implementation of qsrand() and qrand() to remove a memory leak
  • Correct CLDR processing for group separator and decimal symbol based on locale
  • Add new catch test for QLocale, QVariant, and QByteArray
  • Update CsSignal and CsLibGuarded libraries, modify the mutex which guards connections

May 2023

  • Modify catch tests
  • Fix compiler warnings
  • Enhance CsUniquePointer and CsUniqueArrayPointer
  • Update QUniquePointer
  • Code clean up
CopperSpice 1.8.2 release
KitchenSink 1.8.2 release
CsLibGuarded 1.4.1 release
CsSignal 1.3.1 release
CS Designer 1.0.3 release
  • Modify csPrintable #define to eliminate a copy
  • Switch to using csPrintable() in code base
  • Add missing include in regex code

June 2023

  • Clean up warnings in JavaScriptCore and WebKit
  • Remove Q_UNUSED macro, use C++ syntax
  • Expand macros for POSIX system calls
  • Initial release of the new CsPointer library
  • Speakers at "C++ on Sea" conference in Folkestone, England

July 2023

  • Expand Q_GLOBAL_STATIC macro, reduces atomic calls
  • Resolve multiple warnings
  • Improve catch tests
  • Add additional catch tests
  • Integrate CsPointer library with CopperSpice (in progress)

August 2023

  • Upgrade FreeBSD 13.1 to 13.2 on CI server
  • Improve FindMySQL build files to locate MySQL and MariaDB
  • Update internal data types for MySQL plugin
  • Update metatype names for SQL
  • Change GUI style sheets to use iterators, improves performance
  • Add CsGui catch tests to validate GUI style sheet css stylesheet changes

September 2023

  • Expand macros, remove unnecessary statements
  • Expand try / catch macros, use standard syntax
  • Remove obsolete macros
  • Remove unused global functions
  • Expand macro using the alignof operator
  • Remove unused namespaces
  • Expand and remove obsolete internal macro
  • Add defines for newer versions of Windows and OS X
  • Change static_cast to a dynamic_cast for type safety
  • Change qobject_cast to dynamic_cast, test object for nullptr, use range based for()
  • Standardize and improve warning messages in CsGui
  • Improve variable names in Signal/Slot declarations and methods
  • Change Qt::UTC to QTimeZone::utc() and setTimeSpec() to setTimeZone()
  • Modify various files to use a QTimeZone instead of a timeSpec enum
  • Change data types and variable names in QTimeZone::OffsetData structure
  • Replace QTimeZone forward declaration with an include in qdatetime.h
  • Rename platform specific timezone files
  • Move QTimeZone private methods into non private source file
  • Rename QDateTimeParser defines
  • Relocate QDate and QTimeZone defines
  • Change nullJd() method to INVALID_JD static constexpr variable
  • Add default timeZone parameter to currentDateTime(), improve implementation
  • Redesign epochMSecsToLocalTime() and localMSecsToEpochMSecs()
  • Add missing fallthrough statement in multiple places
  • Use {} initialization instead of memset
  • Change massageAdjustedDateTime() to use a QTimeZone
  • Simplify data stream operators for QDateTime
  • Redesign QDateTimePrivate inheritance
  • Clean up constructors
  • Modify several QDateTime methods to use a default QTimeZone
  • Remove QDateTimePrivate::toMSecsSinceEpoch(), implement QDateTime::toMSecsSinceEpoch()
  • Refactor additional QDateTime methods
  • Remove obsolete methods which used time spec
  • Simplify QDateTimePrivate methods

October 2023

  • Remove Fedora 35 from CI Server
  • Add Fedora 38 to CI Server
  • Remove the ability to move a scoped pointer, update catch tests
  • Undo slot change in QAbstractSocket
  • Prevent calling setModel() when an item is being destroyed
  • Standardize and improve warning messages in CsCore and CsGui
  • Resort header files
  • Update from Unicode 11 to Unicode 15.1
  • Update from CLDR 39 to CLDR 43 ( timezone support )
  • Update source code to generate Unicode 15 tables
  • Modify python source to support CLDR 43
  • Add enum values for new supported countries, languages, and scripts
  • Add new generated locale and time zone data in CsCore
  • Update enums in CsGui for Harfbuzz
  • Update Harfbuzz to version 8.2.2
  • Add support for Unicode 15 in the XCB plugin
  • Update API documentation to include new Unicode values
  • Merge Unicode git branch
  • Improve QDateTime operator methods
  • Remove several unused #defines related to QDate
  • Remove obsolete methods in QTimeZone
  • Revise methods QDateTime::offsetFromUtc(), QDateTime::setMSecsSinceEpoch(), and QDateTime::setTimeZone()

November 2023

  • Add the following new methods
    • QDate::endOfDay()
    • QDate::startOfDay()
    • QDateTime::addDuration()
    • QDateTime::currentSecsSinceEpoch()
    • QDateTime::timeRepresentation()
    • QDateTime::setSecsSinceEpoch()
    • QDateTime::toSecsSinceEpoch()
    • QDateTime::toStdSysMilliseconds()
    • QDateTime::toStdSysSeconds()
  • Added new methods which require std::chrono, c++20 must be enabled
    • QDate::addDuration()
    • QDate::fromStdSysDays()
    • QDate::toStdSysDays()
    • QDateTime::fromStdLocalTime()
  • Add QTimeZone move constructor
  • Refactor OS X specific QTimeZone methods
  • Add new catch header to test if std::chrono is available and supports C++20
  • Add 250 new catch tests for QDate, QDateTime, QTime, and QTimeZone
  • Rewrite API documentation for QDate, QDateTime, QTime, and QTimeZone classes
  • Merge QDate git branch

December 2023

  • Update Rocky from 8.6 to 9.3 on CI Server
  • Add Rocky 9.3 to CI Server
  • Add Debian 12 to CI Server
  • Update MSVC from 16.11.23 to 16.11.32 on CI Server