3 ms·
Can anybody explain the remark about LLVM towards the end of the post? What were the difficulties of updating it, especially with respect the intermediate versi
by krastanov 10y ago
Can anybody explain the remark about LLVM towards the end of the post? What were the difficulties of updating it, especially with respect the intermediate versions?
- n00b101 10y agoI'm guessing that they use LLVM's C++ API, which is not stable between releases. The C++ API changes dramatically from one version to the next, so upgrading LLVM versions typically a big effort for downstream projects. The LLVM C API, however, is meant to be stable. For C++ users, it may make some sense to write a stable C++ API wrapping the LLVM C API. Disclaimer: I am not affiliated with the LLVM project.
- StefanKarpinski 10y agoHmm. It's hard to remember all the issues, but this was the period where LLVM moved from their "old JIT" backend to MCJIT [1]. IIRC, 3.4 broke the old JIT but MCJIT still wasn't developed enough for Julia to use. At some point the old JIT was removed entirely but MCJIT was still not usable (for us) and that didn't resolve itself entirely until 3.7. [1] http://llvm.org/docs/MCJITDesignAndImplementation.html http://llvm.org/docs/MCJITDesignAndImplementation.html
- 3JPLW 10y agoIf you're really curious, you can follow some of the breadcrumbs through the "Activate LLVM 3.7" GitHub issue (which was originally started for version 3.5). https://github.com/JuliaLang/julia/issues/9336 https://github.com/JuliaLang/julia/issues/9336
- mamcx 10y agoLLVM can bet a very good optimized compiler toolchain, but is complex, hard to use and break easily (your code). I have tried to use it several times for toy compilers, and each time is a pain for do simple things. I can't imagine how much pain is for depend your project on it. Certainly worth the effort, but as expected of a C++ tech: You need a army of specialist to make it work.