Clang: C++11 support is now feature-complete
lists.cs.uiuc.edu
lists.cs.uiuc.edu
I don't really know how long LLVM has been mature yet, so maybe it's not used because it's rather new. And of course it's way more low level than the JVM. It's probably easier to go JVM and not implement your own garbage collector.
Still, this could be the "portable platform" of the near future.
[1] http://llvm.org/docs/tutorial/index.html#kaleidoscope-implem...
Aside from libraries, other reasons for it being unpopular include JIT compilation being slow for LLVM (compared to hand rolled implementations) lack of a mature GC infrastructure (for decent performance, iirc you are best off rolling your own with little/no help from LLVM) and general difficulties with the performance of compiled code for dynamic languages (many of its optimizations, e.g. LICM, TBAA, etc are unsuitable for dynamic languages. Other optimizations get tripped up by type guards, and cant do much useful work). Not to mention that LLVM is huge, and it can be a painful dependancy (especially given the above)
Another problem for LLVM as a portable platform is that LLVM bytecode is, well, not portable. I mean, how could it be? It must be able to encode the semantics of C, which is inherently non-portable (especially after e.g. sizeof has been replaced with machine dependant sizes).
That's not to say LLVM is not awsome, because it is--very much so. But LLVM's design goals have never included being a platform, as thats likely at odds with it being a great compiler for languages like C/C++. (Maybe not, but it certainly seems that way to me)
Edit: just realized you said apart from libraries. Rephrased some stuff to highlight other points
"LLVM’s intermediate representation provides garbage collection intrinsics that offer support for a broad class of collector models.
[...] We hope that the primitive support built into the LLVM IR is sufficient to support a broad class of garbage collected languages including Scheme, ML, Java, C#, Perl, Python, Lua, Ruby, other scripting languages, and more.
However, LLVM does not itself provide a garbage collector — this should be part of your language’s runtime library. LLVM provides a framework for compile time code generation plugins. The role of these plugins is to generate code and data structures which conforms to the binary interface specified by the runtime library. This is similar to the relationship between LLVM and DWARF debugging info, for example. The difference primarily lies in the lack of an established standard in the domain of garbage collection — thus the plugins.
[...] On the plus side, this means that you should be able to integrate LLVM with an existing runtime. On the other hand, it leaves a lot of work for the developer of a novel language. However, it’s easy to get started quickly and scale up to a more sophisticated implementation as your compiler matures."
[Seriously]
If Clang is feature complete, compiler and library, and GCC takes ~N years more to be feature complete, compiler and library, then Clang could win. People might say, "I'm tired of not being able to use feature X, it's been implemented in Clang for two years", drop GCC, and install Clang.
http://www.open-std.org/JTC1/SC22/WG21/docs/papers/2012/n338...
:|
http://herbsutter.com/2012/05/03/reader-qa-what-about-vc-and...
If you fully implement C++11, then C11 comes along for relatively little cost.
I keep hoping that Microsoft will wake up and realise that just as HTML5 was important, so is language support for the lingua-franca of the computing world.
For a company that wants to charge $13K+ for the "Ultimate" edition of their product, I'm not impressed with the current support.
And what was Microsoft doing in those 12 years between C99 and C11? What are they doing so inefficiently in their design that they can't figure out how to implement C when every other C++ compiler team has? Come on, Clang didn't even exist until 6 years ago.
Stupid positions Microsoft takes like this with regards to C99 and C11 only underscore how pathetic, short sighted, and clueless they have been for over a decade. They have needlessly alienated developers they profess they need so much for so little reason. How ironic that now they are begging developers to do Windows RT and are promoting "going native".
Actually for me this is a sign that they are finally starting to Get It. I agree with your sentiments on the last decade but it seems to be improving now.
If you're doing low level work (e.g. the layout of your objects is a concern to you), stick with C. C++ often gets in the way there and you won't be able to write idiomatic C++. If it's midlevel you're better off with C++. If it's high level, neither of these are a good fit, and you're better off looking elsewhere.
[1] http://www.microsoft.com/en-us/download/details.aspx?id=3551...
But to be on bleeding edge, yes, you update from SVN. It isn't hard, but you better have a beefy machine to build&link all of it in reasonable time. This page summarizes it nicely: http://clang.llvm.org/get_started.html