RubyGoLightly - Eleanor McHugh

RubyGoLightly is Eleanor's port of TinyRb to Google's Go language. Her aim with RubyGoLightly is to get a basic runtime up that can be run in a browser, or on the Android phone.

TinyRb isn't really Ruby, but it's clever and elegant. It currently supports about a third of the Ruby standard library, and omits some less frequently used parts of Ruby such as ObjectSpace. It does, however, make a nice little testbed and the source is much easier to follow than the MRI code.

Go is a multicore language. Rather than approaching the concurrency problem from the same perspective as all these functional languages, Go takes the approach that you can pipe data between modules in a similar manner. Go is a compiled statically typed language that looks and feels like a dynamic programming language. It's not like C. It's not like C+. It's OO, but it doesn't have any classes, and yet it's not prototypal either.

Eleanor showed us a slide with loads of Go code in it. Sorry, I didn't manage to catch any of it, but Eleanor said she'd be uploading the slides to her slideshare account.

The Go object model sounds rather interesting. It's interface driven, but doesn't work in quite the same way as Java. If I followed this bit properly, you never need to declare that an object satisfies a particularly interface -- you just implement the required methods and Go will automatically infer that your object can be used in situations where the interface is required.

It seems as though this is one of the features that makes Go feel like a dynamic language. It's an interesting idea, and I think I should take a closer look.

You can find the RubyGoLightly code on github. It's a smaller code base than TinyRb, and should be of interest to Rubyists who are curious about Go.

More talks from Ruby Manor