GCC Turns 25
eldavojohn writes "With the release of GCC 4.7.0, the venerable and stalwart constant that is the GNU Compiler Collection turns twenty five. More ISO standards and architectures supported with this release and surely more memories to come from the compiler that seems to have always been."
pre-javaScript relics
I love GCC, don't get me wrong, but it seems to me from the research I've done that it's been left in the dust by Intel's and even Microsoft's compilers, which do a far better job at generating optimized code, especially for x86/x64. I have an application where I'd love to use GCC rather than a horrible vendor-specific C/C++ compiler to generate some ARM firmware, but I'm getting a lot of resistance due to its perceived poor/bloated code generation.
Can anyone confirm or deny this and make me at least able to justify GCC as a possible option again?
Karma: Excellent Birds (mostly as a result of listening to Laurie Anderson)
Thank you gcc - you've served so many of us, so very well. But now it's time to bow out gracefully, as we turn towards Clang and LLVM.
It's not just been left in the dust by Intel and MS's – it's also been left in the dust by Apple's (now BSDed) clang. It runs faster, produces faster code, produces better error messages, is more amenable for using parts in other tools, has a brilliant static analysis tool that comes with it, ...
No, it is not as simple as this. The GCC GPL exceptions are quite complicated. Just outputting some intermediate builds from your computer (flicking a switch in the compile arguments) suddenly makes your entire proprietary product GPLv3. That is a very scary thought for any corporate legal department. http://www.gnu.org/licenses/gcc-exception-faq.html
"Oh, you mean we accidentally released a GPL version of Microsoft Exchange server because of a toolchain change in our developer workflow. Oops...."
The FreeBSD project has already declined to upgrade its GCC implementation to the GPL version 3 release. That is one of the driving forces behind the move to clang/llvm within that community. So this really isn't quite so simple... The GPL v3 is quite scary to many corporations (as it was intended to be) and so they refuse to have anything GPLv3 installed on their machines at any level. I manage a 5 person development team and would always avoid anything GPLv3 without serious consideration of the implications.
They still do this with GCC. Because of the poor layering, getting a new target often requires hacking up various parts of the middle. Their goal is a working compiler, so they just do the minimum required to get their target working, at the expense of breaking others. These changes won't get incorporated into mainline GCC, so you're stuck with a GCC fork that's going to be unmaintained pretty soon.
In contrast, LLVM back ends are modular and quite easy to write and, more importantly, don't need to touch any of the rest of the system. This is why ARM is now investing quite a lot in LLVM and companies like Qualcomm have seemingly permanent job adverts for anyone with LLVM experience.
I am TheRaven on Soylent News
Actually, it was the result of GCC going GPLv3 that a number of companies ditched GCC. Apple did it (though they were long in the process of migrating away from GCC - it still took many years and OS releases (I think LLVM started appearling around 10.4 or so)). Apple's last contribution to GCC was to put in the necessary patches to support Grand Central Dispatch, in case someone else needed that code they have GCC and LLVM to choose from.
And many companies are instituting new "Open Source Usage Policies" that require anyone who even wants to contemplate using an open-source product fill out forms indicating its use and reasons for it (is it for internal use only (e.g., webserver/wiki/etc), or will it be distributed, final impacts etc). These get sent to the legal teams to scour what would happen to the released product(s), as well as what the obligations are. Sales and marketing get involved because if the final output is GPLv3, this could be seen as a competitive disadvantage with customers. And then possibly customers need to be consulted and informed on what they need to do.
And they also need to figure out if it's even *LEGAL* to do it. Because GPLv2-only code cannot be incorporated with GPLv3 code at all (fundamental incompatibility that even the FSF acknowledges), which means something has to give as the two cannot mix.
Anything compiled by gcc automatically becomes licensed by GPLv3. Each compiled executable maintains a copy of the original source code with the licensing terms attached.
I have left slashdot and am now on Soylent News. FUCK YOU DICE.