This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: how to convince someone about migrating from gcc-2.95 to gcc-3.x
- From: Benjamin Kosnik <bkoz at redhat dot com>
- To: gcc at gcc dot gnu dot org
- Cc: gun_raj at yahoo dot com
- Date: Mon, 2 Apr 2007 05:46:28 -0400
- Subject: Re: how to convince someone about migrating from gcc-2.95 to gcc-3.x
> if not for the real compiler as such, what advantages would i get on
> using newer glibc, libstdc++ ?? would these features be tied to
> some kernel version linux-2.4 vs 2.6 ( something like thread
> support).
Let's step back a bit.
If you look at this page:
http://gcc.gnu.org/releases.html
The age differences and new features between releases become clear
with some digging.
>From this, one sees the inception dates for various gcc releases:
2.95.x == July 31, 1999
3.4.x == April 18, 2004
4.1.x == February 28, 2006
If you clink on the version name link (say GCC 4.1.0), you'll go to an
informative page (http://gcc.gnu.org/gcc-4.1/) that gives details on
the release series. Clicking on the link that says "changes" will give
you details about what changed in the GCC 4.1.0 release from the last
release.
Hopefully that makes answering this kind of question easier for you.
For your specific questions:
1) between gcc-2.95.x and gcc-3.2.x, libstdc++ has been completely
replaced. This new library is called "libtdc++-v3" and implements
the ISO standard. Noticeable differences between 2.95 are
templatized iostreams, wide-character support, localization,
namespace support, etc etc. Later versions include a "Safe STL"
component in the libstdc++ debug mode, abstractions for threads,
implementations for TR1, a performant std::string class in
ext/__versa_string, various optimizing replacements for std::
allocators, etc. etc.
2) between gcc-2.95.x and gcc-3.2.x, gcc-3.2.x to gcc-3.3.x, and
gcc-3.3.x to gcc-3.4.x, the C++ ABI implemented by the g++ compiler
changed. This has been changed to implement and industry-standard
C++ ABI. This is advantageous to you because with this ABI, g++ and
other compilers can now inter-operate (assuming you are using
compatible libstdc++ versions.) Ie, you can use both g++ and
non-GNU compilers to compile your application, or parts of your
application.
3) between gcc-3.3.x and gcc-3.4.x, the C++ parser in g++ has been
completely replaced. This results in clearer error messages, and
faster, more correct parsing.
4) between gcc-3.4.x and gcc-4.0.x, the underlying optimizers for GCC
have been replaced, moving to an SSA form.
As you can see, there has been considerable change in compilers and
libraries in the almost 8 years since you changed tools.
I'd suggest you start moving to a new toolset, if only on an
experimental or provisional basis. Furthermore, I'd recommend a
strategy of trying to update your toolset every two years or so, in
order to spread out the work required to stay current with compilation
technology.
There will no doubt continue to be major advances in the C++ toolset
with the upcoming C++0x ISO standard. And there will no doubt also be
advances in language support (Open MP is added in gcc-4.2.x), and
optimizer efficiency.
best,
benjamin