As I write this Thursday evening, tomorrow (Friday, 05 August 2011) is "rbx day", aka #rbxday.


Rubinius is a VM written in C++ with, which runs bytecode produced by a Ruby parser written in Ruby. Yes, that's right; it's a bootstrapped Ruby implementation. It is also distributed under the terms of a three-clause BSD License which, as you probably know, is considered a copyfree license, an open source license, and a "Free Software" license (in the terminology of the Free Software Foundation). That makes it a winner of the open source software triple crown, I guess. Rubinius is actually pretty awesome, in my humble opinion, and among other things offers an awesome way for people learning Ruby to learn a lot more about it -- by reading the source code of a Ruby implementation in Ruby.

I wrote about Rubinius a while back, right here on blogstrapping, in Giving Rubinius a Try. It's amazing how far Rubinius has come since then -- and it was already great software at that time.

The Event

From the #rbxday In Real Life page of the Rubinius Weblog:

Originally, the idea for #rbxday was a day that people all around the world could have fun experimenting with Ruby and Rubinius. Try your application or pet Ruby project on Rubinius, or pull out that idea you've been wanting to explore, code it up, and run it on Rubinius. We are not asking anyone to contribute to Rubinius, but we would be most flattered if you wanted to dig into the Rubinius code to see what's going on under the hood. To sum up, the motto of the day is "Ruby, Rubinius, Fun Fun Fun Fun".

As of this writing, that page shows information about meatspace #rbxday meetings in Amsterdam, Netherlands; Barcelona, Spain; Los Angeles, CA, USA; Montevideo, Uruguay; Mountain View, CA, USA; Portland, OR, USA; and San Francisco, CA, USA. It does not look like there will be one near me. I have mentioned the idea in the IRC channel for my local LUG, and nobody so much as blinked. I'm not surprised, considering it's pretty well overrun by Pythonistas (and Ubuntu users).

The page also lists the following ideas for how to celebrate #rbxday and help out the Rubinius project:

These are ideas other than hacking on, and contributing to, Rubinius itself, which (as pointed out on the #rbxday page) is welcome but hardly required.

They seem pretty focused on Twitter, but I find Twitter nearly useless for my own purposes. I guess I just don't get the interest people have in sitting around staring at their browsers hitting the refresh/reload button for the Twitter site for hours at a time. That's why I wrote this, instead. I might write more related to Rubinius tomorrow.

There's also an official promotional page for #rbxday, which calls it:

A global day of Rubinius performance testing, bug reporting, community strengthening and super awesome fun times.

Let's make it a party!

There's a slightly longer list of things to do for #rbxday on that page. Apart from that, there's a bit less information about #rbxday than in the Rubinius Weblog, though.

My RBX Day

For #rbxday, I have already committed a Rubinius-specific front-end tool to the Ruby project on which I've been hacking the most, recently -- an RPG character tracking library I call Persona. The standard front-end is called pertracker.rb, which I have symlinked within my execution path as pt. The Rubinius-specific version, called ptx.rb and symlinked as ptx in my execution path, does the same thing, but instead of executing the irb command on the local system (which often points the irb REPL at the MRI/YARV reference implementation of Ruby), it executes the rbx command (which specifically uses the Rubinius implementation with the irb REPL, instead). I've been using ptx instead of pt to use and test Persona functionality since I created the ptx.rb frontend script a couple days ago, and will keep using it at least through the end of tomorrow. If I do not encounter any problems with it in the meantime, I will keep using that except in cases where I specifically want to test things with MRI/YARV.

I'm also using rbx persona_tests.rb to run my test suite, in addition to ruby persona_tests.rb (which runs Ruby 1.8.7 on this system) and r persona_tests.rb (which is an alias that runs 1.9.2 on this system).

$ rbx persona_tests.rb 
Loaded suite persona_tests
Finished in 0.007965 seconds.

30 tests, 43 assertions, 0 failures, 0 errors

Looks good to me. Did I mention I think Rubinius is pretty awesome? The developers that hang out in the #rubinius channel are generally pretty cool, too.