3 ms·
* Crystal * R * Julia * MATLAB * Mathematica * Swift Use LLVM as their backend.
by Q6T46nT668w6i3m 7y ago
* Crystal
* R
* Julia
* MATLAB
* Mathematica
* Swift
Use LLVM as their backend.
- chrisseaton 7y agoThese are just more examples of exactly what I mean! - 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-SILHighLevelIR.pdf 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.
- comex 7y agoEven Clang would greatly benefit from an intermediate IR between the C/C++ AST and LLVM IR; the presentation you linked starts off by going over that (and I can confirm that it’s still a problem). That doesn’t mean that LLVM or its IR is bad, or that C or C++ are not suited to being compiled to it. It just means that some analyses and optimizations are best done at a higher level.
- chrisseaton 7y ago> It just means that some analyses and optimizations are best done at a higher level. Yes that’s my point - you can’t just emit LLVM and cross your fingers. But people keep on trying.
- swsieber 7y agoRust as well. Notably not on this list and known for fast compile times: * Nim * Go
- chrisseaton 7y agoNo, Rust has MIR, and Go is a relatively simple to compile language that maps to LLVM pretty directly. I don't know about Nim, sorry.
- swsieber 7y agoAh, I missed "directly" in you original comment. Yeah, rust has a couple of layers.