public
Description: Rubinius, the Ruby VM
Homepage: http://rubini.us
Clone URL: git://github.com/evanphx/rubinius.git
Search Repo:
benstiglitz (author)
Wed Apr 16 11:32:18 -0700 2008
brixen (committer)
Wed Apr 16 12:07:47 -0700 2008
commit  5c176e50fe962de1095a75221b4d63e75acc505f
tree    4cd83616a49aeb9994a189bde852e463f0876335
parent  6402fcc6308b9136a2d310553f18092549ca65cc
name age message
folder .autotest Tue Mar 18 16:25:21 -0700 2008 simplified autotest fixture/shared mapping [Ryan Davis]
folder .gitignore Thu Mar 20 17:32:46 -0700 2008 Added .d.nnnn dependency files to ignores. [rue]
folder AUTHORS Sat Sep 29 01:12:28 -0700 2007 Update AUTHORS [kevinclark]
folder INSTALL Mon Apr 07 17:36:46 -0700 2008 Fix some deps in INSTALL, and include github url [evanphx]
folder LICENSE Wed Feb 27 10:23:15 -0800 2008 Correct typos in LICENSE file, spotted by raggi [wilson]
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 [Eric Hodel]
folder Rakefile Mon Apr 07 20:35:52 -0700 2008 Add a clean:config task to clean:all so changes... [stepheneb]
folder THANKS Wed May 30 14:44:05 -0700 2007 blah [System User]
folder benchmark/ Fri Mar 28 18:33:57 -0700 2008 Added CType#isctrl, #toprint. Rework String#ins... [brixen]
folder bin/ Mon Apr 07 12:20:25 -0700 2008 Moved bin/mkspec, completeness to mspec/bin. [brixen]
folder doc/ Thu Apr 03 04:21:26 -0700 2008 Added doc/rubini.us/ to store static website te... [rue]
folder kernel/ Tue Apr 15 23:12:56 -0700 2008 Fix bug with stepping to a target IP/line [agardiner]
folder lib/ Wed Apr 16 06:27:05 -0700 2008 Added breakpoint delete command to Debugger [agardiner]
folder mspec/ Thu Apr 10 00:52:24 -0700 2008 Ensure method names are escaped when matching o... [brixen]
folder rakelib/ Mon Apr 14 12:33:37 -0700 2008 Solaris should use 'gmake'. [rnicholson]
folder runtime/ Mon Apr 07 22:59:34 -0700 2008 Renamed regexp_match_region to regexp_match_start [Ryan Davis]
folder shotgun/ Wed Apr 16 01:02:33 -0700 2008 simplify and d-r-y [mental]
folder spec/ Wed Apr 16 12:07:47 -0700 2008 Cleaned up Numeric#div spec [benstiglitz]
folder stdlib/ Mon Apr 07 19:04:42 -0700 2008 Move pp.rb to lib so it is installed. [brixen]
folder test/ Fri Apr 11 14:46:49 -0700 2008 Import RubyGems 1.1.1 r1701. [Eric Hodel]
folder tools/ Fri Mar 14 02:31:55 -0700 2008 Fixed typos in rubuildius README [djwhitt]
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.