A Statically Compiled Ruby for iOS
A statically compiled variant of Ruby is now available for building applications that target iOS devices. Known as RubyMotion, this language and tool chain from HipByte fully conforms to Apple’s App Store guidelines. In order to do this they had to eliminate any sort of JIT-compiler or interpretation, which some Ruby developers may find limiting.
The tooling support is rather weak. RubyMotion does not have any IDE support. HipByte expects developers to their own text editor and the command-line terminal for most of their development tasks.
On the runtime-side the story is much better. RubyMotion fully supports multi-threaded programming without the inconvenience of a global interpreter lock. It even has an interface for Grand Central Dispatch, Apple’s task-based library for concurrent and parallel programming. Like Ruby itself, memory is managed by the runtime yet developers still have access to native and 3rd party Objective-C libraries. Supposedly this is done “very naturally at no performance expense”. Contrast this with Mono for Android, which often has to marshal objects between the Mono and Dalvik runtimes.
Much of RubyMotion is based in part on MacRuby. MacRuby is a four year-old project to offer Ruby 1.9 on top of the OS X and Objective-C. The last release was in March of 2011 and tagged version 0.10, suggesting that it isn’t progressing as quickly as they would like. “MacRuby is copyrighted free software by the MacRuby team and covered by the terms of the Ruby license.”
RubyMotion itself is not an open source project. It retails for $200 per developer with no royalties or other licensing fees. The retail price includes one year of updates, making it essentially a subscription that should be renewed on a yearly basis.
Not version 0.1 of MacRuby
Converging for 1.0
We are currently converting towards a first stable release of MacRuby, 1.0. We intend to deliver frequent releases until we reach that goal.
We do not expect further releases to include significant features, as we are now focusing on stability and compatibility issues.
Clearly something went off the rails (no pun intended), because the "frequent releases" until 1.0 does not seem to have happened, however 0.10 is mostly feature complete and stable.