[cfe-dev] Question on Objective-C Runtime(s)

David Chisnall csdavec at swansea.ac.uk
Tue Nov 18 16:39:17 PST 2008


Hi Gregory,

Apple has two and a half runtimes, and these are the default (and  
only) ones that are supported on OS X, but aren't used anywhere else  
and I don't believe anyone has expressed an interest in porting them  
elsewhere.  If you are using Objective-C on OS X you will almost  
certainly want to use these (none of them are binary-compatible, so if  
you use a non-Apple runtime you can't use any of the Cocoa frameworks).

The GNU one has been rewritten a few times, and is a now good  
implementation of '80s ideas.  This is more-or-less supported by clang  
(if you find any bugs, let me know.  I suspect there is a bug in  
handling of message sends to super in a few corner cases from my  
memory of the code, but I haven't looked to see if any of the  
refactoring by others has fixed it).  Last time I checked, clang could  
almost compile GNUstep (open source implementation of OpenStep)  
targeting the GNU runtime, with a few errors coming from some  
horrendous abuses of GCC extensions in some ancient GNUstep code that  
no one has look at since GCC 2 was state of the art.

The Étoilé runtime will, eventually, be used by Étoilé and hopefully  
GNUstep.  I wrote a partial implementation of the back end for  
supporting it with clang, but the interfaces changed and it wasn't  
updated.  At some point in the next six months I hope to revisit this  
and get it working again.  In order for it to actually be useful, a  
few bits of the Foundation library need to be rewritten (parts of  
NSObject, NS*ExtraRefCount and so on), so this isn't a trivial task,  
but hopefully some time before Étoilé 0.7 we will have a break-the- 
world release and switch from the GNU runtime.

Each runtime interface is implemented by a separate subclass of  
CGObjCRuntime.  This makes it very easy to support new runtime systems  
in the future.  One thing I'd like to play with, for example, is using  
clang to target Flash, and use the native object model in the  
ActionScript VM to implement Objective-C objects.

David

On 19 Nov 2008, at 00:21, Gregory Gelfond wrote:

> Hi All,
>
> This is my first posting to this list and I had some questions. I've
> been attempting to read some of the archives and it appears that there
> are a number of runtimes for Objective-C - the Apple runtime, GNU
> runtime, and the one used by Etoile (developed by David Chisnall I
> think). From what I read each has it's own possible benefits and
> drawbacks, but reading this post by Chisnall on the Etoile blog:
> http://etoileos.com/news/archive/2008/05/12/1719/ makes it appear that
> his is a significant improvement over the GNU runtime.
>
> Can anyone let me know what the various differences between the
> runtime environments are. Also are there any plans to favor on over
> another (or incorporate features from one to another)?
>
> Thank you kindly for your time,
> Gregory Gelfond
> _______________________________________________
> cfe-dev mailing list
> cfe-dev at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-dev





More information about the cfe-dev mailing list