Temporary tag for this failure. Updated CI spec coming.
[rbx.git] / README
blobe584c757022ec844744c85dab2cbceae22fb220d
1 1. What is Rubinius
3 Rubinius is a next-generation virtual machine and compiler for Ruby.  Based
4 loosely on the Smalltalk-80 'Blue Book' design, Rubinius will provide a rich,
5 high-performance environment for running Ruby code.
7 2. Running Rubinius
9 Refer to the INSTALL file for instructions on getting and building Rubinius.
11 To disable backtrace colorization in Rubinius set the RBX environment variable
12 to rbx.colorize_backtraces=no.
14 3. Status
16 Rubinius is under heavy development, and currently supports the basic Ruby
17 classes and kernel methods. The code base is written in a mixture of ANSI C and
18 Ruby; with more Ruby and less C as the project proceeds.  You should not run
19 your mission-critical Rails apps under Rubinius yet.
21 4. Goals
23 * Thread safety. Rubinius intends to be thread-safe so you could embed more
24   than one interpreter in a single application. It does not currently meet
25   this goal due to some components borrowed from the mainline Ruby interpreter.
27 * Clean, readable code that is easy for users to understand and extend.
29 * Reliable, rock-solid code.  Valgrind is used to help verify correctness.
31 * Bring modern techniques to the Ruby runtime. Pluggable garbage collectors and
32   code optimizers are possible examples.
34 5. Volunteering to Help
36 The Rubinius team welcomes contributions, bug reports, test cases, and monetary
37 support. One possible way to help is implement Ruby library classes. Visit
38 http://rubinius.lighthouseapp.com for documentation on how to begin hacking
39 Rubinius.
41 6. Architecture
43 Rubinius currently uses C to bootstrap the system. In the future, a limited
44 dialect of Ruby called cuby/garnet will be used to generate C. This is a
45 time-honored technique, used by systems such as Squeak, Smalltalk, and Algol on
46 the Burroughs systems (as seen in the movie 'Tron').
48 For now, this code is hand-written, and can be found in the ./shotgun/lib
49 directory.  This code was ported from a Ruby implementation found in the ./lib
50 directory.  For example, shotgun/lib/object_memory.c is the C translation of
51 lib/object_memory.rb.
53 The compiler, assembler, and bytecode generators are all written in Ruby, and
54 can be found under the ./lib directory.  Other systems use the word
55 'translator' for what is here referred to as 'compiler'.  The ./bin/rcc script
56 can be used to display the symbolic output of the compiler, for debugging or
57 learning purposes.