Crosstwine Labs

Crosstwine Linker – Ruby Demo

The Language

Ruby is a dynamic, Open Source programming language with a focus on simplicity and productivity; please refer to www.ruby-lang.org for more information or to acquire a copy of the original implementation.

Important Notice

While our demo interpreters can yield substantial speed-ups on number-crunching applications, they do not currently accelerate some kinds of workloads. Notably, Ruby on Rails runs (and is very stable in recent builds), but quite a bit of additional work has to be done before we see performance improvements. Please see what makes Crosstwine Linker different from other VMs.

The Demo

The Ruby Logo  +  Crosstwine Linker with Ruby language adapter

These technology demos integrate Crosstwine Linker 1.0 alpha 1 with two—radically different—implementations of the language:

1.8

The original interpreter, developed by Yukihiro Matsumoto. The integration was done with the 1.8.6 version; the corresponding unmodified interpreter sports the version number 1.8.6p362.

1.9

The new official virtual machine, developed by Koichi Sasada. The integration was done with a development version; the corresponding unmodified interpreter sports the version number 1.9.2dev.

We provide binary tarballs for a number of x86-64 (AMD64, Intel 64) Linux distributions.

What to Expect?

Basically, a much faster Ruby interpreter (times in seconds; lower is better):

Ruby benchmark results, graphic

Speedup of the standard Ruby 1.9 interpreter (MRI, based on YARV) after Crosstwine Linker integration. Cf. our Technical White Paper for details.

The Crosstwine Linker engine reduces the execution times by a factor of up to 4× on these synthetic benchmarks. Note that we had a relatively short research and experimentation phase, after which our focus was moved towards 100% compatibility, so:

Note that the 1.8 branch benefits from even higher speedups; some parts of the Ruby Benchmark Suite are executing up to 20× faster in the modified interpreter. And we are far from finished!

Installation

Here is a step-by-step guide of how to install one of the provided “packages”:

  1. Download the most appropriate file for your distribution;

  2. Execute the following command as an administrator:

    $ cd / && tar xzvf /path/to/downloaded/file

    This will create either /opt/crosstwine/xtruby-1.8.6-1.0a1 or /opt/crosstwine/xtruby-1.9.2dev-1.0a1, depending on the version chosen, containing the ready-to-use implementation. No files nor settings will be created/altered outside of that directory;

  3. Use /opt/crosstwine/xtruby-1.8.6-1.0a1/bin/xtruby1.8 or /opt/crosstwine/xtruby-1.9.2dev-1.0a1/bin/xtruby1.9 as you would use the default interpreter. Optionally, add the bin/ subdirectory to your PATH environment variable.

Contact us if you have trouble following these instructions, or if you would like packages to be prepared for any other configuration.

Downloads

1.8

Ubuntu 8.10 Server
xtruby-1.8.6-1.0a1-Ubuntu8.10.tar.gz
Debian Linux 5.0 (“Lenny”)
xtruby-1.8.6-1.0a1-Debian5.0.tar.gz
Red Hat Enterprise Linux 5.3
xtruby-1.8.6-1.0a1-RHEL5.3.tar.gz
SUSE Linux Enterprise Server 10
xtruby-1.8.6-1.0a1-SLES10.tar.gz
Fedora 10
xtruby-1.8.6-1.0a1-F10.tar.gz

1.9

Ubuntu 8.10 Server
xtruby-1.9.2dev-1.0a1-Ubuntu8.10.tar.gz
Debian Linux 5.0 (“Lenny”)
xtruby-1.9.2dev-1.0a1-Debian5.0.tar.gz
Red Hat Enterprise Linux 5.3
xtruby-1.9.2dev-1.0a1-RHEL5.3.tar.gz
SUSE Linux Enterprise Server 10
xtruby-1.9.2dev-1.0a1-SLES10.tar.gz
Fedora 10
xtruby-1.9.2dev-1.0a1-F10.tar.gz

FAQ

Why the 1.8 and 1.9 distributions?

They track different versions of the language: 1.9 is the “bleeding edge,” and offers substantial improvements over the 1.8 series. These improvements, however, come at a fairly high price: the language was modified, and the new dialect (as well as its extension mechanisms) is not backwards-compatible.

We got started with the 1.9 virtual machine (YARV), to see how much our technology could accelerate what is already a fairly efficient interpreter. But since backwards compatibility concerns are causing a very slow rate of adoption (at least in production), we decided to bite the bullet and also support the original AST interpreter.

Is there a mailing list for Ruby-specific questions and discussions?

Yes. Please send an empty message to xtruby-subscribe@crosstwine.com to subscribe; you will be receive instructions for all the usual mailing list procedures in return.

Is that all?

Some more questions are answered in the general Crosstwine Linker FAQ. Please contact us if your question is not covered.