which compilers do we want to support with KDE 4 ?

Kurt Pfeifle k1pfeifle at gmx.net
Sat Jan 21 16:42:49 GMT 2006

On Saturday 21 January 2006 10:32, Alexander Neundorf wrote:

> Do we want to support gcc < 3.4 for KDE 4 ?

I think: no!
(KDE 4 can't be "all things to all men")

The reasons:

The "Theory":
* there are 2 major ABI versions, represented by GCC 3.2 (ABI 1) and
  GCC 3.4 (ABI 2). GCC 3.3 is compatible with 3.2, 4.0 is compatible 
  with 3.4). GCC 3.4 can generate GCC 3.2 (ABI 1) compatible binaries 
  (via a compiler switch).
* GCC 4.0 is compatible with GCC 3.4

The Practice:
* there are many subtle differences between binaries compiled even with
  the same major GCC version on different boxes. (This is to a large
  part due to distros having patched their own 3.3.x to support features
  that were available in 3.4 CVS, or whatever).
* also, there are many subtle differences between 3.4 and 4.0 (even if
  they in theory should support the very same ABI version, and implement
  the same Itanium C++ ABI spec), due to lots of "bug fixes".

If you decide now that you will support many different GCC versions
with KDE-4.0, you will for sure also get these many different binaries
built. And you'll have to support them then too. (Even if only 20% will 
be on 3.2, they'll tend to take 80% of your support and development time,
I promise you this).

If you decide for only one (or few) versions, you'll get only these 
versions built. 

It is a sort of "Weichenstellung" (track switching point). 

A decision *now* will determine about a lot of saved, or wasted, time
in the future. All kinds of people (developers writing new code, 
developers fixing bugzilla items, users installing software or upgrading
their systems, packagers who build for their respctive distros....)
will many, many hours on multiple occasions if we decide (and announce) 
now that KDE 4.0 will be supported only for GCC 4.0.

Each GCC version you want to support will have its own family of bugs
and crashes in the future, for many years to come.

A KDE announcment will "force" many more people (even distros) to 
upgrade just because they will not like to miss KDE 4.0. We should not
be too shy about it -- KDE is a "star" amongst users. (Yes, we will also
loose some [users as well as developers], temporary; but very likely 
they'll come back too

> I think we should, otherwise we will loose a lot of developer time (updating 
> g++ means updating all C++ libs on the system, AFAIK), including mine.
> Is gcc 3.3 able to compile kdelibs/kxmlcore ?
> Is gcc 3.3 ABI compatible to gcc 3.2 ?
> What about gcc 3.0 and gcc 3.1 ?
> But I am afraid I am not able to get kxmlcore compiling with gcc 3.2.3, 
> somebody who knows more about this code and about templates should have a 
> look or give me some assistence.

See how it hinders you *now*? You'll repeat that exercise multiple times
over then next few years if you want to stay supporting 3.2 (and you'll 
force a lot of co-developers to also spend time to give their time to 
support users with 3.2 problems).

> Bye
> Alex
> P.S. this is currently the reason why there is no progress with the cmake 
> build of kdelibs

I think it is *much* more easy for a developer to upgrade his compiler,
than it is for a user to fight the many different and subtle problems that
will be occuring if there is code and binaries on systems that was written
for multiple ABI versions and also compiled with multiple compiler versions.

Even if it looks like spending (wasting?) time now to upgrade gcc (or maybe
even one's own distro on the development machine), it will save a *lot* more
time in the future, time that can be spend to write real code instead of
finding workarounds.

So -- wouldnt it be much better to make a clean cut now, and tell everybody
about it?


P.S.: Hmmm.... maybe GCC 3.4 will somehow be forced upon us as a version to 
      support, because the upcoming LSB spec may require it. Need to check.

More information about the kde-core-devel mailing list