public
Description: Rubinius, the Ruby VM
Homepage: http://rubini.us
Clone URL: git://github.com/evanphx/rubinius.git
name age message
file .autotest Wed Mar 12 14:27:54 -0700 2008 added RUBY env for autotest [zenspider]
file .gdbinit Fri Mar 20 12:13:33 -0700 2009 Added gdb rph to print object given its subtend... [brixen]
file .gitignore Fri Nov 13 13:08:21 -0800 2009 Added sha1 hash of all parser+compiler files an... [brixen]
file AUTHORS Thu May 07 10:02:30 -0700 2009 1.8.7: Dir#each, .foreach (optional block) [marcandre]
file INSTALL Tue Dec 09 22:58:49 -0800 2008 Add license info and tweaks to README. [brixen]
file LICENSE Wed Feb 27 10:23:15 -0800 2008 Correct typos in LICENSE file, spotted by raggi [wilson]
file README Mon Oct 19 12:40:20 -0700 2009 Improve documentation on how to build with llvm... [Dirkjan Bussink]
file Rakefile Tue Nov 10 18:25:55 -0800 2009 Reworked compiling C extensions. [brixen]
file THANKS Wed May 30 14:44:05 -0700 2007 blah [System User]
directory benchmark/ Wed Oct 21 17:40:27 -0700 2009 Make benchmark idomatic ruby [Evan Phoenix]
directory bin/ Mon Oct 27 17:32:23 -0700 2008 fixed bin/bm to use bin/rbx as default comparis... [dgtized]
file configure Wed Nov 11 09:57:11 -0800 2009 add support for MRI 1.9.x bootstrapping [dwaite]
directory doc/ Mon Nov 16 16:06:32 -0800 2009 Documentation patch * remove compiler from boot... [will]
directory kernel/ Sat Nov 21 04:04:28 -0800 2009 Add MemoryPointer#read_double, write_double and... [Mikko Perttunen]
directory lib/ Sat Nov 21 02:34:35 -0800 2009 OMG, Evan introduced a trailing white space [Dirkjan Bussink]
directory mspec/ Mon Nov 09 17:01:30 -0800 2009 Have mspec print out a backtrace when it's inte... [Evan Phoenix]
directory rakelib/ Wed Nov 18 15:32:50 -0800 2009 Fixed toplevel C ext tasks to always delegate t... [brixen]
directory runtime/ Fri Nov 06 10:42:28 -0800 2009 Totally hack in building C exts with the bootst... [brixen]
directory spec/ Sat Nov 21 04:07:58 -0800 2009 Add specs for MemoryPointer#read_double, write_... [Mikko Perttunen]
directory test/ Thu Nov 05 15:45:05 -0800 2009 Rollback rubygems tests [Evan Phoenix]
directory tools/ Thu Oct 29 19:56:08 -0700 2009 QueryAgent supports multiple clients, more comm... [Evan Phoenix]
directory vm/ Sat Nov 21 04:06:45 -0800 2009 Add VM tests for memorypointer_read_double and ... [Mikko Perttunen]
README
1. What is Rubinius

Rubinius is an execution environment for the Ruby programming language.  It is
comprised of three major pieces: a compiler, a 'kernel' (otherwise known as
the Ruby Core Library), and a virtual machine. The project's goal is to create
a top-of-the-line Ruby implementation.

2. License

Rubinius uses the BSD license. See LICENSE for details.

3. Running Rubinius

See doc/getting_started.txt.

3.1. For the impatient

Now to configure with LLVM: "./configure --enable-llvm"

This will try to download a prebuilt version of llvm for your system. If it
can't find a prebuilt version, then it will at the very least checkout LLVM
from svn and built it during the next step (this takes a lot of time).

  or

To configure without the JIT: "./configure"

Now: "rake"

4. Status

Rubinius is under heavy development and currently supports the core Ruby
classes and kernel methods. The majority of the existing Ruby libraries should
run without modification.  If your MRI 1.8.6-compatible code does not run
under Rubinius, please open a bug ticket. See doc/howto/write_a_ticket.txt.

As Rubinius becomes more and more compatible with Ruby 1.8, the development
effort is shifting toward performance, rather than completeness.

5. Goals

* Thread safety. Rubinius intends to be thread-safe so you could embed more
  than one interpreter in a single application. It does not currently meet
  this goal due to some components borrowed from the mainline Ruby interpreter.

* Clean, readable code that is easy for users to understand and extend.

* Reliable, rock-solid code. Valgrind is used to help verify correctness.

* Bring modern techniques to the Ruby runtime. Pluggable garbage collectors and
  code optimizers are possible examples.

6. Tickets

See doc/howto/write_a_ticket.txt

7. Contributing

The Rubinius team welcomes contributions, bug reports, test cases, and
monetary support. One possible way to help is implement Ruby library classes.
See doc/contributing.txt to get started.

8. Architecture

While most of the Rubinius features are implemented in Ruby, the VM itself is
written in C++. This is likely to continue to be the case in the coming
months, partly to ease the integration of LLVM into the Rubinius system.

The compiler, assembler, and bytecode generators are all written in Ruby, and
can be found under the ./kernel/compiler directory.