Ready, Set, ...
** 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.
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:
- git clone –depth 1 https://github.com/rubinius/rubinius
- cd rubinius
- ./configure –prefix=/path/to/install
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
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
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
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.
Please open an issue if you have any trouble building or running the master branch.
More details coming soon. Happy Rubying!