On 8/17/05, Pit Capitain <pit / capitain.de> wrote:
> Brian Mitchell schrieb:
> > Very interesting. Thanks for the link. This is all ironic right now as
> > I am currently working on implementing a complete Ruby environment
> > inside/using Io. It has been interesting on how easy it was to lay the
> > class based design of Ruby over the prototype based Io. I am not quite
> > done solidifying the final translation between the two but when I get
> > further I will throw the code up for consumption.
> 
> Since I'm interested in both languages, too, could you describe in a few
> more words what you are doing and what you want to achieve with that? In
> any case I'm looking forward to your code.
> 

Sure. I am currently implementing Ruby's built-in's as primitives
using pure Io. That is a big task. You never realize how many methods
some of these classes have until you try to write them all... :)

My goal is to have a working upper level language. That is, I want to
support all of Ruby's built-ins that way pure ruby that uses only
those should work. At a future time, if there enough volunteers to
help out, I would like to see if I could shim the ruby C API onto Io
but at this point I am not even going to consider it. So far the two
large chunks are built-ins and a parser (ideas pending on replacing
the Io parser anyway). Small notes include the fact that Io does
asymmetric coroutines but not continuations. I will have to find a way
to get  callcc to work. Io is similar in the fact that numbers are
represented directly using what would be a reference but they are all
doubles. I would need to build a Fixnum->Bignum system for Ruby.

Right now Ruby refers to the 1.8 branch "spec", but I think I will
swap over to trying to match the 2 spec once I am farther along.

The reason for starting this is really not just one reason. Here are a few:

1) So I can tightly integrate my Io and Ruby code. Two very nice languages.
2) So I can learn more about Ruby.
3) An alternative implementation of Ruby would be nice (Ruby needs a
good external spec still.... source code only goes so far.)
4) Io's VM is extremely clean and well written. Customization and
experimentation should be much easier. (I've always wanted to
experiment with ruby but some of the code is hard to grasp).
5) I think Io is better for hosting languages than writing in Io
itself. This makes the language great for DSLs More so than ruby. I am
more productive in ruby (library would be part of the reason). With
the combination of the two I get quite a few neat things.
6) Interactive and dynamic interpreter/VM. Io is much more friendly at
runtime than C. I can imagine a lot of creativity can be found here.
7) Io is fast right now. That is with out any real optimization
technique. Using the right code I can auto-refactor Ruby code to run
faster than the current non-yarv VM (guess).
8) Io has plans for a plug-able VM. Micro is a small project that uses
 GNU Lightning to get this done.

(Those last ones are a bit of a stretch but I threw them in for a good
measure of insanity.)

All in all, I am serious about this project for at least number 2. I
look forward to Rubyconf this year where I hopefully can show some of
this stuff between presentations.

Brian.