cobj
One of my slowly-progressing spare-time projects is yet another
object system for C called "cobj". This one is
different from the others (such as
C++,
Objective-C,
GTK,
OOPC,
etc.) because it is explicitly designed to support the long-term
maintenance of ABI compatibility, which is particularly useful for systems
that can load binary code modules at run-time. Although Java etc. has mostly
made this kind of technology obsolete, there is still plenty of low-level
code that is written in C that can benefit from OO techniques, such as
JVMs and Unix kernels; indeed, the starting-point for cobj was
FreeBSD's kernel object system,
kobj.
To this basis I have added ideas from
CLOS, such as a simple
metaobject protocol
and the idea of a metacircular implementation (cobj is
written in cobj), and a better desugaring preprocessor.
It is still a work in progess, though, so
email me if you want more information.
You can also look at
FreeBSD PR#35978
and a couple of
my
posts to comp.std.c
which are related to cobj.
<dot@dotat.at>
$dotat: doc/web/writing/cobj.html,v 1.2 2003/07/03 14:18:08 fanf2 Exp $