* R
* Julia
* MATLAB
* Mathematica
* Swift
Use LLVM as their backend.
- Crystal is Ruby simplified in order to make it amenable to compilation by LLVM. They couldn't move LLVM to the language, so they had to move the language to LLVM.
- R's performance is very limited.
- Julia was specifically designed to be easy to compile.
- Swift has SIL - they don't just output LLVM. See what they say about LLVM! https://llvm.org/devmtg/2015-10/slides/GroffLattner-SILHighL... 'Wide abstraction gap between source and LLVM IR', 'IR isn't suitable for source-level analysis', etc. And they have these problems even with the best LLVM experts on their team!
I don't know much about MATLAB or Mathematica, sorry.
Yes that’s my point - you can’t just emit LLVM and cross your fingers. But people keep on trying.
Notably not on this list and known for fast compile times:
* Nim
* Go
- Rubinius - Ruby JIT on LLVM, often slower than the standard interpreter (!!)
- Pyston - Python JIT by Dropbox, abandoned because it wasn't going anywhere
- FTL - JavaScript backend by Mozilla, they're now doing their own thing with BBB and abandoned LLVM because it wasn't working out
The only ones that have worked well, like Falcon (Java backend by Azul), have major IR and passes in front of them and use LLVM like a portable assembler, but as you say that's not ideal anyway.
You can't just dump your language into LLVM and expect it to work miracles, but people keep trying again and again and again.