Add a Cpplang slack channel for copperspice

Post Reply
Posts: 5
Joined: Sat Oct 19 2019 3:12 pm

Add a Cpplang slack channel for copperspice

Post by rconde01 »

Qt is there...I think it would be useful to have a copperspice channel as well.

Posts: 281
Joined: Sat Apr 04 2015 2:32 am

Re: Add a Cpplang slack channel for copperspice

Post by barbara »

Thanks for suggestion, this is something to consider. Currently we are using this forum and github.


Posts: 49
Joined: Mon Oct 14 2019 6:37 pm

Re: Add a Cpplang slack channel for copperspice

Post by CandL »

I posted on the Qt Slack channel a few days ago regarding Copperspice. I figured hey CopperSpice IS Qt, just not made by the "Qt Company"

What I got for my question was interesting ....

Code: Select all

CandL 6:37 AM Anybody play with CopperSpice a fork of Qt 4.8/5? If so impressions?

cancel 6:37 AMextremely slow, do not use (edited) 

CandL 6:38 AMBased on what data? How recent?

cancel 6:38 AM it does not get updated very often, compared to Qt. based on using it for 5 minutes

CandL 6:38 AM The good news is they are LGPL 2.1, and don't claim the right to audit you on site with 5 days notice
when did you last use CopperSpice?

cancel 6:42 AM i don't think it has received any significant updates in years other than updating some multimedia playback files repeatedly (edited) 

CandL 7:12 AM Sorry real work interruption ... CopperSpice 1.5 released  June 2018 , 1.6 released  August 2019
So yes it appears a new release every 12 months ... and I agree the "Qt Company" out paces the timeline

cancel 7:17 AM go use it, then
CandL 7:18 AM worth a try
So potentially a lot of misinformation out there.

This article:
is sited a lot.

All benchmarks were done with CopperSpice 1.2.2, Qt 5.6.0 or Qt 4.8.3, GCC 6.1

Qt 5 (moc) Verdigris CopperSpice
Compilation time 1:57 1:26 16:43
Binary size 1.32 MB 1.36 MB 115 MB

CopperSpice Qt 4 Qt 5
(CsCore, CsGui) (QtCore, QtGui) (Qt5Core, Qt5Gui, Qt5Widgets)
56ms 16ms 17ms

Posts: 281
Joined: Sat Apr 04 2015 2:32 am

Re: Add a Cpplang slack channel for copperspice

Post by barbara »

Wow, thank you for this information. We agree that a good number of Qt users do not fully understand what CopperSpice is. Here are few items for you to ponder. Sorry if this is a bit long but I would like to give you some of the background.

Our release schedule is not set in stone so this happens when significant features are available. New binary files are actually updated at least three times a year, which is more frequent than Qt we believe.

CopperSpice is not Qt since we went in a different direction. We are maintaining a similar API but willing to break ABI whenever it makes sense. Some like to say all we did was to remove moc. Yes, we did that and CopperSpice has full run time reflection capabilities. We just have more compile time checks. CopperSpice goes way beyond this minor achievement. We have full support for UTF-8 strings which is the right way to handle strings. As an example, we were then able to remove about eight other internal string implementations buried in the guts of CsCore.

The container classes were all hand rolled. Now in CopperSpice they use the C++ STL through composition ( not inheritance ) so we gain all the functionality and testing of the STL. Did you know there are problems using range-based-for loops with Qt containers? Please keep in mind that they had a great design and approach for the time, but the standard library is much better than it was 15 years ago.

Verdigris was developed based on the ideas of CopperSpice and we have read some of his blogs. This is a stand alone approach that will not be incorporated in Qt. Since it generates tables that moc would have created many of the limitations in moc remain in place with Verdigris. We believe the Qt approach is to wait until meta classes are added to C++ which is most likely not going to happen until C++26.

We have seen the benchmarks someone released using a very old version of CopperSpice. These are compile time numbers, not run times. In the last week we just dropped support for Autotools and modernized our CMake build files. We also moved to C++17. Over the next few months we are going to revisit CsCore and optimize the heck out of this code so hold onto your hat.

Other areas which we improved include fixing a major flaw in atomics, separating QMap from QMultimap, support for move semantics, and doing our best to take advantage of the C++ standard.

There is a lot more information on our website and we happy to talk about where we started and where we are going.


Post Reply