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.