What properties of LLVM makes it good choice for implementation of (parallel, concurrent, distributed)-oriented language, what makes it bad?
LLVM currently supports compiling of Ada, C, C++, D, Delphi, Fortran, Haskell, Julia, Objective-C, Rust, and Swift using various front ends. Widespread interest in LLVM has led to several efforts to develop new front ends for a variety of languages.
One big reason is new tools for building languages—specifically, compilers. And chief among them is LLVM, an open source project originally developed by Swift language creator Chris Lattner as a research project at the University of Illinois.
LLVM is called LLVM (Low Level virtual machine) for a good reason. It is so low-level that you're not bound to any particular semantics for your source language.
There are some useful things in LLVM that makes compilation of some parallel languages easier - e.g., jumps to arbitrary blocks: http://llvm.org/docs/LangRef.html#blockaddress
And LLVM does not imply any particular runtime properties, does not force any specific implementation of GC. You can build whatever you want on top of it.
For some practical examples in this space see http://code.google.com/p/gpuocelot/. It allows Cuda code to multitarget on x86.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With