This is the mail archive of the
libstdc++@gcc.gnu.org
mailing list for the libstdc++ project.
Re: new concept checks and the 3.0 ABI
- To: jason_merrill at redhat dot com (Jason Merrill)
- Subject: Re: new concept checks and the 3.0 ABI
- From: Joe Buck <jbuck at racerx dot synopsys dot com>
- Date: Mon, 9 Apr 2001 10:39:31 -0700 (PDT)
- Cc: bkoz at redhat dot com (Benjamin Kosnik), jbuck at synopsys dot COM (Joe Buck), libstdc++ at gcc dot gnu dot org
"Benjamin" == Benjamin Kosnik <bkoz@redhat.com> writes:
> > There's a difference between what is being attempted with the C++ ABI and
> > the C++ API. Nobody is expecting the C++ API (libstdc++) to be in a
> > completely finished state for the 3.0 release.
Jason writes:
> It's not an API question; the C++ library API is specified by the standard.
Correct.
> What I think Joe is asking about is the libstdc++ ABI; in other words,
> should people be able to expect that STL-using code compiled with 3.0 will
> link with code compiled with 3.1?
Yes, that is the question.
> In other words, should we commit
> ourselves to making only representation-compatible changes? Mark has
> expressed the opinion that we should. I'm ambivalent.
In practice, the answer is likely to be "it depends". Some classes shouldn't
be hard to freeze the data representation for (I mentioned vector<T>),
others might be more difficult.
Also, compatibility only really needs to be in one direction. Example:
we might factor out some common code in the STL and put it in object
form into libstdc++ 3.1. If the data representations remain the same,
this may mean that we can link a mix of 3.0 and 3.1 code, but ONLY if
we have the newer libstdc++, the older one will not do -- otherwise the
factored-out code (say vector::__insert_aux for the case of vectors
of PODs) would be missing and we have an undefined symbol. But 3.0
code would still work with the 3.1 libstdc++, which is the main thing
I'm interested in achieving to the extent possible.
If there's anything we can do to libstdc++ to make this easier to achieve
before the 3.0 release, now's the time.