[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.
- ANN: New Objective-C Runtime,
David Chisnall <=