Ready, Set, ...

Brian Shirai 22 September 2013

ED: Updated the section on How To Build and added a section on gems and Rubinius.

There are some big changes coming in Rubinius. A full post about this should arrive later in the week, but for people who are tracking master HEAD on the GitHub repository, here are a few essential pieces of information.

What's Changed?

I've just merged a work-in-progress branch into master. The master branch now supports Ruby language version 2.1 only. It also moves Rubinius components, such as the parser, compiler, debugger, as well as the Ruby standard library, to gems. The changes lay the foundation for numerous planned features to improve performance and concurrency support.

The syntax support for 2.1 is not yet complete but should be merged in a few days. Applications using Ruby 1.9.3 are expected to run. The standard library gems are installed by default, so there should not be a noticable difference in how programs using the standard library run.

How To Build

To build Rubinius, MRI 2.0 or Rubinius master are required. Other versions may work, but are not supported. Bundler is also required.

The easiest way to get MRI 2.0 if it's not already installed on your system is probably ruby-install. However, use whatever is easiest for you to install MRI 2.0. Rubinius also highly recommends using chruby as a Ruby switcher.

To clone and build, follow these steps:

  1. git clone --depth 1 https://github.com/rubinius/rubinius
  2. cd rubinius
  3. bundle
  4. ./configure --prefix=/path/to/install
  5. rake

The main difference is that bundle is used to install build requirements.

After building, add path/to/install/bin:/path/to/install/gems/bin to PATH to run Rubinius. Alternatively, use a Ruby switcher like chruby.

What Are Gems?

As noted above, the Ruby standard library in Rubinius, and other Rubinius components like the code build tools and developer tools, are provided as gems. These are regular gems. There is nothing special about them. They are installed as gems, they are bundled as gems, they are updated with gem update, they are simply gems.

You even have the option at configure time to not install them (except for a few that are required to run (e.g. IRB), but we plan to make this optional as well). See configure --help for the --with[out]-stdlib configure option.

Since they are gems, other Ruby ecosystem components, like Bundler, need to know about them. When using Bundler, for example, add gem "rubysl", "~> 2.0" to your Gemfile. For other dependency management, what is needed depends on how intrusively it invades the Ruby require process. With plain RubyGems, simply install the gems and requires will work as expected.

There are several meta-gems provided (e.g. rubysl, rubysl-rake, rubysl-bundler) that can be used to install all the standard library gems that those tools depend on. To install (or update) the entire standard library, run gem install rubysl.

Where Are 1.8 & 1.9?

There are two branches under Rubinius for 1.8.7 and 1.9.3. The default language mode when building from the branches matches the branch name. These branches are provided to ease transitions. No active development will occurr on the branches. If you would like to volunteer to maintain one of the branches, please let us know.

Issues

Please open an issue if you have any trouble building or running the master branch.

More details coming soon. Happy Rubying!

Tweet at @rubinius on Twitter or email community@rubini.us. Please report Rubinius issues to our issue tracker.

We email about once a month and never share your email address for any reason

Recent Posts