public
Fork of evanphx/rubinius
Description: Rubinius, the Ruby VM
Homepage: http://rubini.us
Clone URL: git://github.com/sergiutruta/rubinius.git
name age message
file .autotest Wed Dec 26 16:54:52 -0800 2007 Updated mspec env variable flag for .autotest. [brixen]
file .gitignore Fri Jan 11 23:31:45 -0800 2008 Specs for File.fnmatch handling of Regexp speci... [drbrain]
file AUTHORS Sat Sep 29 01:12:28 -0700 2007 Update AUTHORS [kevinclark]
file INSTALL Thu Oct 18 15:32:23 -0700 2007 Add install task, remove tasks task, make build... [drbrain]
file LICENSE Mon Jan 29 11:07:42 -0800 2007 Added the BSD license statement [evanphx]
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 Sun Jan 13 20:46:00 -0800 2008 Added note about *_cv methods to README-DEVELOP... [rue]
file Rakefile Mon Jan 14 07:53:27 -0800 2008 Add back AI_PASSIVE [Caleb Tennis]
file THANKS Wed May 30 14:44:05 -0700 2007 blah [System User]
directory bin/ Sun Jan 13 17:10:44 -0800 2008 Added -j option to bin/bm to only run using tar... [agardiner]
file configure Mon Nov 19 22:30:32 -0800 2007 Fixed rake rebuild by omitting cleaned files fr... [brixen]
directory doc/ Sun Jan 13 17:26:31 -0800 2008 Deprecate meta_send_stack* opcodes [agardiner]
directory kernel/ Mon Jan 14 07:53:27 -0800 2008 Rework socket config from Rakefile to pull in s... [Caleb Tennis]
directory lib/ Mon Jan 14 07:53:27 -0800 2008 Add back AI_PASSIVE [Caleb Tennis]
directory mspec/ Sun Jan 13 20:27:33 -0800 2008 Low-level output matcher #output_to_fd for MSpec. [rue]
directory rakelib/ Mon Jan 14 07:53:27 -0800 2008 Rework socket config from Rakefile to pull in s... [Caleb Tennis]
directory runtime/ Wed Jan 09 12:34:28 -0800 2008 Update stable with the compiler2 name change [evanphx]
directory shotgun/ Mon Jan 14 01:25:46 -0800 2008 Improve bytecode performance a tiny bit, fix Ke... [evanphx]
directory spec/ Mon Jan 14 08:36:00 -0800 2008 Updated Arry#pack specs to guard for always big... [vvs]
directory stdlib/ Sat Jan 12 02:05:10 -0800 2008 Add find, net/, open-uri, pathname, tsort and u... [drbrain]
directory test/ Fri Jan 11 10:36:36 -0800 2008 Change the ratios so one can see how many times... [NoKarma]
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.