CopperSpice Overview
Timeline

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

1999

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

2000

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

2001

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

2003

June 2003

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

2005

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

2008

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

2009

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

2010

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

2011

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

"...now 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

  • Qt-Project.org 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

2012

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

2013

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

2014

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

2015

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

2016

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

2017

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

2018

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

2019

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
  • 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
  • Pending MeetingC++ 2019 Conference in Berlin, Germany
  • Presenting an updated talk on "High performance graphics and rendering text on the GPU"
  • Pending code::dive 2019 in Wrocław, Poland
  • Presenting "Undefined Behavior is Not an Error"