GHC Haskell switches to an LLVM backend
haskell.org
haskell.org
1. http://www.haskell.org/pipermail/glasgow-haskell-users/2010-...
[1] http://hackage.haskell.org/trac/ghc/wiki/Commentary/Compiler...
GC is orthogonal. There is some work to add auto-gc to anything on LLVM, but while that's brewing, you can also do it in your runtime. GHC's runtime already does GC, so this is not a big deal.
Hmmm, Gambit-C shows you can do this with good results, but ... uck. Still, I could well see how this new arrangement would be much better than using GCC as a back end.
Your CPU doesn't do GC, so LLVM is not necessarily the best place to do it, either. (LLVM does do other things your CPU doesn't do, which is why C compiled to LLVM runs faster than C compiled to native code in many cases. I imagine this will work well for GHC, as well, although GHC's native codegen can outperform gcc too.)
It's also worth noting that Apple (and others) have poured hundreds of thousands of dollars into LLVM. Taking advantage of that is always good, and the whole point of "free software", in fact.
However LLVM does at least one thing that assembly doesn't, which is implement a stack. It also obviously handles CPU registers (and opaquely). To do accurate garbage collection (http://llvm.org/docs/GarbageCollection.html; note, the whole site LLVM site is not loading for me right now) you have to work with it to find roots in the stack(s) and registers. And the state of the implementation of that is what I was talking about.
Does this GHC backend use a conservative collector such as the Boehm collector? As I recall VMKit does.
The C-- standalone compilers never reached the maturity of e.g. LLVM, to justify the port.
As it is, it's supposed to be pretty hard to build, depending on a lot of old and/or exotic tools.
GHC forked off of this effort sometime before the current C-- standard.