Recently on the RubyCocoa front, I have been working on making it functional under a 64-bit environment.
First the metadata generator had to be modified to produce 64-bit annotations, as some elements may have a different encoding type or value depending on the architecture. At the same time the generator is now able to handle endianness-specific elements, that may be different on a PPC and i386 machine.
Secondly, the version of the libffi library that we use had to be ported to 64-bit. I took an existing port of x86_64 and adapted it for the Mac OS X ABI. ppc64 support is still missing.
And finally, the bridge itself had to be adapted to support 64-bit related things, like pointer conversions. This was fairly easy to do.The result is pretty gratifying, it's like putting all the pieces of a puzzle together. The samples are now working great on 64-bit.
On the other side, I worked on a pretty annoying issue related to threading. One of the biggest issue with Ruby 1.8 is that the runtime isn't thread-safe. It means that you cannot call the Ruby runtime in a thread that isn't the main one. And this of course is problematic when Ruby is bridged to Objective-C, because some Cocoa classes are susceptible to callback you in a thread. And you crash.
The solution would be of course to make Ruby thread-safe, but this isn't easy, and Ruby 1.9 should be thread-safe. So an interim solution is to route threaded messages from Objective-C into the main thread. This isn't ideal as it may impact the performance (or even more serious, cause a deadlock). But it's still better than crashing.
There is a second recurrent threading issue, related to the Ruby threading model implementation, that I will discuss later in a separate post.