public
Description: Rubinius, the Ruby VM
Homepage: http://rubini.us
Clone URL: git://github.com/evanphx/rubinius.git
drbrain (author)
Wed May 14 14:17:09 -0700 2008
commit  e08ec16db6fe995267b0a347f675079c54dcd7e3
tree    b34c3c290c57025c1dadc4e45d1b4b1a41ae1bc3
parent  7d3c991b9c6f8de3720132ece93752183afec176
name age message
file .autotest Tue Mar 18 16:25:21 -0700 2008 simplified autotest fixture/shared mapping [zenspider]
file .gitignore Tue May 13 22:27:06 -0700 2008 Ignore local glimpse index files [zenspider]
file .gitmodules Fri May 09 17:44:46 -0700 2008 Added rubyspecs as a submodule at spec/frozen. [brixen]
file AUTHORS Sat Sep 29 01:12:28 -0700 2007 Update AUTHORS [kevinclark]
file CONTRIBUTORS Mon May 05 16:19:32 -0700 2008 Add CONTRIBUTORS file [evanphx]
file INSTALL Mon May 12 14:55:21 -0700 2008 Updated INSTALL with instructions for getting R... [brixen]
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 Wed May 14 13:22:41 -0700 2008 Added spec:check to run all rubyspecs with Matz... [brixen]
file THANKS Wed May 30 14:44:05 -0700 2007 blah [System User]
directory benchmark/ Fri Mar 28 18:33:57 -0700 2008 Added CType#isctrl, #toprint. Rework String#ins... [brixen]
directory bin/ Mon Apr 07 12:20:25 -0700 2008 Moved bin/mkspec, completeness to mspec/bin. [brixen]
directory doc/ Thu Apr 03 04:21:26 -0700 2008 Added doc/rubini.us/ to store static website te... [rue]
directory kernel/ Wed May 14 15:52:29 -0700 2008 Attach lseek(2) for IO#sysread [drbrain]
directory lib/ Wed May 14 14:02:56 -0700 2008 Rubinius now passes all 'defined?' specs. [wilson]
submodule mspec &rarr 14d88a5 Wed May 14 13:23:26 -0700 2008 Updated MSpec submodule to 49520f3f [brixen]
directory rakelib/ Wed May 14 13:35:08 -0700 2008 Fix spec:update to use correct submodule path. [brixen]
directory runtime/ Mon Apr 21 17:23:27 -0700 2008 Rebuild stable archives without incorrect const... [wilson]
directory shotgun/ Wed May 14 09:15:27 -0700 2008 Remove custom strtod handling [dbussink]
directory spec/ Wed May 14 14:11:49 -0700 2008 Retag "defined?" specs as passing on rbx [wilson]
directory stdlib/ Thu Apr 24 18:31:19 -0700 2008 Moved cgi, csv, drb, generator, complex, rexml ... [brixen]
directory test/ Sat Apr 26 08:47:04 -0700 2008 Update to RDoc r56. [drbrain]
directory tools/ Thu May 01 16:11:30 -0700 2008 Added quickstart to readme [zenspider]
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.