public
Description: Rubinius, the Ruby VM
Homepage: http://rubini.us
Clone URL: git://github.com/evanphx/rubinius.git
name age message
file .gitignore Loading commit data...
file AUTHORS
file INSTALL Fri May 18 12:05:13 -0700 2007 * Remove references to sydparse from the INSTAL... [wilson]
file LICENSE Mon Jan 29 11:07:42 -0800 2007 Added the BSD license statement [evanphx]
file Makefile Sat May 19 01:01:47 -0700 2007 * Remove a misleading comment in exception_spec... [wilson]
file README
file ROADMAP
file Rakefile
file THANKS Wed May 30 14:44:05 -0700 2007 blah [System User]
directory attic/ Sun Jun 17 13:05:19 -0700 2007 Moved syd_parser to attic. [Tilman]
directory benchmark/ Fri Aug 03 10:21:00 -0700 2007 Adding a file to be used as a wordcount input f... [Graham]
directory bfts/
directory bin/ Sun Aug 05 16:39:36 -0700 2007 fixed completeness to not over match methods. c... [brixen]
file configure Sun May 06 19:58:42 -0700 2007 * Explicit fPIC for building shared libs on amd... [Eero Saynatkari]
directory doc/
directory examples/
directory extensions/ Wed May 30 13:01:04 -0700 2007 Removed rb_ary_get() and rb_ary_set() from subt... [Tilman]
directory externals/
directory hashi/
directory include/ Thu Aug 09 20:24:35 -0700 2007 The context optimization change your parents al... [evanphx]
directory kernel/
directory lib/
directory library/
directory native/
directory reports/
directory runtime/
directory shotgun-tests/ Sat Jun 16 00:07:41 -0700 2007 migrated more tests from shotgun-tests to specs. [brixen]
directory shotgun/
directory spec/
directory stdlib/
directory test/ Tue May 15 10:24:34 -0700 2007 Added an example FFI usage (imported printf), a... [evanphx]
README
1. What is Rubinius

Rubinius is a next-generation virtual machine and compiler for Ruby.
Based loosely on the Smalltalk-80 'Blue Book' design, Rubinius will provide
a rich, high-performance environment for running Ruby code.

2. Running Rubinius

Refer to the INSTALL file for instructions on getting and building Rubinius.

3. Status

Rubinius is under heavy development, and currently supports the basic Ruby 
classes and kernel methods. The code base is written in a mixture of 
ANSI C and Ruby; with more Ruby and less C as the project proceeds.
You should not run your mission-critical Rails apps under Rubinius yet.

4. 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.

5. Volunteering to Help

The Rubinius team welcomes contributions, bug reports, test cases, and monetary 
support. One possible way to help is implement Ruby library classes. Visit
http://rubini.us for documentation on how to begin hacking Rubinius.

6. Architecture

Rubinius currently uses C to bootstrap the system. In the future, a limited dialect of 
Ruby called cuby/garnet will be used to generate C. This is a time-honored technique, 
used by systems such as Squeak, Smalltalk, and Algol on the Burroughs systems (as seen 
in the movie 'Tron').

For now, this code is hand-written, and can be found in the ./shotgun/lib directory.
This code was ported from a Ruby implementation found in the ./lib directory.
For example, shotgun/lib/object_memory.c is the C translation of lib/object_memory.rb.

The compiler, assembler, and bytecode generators are all written in Ruby, and can
be found under the ./lib directory.  Other systems use the word 'translator' for what
is here referred to as 'compiler'.  The ./bin/rcc script can be used to display the
symbolic output of the compiler, for debugging or learning purposes.