Ruby+OMR JIT Compiler: What’s Next?
developer.ibm.com
Ruby+OMR JIT Compiler: What’s Next?
1–10 of 38 posts
Re: Ruby+OMR JIT Compiler: What’s Next?
#2Re: Ruby+OMR JIT Compiler: What’s Next?
#3Can you create new native languages using Eclipse OMR ?
Re: Ruby+OMR JIT Compiler: What’s Next?
#4Re: Ruby+OMR JIT Compiler: What’s Next?
#5Ruby is my favorit language and i am very excited about the performance improvements by projects like this.
Re: Ruby+OMR JIT Compiler: What’s Next?
#6Eclipse OMR is interesting, it provides good platform abstraction with support for threading, monitoring, etc. Can you create new native languages using Eclipse OMR ?
It's been done before with the technology underlying the OMR compiler component, however there is some work that would need to be done to support this.
In principle though, there's no reason it couldn't be done.
Re: Ruby+OMR JIT Compiler: What’s Next?
#7Could this make eclim useful for ruby developers?
Re: Ruby+OMR JIT Compiler: What’s Next?
#8Eclipse OMR is interesting, it provides good platform abstraction with support for threading, monitoring, etc. Can you create new native languages using Eclipse OMR ?
When you say "native languages" you mean a statically compiled language? It's been done before with the technology underlying the OMR compiler component, however there is some work that would need to be done to support this. In principle though, there's no reason it couldn't be done.
I was thinking, OMR providing the native platform semantics that will enable multiple language syntaxes.
Re: Ruby+OMR JIT Compiler: What’s Next?
#9Actually unladen_swallow and cperl are doing this. Compile the whole runtime to a lib.bc (trivial make rule), load this bitcode file (a single call), and add the expensive optimizations, esp. the inliner and IPO in llvm. Just the type-checks need to be done in the jit. This inliner does a lot of good magic esp. for the small RT functions. >10x faster.
The compiler is expensive though (i.e. very slow), and LLVM changed it's jit API 3 times already. = 3.6 ocrjit, all 3 of them still having major quirks.
With mcjit you cannot selectively add jit code to a module. So every single body needs to be a new module. So module != package/class/namespace. So the jitcache is a bit complicated. With the latest ocrjit you got problems in finding the symbols in the bc. The C API doesn't support the name resolver at all, and it's a major quirks with C++. LLVM's C API is really behind, but at least they don't change it that often as the C++ API.
unladen_swallow has a huge JIT overhead library, which nobody really needs.
For the cperl jit I just used 4 days so far and doesn't even link yet. I used the C API, not the better C++ API. No C++ for cperl. But it's very simple. https://github.com/perl11/cperl/blob/feature/gh220-llvmjit/j...
Re: Ruby+OMR JIT Compiler: What’s Next?
#10> In Evan’s keynote, he proposed a really interesting and ambitious solution to the problem he called “lifting the core.” It involved shipping Ruby with LLVM intermediate representation of the CRuby functions to allow the LLVM JIT technology to look inside the CRuby functions and dramatically increase the optimization horizon. As far as I know, this hasn’t been attempted yet — although, if it has, I really want to se…