There’s one problem with this. Ruby’s interpreter and run-time have always been slow and single-threaded. For many reasons, the baroque language itself included, it has been difficult to create a fast interpreter. This hasn’t stopped Ruby from being useful. The incredible Rails framework runs on top of Ruby and is scalable. But that effort showed up the limitations of the language implementation. Now the Ruby 1.9 series has a completely new (and far faster) interpreter and is finally becoming multi-threaded.

Ruby can be used with various shim libraries to connect to Objective-C code. The application Blogo (which I own and use) is a Mac-native application written in Ruby. Apple recognized that the situation wasn’t ideal and set out to solve the problem. Ruby is an open source language so Apple decided to do major surgery on it. They created the MacRuby language variant on top of the Ruby 1.9 series. In MacRuby the objects are Objective-C objects. A Ruby object is a NSObject. A Ruby hash is a NSDictionary. Objective-C methods can be called just like every other Ruby method.

MacRuby installs XCode templates and works natively with the Interface Builder. You can develop Mac applications using the normal tools but your language is Ruby and changes can be made without recompiling. When the application is ready to be deployed, XCode will embed a MacRuby run-time in your application.

MacRuby reached version 0.4 recently. It gained full 64-bit and DTrace support as well as a threaded garbage collector. It’s still a beta product. But the vision is getting clearer. And that means that native macOS development is getting a lot easier.

You can download the latest version here.