[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: first impressions of Red Hat 8.0



On Mon, 2002-09-30 at 09:14, Steven Pritchard wrote:
> And now the good stuff...
> 
>     * gcc has been updated to 3.2, which is almost certainly a good
>       thing (although it might be a while before you can compile a
>       stock kernel with it).

I'm not so optimistic.

The C++ application binary interface (ABI) has been in a state of flux
for a while now, to the point that you've really needed to be careful
when compiling and linking C++ code.  When you hear complaints about
"Red Hat's buggy prerelease compiler and incompatibility with the rest
of the world", this is the problem you're hearing about.

Word on the street is that gcc 3.2's ABI is "it", which means that it
should be compatible with future gcc releases, Intel's compilers, etc. 
So, everyone out there will be migrating to 3.2 at some point.  This
part is good.

The question everyone's asking, though, is this: what to do with
existing libraries?  If you mix C++ apps compiled with gcc 3.2 with C++
dynamic libraries compiled with gcc 2.96 (or vice versa), the results
will be... interesting. :-)  Remember that KDE, as an example, is almost
entirely C++; ask yourself how many freshrpms KDE apps you've installed,
and whether you'd like them to all go away now.

Now, the standard solution to this is to increment the soname - that's
the first number after the ".so" in the shared library name, so
libc.so.6's soname is 6.  That indicates binary-incompatible changes,
and is the secret to why Linux doesn't suffer from "DLL hell" like
Windows does.  Unfortunately, not many C++ library developers are taking
to this, so the standard solution seems to be to just rebuild everything
with the new compiler and tell the poor sap with older C++ apps "too
bad, upgrade or die".  (In other words - DLL hell.)

This also means that cross-distribution compatibility will suffer,
especially in environments like KDE which depend so closely on C++. 
Debian is already seeing problems like this.  We were hoping to be able
to make it possible for old C++ apps to run properly and still be
binary-compatible with cutting-edge distros like RH, but that may not be
possible anymore.

Sorry about being such a sourpuss. :-)


-
To unsubscribe, send email to majordomo@luci.org with
"unsubscribe luci-discuss" in the body.