CopperSpice Overview  1.5.2

The following information was gathered from Wikipedia, Safari Books Wiki, Qt Wiki, Nokia press releases, general industry press releases, and CopperSpice development.


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 functions
  • 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 from Qt5, 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++14 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 OS X CI server to version 10.10
  • Merge several pull requests from other developers
  • New development of the CsSignal library begins
  • Library designed to provide 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

  • Finish CS Signal integration and refactor QObject
  • 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 and 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" for Gui
  • 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 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 in alpha
  • 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

  • Presented a talk on Multithreading and libGuarded for ACCU / C++ meeting
  • Update copyright
  • Update API documentation adding new classes and methods
  • Upgrade OS X 10.10 to 10.13 on CI server
  • Modify QFlags class to accept a strongly typed enum class
  • Add section methods to 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 depreciated
  • 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 datasteam 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 more 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
  • Add FreeBSD 11.2 to 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 greater 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 Harbuzz
  • Remove 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 versions 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
  • Pending branch release CopperSpice 1.6.x
    • New platform support system
    • Redesigned plugin support
    • Extensive changes to CsGui
    • Harfbuzz 2.1.1 UTF-8 support
    • Support for HighDPI
    • OpenGL support improved
    • Added support for xcb on x11
    • New classes for printer support, new styles, locales, dates, time zones, etc
    • 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 Singal/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 VM for all Unix platforms
  • Remove Fedora 24, Fedora 25, and Fedora 26 from CI for future releases
  • Add Fedora 29 to CI for next release
  • Add support for RHEL8 to CI for next release

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 new define CS_SHOW_DEBUG to limit qDebug messages
  • 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 using UTF-8 text shaping
  • Complete XCB platform specific GUI support
  • Complete Windows platform specific GUI support
  • HighDPI support is working on Windows