InfoQ

Interview

   Good News: We have re-worked our video infrastructure to provide more reliable service. Please email bugs at infoq.com with any problems.

Evan Phoenix on Rubinius

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

Community
Ruby
Topics
Runtimes,
Language,
Dynamic Languages
Tags
SmallTalk,
Virtual Machines,
Rubinius,
Debuggers
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

Reply

Exclusive Content

Tapestry for Nonbelievers

A new article by I. Drobiazko and R. Zubairov introduces v. 5 of the Apache Tapestry component-oriented web framework. The tutorial shows how to create a component and covers IoC in Tapestry and Ajax.

Pete Lacey on REST and Web Services

In this interview, Burton Group consultant Pete Lacey talks to Stefan Tilkov about his disillusionment with SOAP, his opinion on REST, and addresses some of the perceived shortcomings REST vs. WS-*.

Business Natural Languages Development in Ruby

Jay Fields presents his concept of Business Natural Languages - a type of Domain Specific Languages geared towards being readable by domain experts.

Distributed Version Control Systems: A Not-So-Quick Guide Through

Adoption and interest for Distributed Version Control Systems is constantly rising. We will introduce the concept of DVCS and have a look at 3 actors in the area: git, Mercurial and Bazaar.

Segundo Velasquez and Agile as Seen Through the Customer's Eyes

Deborah Hartmann interviewed Segundo Velasquez about his experience as customer with an Agile team during the initial phase of software design of a product.

Fine Grained Versioning with ClickOnce

David Cooksey shows how to fine grained versioning to a ClickOnce deployment using an HttpHandler written with ASP.NET, making partial rollouts to a test audience much easier.

Implementing Manual Activities in Windows Workflow

Windows workflow (WF) is an excellent framework for implementing business processes, but lacks support for human activities. This article describes a completely generic approach for changing this.

Markus Voelter about Software Architecture Documentation

In this interview taken during OOPSLA 2007, Markus Voelter talks about the importance of documenting the software architecture, and gives some good and also bad examples on how it could be done.