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 for X11 and Windows
- For X11, TrollTech is released under the QPL Open Source license
- On Windows Qt is only available under a proprietary license
- The Qt Professional Edition is available for development of proprietary/commercial software on both X11 and Windows
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
- Windows and 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 (codename for Maemo 6) is announced
June 17, 2008
- Nokia acquired by 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 now licensed under LGPL, GPL, and commercial
- Nokia introduces Qt Creator which is a new lightweight cross platform IDE
- Qt Creator will be available under the terms of the LGPL v 2.1 license
July 2009
- Nokia gives details of Harmattan (Maemo 6), which is a fork of Maemo using Qt instead of GTK
August 12, 2009
- In a Microsoft press release, Nokia and Microsoft announce a partnership. Their goal is to bring Microsoft Office Mobile and related software to Nokia smartphones
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
September 2010
- Mr. Elop leaves Microsoft
- Mr. Elop is hired at Nokia as CEO
Fourth Quarter 2010
- Symbian is selling very well and Nokia profits are rising
2011
January 2011
February 6, 2011
- Mr. Elop releases the now famous "Burning Platform" memo disparaging the future of Qt
February 11, 2011
- Nokia announces they will be adopting Windows Phone 7 for smartphones
- Forced migration from Symbian to the Windows Phone platform is announced
- Nokia stocks drop 14% after this announcement
- Press releases later announces Qt will not be supported on WP7
- Silverlight and XNA frameworks are the only options for WP7 developers
March 2011
- Digia acquires Qt licensing from Nokia, Digia is the exclusive license provider for Qt
March 28, 2011
- Nokia publishes an open letter to the Symbian development community
"...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 are paying Mr. Elop a $6M signing bonus
June 2011
- Nokia outsources Symbian to Accenture
- Accenture will provide Symbian development and support to Nokia through 2016
- Nokia announces its first MeeGo/Harmattan smartphone device
September 2011
- Nokia ships the Nokia N9, MeeGo smartphone device
- Intel announces that in collaboration with Samsung, MeeGo will be replaced with Tizen during 2012
- MeeGo project was canceled
October 2011
- Digia announces development of Qt will be governed as an open source project
- Mer project announced, based upon the work from the MeeGo project. They plan to share efforts with the Tizen project
- The Register (on line newspaper) reports that Nokia is developing Meltemi, a low end operating system, based on Linux
- Nokia never made an official announcement about Meltemi
November 2011
- Intel and Nokia were working on Wayland, then they parted ways
- Intel hired most of the Helsinki Engineers
- Wayland is no longer part of MeeGo / Tizen. Tizen is a proprietary SDK
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 2012
- Nokia sells Vertu luxury phone unit to EQT Partners. Vertu is known for selling jewel encrusted phones which sell for thousands of dollars
- Meltemi project is canceled and Nokia announces that around 10,000 employees will be let go from the company
- Nokia shares drop significantly
- Microsoft announces that Windows Phone 7 phones can not be upgraded to WP 8
"Microsoft has confirmed that current Windows Phone handsets won't get an upgrade to Windows Phone 8, but they will
get a halfway measure: a branching upgrade called Windows Phone 7.8"
July 5, 2012
- Head manager and the entire MeeGo team leaves Nokia
- The team formed a start up company called Jolla to develop new MeeGo devices by the end of 2012
July 16, 2012
- CopperSpice successfully built on Debian
- CopperSpice successfully built on Windows XP 32-bit
- CopperSpice libraries were built using Autotools, GNU Make, and GCC 4.7
August 1, 2012
- Nokia employees in Brisbane Australia announce their office will be closed by the end of the month
- Qt 5 Beta is expected to ship by the end of the month when the Australian office is closed
- Rumors emerge that Nokia will sell or relinquish all Qt assets
August 9, 2012
- Digia announces they have agreed to acquire Qt from Nokia for a very low price
- Around 125 Nokia developers are asked to join Digia and not all of them chose to accept the offer
August 2012
- CopperSpice successfully built on Mac OS X
- CopperSpice successfully built on Windows Vista 64 for 32-bit Windows platforms
- CopperSpice successfully built on a VM running Fedora 17
- GStreamer plugin for Debian and Fedora successfully compiled, Phonon works on both X11 platforms
- KitchenSink demo application project started
- KS Demonstrates examples showcasing the fundamental features of CopperSpice
September 2012
- QJson class added to CopperSpice which required changes to internal string implementations
- Changed license macros to "open source"
- Remove S60 source code
- Initial development of the Diamond Editor application using Qt commences
September 18, 2012
- Digia officially takes over management of the entire Qt project
October 2012
- CopperSpice - compiled central portions of Corelib using Autotools without moc
- CopperSpice - implemented QtMetaObject::className() without moc
- CopperSpice - created enhanced and simplified registration syntax for Signals and Slots
November 2012
- Migrate Diamond Editor to compile using Autotools instead of QMake
- Diamond Editor ported to the CopperSpice libraries
- CopperSpice - implemented Signal and Slot registration without moc
- CopperSpice - Signal / Slot parameters can be of any data type
- CopperSpice - Signal / Slot parameters can have a default value
- CopperSpice - implemented QMetaObject::superClass() without moc
- CopperSpice - template classes can now inherit from QObject
December 2012
- Added new samples to the KitchenSink project to demonstrate graphics functionality
- CopperSpice - implemented enum registration without requiring moc
- CopperSpice - implemented properties without moc
- CopperSpice - enhanced properties to allow usage of complex data types
2013
January 2013
- PepperMill application started
- Implemented to parse header files and migrate from Qt syntax to CopperSpice syntax
- CopperSpice Overview documentation generated
- Explains changes in property system and macros
- Documented debug procedures using QtCreator 2.6 on Windows
- Obsolete platform and operating system defines removed from CopperSpice
- All Qt3 source code removed from CopperSpice
- CopperSpice supports MetaClassInfo without moc
February 2013
- Updated Mac system to Apple clang 3.2 for OS X
- Modified CopperSpice makefiles on OS X to use libc++
- Resolved several warnings from clang on OS X
- Incorporated 4.8.3 and 4.8.4 changes into CopperSpice
March 2013
- PepperMill converts a majority of the Qt macros to CopperSpice syntax
- Added changes from Qt 5 related to QJson classes
- Resolved an existing Qt bug in QTextEngine
- Resolved existing native dialog OS X printing issues
- Added several Qt 5 classes to QVariant and QMetaType
- Set up CopperSpice CI server with multiple virtual machines
April 2013
- CopperSpice supports MetaEnums without moc
- Added QStandardPaths to CopperSpice
- Enhanced QFileDialog for Windows 7 and Windows 8
- CopperSpice generates signal methods without moc
May 2013
- CopperSpice Signals support connections to lambda expressions
- Signal and Slot connections are checked at compile time when passed as a method pointer
- CopperSpice API documentation created using Doxygen
June 2013
- PepperMill can convert almost all Qt macros to CopperSpice macro syntax
- QMetaClassInfo, QMetaEnum, QMetaMethod, and QMetaProperty have been fully implemented in CopperSpice
- CopperSpice fully supports Signals and Slots without moc or any preprocessor
July 2013
- Incorporated 4.8.5 changes (through 05/03/2013) into CopperSpice
- CopperSpice auto builds plugins for PostgreSQL and MySQL when DBMS installed
August 2013
- Road trip to Oregon for a holiday
September 2, 2013
September 2013
- PepperMill conversion utility completed
- Incorporated hundreds of Qt 5.0 and Qt 5.1 changes into CopperSpice
- Added QCommandLineParser, QFileDevice, QFileDialog, and QSaveFile classes
October 2013
- Vacation in Washington DC and New Orleans
November 2013
- Incorporated 4.8.5 changes (through 11/22/2013) into CopperSpice
- Incorporated hundreds of Qt 5 changes into CopperSpice
- Added Qt 5 QTemporaryDir
- Added Qt 5 QTemporaryFile
- Added Qt 5 QArrayData class
- Modified QString, QByteArray, and QVector to use the new Qt 5 QArrayData class
December 2013
- Incorporated 4.8.5 changes (through 12/17/2013) into CopperSpice
- Code modified to remove warnings on X11, Windows, and OS X for all non-3rd party source
- Modified QPointer to use QWeakPointer, similar to changes made in Qt 5
- PepperMill run on CsCore current header files to produce pure C++ code
- PepperMill run on CsGui current header files to produce pure C++ code
- MOC (Meta-Object Compiler) is obsolete when compiling all of with CsCore and CsGui
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 examples
- KitchenSink compiled with CopperSpice libraries, MOC is not used
- Diamond Editor compiled with CopperSpice libraries, MOC is not used
April 2014
- Incorporated 4.8.6 changes (through 04/23/2014) into CopperSpice
- Source files updated with the appropriate license and copyright information
- CopperSpice version set to 1.0.0
- MOC (Meta-Object Compiler) is obsolete when compiling with CsPhonon
- CopperSpice tested on Windows 7 using GCC 4.8
- CI server updated to newer versions of Debian (Wheezy), Fedora 20, and Ubuntu 14.04
May 2014
- Incorporated 4.8.x changes (through 05/07/2014) into CopperSpice
- CopperSpice packaging
- PepperMill packaging
- KitchenSink and Diamond packaging
May 21, 2014
- Initial release of source code
- Binary files published for multiple platforms
CopperSpice | 1.0.0 release |
PepperMill | 1.0.0 release |
KitchenSink | 1.0.0 release |
Diamond | 1.0.0 release |
June 2014
- Update CS build system, platform specifics, and type traits
- CopperSpice source code reformatted with AStyle and header files cleaned up
July 2014
- Incorporate 4.8.x changes (through 07/10/2014) in CopperSpice 1.1.x
- Update various font libraries, update SQLite in CopperSpice 1.1.x
- Several legacy issues resolved
- CopperSpice web site fully operational
CopperSpice | 1.0.1 release |
Diamond | 1.1.0 release |
Aug 2014 - Sept 2014
October 2014
- Incorporate 4.8.x changes (through 10/01/2014) into CopperSpice 1.1.x
- Renamed source code folder for CsCore library from src/corelib to src/core
- Consolidate mkspec headers, created src/core/global/qplatformdefs.h src/core/global/qplatformposix.h
- Refactored qglobal.h
November 2014
- Update CopperSpice to use GStreamer 1.0
- Update various font libraries
- Used QDoc on Qt 4.8.6 source code to generate html output for CopperSpice API documentation
- Merged several Qt 5.x html pages with Qt 4.x html output
- Developed a parser to convert html documentation to the Doxygen format
December 2014
- Incorporated 4.8.x changes (through 12/01/2014) into CopperSpice 1.1.x
- Discovered Doxygen program was not sufficient for accurate C++11 API documentation
- DoxyPress was derived from Doxygen 1.8.8
- Renamed Doxygen to DoxyPress
- Renamed DoxyWizard to DoxyPressApp
- New build files were created
- Removed usage of Qt 1.9
- Migrated DoxyPress and DoxyPressApp to link with the CopperSpice libraries
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
DoxyPress | 1.0.0 beta release |
DoxyPressApp | 1.0.0 beta release |
May 2015
- Incorporated 4.8.x changes (through 04/28/2015) into CopperSpice 1.1.x
- Extensive work on the CS API documentation and DoxyPress
June 2015
- Substantial work on DoxyPress
- Reconfigured CI setup and VM's
- Minor changes for OS X 10.10
CopperSpice | 1.0.2 release |
CopperSpice | 1.0.3 release |
July 2015
- Incorporated 4.8.x changes (through 06/09/2015) into CopperSpice 1.1.x
- Back port QEnableSharedFromThis and QMakeSharedPointer
- Enhanced QJson by adding new methods
- Enhanced portability of WebKit
CopperSpice | 1.1.0 release |
Diamond | 1.1.2 release |
August 2015
- Redesign of the macro registration system enhancing QMetaObject to be C++11 compliant
- On Linux distributions the size of the .so files are roughly 50% smaller than CS 1.1.0 files
- On Windows the .dll files are 10-15% smaller than CS 1.1.0 files
- Redesign atomic classes to use the C++11 native atomic classes
- Back port and redesign qHash() to use the new atomic classes
- CMake files for building CopperSpice are being developed by a contributor
- CI server updated to newer versions of Debian (Jessie) and Fedora 22
- Initial CopperSpice API documentation released, built using DoxyPress
CopperSpice | 1.2.0 release |
PepperMill | 1.2.0 release |
KitchenSink | 1.2.0 release |
Diamond | 1.2.0 release |
DoxyPress | 1.1.0 release |
DoxyPressApp | 1.1.0 release |
September 2015
- Attended CppCon in Seattle, Washington
- Presented a session discussing the CopperSpice libraries
- Presented a session to introduce our DoxyPress application
- Presented a lightning talk about our Compile Time Counter
November 2015
- Enhance CI computer hardware
- Reconfigure VM's and CI software
- Extensive development on the DoxyPress application
DoxyPress | 1.1.1 release |
DoxyPressApp | 1.1.1 release |
December 2015
- Added Fedora 23 to CI system
- Added FreeBSD 10.1 to CI system
- Finish merging CMake build system files
- Update copyright
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
DoxyPress | 1.2.0 release |
DoxyPressApp | 1.2.0 release |
February 2016
- Move minimum GCC version to 4.8.1
- Start alpha testing for new Signal library
- Merge several pull requests from other developers
March 2016
- Merge several pull requests from other developers
- Clean up GCC warnings
- Development of libGuarded began
- Library designed to manage access to shared data in multithreaded programs
- Integrate new CsSignal library into CopperSpice
- Link CsSignal with the libGuarded library
CopperSpice | 1.2.2 release |
April 2016
- CsSignal library released
- Refactor QObject to use CsSignal
CopperSpice | 1.3.0 release |
KitchenSink | 1.2.1 release |
CsSignal | 1.0.0 release |
libGuarded | 1.0.0 release |
Diamond | 1.2.1 release |
DoxyPress | 1.2.1 release |
DoxyPressApp | 1.2.1 release |
May 2016
- CppNow 2016 presentation on CopperSpice and our new CsSignal library
- CppNow 2016 presentation on DoxyPress demonstrating how clang can be used to parse C++
- CppNow 2016 presentation on libGuarded
- Upgrade to use CMake 3.4.3 to build CopperSpice
- Merge pull requests from other developers
DoxyPress | 1.2.2 release |
DoxyPressApp | 1.2.2 release |
June 2016
- Enhance AutoTools build to include the CMake files in the tar and zip source distribution
- Change both build systems to properly display library version
- Work on documentation for developer contributions
July 2016
- CopperSpice team on temporary leave as Barbara recovers from a Total Knee Replacement
Thank you to the community for their wonderful support and encouragement during this time
- Merge changes for DragonFly BSD
August 2016
- Update CS overview documentation
- Merge pull request for audio on Linux
- Modify build files on Linux to make new audio libraries optional
- Add Fedora 24 to CI server
- Add Ubuntu 16.04 to CI server
September 2016
- Remove "-0" from Cs library file names
- Resolved Fedora and OS X build issues
CopperSpice | 1.3.1 release |
DoxyPress | 1.2.4 release |
DoxyPressApp | 1.2.4 release |
November 2016
- Initiated new design of the container classes
December 2016
- Enhance QSharedPointer
- Internal changes for QMap to improve readability
- Continued design of the container classes
- CopperSpice tested on Windows 10 using GCC 5.3
- Update copyright
-
Add 'override' to inherited methods
-
Added for Linux and Windows
-
OS X 10.10 overrides not validated
-
Libraries modified: Core, Gui, Multimedia, Network, OpenGL, SQL, SVG, XML, XMLPatterns
-
Libraries modified: Phonon, phonon_ds9, phonon_gstreamer
-
Modified foreach macro to expand to a range based "for"
-
Change "foreach" to a C++11 range based "for"
-
Libraries modified: Core, Multimedia, Network, OpenGL, SQL, SVG, XML, XMLPatterns
-
Libraries modified: Phonon, phonon_ds9, phonon_gstreamer, phonon_qt7
CopperSpice | 1.3.3 release |
DoxyPress | 1.2.5 release |
DoxyPressApp | 1.2.5 release |
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 release |
KitchenSink | 1.2.2 release |
CsSignal | 1.0.1 release |
Diamond | 1.2.2 release |
DoxyPress | 1.2.6 release |
DoxyPressApp | 1.2.6 release |
February 2017
-
Update CopperSpice API documentation
-
Document changes to the new sequential container classes
-
Add information about 'range based for' usage as related to containers
-
Add a new tutorial to define how reference data types are used with containers
- Adding new classes to libGuarded for deadlock free containers
- Added classes to support thread safe concurrent access to containers
- Add Fedora 25 to CI server
March 2017
- CsSignal library uses libGuarded to handle the connection lists and avoid race conditions
- Refactor QTabBar to remove raw pointers, QList of tabs now stores shared pointers
- Continue development on the CsString library
- Unicode aware library supporting UTF-8 and UTF-16 natively
- CsString uses policy classes so any encoding can be supported
DoxyPress | 1.2.7 release |
DoxyPressApp | 1.2.7 release |
April 2017
- Continued development on CsString library, added test suite
- Preliminary DoxyPress documentation for CsString library
- Initial development on the new QString8 class which uses the CsString library to support UTF-8
May 2017
- CppNow 2017 presentation on CsString, a Unicode aware string library
- CppNow 2017 presentation on libGuarded, new RCU container classes
CopperSpice | 1.4.1 release |
KitchenSink | 1.2.3 release |
CsSignal | 1.1.0 release |
CsString | 1.0.0 release |
libGuarded | 1.1.0 release |
Diamond | 1.2.3 release |
DoxyPress | 1.2.8 release |
DoxyPressApp | 1.2.8 release |
DoxyPress | 1.2.9 release |
DoxyPressApp | 1.2.9 release |
June 2017
-
Reimplement the following containers to leverage the C++ standard library containers, iterators, and algorithms
-
QMap, QMultiMap, QHash, QMultiHash
-
Add methods to support move semantics for constructors, append, and insert, etc
-
Add reverse iterators to QMap and QMultiMap
-
Add hash and equality template parameters for QHash and QMultiHash
-
Implement QMultiHash and QMultiMap as separate classes from QHash and QMap
- Minor change to QMultiHash implemented in favor of the STL semantics
- QMultiHash class does not guarantee the order of elements with the same key, if this behavior is required simply use QMultiMap
-
Expand the API
-
Add methods to support the STL API
-
Maintain the majority of the CopperSpice API
-
Update CopperSpice API documentation
-
Document changes to the new associative container classes
-
For QMultiHash and QMultiMap document the full classes
- Enhance CMake build system for packaging support with CPack
July 2017
- Enhance API documentation
- Record CppCast interview
- Start a new CopperSpice YouTube channel
- Accepted as speakers for CppCon 2017 presenting CsString, a Unicode aware string library
- Accepted as speakers for CppCon 2017 presenting libGuarded, new RCU container classes
CopperSpice | 1.4.2 release |
PepperMill | 1.2.1 release |
DoxyPress | 1.2.10 release |
DoxyPressApp | 1.2.10 release |
August 2017
- Update from Unicode 5 to Unicode 8
- Add additional methods to QString8 and QChar32
- Update CsNetwork library adding full support for OpenSSL version 1.0.x
- Add Fedora 26 to CI server
- Upgrade FreeBSD 10.1 to 10.3 on CI server
- Update minimum required clang version to 3.8.1 for building CopperSpice
- Update minimum required GCC version to 5.4 for building CopperSpice
- Migrate to C++14 on all platforms
September 2017
- Add two networking examples to KitchenSink
- Added normalization methods to QString8
- Add iterator based overloaded methods to QString8
- Build files updated for CMake, CsMultimedia, CsOpenGL, CsPhonon, CsWebkit can each be disabled and will not be built
- Build files updated for CMake, OpenSSL can be disabled so it will not be included when building CsNetwork
- Build files updated for Autotools, CsMultimedia, CsPhonon, CsWebkit can each be disabled and will not be built
- Build files updated for Autotools, OpenSSL can be disabled so it will not be included when building CsNetwork
- Add OS X 10.12 to CI Server
- Presented talks on CsString and libGuarded at CppCon in Bellevue, Washington
CopperSpice | 1.4.3 release |
CopperSpice | 1.4.4 release |
KitchenSink | 1.3.0 release |
CsSignal | 1.2.0 release |
CsString | 1.1.0 release |
Diamond | 1.2.4 release |
DoxyPress | 1.2.11 release |
DoxyPressApp | 1.2.11 release |
October 2017
- Begin design on a new container class named QFlatMap
- Make QPair an alias for std:pair
- Update OS running CI Server, update CI software tooling
- Test configuration for building CopperSpice on ArchLinux
November 2017
- Uploaded our tenth video to the CopperSpice YouTube channel
- Presented a talk on C++ fundamentals for ACCU / C++ meeting
- Add QFlatMap, an ordered map which stores elements in contiguous memory as a sorted vector of pairs
- Remove the majority of the algorithms in CsCore, CopperSpice updated to use the STL algorithms when possible
- Move Q_ASSERT and related functions to a new header file
- Move qDebug, qWarning, qCritical, and qFatal functions to a new header file
- Clean up qglobal file, add missing public headers
- Remove obsolete methods, merge several redundant overloaded methods
- QChar32 class added
- Move additional string methods to QString8 and optimize
- Add overloaded methods in QString8 for rvalues, for example operator+()
December 2017
- Add Debian 9 (Stretch) to CI server
- Update Overview and API documentation
- Add CMake build files for the KitchenSink sample program
- QString toInt(), toLong(), toLongLong(), and toShort() methods consolidated into toInteger()
- QString arg() methods were renamed and split into formatArg() and formatArgs(), depending on the passed arguments
- Add QStringParser class
- Move string methods for split(), arg(), and number() to QStringParser
- Move string methods for toInteger(), toDouble, and toFloat() to QStringParser
- Move QStringList::join() method to QStringParser
- Redesign variations of arg() and number() methods in QStringParser as templates for efficiency
- Redesign number() and toInteger() to use iostream
- Add wrappers in QString8 to call all of the static methods in QStringParser
- Add QStringView class, templated class where the template parameter must be a string data type
- Add overloaded methods in QString8 which take a QStringView8
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 |
DoxyPress | 1.2.12 release |
DoxyPressApp | 1.2.12 release |
February 2018
- Add remaining functionality to QRegularExpression
- Add overloaded methods in QString8 which take a QRegularExpression as a parameter
- Refactor regex code
- Remove QByteArrayMatcher
- Remove obsolete code for datastream operator methods before version 4
- Remove obsolete softkey support
- Replace qvsnprintf with std functions
- Add support for SHA-2, Keccak, and SHA-3
- Update QUrl classes to support IDN
- Improve URL encoding
- Enhance CsNetwork to support newer versions of TLS, add support for SPDY
- Add SecureTransport support for Mac OS X, prefer over OpenSSL
March 2018
- Update API documentation for CsCore classes and methods
- Add full documentation for new QString and QRegularExpression
- Add migration examples for QString and QRegExp to QRegularExpression
- Remove QChar, QString (old UTF-16 class), QLatin1Char, QLatin1String, and QStringLiteral
- Remove QCharRef, QStringRef, and QRegExp
- QChar32 replaces QChar
- QString8 replace QString
- QStringView replaces QStringRef
- QRegularExpression and QRegularExpressionMatch classes replace QRegExp
- QChar typedef added for QChar32
- QString typedef added for QString8
- QString16 added to support UTF-16 strings
- QLocale classes heavily refactored to use UTF-8 string classes
- Update codec classes to use UTF-8 string classes
- Full rewrite of all QJson classes optimizing for UTF-8 storage
- Removed duplicated string classes embedded in the JSON implementation
- Changed storage of internal JSON data to better match the API
- Improved Unicode string handling in JSON classes
- Update Sqlite to version 3.22.0
DoxyPress | 1.2.13 release |
DoxyPressApp | 1.2.13 release |
April 2018
- Build all CopperSpice libraries with the new string classes, string parser class, and regular expression class
- Remove string surrogate checking since it is not required with UTF-8 / UTF-16 encoding
- Correct multiple cases of legacy undefined behavior found while integrating UTF-8 string classes
- CopperSpice libraries build successfully on Windows
- Update KitchenSink demo application to use the new CopperSpice libraries supporting UTF-8 strings
May 2018
- Enhance QVariant to work with additional data types
- Change SVG rendering to use iterators and improve speed of drawing
- Clean up text encodings for Linux
- Clean up source for Mac OS X to remove warnings
- CopperSpice libraries build successfully on Linux
- Update libtiff to version 4.06
- Add new countries to HarfBuzz enum
June 2018
- Presented a talk on Overload Resolution for ACCU / C++ meeting
- Several new methods added to QString and QStringView
- Remove compiler warnings for overridden methods and Mac OS X specific code
- CopperSpice libraries build successfully on Mac OS X
- Add Ubuntu 18.04 to CI server
- DoxyPress fully migrated to CopperSpice 1.5.0
- DoxyPressApp fully migrated to CopperSpice 1.5.0
CopperSpice | 1.5.0 release |
KitchenSink | 1.4.0 release |
DoxyPress | 1.3.0 release |
DoxyPressApp | 1.3.0 release |
July 2018
- Remove Fedora 24 from CI Server
- Add Fedora 27 to CI Server
- Add Fedora 28 to CI Server
- Upgrade FreeBSD 10.3 to 11.2 on CI server
- Update minimum required GCC version to 7.3 for building CopperSpice on Windows
- Minor changes to remove warnings reported by MinGW 7.3 on Windows
- Add missing includes for FreeBSD
- Optimize CsString classes
August 2018
- Enhance CMake build files to work with MSVC
- Visual Studio 2017 Version 15.8 or newer is required
- Modify global settings to define Q_CC_MSVC when building with Visual Studio
- Remove several functions which are now supported natively in MSVC
- Minor change in CsNetwork to resolve missing data type for DnsRecord with MSVC
- When compiling with MSVC a few export commands were removed in Core registration, no changes with MinGW
- Turn on assembly files in CsWebkit which are required only when using MSVC
- Remove class export command from QStringList to accommodate how MSVC handles inheriting from a template
- Mark QStringList methods as exported
- Update KitchenSink CMake build files to work with MSVC
DoxyPress | 1.3.1 release |
DoxyPressApp | 1.3.1 release |
September 2018
- Merge MSVC test branch with main trunk
- Add information in CopperSpice Overview documentation detailing how to build with MSVC
- Minor improvement in regular expressions requiring an escape sequence
- Attended CppCon in Seattle, Washington
- Presented a talk on Undefined Behavior at CppCon in Bellevue, Washington
CopperSpice | 1.5.1 release |
KitchenSink | 1.4.1 release |
Diamond | 1.3.0 release |
DoxyPress | 1.3.2 release |
DoxyPressApp | 1.3.2 release |
October 2018
- Update CopperSpice to use Unicode 11.0
- Improved QString class
- Migrate branch to HarfBuzz 2.1.1
- HarfBuzz library is used for text shaping, newer version has built in UTF-8 support
- Update CsCore to use the new version of HarfBuzz
- Initial clean up of CsGui pending the new version of HarfBuzz
- Remove all unsupported qws files in CsGui
- Add new math functions
November 2018
- Added several pull requests to CopperSpice
- Update compiler and cpu detection code
- Reorganize CsGui files to facilitate improved maintainability
- Move all files associated with printing to a new printing directory
- Remove obsolete inputContext classes
- Add new classes for printing
- Remove unused CsGui embedded files
- Remove obsolete files for qpa in CsGui
- Update QCoreApplication API
- Initial changes to support a cross platform paint engine
- Initial changes to support improved printing
December 2018
- Resolved HarfBuzz issue to support scripts added in Unicode 11
- Update MySQL driver
- Improve QVector::data()
- Add support for time zones and 64-bit timestamps in the QDateTime class
- Add new enums values and type traits to the QNameSpace class
- Optimized several existing QString methods
- Resolved a reported issue with QDockWidget
- Remove workarounds for older versions of MSVC
- Remove obsolete files for egl support
- Add policy to prevent warnings when using a version up to CMake 3.13
- Continued major work on CsCore and CsGui to support the new cross platform paint engine
- Update CsNetwork to use the new plugin system
- Update CsXmlPatterns to use the new date methods
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
CopperSpice | 1.5.2 release |
KitchenSink | 1.4.2 release |
CsString | 1.2.0 release |
Diamond | 1.3.1 release |
DoxyPress | 1.3.3 release |
DoxyPressApp | 1.3.3 release |
March 2019
- Presentation, Dutch C++ Group in Amsterdam, Netherlands – Overload Resolution
- Presentation, emBO++ in Bochum, Germany – Undefined Behavior
- Presentation, emBO++ in Bochum, Germany – Multithreading in C++
- Presentation, emBO++ in Bochum, Germany – Overload Resolution
- Presentation, C++ User Group Düsseldorf, Germany – Overload Resolution
- Presentation, C++ User Group Munich, Germany – Undefined Behavior
- Presentation, C++ User Group London, England – Undefined 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
- Update CS Overview documentation
May 2019
- Remove defines for XCB-ICCCM version 0.3.8
- Add files to support FontConfig for XCB
- Update build files to allow XCB support without using GTK
- Remove third party IAccessible2 library for Windows
- Add CS_SHOW_DEBUG #define to display a variety of debug messages only when enabled
- Clean up multiple qDebug message for improved readability
- Add support in platform code to use the new QFactoryLoader class
- Redesigned QText classes in CsGui to use HarfBuzz 2.3.1 UTF-8 text shaping
- Cocoa platform specific GUI support
- Windows platform specific GUI support
- XCB platform specific GUI support
June 2019
- Added plugin support for Multimedia Play List Formats
- Added plugin support for Multimedia Windows Player, DirectShow
- Reorganized SQL source, moved plugin source code to the SQL plugin directory
- Change plugin library name from qsqlpsql to CsSqlPsql
- Standardized the code for loading plugins in GUI, Multimedia, and SQL
- Change a majority of the calls to connect() to use method pointers
- Enhance meta type system to allow reference parameters when calling invokeMethod()
- Improve CMake build files
- Clean up debug and assert message
July 2019
- Remove Phonon library in favor of CsMultimedia
- Build files updated to support both GStreamer 0.10 and GStreamer 1.0
- Multimedia DirectShow (Windows), GStreamer (Unix), AV Foundation (Mac OS x) plugins added
- Add plugin printer support for Windows
- Cups printer support plugin for Unix and Mac
- Additional plugin for Mac printing
- Add new command line options in UIC
- Enhance internal usage of QMetaObject::invokeMethod() in CsMultimedia
- Add missing overloads in Multimedia and plugins
- Change several containers so erase() accepts a const iterator
- Remove FOREACH macro, all internal code updated
- Remove FOREVER macro, all internal code updated
- Update Overview documentation with additional getting started information
- Update tables in the CopperSpice Overview documentation listed the required XCB packages for Unix
- Retain documentation on website for CopperSpice 1.5 stable
- Upload documentation for CopperSpice 1.6 release
- Add a cs-1.5 tag for the KitchenSink application, marks the last commit using CopperSpice 1.5 stable
- KitchenSink updated to use CopperSpice 1.6
- Change KitchenSink music example which was redesigned to use CsMultimedia
- Accepted as speakers for CppCon 2019 in Denver, Colorado
- Accepted as speakers for MeetingC++ 2019 in Berlin, Germany
- Accepted as speakers for code::dive 2019 in Wrocław, Poland
August 2019
- Docker is fully configured for all Linux platforms
- Remove Debian 8 from CI Server
- Add Debian 10 (Buster) to CI Server
- Add Fedora 30 to CI Server
- Add Arch Linux to CI Server
- Upgrade FreeBSD 11.2 to 12.0 for CI Server
- Update documentation for CopperSpice 1.5
- Update documentation for CopperSpice 1.6
- Update CopperSpice Overview Documentation
- Minor changes in CMake build files for GStreamer 1.0 on Unix platforms
- Various build file changes for X11 and stylesheet support on Windows
- Multiple enhancements to improve DoxyPress outputs
- Update DoxyPressApp to use CS 1.6 for High DPI support
CopperSpice | 1.5.3 stable |
KitchenSink | 1.4.3 stable |
KitchenSink | 1.4.4 stable |
CopperSpice | 1.6.0 release |
PepperMill | 1.2.2 release |
KitchenSink | 1.6.0 release |
DoxyPress | 1.3.5 release |
DoxyPressApp | 1.3.5 release |
September 2019
- Attended CppCon in in Denver, Colorado
- Presented a talk on "High performance graphics on the GPU" at CppCon in in Denver, Colorado
- Drop support for Autotools build system with CopperSpice
- Update to CMake 3.8 as the minimum required version
October 2019
- Modernize CMake build files for CopperSpice
- Update CMake files for better MSVC support
- Improve CMake functions to install CS libraries for a project linking with CopperSpice
- Streamline rpath support for Linux and Mac OS X
- Update minimum required clang version to 6.0 for building CopperSpice
- Update minimum required GCC version to 7.3 for building CopperSpice
- Move to C++17 on all platforms
- Drop support for Autotools build system with KitchenSink
- Modernize CMake build files for KitchenSink
- Move to C++17 on all platforms
- Drop support for Autotools build system with Diamond
- Modernize CMake build files for Diamond
- Move to C++17 on all platforms
- Drop support for Autotools build system with DoxyPress and DoxyPressApp
- Modernize CMake build files for DoxyPress and DoxyPressApp
- Move to C++17 on all platforms
- Merge github pull requests
- Fix issue with lupdate for translation files
- Research optimization options provided in C++17
November 2019
- Drop support for Autotools build system for CsSignal
- Add CMake build files for CsSignal
- Move to C++17 on all platforms
- Finalize build files to adjust rpath during deployment
- Refactor Core source code to utilize C++17
- Improve registration, remove unnecessary headers
- CopperSpice European Tour
-
Speaker at Meeting C++ 2019 Conference in Berlin, Germany
-
Presented an updated talk on "High performance graphics and rendering text on the GPU"
-
Speaker at code::dive 2019 in Wrocław, Poland
-
Presented "Undefined Behavior is Not an Error"
-
C++ and CopperSpice training in Bochum, Germany
-
Speaker at C++ User Group in the Netherlands
CopperSpice | 1.6.1 release |
KitchenSink | 1.6.1 release |
CsSignal | 1.2.1 release |
Diamond | 1.3.2 release |
DoxyPress | 1.3.6 release |
DoxyPressApp | 1.3.6 release |
December 2019
- Adjust registration to improve compile speed on Unix platforms
- Review QVariant and QMetaType and develop a new abstraction
- Clean up source code to remove compiler warnings
- Use compiler attributes instead of macros
- Replace Q_REQUIRED_RESULT with the attribute [[nodiscard]]
- Add support for clang 9
- Update required gcc and clang versions
- Update ignore file for source distribution
- Remove deprecated methods in Core and Gui
- Delete extraneous header files which only included a previously listed header
- Improve compile speed on Unix platforms by reorganizing registration macros
2020
January 2020
- Drop support for Autotools build system for CsLibGuarded
- Add CMake build files for CsLibGuarded
- Move to C++17 on all platforms
- Change libGuarded to CsLibGuarded
- Drop support for Autotools build system for CsString
- Add CMake build files for CsString
- Drop support for Autotools build system for PepperMill
- Add CMake build files for PepperMill
- Release new version of PepperMill for customers migrating to CopperSpice
- Update CMake package detection for MySQL / MariaDB plugins
- Continue removing compiler warnings and deprecated methods
- Add [[fallthrough]] attribute for switch cases which do not break or return
- Drop support for Q_DECLARE_TYPEINFO, replace with C++ standard type traits
- Study the interaction between QVariant, QMetaType, and the property system
- Experiment with using std::variant and std::optional
- Mac OS X CI supported versions: 10.13 and 10.14
- Minimum required XCode version: 10.1
- Release tags were added to DoxyPress
- Several enhancements made to DoxyPress
February 2020
- Update CS Overview documentation, add extended notes about migrating to CopperSpice
- Text file containing sha512 checksums added for prebuilt binary download pages
- New installers added to download page for MSVC prebuilt binaries
- Create a prototype for the new QVariant class
- Document the overall impact on CopperSpice
- Remove Fedora 27 from CI
- Add Fedora 31 in CI
- Add Centos 8 in CI
- Improve build files
- Remove dependency on NAS audio for Unix
- Add support for OpenSSL 1.1 in CsNetwork
- Improve CsLibGuarded build files
- Git release tags were added to KitchenSink
- Git release tags were added to Diamond
CopperSpice | 1.6.2 release |
PepperMill | 1.6.0 release |
KitchenSink | 1.6.2 release |
CsPaint | 1.0.0 release |
CsLibGuarded | 1.2.0 release |
Diamond | 1.3.3 release |
DoxyPress | 1.3.7 release |
DoxyPressApp | 1.3.7 release |
March 2020
- Rename Gui OpenGL and Network files for improved readability
- Clean up code to remove additional warnings
- Improve code in SVG handling
- Remove obsolete headers in Core and Gui
- Adjust const correctness in QSet
- Remove unnecessary Q_DECLARE_SHARED_STL macro
- Remove obsolete methods in GUI
- Improve core state machine performance and functionality
- Redesign QVariant and QMetaType classes
-
Change calls to qvariant_cast<T>() to use value<T>(), mark qvariant_cast obsolete
-
Expand QVariant::Type enum to include enum values from QMetaType
-
Change code base to use QVariant enum instead of QMetaType enum
-
Change Q_DECLARE_METATYPE to CS_DECLARE_METATYPE macro
-
Add new methods to support the redesigned QVariant system
-
Use QVariant::typeToTypeId() instead of qMetaTypeId()
-
Use constexpr in the internal typeToName() function instead of SFINAE
- Improve property system macros
- Optimize sql drivers using the new QVariant system
- Improve bundle creation for Diamond on Mac OS X
KitchenSink | 1.6.3 release |
April 2020
- Correct GUI animation issue on MSVC
- Remove usingYosemiteOrLater bool since Mac OS X 10.13 or greater required
- Improve CMake macros to support Mac OS X bundles
- Remove elements from QVariant
-
Drop the union in QVariant, use std::variant
-
Remove obsolete QVariant structs
-
Remove the use of placement new to end the lifetime of a Variant
-
Remove qRegisterMetaType<T>(), obsolete function
-
Remove Q_DECLARE_BULTIN_METATYPE macro
-
Remove multiple obsolete methods
- Redesign QVariant system
-
Use std::visit in QVariant methods to process stored data
-
Custom data types
-
Add abstract CustomType class
-
CustomType is used to store a shared pointer to non simple types
-
Add templated class CustomType_T, inherits from CustomType
-
Change the return type for several QVariant methods to use std::optional<T>
-
Change int to uint as the return type for several QVariant methods
-
Refactor all methods in QVariant
- Remove unnecessary duplicated code for cs_typeName_internal() in Multimedia
- Major redesign of Core animation, leverage the new QVariant system
- Remove Ubuntu 14.04 from CI
- Add Ubuntu 20.04 in CI
- Add bundle creation for KitchenSink on Mac OS X
- Numerous changes to improve DoxyPress
- Correct the majority of compiler warnings in DoxyPress
- Update the version of Hunspell to version 1.7 for Windows
- Add #define in Diamond to support changes added in Hunspell version 1.5
CopperSpice | 1.6.3 release |
KitchenSink | 1.6.4 release |
Diamond | 1.3.4 release |
DoxyPress | 1.3.8 release |
DoxyPressApp | 1.3.8 release |
May 2020
- Correct CMake build file, iconv package is now always searched on Unix
- Drop in updated CsLibGuarded headers
- Redesign QVariant system
-
Add abstract QVariantBase class to extend QVariant outside of the Core library
-
Remove QVariant::streamDebug() method
- Major redesign of Gui animation, leverage the new QVariant system
- Redesign and simplify several CsScript classes based on the new QVariant system
- Minor improvements to the UI in the KitchenSink demo program
- Minor changes in KitchenSink to work with the pending version of CopperSpice
June 2020
- Remove Mac OS X 10.13 from CI since the support for C++17 is too limited
- Minimum required version for OS X is now XCode 11.3.1
- Rework CsScript classes, improve implementation
- Minor changes in CsWebKit to leverage the new QVariant API
- Update Mac OS X platform plugin related to variant changes
- Replace internal QDataBuffer class with QVector
- Continued changes for the new QVariant system
- Switch to using C++17 type traits
- Change code in several places to use a structured binding
- Merge QVariant branch with the main branch, resolve conflicts
- Update the QVariant API documentation
- Rewrite descriptions and examples for all of the container classes
- Standardize syntax
- Improve documentation for flags
July 2020
- Extensive testing for new QVariant implementation
- Add additional conversions in canConvert() in QVariant
- Remove erroneous conversions in canConvert() in QVariant
- Coordinate convert() method with canConvert() in QVariant
- Add support for PostgreSQL 12
- Add move append() to QList
- Incorporate user reported modifications and improvements
- Fix QCompleter destroy model use after free error
- Expand Q_DISABLE_COPY() macro
- Rename the Windows platform plugin files for readability
August 2020
- Rename the XCB platform plugin files for readability
- Add build files to create the OpenGL integration plugin for XCB
- Update Overview documentation to include the xcb-glx package requirements
- Redesign execution of statements for MySQL plugin related to QVariant enhancements
- Update SQLite to version 3.33
- Change CMake files for iconv and cups running on FreeBSD
- Correct detection for gstreamer ABI version
- Update QStringView compare methods, add the exact data type for iterators
September 2020
- Visual Studio 2019 Version 16.6 or newer is required for MSVC
- Support for CopperSpice 1.5 moved to LTS
- CopperSpice 1.6.3 is now the stable release
- CppCon 2020 presentation on Lambda Expressions
CopperSpice | 1.7.0 release |
KitchenSink | 1.7.0 release |
CsString | 1.3.0 release |
Diamond | 1.3.5 release |
DoxyPress | 1.4.0 release |
DoxyPressApp | 1.4.0 release |
October 2020
- Add camera classes to CsMultimedia
- Update DirectShow for camera support
- Add new camera support plugins for Linux and OS X
- Use platform version of libjpeg when available
- QLockFile class added
- Improvements to QFontDatabase, application start up time reduced
November 2020
- Update required version for VS is now MSVC 2019 16.6
- Add new methods to return an iterator based on the raw storage in QString
- Mark several methods in QDate and QTime with [[nodiscard]]
- Remove potential issue in floating point comparisons
December 2020
- Add missing length() method in QLinkedList
- Add insert() method which takes an std::pair in all map containers
- Improved initializer list support for all map containers
- Change all zeros to nullptr in CsCore
- Add missing methods in QVariant
- Add missing methods in QMultiMap
- Improve QDataStream, remove usage of unions
- Add new QFlags constructor to initialize with an empty value
- Update documentation to include a sample script for building KitchenSink
- Update CopperSpice API documentation
2021
January 2021
- Update copyright date for all projects
- Change string constructors for better support of string literals
- Replace int with size_type in string encoding
- Add new method overloads for QAtomicInt and QAtomicPointer
- Redesign debug and warning message processing
- Enhance meta object system to return an empty object when searching for a meta class which does not exist
- Correct ligature string processing
- Correct binary format for QSettings on Windows
- Integrate Catch2 software for unit testing
CopperSpice | 1.7.1 release |
KitchenSink | 1.7.1 release |
CsSignal | 1.2.2 release |
CsString | 1.3.1 release |
Diamond | 1.3.6 release |
DoxyPress | 1.4.1 release |
DoxyPressApp | 1.4.1 release |
February 2021
- Modify QVector data() methods to return compliant value for an empty container
- Fix iterator problem for wheel event when popup list is empty
- Delete QString constructor for std::nullptr_t data type
- Optimize QString::formatArgs by using std::forward
- Correct container access for QFontFamily lookup
- Modify platform specific code for OS X to process font names correctly
- Reorganize files in the CsGui library, add two new folders
- Adjust distribution for MSVC, add missing file
- Fix QTimeZone constructor on OS X when an empty is passed
- Refactor QTemporaryFile
- Improve and add new catch unit tests
- Add new Qt::EmptyFlag data type for initializing QFlags to an empty value
- Change 0 to nullptr or Qt::EmptyFlag in multiple libraries and plugins
March 2021
- Remove Fedora 28 and Fedora 29 from CI
- Add Fedora 32 and Fedora 33 in CI
- Add default QElapsedTimer() constructor
- Fix QString::chop() when the number of chars is larger than the string
- Continue changing 0 to nullptr or Qt::EmptyFlag in multiple libraries, removes warnings
- Redesign lupdate tool which is used for generating .TS files for translations
- Update the lrelease tool which is used to create a .QM file from a .TS translation file
- Remove trUtf8() and UTF8 macros
- Redesign QCoreApplication::translate() and the QTranslator class
- Deprecate QT_TR_NOOP macros, add cs_mark_tr() function as a replacement
- Deprecate QT_TRID_NOOP macros, add cs_mark_tr_id() function as a replacement
- emBO++ 2021 Conference, Presentation on "Data Types"
April 2021
- New design for parsing marked translation text by the Linguist lupdate application
- Create new TS files for all CopperSpice strings marked for translation
- Change Linguist to use UTF-8 strings exclusively
- Port Linguist Application to CopperSpice, full rewrite
- Initialize variables in QTimeZone
- Added new TS_OUTPUT_DIR variable in the CMake build files, allows overriding location of the QM files
- Update KitchenSink demo program to use the new TS_OUTPUT_DIR variable
- Rewrite CopperSpice documentation for Translations and the Linguist Application
- Announced as C++OnSea 2021 Keynote Speakers
May 2021
- Upgreade FreeBSD from 12.0 to 12.2 in CI
- Add missing include, required for gcc 11
- Use the local copy of zlib when found, enhance CMake messages
- Turn off pthread.h check on MSVC for PostgreSQL
- Improve CMake messages for PostgreSQL and MySQL
- For MSVC only, add CMake build option to enforce methods pointers have a unique address
- Add new unit tests and update existing unit tests for CsCore
- Correct UTF-16 handling for fonts in Windows plugin
- Add template allocator to fromUtf8(), refactor methods which called fromUtf8()
- Add fromUtf16 to CsString
- Add cs_mp_cast<Args>() and cs_cmp_cast<Args>() to resolve overloads in connect()
- Change mime url in OS X plugin
- Continue changing 0 to nullptr in multiple libraries, removes a warning
- Use method pointers instead of strings for connect() in several hundred places
- Correct usage of erase() in Spdy protocol
- Change char to QString in Statemachine
- Use const iterators in multiple places in CsCore
- Add indexOfSignal() and indexOfMethod which receive a method pointer
June 2021
- Enhance QGraphicsScene to use QMetaMethod instead of indexes
- Improve Accessibility in CsGui
- Add overload for QObject::disconnect() when the slot method is a nullptr
- Refactor QImage
- Modify iterator operator==() for associative containers
- Add comparison operators in QStringView for optimization
- Add storage iterators for CsStringView
- Refactor comparison operators in QString, update QString16::replace()
- Improve unit tests for QChar and QString classes
- Add new constructors to QString for support of the char8_t data type, only when compiling with C++20
- C++OnSea 2021 Keynote Speakers ( June 30 - July 2 2021 )
July 2021
- Add Mac OS X CI 10.16 to CI server
- Remove Mac OS X 10.14
- Fix operator==() in QJsonDocument
- Add constructor in QString16 which takes a data type of char16_t
- Improve variable names in CsCore and CsGui, synchronize with documentation
- Official release of CsCrypto
CopperSpice | 1.7.2 release |
KitchenSink | 1.7.2 release |
CsSignal | 1.2.3 release |
CsString | 1.3.2 release |
CsCrypto | 1.0.0 release |
DoxyPress | 1.4.2 release |
DoxyPressApp | 1.4.2 release |
- Improve variable names in CsCore, synchronize with documentation
- Move CsCore locale files from core/tools to core/locale
- Update HarfBuzz from 2.3.1 to version 2.8.3
- Fix nullptr warnings in HarfBuzz source
- Migrate HarfBuzz files from CsCore to CsGui
- Refactor CsGui text interface to use the new version of HarfBuzz
August 2021
- Remove Fedora 30 and Fedora 31 from CI Server
- Add Fedora 34 to CI Server
- Files in utilities/unicode used to generate Unicode tables
- Delete utilities/unicode Autotools build files, add new CMake build files
- Remove unused utilities/unicode files
- Files in utilities/cldr used to generate locale tables
- Add source code to generate enums and timezone tables using the Common Locale Data Repository (CLDR)
- Update Country, Language, and Script enums in QLocale data
- Add new unit tests for QLocale and QTimeZone
- Update FreeType from 2.5.3 to version 2.11.0
- Update Zlib from 1.2.8 to version 1.2.11
- Add and improve variable names in multiple libraries to synchronize with documentation
- Correct glyph shaping for split text blocks
- Handle null QByteArray when reading translation files
- Rename QFileDialog::Option enum to QFileDialog::FileDialogOption
- Add deprecated using for QFileDialog::Option enum and flag
September 2021
- Change QGraphicsItem variable from flags to itemFlags for readability
- Change function style cast of Qt::WindowFlags() to constexpr Qt::EmptyFlag value
- Add implementation for setLabelText() in QFileDialog
- Remove obsolete data members in QWheelEvent
- Remove functions used for obsolete test system
- Remove dead code
- Update variable names in methods to synchronize with API documentation
- Accepted as speakers for CppCon 2021 to present two BackToBasic talks
October 2021
- Add new QRecursiveMutex class
- Add new QRecursiveMutexLocker class
- Correct all calls to use QMutex instead of QBasicMutex
- Refactor all mutex variables which were initialized with QMutex::Recursive
- Add const qualification to mutex() in QRecursiveMutexLocker
- Redesign QMutex using composition with classes from the STL
- Redesign QMutexLocker using composition with classes from the STL
- Remove include for qmutex_p.h and test for isRecursive()
- Redesign QMutexPool class using the new QRecursiveMutex class
- Remove QMutexData and obsolete methods for platform specific code
- Add intersects() to QPolygon and QPolygonF
- Replace macro calls to Q_GLOBAL_STATIC_WITH_ARGS() with a static function
- Remove Q_GLOBAL_STATIC_WITH_ARGS and Q_GLOBAL_STATIC_WITH_INITIALIZER macros
- Replace macro calls to Q_DECLARE_FLAGS() with a using statement
- Remove Q_DECLARE_FLAGS macro
- Update multiple unit tests
- CppCon 2021 presentation on Back To Basics: Overload Resolution
- CppCon 2021 presentation on Back To Basics: Undefined Behavior
November 2021
- Rename version file in 3rdParty JavascriptCore to support building on new versions of Mac OS X
- Add include file to prevent a warning on Linux
- Change "falls through" comment to use the [[fallthrough]] attribute
- Modify variable name for Qt::WindowFlags data member
- Merge two constructors in QTabletEvent
- Add [[nodiscard]] attribute to QTransform
- Update to CMake 3.16 as the minimum required version
- Improve variable names in CsGui methods to synchronize with API documentation
December 2021
- Remove unused private headers
- Merge overloads in QTextLayout
- Clean up comments
- Refactor code which removes buttons at run time in a QDialogButtonBox
- Support new library names for newer versions of OpenSSL
- Various changes to support ARM processor for 32 bit and 64 bit
- Add 85 new unit tests for QVariant
2022
January 2022
- Update copyright for all projects
- Changes in Webkit to support ARM processors
- CopperSpice builds on M1 systems
- Modify a few units tests for Mac OS X
CopperSpice | 1.7.3 release |
KitchenSink | 1.7.3 release |
Diamond | 1.3.7 release |
DoxyPress | 1.4.2 release |
DoxyPressApp | 1.4.2 release |
- Replace Q_DISABLE_COPY() macro with actual declaration in CsXmlPatterns
- Resolve CMake issue in find_library() to locate dll files
- Add defines for newer versions of Mac OS X
- Add additional methods in QStringView
- Remove obsolete functionality in QErrorMessage
- Improve about CS message box
- Correct int data type when saving and restoring to a data stream
-
Publish first installment of the new
CopperSpice
Journal
-
Concise instructions about how to build CopperSpice from source on multiple platforms
-
Installing pre-build binary files of the CopperSpice libraries on all supported platforms
-
Simple GUI example which shows exactly how to build and link a program using CopperSpice
-
Several blog entries about Signals and Slots, ToolChains, and CopperSpice
-
Short introductory GUI examples with full source code and text to explain the code
February 2022
- Add cs_mark_string_tr() to support marking a QString for translation ( C string support existed )
- Modify Gadget macro to support reflection
- Refactor QItemSelection to improve using the SelectionFlag enum
- Redesign Qt::staticMetaObject for CS_Gadget
- Fix getSignature() for pure virtual slots
- Redesign QFlags to support combining enums values for all integer types
- Remove redundant enum Qt::Modifier, replace with Qt::KeyboardModifier
- Add missing CS_ENUM() and CS_FLAG() macro calls
- Resolve ambiguous overload in QDialogButtonBox constructor
- Add isEnum() and enumToInteger() in QVariant to support run time access to enum values
- Improve property system to accurately determine the value for designable, scriptable, stored, and user
- Improve the meta object system for properties, enums, and flags
- Add new data members for QMetaProperty, change constructor
- Register enums and flags for CsCore
- Add new catch unit tests for properties and enums
March 2022
- Register enums and flags in CsGui, required for CS Designer
- Correct enum registration in CsNetwork
- Add methods to set and retrieve the internal QWidgetItemFactory object
- Correct default values for QMetaProperty::isUser()
- Add POWER architecture detection
- Support for OpenSSL 3 added to CsNetwork
- Standardize variable names for QDataStream in CsCore
- Fix QMultiMap insert() when a hint iterator is passed
- Relax rules to check if the geometry is set correctly on Windows
- Require CsXml when building CopperSpice
April 2022
- Remove Fedora 32 from CI Server
- Add Debian 11 and Fedora 35 to CI Server
- Update zlib from 1.2.11 to version 1.2.12
- Resolve issue when calling setChecked() on a radio button with no parent
- Add Catch2 source to distribution, remove catch find_package() function
- Standardize variable names for QDataStream in CsGui
- Standardize variable names for QDataStream in CsOpenGL
- Move swap() functions out of the std namespace
- Add move constructor and move assignment for QHostInfo
- Expand Q_GLOBAL_STATIC macro in CsNetwork
- Improve variable names in CsMultimedia methods to synchronize with API documentation
- Change handling of String data in exec() to use SQLITE_TRANSIENT
- Add the CsXml library as part of the minimum build
- Initial release of CS Designer Application
CopperSpice | 1.7.4 release |
KitchenSink | 1.7.4 release |
CS Designer | 1.0.0 release |
May 2022
- Update build files to support cross-compiling for Raspberry PI
- Add new CS Overview documentation instructions for building CopperSpice for Raspberry PI
- Add Raspberry PI to CI Server
- Update catch unit tests for type traits
- Update Catch2 to support newer operating systems
- Remove unnecessary template parameter in QFutureInterface to support GCC 11
- Add new method in QTemporaryDir
- Modify build system to create SVG image format plugin
- CopperSpice Journal expanded to 24 unique GUI examples with full explanations and multiple technical tutorials
June 2022
- Significant improvements to the CS API documentation
- Add links to the CopperSpice Journal in the CS Overview documentation
- Correct QStringView chop() method
- Add new catch unit tests for QString and QStringView
- Development on a new graphics library
- Comprehensive modifications to DoxyPress application
July 2022
- Migrate Centos 8 to Rocky Linux 8.6 in CI
- Improve markdown and parsing support in DoxyPress documentation generation
- New command added in DoxyPress to ensure inherited methods are documented
- Continue development on a new graphics library to support a Vulkan surface
- Add API documentation for the new CsVulkan library
- Disable searching for PulseAudio on Mac OS X
August 2022
- Remove Ubuntu 16.04 from CI Server
- Add Ubuntu 22.04 to CI Server
- Upgrade FreeBSD 12.2 to 13.1 on CI server
- Prevent a warning using CMake 3.17 or newer when searching for the XCB package
- Improve implementation of QUuid to resolve a GCC compiler warning
- Correct compiler warning in QTranslator
- Fixes memset() warning reported in GCC 11
- Update QString unit tests
- Expand range of supported CMake versions
- Extensive work on new CsVulkan library
- CopperSpice Journal expanded to 31 unique GUI examples with full explanations and multiple technical tutorials
September 2022
- Add Mac OS X CI 11.5 to CI server
- Remove Mac OS X 10.16
- Merge CsVulkan development branch
- Change the way PkgConfig is found in CMake build files
- Refactor QStandardPaths for Windows, minor changes for Unix files
- Update catch unit test for QSettings, add new tests
- Release new CsVulkan library
- Support for CopperSpice 1.6 moved to LTS
- CopperSpice 1.7.4 is now the stable release
CopperSpice | 1.8.0 release |
KitchenSink | 1.8.0 release |
CsLibGuarded | 1.3.0 release |
CS Designer | 1.0.1 release |
Diamond | 1.4.0 release |
DoxyPress | 1.5.0 release |
DoxyPressApp | 1.5.0 release |
- Register enum for dynamic usage
- Minor changes to CsCore to improve user application compile times
- Add missing GUI prefix to macros in one file
October 2022
- Add over 300 new catch tests for CsNetwork
-
ODBC SQL plugin
-
Remove QLatin1String and QLatin1Char
-
Change 0 to nullptr
-
Untangle code in UNICODE define
-
Reformat source code
-
Change isNull() to isValid() for QVariant
-
Rename several static methods
November 2022
- Update QStringParser class to support section() with a QRegularExpression
- Add new QStringParser section() unit tests
- Modify CsNetwork build file to export SSL status
- Remove unused private header in CsNetwork
- Multiple changes for SQL support
- Enable building ODBC SQL plugin
- Modify build files to use system SQLite3 when found
- Add instructions for building OpenSSL on Windows to the CS Overview documentation
- Modify the CsLibGuarded library CMake build files to support exporting targets
- Modify the CsSignal library CMake build files to support exporting targets
- Modify the CsString library CMake build files to support exporting targets
December 2022
- Move CsCore embedded CsLibGuarded source files to src/annex/cs_libguarded
- Move CsCore embedded CsSignal source files to src/annex/cs_signal
- Move CsCore embedded CsString source files to src/annex/cs_string
- Enhance source and test CMake files to use target_include_directories()
- Add calls to find_package() for CsLibGuarded, CsSignal, and CsString in the top level CS CMake file
- Redesign CMake files to find a system version of CsLibGuarded, CsSignal, and CsString when building CsCore
-
If a system version of the given library is found and the CMake variable CS_INSTALL_MODE is Package, link with the system version and do not copy the headers to the install folder
-
If a system version of the given library is found and the CMake variable CS_INSTALL_MODE is Deploy, link with the system version and copy the headers to the install folder
-
If no system path was specified or the system library was not found, the files located in src/annex will be used
- Add functionality when calling find_package(CopperSpice) from a downstream project
-
Add support to pass a version number in the format find_package(CopperSpice x.y.z)
-
When building on MSVC or when the downstream CMake variable CS_CHECK_BUILD_TYPE is true, the build type of the downstream project must match the build type of CS, otherwise the find package fails
- Correct a template issue when building CsVulkan on MSVC
- Register additional enums and flags, required for CS Designer
2023
January 2023
- Support unsigned enum values in QMetaEnum
- Redesign numeric conversions in QVariant
- Update copyright for all projects
CopperSpice | 1.8.1 release |
KitchenSink | 1.8.1 release |
CsCrypto | 1.0.1 release |
CsLibGuarded | 1.4.0 release |
CsPaint | 1.1.1 release |
CsSignal | 1.3.0 release |
CsString | 1.4.0 release |
CS Designer | 1.0.2 release |
Diamond | 1.4.1 release |
DoxyPress | 1.5.1 release |
DoxyPressApp | 1.5.1 release |
February 2023
- Correct enum data type
- Redesign QSettings to use std::unique_ptr
- Remove internal pointer classes which are no longer used
- Update winver for Windows
- Remove obsolete Windows platform code
- Add new classes for CsUniquePointer and CsUniqueArrayPointer based on the C++ Standard Library for std::unique_ptr
- Reimplement QScopedPointer and QScopedArrayPointer using CsUniquePointer and CsUniqueArrayPointer
- Add
QUniquePointer
and QUniqueArrayPointer
as a typedef for QScopedPointer and QScopedArrayPointer respectively
- Change class name QScopedPointerPodDeleter to QMallocDeleter, mark QScopedPointerPodDeleter as deprecated
- Add new catch tests for QScopedPointer and QScopedArrayPointer
- Update documentation for pointer classes
March 2023
- Remove Fedora 33 and Fedora 34 from CI Server
- Add Fedora 36 and Fedora 37 to CI Server
- Windows 64 MinGW CI migrated from 7.3 to 10.4
- Support building on newer versions of MinGW ( QFileSystemEngine )
- Add missing inline in QString8 to correct a DLL export warning
- Add char8_t support in QString16
- Remove obsolete header files
- Multiple corrections to resolve enhanced compiler warnings
- Rework regex code to remove deprecated std::iterator
- Correct pkgconfig ld -l flag
- Improve compiler warning messages
April 2023
- Remove Debian 9 from CI Server
- Create a new MinGW git repository
- Release new MinGW 10.4 distribution, contains the majority of POSIX development utilities
- Improve implementation of qsrand() and qrand() to remove a memory leak
- Correct CLDR processing for group separator and decimal symbol based on locale
- Add new catch test for QLocale, QVariant, and QByteArray
- Update CsSignal and CsLibGuarded libraries, modify the mutex which guards connections
May 2023
- Modify catch tests
- Fix compiler warnings
- Enhance CsUniquePointer and CsUniqueArrayPointer
- Update QUniquePointer
- Code clean up
CopperSpice | 1.8.2 release |
KitchenSink | 1.8.2 release |
CsLibGuarded | 1.4.1 release |
CsSignal | 1.3.1 release |
CS Designer | 1.0.3 release |
- Modify csPrintable #define to eliminate a copy
- Switch to using csPrintable() in code base
- Add missing include in regex code
June 2023
- Clean up warnings in JavaScriptCore and WebKit
- Remove Q_UNUSED macro, use C++ syntax
- Expand macros for POSIX system calls
- Initial release of the new CsPointer library
- Speakers at "C++ on Sea" conference in Folkestone, England
July 2023
- Expand Q_GLOBAL_STATIC macro, reduces atomic calls
- Resolve multiple warnings
- Improve catch tests
- Add additional catch tests
- Integrate CsPointer library with CopperSpice (in progress)
August 2023
- Upgrade FreeBSD 13.1 to 13.2 on CI server
- Improve FindMySQL build files to locate MySQL and MariaDB
- Update internal data types for MySQL plugin
- Update metatype names for SQL
- Change GUI style sheets to use iterators, improves performance
- Add CsGui catch tests to validate GUI style sheet css stylesheet changes
September 2023
- Release MinGW 11.4, MinGW 12.3, and MinGW 13.2
- Each distribution contains the compiler and POSIX development utilities
- Expand macros, remove unnecessary statements
- Expand try / catch macros, use standard syntax
- Remove obsolete macros
- Remove unused global functions
- Expand macro using the alignof operator
- Remove unused namespaces
- Expand and remove obsolete internal macro
- Add defines for newer versions of Windows and OS X
- Change static_cast to a dynamic_cast for type safety
- Change qobject_cast to dynamic_cast, test object for nullptr, use range based for()
- Standardize and improve warning messages in CsGui
- Improve variable names in Signal/Slot declarations and methods
- Change Qt::UTC to QTimeZone::utc() and setTimeSpec() to setTimeZone()
- Modify various files to use a QTimeZone instead of a timeSpec enum
- Change data types and variable names in QTimeZone::OffsetData structure
- Replace QTimeZone forward declaration with an include in qdatetime.h
- Rename platform specific timezone files
- Move QTimeZone private methods into non private source file
- Rename QDateTimeParser defines
- Relocate QDate and QTimeZone defines
- Change nullJd() method to INVALID_JD static constexpr variable
- Add default timeZone parameter to currentDateTime(), improve implementation
- Redesign epochMSecsToLocalTime() and localMSecsToEpochMSecs()
- Add missing fallthrough statement in multiple places
- Use {} initialization instead of memset
- Change massageAdjustedDateTime() to use a QTimeZone
- Simplify data stream operators for QDateTime
- Redesign QDateTimePrivate inheritance
- Clean up constructors
- Modify several QDateTime methods to use a default QTimeZone
- Remove QDateTimePrivate::toMSecsSinceEpoch(), implement QDateTime::toMSecsSinceEpoch()
- Refactor additional QDateTime methods
- Remove obsolete methods which used time spec
- Simplify QDateTimePrivate methods
October 2023
- Remove Fedora 35 from CI Server
- Add Fedora 38 to CI Server
- Remove the ability to move a scoped pointer, update catch tests
- Undo slot change in QAbstractSocket
- Prevent calling setModel() when an item is being destroyed
- Standardize and improve warning messages in CsCore and CsGui
- Resort header files
- Update from Unicode 11 to Unicode 15.1
- Update from CLDR 39 to CLDR 43 ( timezone support )
- Update source code to generate Unicode 15 tables
- Modify python source to support CLDR 43
- Add enum values for new supported countries, languages, and scripts
- Add new generated locale and time zone data in CsCore
- Update enums in CsGui for Harfbuzz
- Update Harfbuzz to version 8.2.2
- Add support for Unicode 15 in the XCB plugin
- Update API documentation to include new Unicode values
- Merge Unicode git branch
- Improve QDateTime operator methods
- Remove several unused #defines related to QDate
- Remove obsolete methods in QTimeZone
- Revise methods QDateTime::offsetFromUtc(), QDateTime::setMSecsSinceEpoch(), and QDateTime::setTimeZone()
November 2023
- Add the following new methods
-
QDate::endOfDay()
-
QDate::startOfDay()
-
QDateTime::addDuration()
-
QDateTime::currentSecsSinceEpoch()
-
QDateTime::timeRepresentation()
-
QDateTime::setSecsSinceEpoch()
-
QDateTime::toSecsSinceEpoch()
-
QDateTime::toStdSysMilliseconds()
-
QDateTime::toStdSysSeconds()
- Added new methods which require std::chrono, c++20 must be enabled
-
QDate::addDuration()
-
QDate::fromStdSysDays()
-
QDate::toStdSysDays()
-
QDateTime::fromStdLocalTime()
- Add QTimeZone move constructor
- Refactor OS X specific QTimeZone methods
- Add new catch header to test if std::chrono is available and supports C++20
- Add 250 new catch tests for QDate, QDateTime, QTime, and QTimeZone
- Rewrite API documentation for QDate, QDateTime, QTime, and QTimeZone classes
- Merge QDate git branch
- Clean up header files and improve formatting
- Support multi character locale data in QStringParser
- Change variable names for consistency
December 2023
- Update Rocky from 8.6 to 9.3 on CI Server
- Add Rocky 9.3 to CI Server
- Add Debian 12 to CI Server
- Update MSVC from 16.11.23 to 16.11.32 on CI Server
- Modernize QBrush and remove internal macro
- Multiple improvements in QVideoWidget
- New classes added to testing
- Add new test cases for existing files
- Use method pointers in calls to connect()
2024
January 2024
- Revise and standardize warning messages
- Variety of different changes to clean up compiler warnings
- Remove warning on MSVC
- Improve how Windows OS version is determined
- Add new QSysInfo::windowsEdition() and QSysInfo::macEdition() methods
- Redesign usage of QT_NO_DEBUG and QT_DEBUG
- Correct memory leak in network sockets
- Update copyright for all projects
- Support for CopperSpice 1.8 moved to LTS
- CopperSpice 1.9.0 is now the stable release
CopperSpice | 1.9.0 release |
KitchenSink | 1.9.0 release |
CS Designer | 1.1.0 release |
Diamond | 1.5.0 release |
DoxyPress | 1.6.0 release |
DoxyPressApp | 1.6.0 release |
February 2024
- Modify the readme file, add an external link to the CS style guide
- Remove unnecessary inline keyword
- Add mixed case header file in CsMultimedia
- Organize include files
- Standardize formatting using AStyle and the CS style guide (CsCore)
- Change typedef to a using statement or expand the data type
- Add default in switch to avoid warnings
- Add showHelp() method to QCommandLineParser
- Improve QCommandLineParser unit test
- Test if the model is a nullptr
- Correct warnings for override, shadowing, and unused parameters
CopperSpice | 1.9.1 release |
CS Designer | 1.1.0 release (using CS 1.9.1) |
March 2024
- Fix potential memory leak
- Rename QWidget member variable to avoid shadowing in user code
- Add constexpr to static const values
- Correct compiler warning in unit test, add new unit tests
- Refine enums for optimization and readability
- Remove unreachable code, change variable names
- Eliminate comments containing a variable
- Update or remove comments and unused debugging
April 2024
- Add new QString and QVariant unit tests
- Remove unnecessary inline keyword
- Various improvements for readability and to reduce warnings
- Remove unnecessary inline keyword
- Refactor debugging macro defines
- Guard debug() output with new
CS_SHOW_DEBUG_*
macros
- Remove unused debug messages, change qDebug() to qWarning()
- Correct socket test on Unix
May 2024
- Correct multiple issues with the debug build
-
Remove extraneous debug messages
-
Modify debug code to remove compiler warnings
-
Add missing include files
-
Improve qDebug() and printf() messages
- Guard debug() output with new macros, add missing guards (continued)
- Add missing overload for operator<< in qdebug header
- Add support to output a QVariant in a qDebug() message
- Remove obsolete calls to QString::sprintf()
- Modify QTimerInfoList to support debug output
- Change variable names for readability and to reduce compiler warnings
- Guard debug() output with new CS_SHOW_DEBUG_* macros (CsGui)
- Correct fallthrough issue in styles
- Register two enums for CsDesigner
- Implement hasStdCppSet() to test if a write property exists
- Remove debug in pdf output
- Delete unused header files
- Change message from debug to warning
- CS Designer Development
-
Show absolute file path for recently opened files
-
Modify code to remove compiler warnings
-
Remove obsolete debug messages
-
Minor improvements in the code base
June 2024
- Update Arch on CI
- Remove Fedora 36 from CI
- Remove Fedora 37 from CI
- Add Fedora 38 to CI
- Add Fedora 39 to CI
- Remove Ubuntu 18.04 from CI
- Add Ubuntu 24.04 to CI server
- Remove Rocky 8.9 from CI
- Consolidate implementation for keyboard events in graphics scene
- Add new macro for OpenGL debug
- Update assert() messages
- Improve warning messages
- Redesign getProcAddress(), Windows platform
- Remove excessive debug messages and unused debug methods
- Inside a guarded DEBUG macro, change qWarning() and printf() to qDebug() and improve messages
- Adjust generated macro syntax and newlines in uic
- Update uic class map
- Remove verbose settings in platform files
- Guard debug() output with new macros, add missing guards (plugins/platforms)
- Correct qtransform logical test in debug code
- Change debug output for QObject, use a bit cast
- Remove or default copy constructor
- Modify operator<<() debug messages, improve variable names
July 2024
- Restructure code, variable name changes for documentation readability
- Change enum to static constexpr const
- Expand multi identifier declarations
- Correct call to use std::move()
- Use std::launder() to fix pointer data type
- Refactor CsString iterator, add advance_storage() method to improve performance
- Add new QString unit tests
- Prevent a warning in a QMetaEnum unit test
- Sort include file names and forward declarations
August 2024
- Redesign CS_GADGET macro
- Add Windows platform code to verify the OpenGL version, only create context if valid
- Add better error checking in QOpenGLWidget
- Fix keyboard accelerators for menus
- Update CopperSpice UI files
- Correct multiple warnings
- Add wrappers for qHash() functions
- Add erase() and insert() overloads for several container classes
- Add new container catch tests
- Correct dependency for OpenGL
- Fix CMake module for GObject2 for different versions of CMake
- CS Designer Development
-
Initialize meta data for QToolBar
-
Update UI files
-
Minor improvements in the code base
-
Correct multiple issues when accessing sub-properties in the Property Editor
-
Enable various methods to initialize default property values
September 2024
- Upgrade FreeBSD 13.2 to 13.3 on CI server
- Release MinGW 10.5, MinGW 11.5, and MinGW 12.4, and MinGW 13.3
- Release new distribution for MinGW 14.2
- Each distribution of MinGW contains a compiler, debugger, and POSIX development utilities
- Update minimum version to CMake 3.18
- Update CMake for all CS projects and external libraries
- Adjust rpath for linux, corrects dynamic loading of shared libraries
- CopperSpice 1.9.2 release
CopperSpice | 1.9.2 release |
KitchenSink | 1.9.2 release |
Designer | 1.2.0 release |
Diamond | 1.5.1 release |
DoxyPress | 1.7.0 release |
DoxyPressApp | 1.7.0 release |
| |
CsCrypto | 1.0.2 release |
CsLibGuarded | 1.4.2 release |
CsPaint | 1.0.2 release |
CsPointer | 1.0.1 release |
CsSignal | 1.3.2 release |
CsString | 1.4.1 release |