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
  • Qt only provides support for X11 and Windows.
  • For Qt/X11, TrollTech releases under the QPL Open Source license, for Open Source applications
  • Qt running on Windows 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
  • Qt Windows and Qt 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 (a codename for Maemo 6) is announced at a conference, it is a port of Maemo to Qt

June 17, 2008

  • Nokia acquired 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 is now licensed under LGPL, GPL, and commercial
  • Nokia introduces Qt Creator, 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

May 2010

  • Qt Developer Network goes live

September 2010

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

Fourth Quarter 2010

  • Symbian is selling very well, 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 and 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 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

  • web site goes live, 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 12, 2012

  • Nokia sells Vertu luxury phone unit to EQT Partners. Vertu is known for selling jewel encrusted phones which sell for thousands of dollars

June 14, 2012

  • Meltemi project is canceled and Nokia announces that around 10,000 employees will be let go from the company
  • Nokia shares drop significantly

June 20, 2012

  • 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 leave Nokia
  • The team formed a start up company called Jolla where there plan is 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
  • Australia office was working on various sections of Qt 5, mostly related to QtDeclarative and Qml
  • Qt 5 Beta is expected to ship by the end of the month when the Australian is office is closed
  • Rumors emerge that Nokia will sell or relinquish the Qt assets

August 9, 2012

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

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
  • 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 using Qt

September 18, 2012

  • Digia officially takes over management of the entire Qt project

October 2012

  • CopperSpice - compiled rudimentary portion 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 19, 2012

  • Qt 5.0.0 released by Digia

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 project commences
  • 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 macros
  • 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

  • CopperSpice team on a road trip adventure in Oregon

September 2, 2013

  • Nokia sold to Microsoft

September 23, 2013

  • Blackberry confirms 40% layoff
  • Investment company buys Blackberry to take the company private

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

  • CopperSpice team on 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 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 unit tests
  • 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

  • CopperSpice 1.0.0 source code released
  • PepperMill 1.0.0 source code released
  • KitchenSink 1.0 source code released
  • Diamond Editor 1.0 source code released
  • CopperSpice 1.0.0 binaries for X11, Windows released
  • PepperMill 1.0.0 binaries for X11, Windows, and OS X released
  • KitchenSink 1.0 binaries for X11, Windows, and OS X released
  • Diamond Editor 1.0 binaries for X11, Windows, and OS X released

June 2014

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

July 2014

  • Incorporated 4.8.x changes (through 07/10/2014) into CopperSpice 1.1.x
  • Update various font libraries, update SQLite into CopperSpice 1.1.x
  • Several existing Qt issues resolved
  • CopperSpice web site fully operational
  • CopperSpice 1.0.1 released
  • Diamond Editor 1.1 released

Aug 2014 - Sept 2014

  • Summer vacation

October 2014

  • Incorporated 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

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

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 released

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 released

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

December 2015

  • Added Fedora 23 to CI server
  • 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

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

April 2016

  • CsSignal library released
  • Refactor QObject to use CsSignal
  • CopperSpice 1.3.0 released
  • CsSignal 1.0.0 released
  • LibGuarded 1.0.0 released

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

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

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


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 released

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

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
  • CsSignal 1.1.0 release
  • CsString 1.0.0 release
  • libGuarded 1.1.0 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
  • CopperSpice 1.4.2 release
  • Recorded CppCast interview
  • Started 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

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
  • CopperSpice 1.4.3 release
  • CopperSpice 1.4.4 release
  • KitchenSink 1.3.0 release
  • Presented talks on CsString and libGuarded at CppCon in Bellevue, Washington

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

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

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
  • DoxyPressApp fully migrated to CopperSpice 1.5.0
  • DoxyPress fully migrated to CopperSpice 1.5.0
  • CopperSpice 1.5.0 release
  • KitchenSink 1.4.0 release
  • DoxyPressApp 1.3.0 release
  • DoxyPress 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

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
  • DoxyPressApp 1.3.2 release
  • DoxyPress 1.3.2 release
  • Diamond 1.3.0 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
  • Stable release
    • CopperSpice 1.5.2 release
    • KitchenSink 1.4.2 release
    • DoxyPressApp 1.3.3 release
    • DoxyPress 1.3.3 release
    • Diamond 1.3.1 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
  • Upload documentation for pending CopperSpice 1.6 release
  • Retain documentation on website for CopperSpice 1.5 stable
  • Add a cs-1.5 tag for the KitchenSink demo, marks the last commit using CopperSpice 1.5 stable
  • Commit KitchenSink source using CopperSpice 1.6
  • Updated 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
  • Release prebuilt binaries for CopperSpice 1.5.3 stable
  • Release prebuilt binaries for KitchenSink 1.4.4 stable
  • 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
  • Release prebuilt binaries for CopperSpice 1.6.0
  • Release prebuilt binaries for KitchenSink 1.6.0
  • Multiple enhancements to improve DoxyPress outputs
  • Update DoxyPressApp to use CS 1.6 for High DPI support
  • Release prebuilt binaries for DoxyPress 1.3.5
  • Release prebuilt binaries for DoxyPressApp 1.3.5

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
  • Release prebuilt binaries for CopperSpice 1.6.1
  • Release prebuilt binaries for KitchenSink 1.6.1
  • Release prebuilt binaries for Diamond 1.3.2
  • Release prebuilt binaries for DoxyPress 1.3.6
  • Release prebuilt binaries for DoxyPressApp 1.3.6
  • 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

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
  • Upgrade Mac OS X 10.12 to 10.14 on CI server
  • 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
  • Drop Fedora 27 in 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
  • Release tags were added to KitchenSink
  • Release tags were added to Diamond
  • Release prebuilt binaries for CopperSpice 1.6.2
  • Release prebuilt binaries for KitchenSink 1.6.2
  • Release prebuilt binaries for Diamond 1.3.3
  • Release prebuilt binaries for DoxyPress 1.3.7
  • Release prebuilt binaries for DoxyPressApp 1.3.7

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
  • Release prebuilt binaries for KitchenSink 1.6.3

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
  • Drop Ubuntu 14.04 in 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
  • Release prebuilt binaries for CopperSpice 1.6.3
  • Release prebuilt binaries for KitchenSink 1.6.4
  • Release prebuilt binaries for Diamond 1.3.4
  • Release prebuilt binaries for DoxyPress 1.3.8
  • Release prebuilt binaries for DoxyPressApp 1.3.8

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
  • Release prebuilt binaries for CopperSpice 1.7.0
  • Release prebuilt binaries for KitchenSink 1.7.0
  • Release prebuilt binaries for Diamond 1.3.5
  • Release prebuilt binaries for DoxyPress 1.4.0
  • Release prebuilt binaries for DoxyPressApp 1.4.0
  • CppCon 2020 Conference, Presentation on "Lambda Expressions"

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
  • Release prebuilt binaries for CopperSpice 1.7.1
  • Release prebuilt binaries for KitchenSink 1.7.1
  • Release prebuilt binaries for Diamond 1.3.6
  • Release prebuilt binaries for DoxyPress 1.4.1
  • Release prebuilt binaries for DoxyPressApp 1.4.1

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 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

  • Drop Fedora 28, 29 in CI
  • Add Fedora 32, 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 ( June 30 - July 2 2021 )

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

  • 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
  • Release prebuilt binaries for CopperSpice 1.7.2
  • Release prebuilt binaries for KitchenSink 1.7.2
  • Release new version of CsSignal 1.2.3
  • Release new version of CsString 1.3.2
  • Initial release of CsCrypto 1.0.0

  • 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
  • Add implementation for setLabelText() in QFileDialog
  • Accepted as speakers for CppCon 2021 presenting two BackToBasic talks