Skip navigation.
 
mlRe: Ruby/Python - mixed language apps, and garbage collection
FROM : Bill Bumgarner
DATE : Sun Nov 18 18:32:31 2007

On Nov 18, 2007, at 7:58 AM, Graham Perks wrote:
> I couldn't find a more appropriate mailing list. I just have a 
> couple of questions:
>
> 1) Can we add Python or Ruby classes to an existing Objective-C 
> project? I can't find a sample that mixes languages. I tried adding 
> some .rb files to my project, but they don't seem to be loaded at 
> runtime. Is there a way to make this work (assuming mixing languages 
> is supported at all)?


You need to add the bootstrap code necessary to bring up the Python or 
Ruby interpreter in your existing application.  The easiest way to do 
this is to create a new Cocoa Python or Cocoa Ruby project, then copy/
paste out the bits from the main file(s) that are needed.

Some slight changes will be needed to those files to make it all work 
correctly.  See the "embedding" documentation for your language of 
choice.

> 2) In the WWDC 2006 or 2007 slides there was a bullet about "Memory 
> management does not work" and the vocal comment was that this was 
> still being looked into. I didn't grasp the full consequences about 
> this - was it saying no garbage collection for Python/Ruby programs 
> at all? No garbage collection for mixed-language apps? Or just no GC 
> on the Objective-C side of a mixed app? And, what is the current 
> status of this rather important bullet?


Objective-C Garbage Collection cannot be enabled in Ruby/Python based 
Cocoa applications.  Specifically, you can't use Objective-C objects 
on the scripting language side of the bridges.

If you are embedding Ruby or Python with the purpose of running 
straight ruby/python scripts, with non-object data coming from the 
objective-c side of the world, it isn't an issue.

(Technically, there really isn't a reason why you couldn't enable GC 
for RubyCocoa and PyObjC.  You would need to recompile the bridges and 
Python/Ruby interpreters with GC enabled.  Once enabled, you "just" 
need to make sure that any reference to an Objective-C object passed 
through to Ruby/Python continues to have a strong reference on the obj-
c side of the bridge.)

b.bum

Related mailsAuthorDate
mlRuby/Python - mixed language apps, and garbage collection Graham Perks Nov 18, 16:58
mlRe: Ruby/Python - mixed language apps, and garbage collection Bill Bumgarner Nov 18, 18:32
mlRe: Ruby/Python - mixed language apps, and garbage collection Graham Perks Nov 19, 14:12
mlRe: Ruby/Python - mixed language apps, and garbage collection Bill Bumgarner Nov 19, 18:53
mlRe: Ruby/Python - mixed language apps, and garbage collection Satoshi Nakagawa Nov 23, 05:41