This is the mail archive of the
mailing list for the GCC project.
Re: C++ ABI testing issues, gcc-3.3 <-> gcc-3.2 compatibility
- From: Matt Austern <austern at apple dot com>
- To: bkoz at redhat dot com
- Cc: gcc at gcc dot gnu dot org, rth at redhat dot com
- Date: Fri, 2 Aug 2002 11:42:18 -0700
- Subject: Re: C++ ABI testing issues, gcc-3.3 <-> gcc-3.2 compatibility
On Friday, August 2, 2002, at 09:16 AM, Benjamin Kosnik wrote:
I think it's important to insure that gcc-3.3 and gcc-3.2 are at the
same C++ ABI before gcc-3.2 is released.
As far as I know, there is no official ABI testing as per the release
process. Several people have suggested ways to test this.
An ABI test suite is a good idea. Ultimately, of course, the real
test is the one users care about: can I generate a DSO (or, more
generally, an object file) with an old compiler, and link it to
something generated with the new compiler? That's the whole
point of ABI stability.
But I'm not sure this really addresses the main problem. A test
suite will make sure there aren't any accidental ABI changes. But
has that actually been a problem? Seems to me that the real
3.1/3.2 issue is intentional ABI changes: fixing ABI-related bugs in
3.1. The question is whether we'll find more bugs in 3.2, and make
intentional changes to fix them for 3.3.
Preventing intentional ABI changes is less a technical issue than
a management decision. Look at how Sun has maintained a
stable C++ ABI, for example. Mostly it's because they made two
decisions, and made a commitment to stick to them:
1. They decided that ABI stability was more important than
correctness. They decided that they will not fix certain kinds
of bugs, if bug fixes would break compatibility.
2. They decided that they would not release a compiler with
something that they called a frozen ABI until they'd tested it
thoroughly enough that they'd be sure there weren't many
(My guess is they also made a third unannounced decision:
that if they ever do introduce a new ABI it will be as an addition,
not a replacement, and that they will never stop shipping a
compiler that supports the current ABI.)
My impression is that we're not yet ready to make decision #1, that
at this point we still think correctness is more important than
stability. I also don't have the impression that we're ready yet to
make decision #2; I don't think anyone wants to delay the 3.2 release
for six months worth of testing. Am I right about both of those