GCC 3.4.0 Released 68
AaronW writes "While checking the GCC website I saw that GCC version 3.4 was officially released on April 18th. Version 3.4 includes numerous changes and enhancements, including better optimization, and the ability to build a profiled version of gcc which is 7.5-11% faster on i386 hardware. Be kind and please use one of the mirror sites."
Not officially released yet (Score:5, Informative)
new feature (Score:5, Funny)
pch (Score:3)
Re:pch (Score:4, Informative)
Precompiled headers are disabled by default in this release.
Re:pch (Score:2)
It should be noted that.. (Score:3, Informative)
There are some known defects in the current precompiled header implementation that will result in compiler crashes in relatively rare situations. Therefore, precompiled headers should be considered a "technology preview" in this release.
PCH and auto* (Score:3, Interesting)
but who (Score:5, Funny)
That's who (Score:3, Insightful)
Ideally... (Score:5, Funny)
They did not think about
Profiling shared libraries (Score:5, Interesting)
I *really* need to profile a shared library, and building it as a staticly linked executable is not an option.
Re:Profiling shared libraries (Score:2)
Sorry - typo (Score:2)
Re:Profiling shared libraries (Score:3, Informative)
Of course, gprof doesn't mention sprof in the manual, info pages, or in the error message, nor is it mentioned in any of the web pages about this subject.
GCJ (Score:4, Interesting)
I'm currently in the process of choosing the language/tools for a cross platform app (open source, of course) and I've narrowed the selection down to Java+gcj and c++. Native executables & widgets are a must, since my target audince most likely won't have a JVM installed.
Re:GCJ (Score:3, Informative)
Take the fact that redhat compiled eclipse itself using gcj. You can get the RPM off their website somewhere.
Re:GCJ (Score:2)
Natively Compiled Eclipse [redhat.com]
GCJ with Java+QT (Score:3, Informative)
My only complaint was that the occasional completely random feature seemed not to work, as though they had missed a few bindings.. I can't think of any examples, but it was nothing serious.
Re:GCJ (Score:5, Informative)
Unfortunately, these changes are not a part of the 3.4.0 release of GCC/GCJ and will only be available from 3.5.0 (or 4.0.0, as the case might be).
Re:GCJ (Score:3, Informative)
Have a look at http://www.thisiscool.com/gcc_mingw.htm [thisiscool.com] for the windows version.
Also the java application still works as a java application using Linux and MacOSX (still using swt).
Re:WTF? (Score:5, Funny)
Re:WTF? (Score:1)
Re:WTF? (Score:2)
sorry for any Lameness filter breakage
Re:WTF? (Score:1)
Thanks (Score:5, Informative)
If you run across them, be sure to thank Paolo Carlini, Petur Runolfsson, and Jerry Quinn for making 3.4 iostreams as fast as (and often faster than) Glibc's stdio. Thank them, too for making filebuf support large files (>2G) natively without any code or build changes needed, on any target that allows them.
Worth noting, too, is that this is the first release in which the library is part of the ABI. Every previous release since 2.95 has had to increment the libstdc++.so version number, but future 3.4 (and maybe 3.5) releases should be backward compatible. Ask your distribution maintainers to ship 3.4-built versions of all C++ libraries they package, so that they will be compatible with programs built with this and future releases.
Re:Thanks (Score:4, Informative)
Simple: they don't. They call read() and write(), and do their own buffering. Even if they did use fread() and fwrite(), they would still be able to do their their own per-character buffering, and their own numeric formatting and parsing, and thus be faster.
p.s. I call "Troll".
Broken C++ ABI ... again (Score:5, Informative)
What do you think the outlook is for binary compatibility with 3.6?
Re:Broken C++ ABI ... again (Score:2)
Re:Broken C++ ABI ... again (Score:3, Informative)
So go and read this very carefully [gnu.org]:
The C++ ABI Section 3.3.3 specifications for the array construction routines __cxa_vec_new2 and __cxa_vec_new3 were changed to return NULL when the allocator argument returns NULL. These changes are incorporated into the libstdc++ runtime library.
Re:Broken C++ ABI ... again (Score:1)
How does that affect binary compatibility ? This should only affect out-of-memory conditions which usually result in program termination anyway, right ?
Re:Broken C++ ABI ... again (Score:1)
The aliens came down in their flying-saucer one night and told me so so it must be true :-)
Re:Broken C++ ABI ... again (Score:5, Interesting)
Well, if you want to be technical about it, it's not "Broken" C++ ABI, but a "Finally fixed, even though that makes it no longer bug-for-bug compatible with older GCC C++ ABI's"...
As I understand it, they've been working towards a more standards compliant C++ implementation, and that's why the binary compatibility gets lost.
I am, though, hoping that there was NOT a loss of compatibility between the 3.3.3 that I'm using now and the 3.4 series. Will find out once I clean off enough disk space to finish compiling up slack packages for myself...
Re:Broken C++ ABI ... again (Score:2)
Granted.
I understand they do it reluctantly, and only with good reason. I'm just depressed at how often it's happened.
Fixed C++ ABI ... finally (Score:1)
Nope, no need it turns out....
I THINK, like the Linux kernel, the odd-numbered 'minor' releases (e.g. 2.9.x, 3.1.x, 3.3.x, etc.) are the 'development' branches, and the 'even' numbered ones are the 'release' ones...meaning that the binary compatibility changes actually took place in 2.9.x, 3.1.x, and (most importantly for me) 3.3.x.
In any case, I just dropped out of KDE (QT/KDE are C++...), updated to my newly-compiled 3.4.0 GCC/GCC-G++/GC
Re:Fixed C++ ABI ... finally (Score:2)
Yeah, I know, replying to myself...
A post above contradicts this, so I may be wrong about this...but I DO think I was remembering the binary incompatibility occurring in the 3.3 series correctly in this cas
Re:Fixed C++ ABI ... finally (Score:4, Informative)
Well, you are wrong in a number of ways:
1) Like you already noticed yourself, GCC doesn't have the even/odd numbered version logic of Linux. Each version number is a release version. Development versions have the next release version with a date attached to the version. The development process is formalized and is described here [gnu.org]
2) GCC 3.4 is a regular new version with a number of new features. It is certainly not a minor version with just some compile speed tuning. I would consider the changes from 3.3 to 3.4 bigger than the previous changes from 3.2 to 3.3.
3) The real oddball in the GCC 3.x series is GCC 3.2.x. This is just a bugfix version of GCC 3.1. However as some of the bugs fixed were a major C++ ABI issue and fixing those bugs lead to incompatibility, the GCC developers decicded to exceptionally increment the version number not following the regular release scheme.
Marcel
Why are you only using even-numbered releases? (Score:2)
The even==stable, odd==development pattern is only used by the Linux kernel. (And smaller projects that choose to imitate them.) No other major open source effort does the same thing, because every project manages its time differently.
Re:Why are you only using even-numbered releases? (Score:3, Insightful)
Re:Why are you only using even-numbered releases? (Score:2)
Ah, didn't know that. I'm a KDE guy.
Re:Why are you only using even-numbered releases? (Score:1)
Re:Why are you only using even-numbered releases? (Score:2)
But we've broken bincompat more often than that. And he asks about "3.6" when 3.5 hasn't even forked yet.
My thoughts and ramblings (Score:1)
Idle curiosity (Score:3, Interesting)
Re:Idle curiosity (Score:2, Interesting)
Maybe IFC and ICC work better if you're not doing anything complicated or using exotic hardware, they probably weren't tested
Re:Idle curiosity (Score:1)
Then you say.
Are you suggesting that GCC should be buggier so it can compete with ICC?
Re:Idle curiosity (Score:4, Informative)
MS "new" compiler compiles fast, optimizes well for both size and speed, and is very standards compliant.
BCC compiles very fast, optimizes well for size and speed, and is poorly standards compliant.
OpenWatcom is similiar to BCC
GCC (in the form of MingW) compiles slowly, optimizes well for speed but (very) poorly for size, and is very standards compliant.
Of the free beer options, on Windows, MS C++ 7.1 is the all-round winner imo. GCC/MingW is a very close second, however, with the main issues being much slower compile time (partially correctable via things like ccache, and the new pch support should help) and signifigantly larger binaries. In terms of standards compliance they're about equal, with GCC taking a slight lead.
gcc -Os (optimize for size) (Score:2)
This may be a stupid question, but... (Score:1, Interesting)
New Features (Score:5, Informative)
Thanks for #pragma once (Score:2, Informative)
That makes it easier for me to port Visual C++ code to GCC.
Thanks a lot.
Tom.