New in RubyMotion: Faster Builds, 64-bit iOS, iOS 7 GM
RubyMotion 2.8 is available, featuring a few significant changes.
As the RubyMotion ecosystem matures, projects tend to include more and more libraries. Some of you guys have been experiencing long build times, especially on lightweight hardware.
As of RubyMotion 2.8, the compiler has been significantly improved to reduce build time by a factor of 3 on average. A lot of internal changes have been introduced to improve performance and the compiler also emits straight assembly, which helps eliminate one compilation phase.
We also ported the compiler to the latest stable version of LLVM, version 3.3, which was released in late June of this year. This version matches the one Apple uses inside Xcode, and it is also relatively faster than the older version that we were using previously.
The iOS build system will also target the lowest device architecture possible in development mode, so that rake device does not have to create a fat binary.
You may have heard that iOS is going 64-bit! The new iPhone 5s will feature an impressive 64-bit ARM architecture. The iOS 7.0 SDK has also been accordingly updated with 64-bit libraries.
RubyMotion 2.8 is able to create 64-bit binaries for both the simulator and the iPhone 5S, respectively targeting the x86_64 and arm64 architectures.
64-bit iOS executables should have greater performance compared to 32-bit ones. The range of Fixnums and Float immediate objects is doubled, allowing the runtime to not allocate extra memory when creating large numeric types. Also, the compiler can now make use of zero-cost Itanium/C++ exceptions to implement Ruby exceptions, allowing handlers to have a zero runtime cost during the normal execution of the app.
Given the fact that iOS 64-bit has just been announced 2 days ago and that a lot of 3rd-party libraries may not have been updated yet, RubyMotion will not compile 64-bit apps by default. If you’re interested in doing so, you can add the following lines in your Rakefile.
app.archs['iPhoneOS'] << 'arm64' app.archs['iPhoneSimulator'] << 'x86_64'
It’s pretty experimental, so give it a try and let us know if you experience anything weird!
iOS 7.0 GM
RubyMotion supported every beta version of iOS 7.0 as they were being released. Two days ago, Apple finally announced that iOS 7.0 will be available to everyone on September 18th, and provided a last SDK build, the gold master.
RubyMotion 2.8 provides support for iOS 7.0 GM. You can finally go ahead and submit your iOS 7.0 apps!