> 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


Reply via email to