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.
_______________________________________________
Etoile-dev mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-dev

Reply via email to