This page shows the C++11 features that are added by each version of GCC, in case you're curious how C++11 support has changed from 4.7 to 4.8: http://gcc.gnu.org/projects/cxx0x.html
EDIT: I see that some of the C++11 changes are also listed on the change log (http://gcc.gnu.org/gcc-4.8/changes.html), but that page seems to be missing the changes in concurrency support: bidirectional fences, memory model, `at_quick_exit`, and thread-local storage.
Indeed. This is an example of a sane and healthy competition between two giants (or C/C++/ObjC oligarchs :D) that ends up benefiting the end consumer the most.
I wish it worked the same way in all other sectors. The open source part is probably what makes it easier to stay "pure" in spirit, i.e. no under-the-counter fixing, no bullshit.
GCC 4.8.0 released [2013-03-22]
GCC internals documentation [2013-01-23]
The GCC Resource Center at IITB is providing documentation, tutorials and videos about GCC internals with support from the Government of India.
ARM AArch64 support [2012-10-24]
A port for AArch64, the 64-bit execution state in the ARMv8 architecture, has been contributed by ARM Ltd.
IBM zEnterprise EC12 support [2012-10-10]
Support for the latest release of the System z mainframe zEC12 has been added to the architecture back end. This work was contributed by Andreas Krebbel of IBM.
That thread was 5 days ago, at which time people agreed only a RC had been released, and that 4.8 would be released in about a week. As of now it appears 4.8 has either been released or is imminently about to be.
With all these folks excited by gcc releases (and really the C++11 features) it would seam like there's lots of folks still using C++. However, I have the hardest time in the world recruiting good C++ engineers (here in NYC at least).
What kind of things are you doing with C++? Also, what do you consider a "good C++ engineer"? I'm pretty sure I would fail a C++ interview requiring me to know trivia about obscure parts of the language, yet I do use C++ successfully almost every day.
Sorry for being overly vague with the term "good".
I guess I would break it down to 3 categories.
1. Solid understanding of CS concepts. You don't have to build a Red-Black tree in the interview (ugh) but you should know properties of self-balancing trees and when to use them.
2. Effective use of C++ . Not looking for C++ trivia here (or someone who memorized the C++ lite FAQ). But things like good practices when it comes to memory management, using templates, virtual destructors, functors (and operating / passing functions).
3. Good idea how things work under the hood. So concepts like atomic variable (why and when to use it), bit-packing data, avoiding branching in hot code paths, and allocation strategies (memory pools).
Am I asking too much? I've found out that folks who have a solid grasp of CS, language and how things work under the hood can reason more complex things they don't know (yet).
We're using C++ to build a relational database for storing lots of multi-dimensional time series data. We're leveraging Google's supersonic for execution (https://code.google.com/p/supersonic/). The other important pieces (like the IO subsystem, indexing, query planing, sharing & routing) we've built ourselves.
The problem is that there is a wide range of different coding styles, between "C with sanity" and "Boost.Spirit". You seem to lean more towards the C side, but that's not clear from the "C++ expert" label alone.
Yep, our local c++ tough guy figures he's a 6/10 in c++ knowledge, and we're unsure if you can make it to 7/10. Yet, millions of instances of his code are still successfully running as we speak.
I once had someone ask me if I was a c++ expert, I said no, did not get an interview. I guess I should have lied and hoped the questions they asked me fell in the realm of c++ I know.
I forgot to add that C++ is a big language so I doubt that anybody out there can hold all the corner cases in their head without going to documentation.
There might be other changes under the hood, but the only thing that's changed in the gccgo manual from 4.7.2 to 4.8.0 is the addition of a new flag, -fgo-relative-import-path.
Off Topic Question: As a compiler (C++ compiler esp) slides through its versions, it gets better optimising features and every newer version can produce faster binaries.
Can this cycle end? Or, will the cycle continue forever? (Like gcc 5 more efficient, gcc 6 even more efficient.....etc)
Consider the law of energy conservation. I'd regard performance the same way, that is, we get closer and closer to the optimum runtime for a given problem, but can never exceed it. For example you cannot solve a NP-complete problem in polynomial time or better. Standard C++ guarantees a lot in comparison to higher-level languages. So, C++ is constrained more than i.e. Haskell. When strong AI is achieved, I'd suppose you'd be able to achieve the optimum runtime for any given problem.
Even the 4.8 tarballs have not been uploaded to FTP servers: http://ftp.gnu.org/gnu/gcc/
Until then, let's wait.
EDIT: Looks like the tarballs are being mirrored, and 4.8 is indeed out.