discuss-gnustep
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

ANN: New Objective-C Runtime


From: David Chisnall
Subject: ANN: New Objective-C Runtime
Date: Thu, 8 Nov 2007 15:03:49 +0000

Hi Everyone,

I've spent the last two days locked in my room doing some therapeutic coding[1], and the result is a new Objective-C runtime (rejection is obviously good for my productivity; I should apply for more jobs). A quick summary of features:

- Two layer model, with Self-like object model at the core and classes built on top.
- Very small code base (roughly 10% of the size of the GNU runtime)
- Support for @synchronized on all objects / classes.
- Support for concrete protocols / mixins.
- Support for prototype-based object orientation (can be mixed with class-based; classes really are just another kind of object in this runtime) - Support for safe method caching (including polymorphic inline caching) with low overhead. - Support for fast accessor methods (we can implement properties that are much faster than Apple's)

The core sparse array implementation is a bit basic and could do with some tuning and, of course, it needs compiler support to actually be useful. The core runtime is tested, but the class-based part isn't yet so there are probably lots of bugs there. I plan on writing a set of macros representing the basic Objective-C primitives, but so far I have only done message dispatch (three version; basic, inline cache, polymorphic inline cache).

You can find a more detailed overview of the library design here:

http://cs.swan.ac.uk/~csdavec/libobjc/libobjc.pdf

Interface documentation:

http://cs.swan.ac.uk/~csdavec/libobjc/libobjc.pdf

The code is currently in a branch in the Étoilé repository:

svn://svn.gna.org/svn/etoile/branches/libobjc_tr/

Comments welcome, bug fixes very welcome.

David

[1] Well, I did eat, sleep, shower and make toffee in the middle, and procrastinate a lot reading online comics too, but you get the idea.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]