InfoQ

Interview

Evan Phoenix on Rubinius

Interview with Evan Phoenix by Werner Schuster on Jan 23, 2008 04:20 AM

Community
Ruby
Topics
Dynamic Languages ,
Runtimes ,
Language
Tags
Debuggers ,
SmallTalk ,
Rubinius ,
Virtual Machines
Summary
Evan Phoenix discusses Rubinius, a modern Ruby VM loosely based on the Smalltalk-80 architecture. The goal is to build a fast, efficient VM with the latest research in dynamic language implementations

Bio
Evan Phoenix is main developer behind the Rubinius project, a modern Ruby VM loosely based on the Smalltalk-80 architecture. He is currently employed by Engine Yard to continue to lead the development of this next generation Ruby VM. Evan blogs at http://blog.fallingsnow.net/.
We are here at Ruby conf 2007 in Charlotte North Carolina. I am here with Evan Phoenix of the Rubinius Project. How about we get started with you introducing yourself, what you do, how you got to Rubinius?
How did you get started with Rubinius? Did you get started with Smalltalk?
Were you using Squeak Smalltalk or any other Smalltalks?
Strongtalk?
Could you quickly explain the basics of Rubinius. How does it relate to Smalltalk? What does it do?
I think you based most of your work on Squeak Smalltalk. Are other Smalltalks implement the same way, as I think they are implemented mostly in C, C++?
The basic VM of Rubinius is written in C. Is that true? In the beginning there were plans for writing even the shotgun VM which is the VM written in C and Ruby, with a language called CUBY.
Cuby or whatever it is called, would that be Ruby with features cut?
We just recently heard here at Ruby conf that you rewrote the Rubinius compiler that compiles Ruby source code to Rubinius byte code. Can we talk about the motivations for that?
Talking about compliers: there has been a discussion about supporting different languages on top of Rubinius. What's your impression of that, what's your idea about that?
How easy would it be, what would you have to do to create a new compiler? Could you do that at runtime? With irb? Or do you have to rebuild Rubinius?
Rubinius is a type of VM where Ruby code is always compiled. Is that true?
So there is no Ruby intepreter, there's a bytecode interpreter?
One of the interesting features you added is very fast debugging support. Could you talk about how that works?
Is this also how you implemented the profiler?
Is there also a way to save the context object? I think context objects are serializable in Rubinius. Is that true?
Would this be kind of a bit like Smalltalk images in a way?
There is a company called Gemstone which provides object oriented databases, has done so for a long time, they do them for Smalltalk, they have their own Smalltalk version where build their objects in the database, and they have expressed an interest in Rubinius and using Rubinius. Could you elaborate on that?
Do you know anything about how they are going to implement this, how they are going to hook into Rubinius?
Talking about the heap, there is an interesting feature in Ruby that is called "objects space" that allows Ruby developers to iterate all the objects on the heap. What's the current status of that in Rubinius?
You said effectively remove the new generation?
Talking about the garbage collector, you added an interesting feature for a figure called the "fork-friendly garbage collector". What do you mean by that?
This is a problem that exists in Java and other systems where you can't really share application level code. You mentioned the spaghetti stack. That's used for implementing continuations.
How would you compare your continuation performance or implementation to other Ruby versions?
Moving away a bit from technical information here - you've recently moved to the version management system, git which was written by Linus Torvalds for the Linux kernel What are your experiences with it?
You are using it on Linux. What is your main system?
Are there any issues with running git on Windows?
Very quickly, you were also considering Mercurial I think?
What was the reason for git? Just flipping a coin?
To finish up, we want to ask you about, let's say people have watched this interview and are itching to contribute to Rubinius what's your management style. Are you the big benevolent dictator like Matz?
Talking about committers, you have an interesting policy, the open committer flag.
I think that wraps up our interview here. Thanks very much Evan Phoenix and good luck with the Rubinius project
show all  show all

No comments

Watch Thread Reply

Educational Content

Bindings, Platforms, and Innovation

This presentation focuses on the Internet and separating myth from fact, history from the future, and the mundane from the imaginative. Bob Frankston presents a vision of what could and should be.

Orchestrating Long Running Activities with JBoss / JBPM

This article explores the use of JBoss and jBPM to implement design solutions that effectively address the issue of orchestrating long running activities.

Neo4j - The Benefits of Graph Databases

This presentation covers the use of graph databases as an optimal solution for data that is difficult to fit in static tables, rapidly evolving data or data that has a lot of optional attributes.

Realistic about Risk: Software development with Real Options

This session introduces Real Options and shows how it can help in running your project. Real Options is a decision-making process that can be used to manage risk.

Communication Flexibility Using Bindings

This article discusses the use of bindings on services and references (including the instance of non-configured bindings) as the means to implement SCA communications in a Web and SOA environment.

Writing DSLs in Groovy

After a short introduction to DSLs, Scott Davis plays with the keyboard showing how to approach the creation of a DSL by typing working snippets of Groovy code that get executed.

Scaling Agile with C/ALM (Collaborative Application Lifecycle Management)

IBM Rational and InfoQ present, Scaling Agile with C/ALM, an eBook showing organizations how to become “finely tuned software delivery machines” by enabling team integration and scaling.

Concurrent Programming with Microsoft F#

Amanda Laucher presents a real life enterprise application written in F#. She shows actual code snippets, explaining design decisions and suggesting how to use some of the F# constructs.