[#68478] Looking for MRI projects for Ruby Google Summer of Code 2015 — Tony Arcieri <bascule@...>

Hi ruby-core,

10 messages 2015/03/10

[ruby-core:68464] Re: GSoC 2015: JIT Compiler

From: "Martin J. Dürst" <duerst@...>
Date: 2015-03-09 09:43:05 UTC
List: ruby-core #68464
Hello Jakub,

On 2015/03/09 02:29, Jakub Trzebiatowski wrote:

> Quoting Ideas List:
>
> "MRI executes Ruby via an interpreted stack-machine bytecode language known as YARV (Yet Another Ruby VM) bytecode. The execution of this bytecode could be improved by a mixed-mode execution strategy which looks for frequently executed code and JITs the corresponding YARV bytecode to architecture-dependent machine language.”

Are you referring to this:
https://github.com/rubygsoc/rubygsoc/wiki/Ideas-List ?
I'm not sure you'll get feedback from the responsible people on this 
list; maybe making a pull request is an easier way to get their attention.

> That’s a great idea, but in my opinion it’s totally imposible for a single student to write a modern JIT compiler in four months.

I'm not an expert, but I'd tend to agree.


> On the other hand, I think that it’s possible to integrate Ruby with state-of-the-art LuaJIT VM, which features lighting fast bytecode interpreter and JIT compiler. I believe that all Ruby language features could be compiled to LuaJIT bytecode, although that needs further investigation. That would probably take me all remaining 8 days.

What do you mean by "all remaining 8 days?". As for feasibility, I think 
the most difficult part would be to handle Ruby's blocks. I don't think 
Lua has blocks, so this may be hard.


> That leads to my question: would you at least consider accepting such a student proposal, or should I not waste my time and search for another project?

I am not involved in this, so I can't give you a definitive answer, but 
I think it would be good to try out whether/how Ruby can be sped up by 
JIT compilation. Maybe the goal of the project should just be to 
implement some JIT compilation; whether this is done from YARV to e.g. 
LLVM, or from Ruby directly to something like LuaJIT, or from YARV to 
LuaJIT, could be an implementation decision by the student (together 
with the mentor).


Regards,   Martin.

In This Thread