I am pleased to announce RUIN (Ruby Unlambda INterpreter) 1.0. For those
of you who don’t follow programming languages, Unlambda is a
Turing-complete language based on the S, K and I combinators rather than
the lambda calculus. The Unlambda home page is at
http://www.madore.org/~david/programs/unlambda/. My thanks go to Kevin
Tew of the Parrot/Cardinal project, who showed me where to find the
Unlambda implementation in the Parrot source. From there, it was a
simple matter to track down the other components.
So … is RUIN a Ruby interpreter written in Unlambda, or an Unlambda
interpreter written in Ruby? YES! Because of the simple nature of
Unlambda, the process was bootstrapped by first writing an Unlambda
interpreter in Ruby. This was validated using the RSpec RUST (Ruby
Unlambda Suite of Tests) test suite. Next, given a working Unlambda
interpreter written in Ruby, I wrote ROT (Ruby Object Translator) in
Unlambda. ROT translates the low-level C code of the Ruby interpreter
into pure combinatory logic, a straightforward process, given the
low-level nature of the SKI calculus on which Unlambda is founded. The
output of ROT is thus a Ruby interpreter written in Unlambda. The Ruby
interpreter thus produced runs all the standard Ruby applications – the
standard test process is to run the RUST suite recursively.
So far, neither of these processes is optimized. That’s where the fourth
component comes in – RAGE (Ruby Algorithm GEnetics). RAGE is a genetic
programming system written in Ruby, capable of optimizing either Ruby or
Unlambda code. Two fitness functions are available, one for speed
optimization and one for memory space optimization. There is also an
IDE, called RUINED (RUIN EDitor), a GUI toolkit called BRUIN (Beautified
RUIN) and a web application framework RAT (RUIN Application Toolkit).
RAT is actually the piece of the project that most excites me. Unlambda
is at its core an elegant and simple environment, like Scheme or Forth.
As a result, RAT is amazingly compact – the whole framework does
everything Rails does in about 4 kilobytes of code. I’m working on a few
other enhancements, but on the whole I am happy enough to call this
release 1.0. Unfortunately, RUIN at this point is not open source.
Neither my accountant nor my attorney thinks that releasing RUIN under
an open source license is a good idea, although I haven’t been able to
get a clear reason why from either of them. So if you are interested in
RUIN, send me an email off-list and I’ll let you negotiate the terms
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC§
If God had meant for carrots to be eaten cooked, He would have given