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
