LLVM integration success

Posted: March 2nd, 2011 | Author: Mars | Filed under: Progress | Comments Off

The LLVM integration project has been coming along, and Radian no longer depends on GCC as a backend. It goes straight from Radian IR to LLVM IR and from there to machine code, which it runs in-process. This is not to imply that Radian is going to live in permanent JIT-land a la Python, but it’s easer to get things running that way. The runtime support is implemented as a separate library, which the compiler happens to link in, so the architecture still supports standalone executables.

Now that we’re using the actual target backend instead of emitting C source code and running through GCC, it’s time to implement the foreign-function interface. This will let us build Radian wrappers for any random shared library/DLL, and that’s the key to making this a useful system.

Other tasks on the near-term schedule are implementation of the intrinsic ‘map’ and ‘array’ types. I had originally intended to build the underlying AA-tree and finger-tree in Radian code, but bootstrapping is hard work, and I’ve decided to throw those data structures into the C runtime module instead. I can always port them back out sometime later.


Comments are closed.