public
Description: Rubinius, the Ruby VM
Homepage: http://rubini.us
Clone URL: git://github.com/evanphx/rubinius.git
oleg dashevskii (author)
Tue Mar 11 08:38:46 -0700 2008
commit  68027c105e91c073dbe1a302c88bae672310ecc1
tree    367b7d7b61943aa621069709d380b4281f4d6919
parent  56ddb20358ecb7b7a8957c68e79bf53461427ed7
name age message
file .autotest Thu Mar 06 17:01:55 -0800 2008 Added changes to make autotest work with lib fi... [zenspider]
file .gitignore Tue Mar 11 04:41:25 -0700 2008 Merge commit 'origin/master' into cmakebuild [oleg dashevskii]
file AUTHORS Sat Sep 29 01:12:28 -0700 2007 Update AUTHORS [kevinclark]
file CMakeLists.txt Tue Mar 04 07:59:52 -0800 2008 FreeBSD fixes (compiles but doesn't work yet). [oleg dashevskii]
file INSTALL Thu Oct 18 15:32:23 -0700 2007 Add install task, remove tasks task, make build... [drbrain]
file LICENSE Wed Feb 27 10:23:15 -0800 2008 Correct typos in LICENSE file, spotted by raggi [wilson]
file Makefile Tue Nov 13 17:32:37 -0800 2007 Don't complain if the config.mk is missing [evanphx]
file README Thu Oct 18 14:43:12 -0700 2007 Update INSTALL to latest information. [drbrain]
file README-DEVELOPERS Thu Feb 21 17:52:43 -0800 2008 Add note about excessive tracing [drbrain]
file Rakefile Tue Mar 11 04:41:25 -0700 2008 Merge commit 'origin/master' into cmakebuild [oleg dashevskii]
file THANKS Wed May 30 14:44:05 -0700 2007 blah [System User]
directory benchmark/ Tue Mar 11 02:29:58 -0700 2008 Prevent bin/bm from crashing on long test names... [tmornini]
directory bin/ Tue Mar 11 02:29:58 -0700 2008 Prevent bin/bm from crashing on long test names... [tmornini]
file configure Fri Jan 25 16:42:29 -0800 2008 Rework DT compiling, fix configure subscripts [evanphx]
directory doc/ Tue Feb 12 21:01:36 -0800 2008 RDocify (but not hooked into anything yet). [drbrain]
directory kernel/ Sun Mar 09 22:01:37 -0700 2008 Allocate Hash in only one place and use Class.n... [brixen]
directory lib/ Mon Mar 10 16:55:08 -0700 2008 Fix class_open scoping inside EvalExpressions [wilson]
directory mspec/ Sat Mar 08 01:28:41 -0800 2008 Mspec should invoke Mock.verify_count for every... [vvs]
directory rakelib/ Mon Feb 25 16:59:17 -0800 2008 Converted stdlib/ext/syslog to Ruby using FFI [seydar]
directory runtime/ Sun Mar 09 00:12:22 -0800 2008 Stables need recent changes to compile with VM ... [brixen]
directory shotgun/ Tue Mar 11 08:38:46 -0700 2008 Remove unused variables in ffi.c [oleg dashevskii]
directory spec/ Mon Mar 10 15:41:19 -0700 2008 Correctly set the enclosing class for evaled code. [wilson]
directory stdlib/ Sun Mar 09 14:50:40 -0700 2008 IPAddr now works completely [dbussink]
directory test/ Sat Mar 08 20:42:34 -0800 2008 Import RubyGems r1641 [drbrain]
directory tools/ Mon Mar 10 03:36:35 -0700 2008 Add example dtrace script for examining garbage... [crafterm]
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.