public
Description: Rubinius, the Ruby VM
Homepage: http://rubini.us
Clone URL: git://github.com/evanphx/rubinius.git
Search Repo:
drbrain (author)
Fri Feb 22 17:27:20 -0800 2008
commit  7ca509a6678b71a0c0fc61433cad5f78b0593cb9
tree    8c52ef517a9a56dd2a238c628053c3ed10b2d800
parent  b2baf0911e4a88ba2f6c4cb8e3e31d2a3aa1c6bf
name age message
folder .autotest Mon Feb 18 16:47:24 -0800 2008 Hopefully fix autotest config script. [brixen]
folder .gitignore Wed Feb 20 09:01:59 -0800 2008 Exclude spec/tags dir from .gitignore. [brixen]
folder AUTHORS Sat Sep 29 01:12:28 -0700 2007 Update AUTHORS [kevinclark]
folder INSTALL Thu Oct 18 15:32:23 -0700 2007 Add install task, remove tasks task, make build... [drbrain]
folder LICENSE Mon Jan 29 11:07:42 -0800 2007 Added the BSD license statement [evanphx]
folder Makefile Tue Nov 13 17:32:37 -0800 2007 Don't complain if the config.mk is missing [evanphx]
folder README Thu Oct 18 14:43:12 -0700 2007 Update INSTALL to latest information. [drbrain]
folder README-DEVELOPERS Thu Feb 21 17:52:43 -0800 2008 Add note about excessive tracing [drbrain]
folder Rakefile Fri Feb 22 01:29:53 -0800 2008 Added dotfile rbc to the list of files to be de... [kamal]
folder THANKS Wed May 30 14:44:05 -0700 2007 blah [System User]
folder benchmark/ Fri Feb 22 04:29:29 -0800 2008 Move modified bm_vm3_thread_create_join.rb to b... [tmornini]
folder bin/ Tue Feb 19 09:07:20 -0800 2008 Misc MSpec runner changes; see below: [brixen]
folder configure Fri Jan 25 16:42:29 -0800 2008 Rework DT compiling, fix configure subscripts [evanphx]
folder doc/ Tue Feb 12 21:01:36 -0800 2008 RDocify (but not hooked into anything yet). [drbrain]
folder kernel/ Fri Feb 22 21:15:37 -0800 2008 Call Ar#after_loaded. [drbrain]
folder lib/ Fri Feb 22 21:15:36 -0800 2008 Move Ar to kernel/core. [drbrain]
folder mspec/ Fri Feb 22 13:20:07 -0800 2008 Fixed MSpec reporting ERROR for FAILED. [brixen]
folder rakelib/ Fri Feb 22 21:15:37 -0800 2008 Call Ar#after_loaded. [drbrain]
folder runtime/ Thu Feb 21 17:52:44 -0800 2008 New ar(5) stables. [drbrain]
folder shotgun/ Fri Feb 22 17:18:41 -0800 2008 Properly cast the conversion funcitons [evanphx]
folder spec/ Fri Feb 22 21:15:36 -0800 2008 Move Ar to kernel/core. [drbrain]
folder stdlib/ Thu Feb 21 17:35:10 -0800 2008 Move the ghastly creation that is tmpdir.rb fro... [wilson]
folder test/ Sun Feb 17 11:48:48 -0800 2008 Moved timeout benchmark to ./benchmark/rubinius/. [rue]
folder tools/ Mon Feb 18 08:12:18 -0800 2008 added nopaste & pastie to rubuildius (thank... [Benjamin Andresen]
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://rubinius.lighthouseapp.com 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.