CopperSpice Overview  1.5.1

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:

  • Elop leaves Microsoft

September 21 2010:

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

  • Elop releases the now famous "Burning Platform" memo

February 11 2011:

  • Nokia announces they will be adopting Windows Phone 7 for smartphones
  • Nokia announces migration from Symbian to the Windows Phone platform
  • Nokia stocks drops 14% after this announcement
  • Nokia 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
  • The letter promises that the Symbian platform has not been abandoned

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

  • The letter did not state how long Symbian will be supported
  • The letter states that WP is the migration path for Symbian developers

"Qt, the development platform for Symbian and future MeeGo technology remains critically important and Nokia is committed to investment in Qt as the best toolset for these platforms ..."

  • The letter implies there will be no more Symbian handsets after 2012

March 11, 2011:

  • Nokia announces they paid Elop $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 was forked from Qt 4.8.2

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 WP 7 phones cannot 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. 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
  • 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
  • The 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 this office is closed
  • There are rumors Nokia will sell the Qt assets

August 9 2012:

  • Digia announces they have agreed to acquire Qt from Nokia
  • Around 125 Nokia developers have been asked to join Digia

August 17 2012:

  • CopperSpice successfully built on Mac OS X

August 21 2012:

  • CopperSpice successfully built on a VM running Windows Vista 64
    This CS build is for 32-bit Windows and was tested on Vista 64 and XP 32, SP3

August 24 2012:

  • CopperSpice successfully built on a VM running Fedora 17
  • GStreamer plugin for Debian and Fedora successfully compiled, Phonon works on both X11 platforms
  • KitchenSink application completed. KS combines existing Qt examples with a variety of new samples

September 16 2012:

  • QJson class added to CopperSpice

September 18 2012:

  • Digia officially takes over Qt

October 16 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:

  • Diamond Editor compiles using Autotools, Qmake is not required
  • Diamond Editor compiled using existing 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:

  • Test Samples project created combining seven Qt samples which demonstrate graphics functionality
  • CopperSpice - implemented enum registration without moc
  • CopperSpice - implemented properties without moc
  • CopperSpice - enhanced properties to allow any data type


January 2013:

  • PepperMill - initial processing of header files completed
  • 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 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 documentation created in Doxygen

June 2013:

  • PepperMill - Qt macros can be converted to CopperSpice macros
  • QMetaClassInfo, QMetaEnum, QMetaMethod, and QMetaProperty have been fully implemented in CS
  • CopperSpice supports Signals and Slots without moc

July 2013:

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

July 3 2013:

  • Qt 5.1.0 released by Digia

August 2013:

  • CopperSpice team on a summer camping trip and and beer 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

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 current 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
  • Trolltech and Nokia references removed from CopperSpice
  • 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
  • Updated various font libraries, updated 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:

  • Much needed 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 was not sufficient for accurate C++11 API documentation
  • Fork of Doxygen 1.8.8
  • Renamed Doxygen to DoxyPress
  • Renamed DoxyWizard to DoxyPressApp
  • 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

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:

  • Updated 3rd party libPng to version 1.6.17
  • Updated 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, added 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
  • Co-founders of CopperSpice and DoxyPress presented two sessions. One talk was about the CopperSpice library and the other presentation announced DoxyPress
  • Co-founders of CopperSpice presented a lightning talk about template magic

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

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
  • Integrate new CsSignal library into CopperSpice

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
  • Updated 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
  • 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
  • Add Fedora 25 CI server
  • Accepted as speakers for CppNow 2017

March 2017:

  • Integrate libGuarded with the signal classes
  • Refactor QTabBar to remove raw pointers, QList of tabs now stores shared pointers
  • Development on CsString library, a new open source Unicode aware library

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 sha2, Keccak and sha3
  • 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 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 not required with UTF-8 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
  • Harfbuzz library is used for text shaping, newer version has built in UTF-8 support
  • Migrate to Harfbuzz 2.1.1
  • 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
  • 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
  • Improved QVector::data()
  • Optimized several QString methods
  • Resolved a reported issue with QDocWidget
  • Remove workarounds for older versions of MSVC
  • Add policy to prevent warnings when using a versons up to CMake 3.13
  • Continued major work on CsCore and CsGui to support the new cross platform paint engine


January 2019:

  • Added new classes to CsCore: QMarginsF, QTimeZone, QVersionNumber
  • Add new methods in CsCore for: QMargins, QDebug, QDateTime, QFileInfo, QObject
  • Merge overloaded methods where default arguments can be utilized
  • Change multiple enums to constexpr
  • Removed obsolete inputContext classes
  • Remove unused parameters in multiple methods
  • Merged multiple versions of style classes