C
cr88192
Blake McBride said:I added OO capabilities to C including a full MOP, multiple inheritance,
threads, and GC. It is very highly portable to Linux, Windows, Mac, etc.
I call it Dynace and it is open source. See:
http://blake.mcbride.name
anything interesting to say about it?...
ok, it is a preprocessor, and my effort is a full compiler.
I implemented said prototype OO system (pure library feature), but haven't
had much reason to use it yet.
some of the other facilities, have been used in a minor effort of starting a
rewrite of the compiler frontend.
basically, I am going from using one GC/dynamic-typesystem (a precise
system, using tagged references, and a S-Expression based representation for
ASTs and other data), to the new system (the one specified before, but now
with more facilities).
internally, I am going over to using a DOM-like representation for the ASTs
and other internal compiler data (back in 2004/2005, I had been using a VM
of mine, which had also used XML-based ASTs).
of course, all this requires a not exaclty minor level of rewriting for the
compiler frontend...
more recently, another issue has come up:
that of concurrency-related features.
what I am now currently considering, is implementing a library based
message-passing API, and possibly an "abstract" shared memory API.
the shared memory API would be handle-based, and be API-call driven, mostly
in the name of making it "generic", aka: can be implemented purely with
sockets and possibly buffering, and not necessarily involve OS-specific
mmap-like features (mmap on linux, VirtualAlloc on windows). of course, I
could allow such features (getting "pointers" to shared objects), but who
knows (handles would probably be good enough, and such mapping makes
consistency/caching a little more complicated).
another possibility is that of a "shared object system". in such a system,
the fact that objects are shared could be largely hidden mostly by making
them look and behave mostly like local objects (this would be a lot more
complicated, for various reasons, than either a direct or indirect
shared-memory system).
objects would be shared, but nearly everything else would be copied
(problems are made, however, with a conservative GC and an open-ended
typesystem, as this would only really work well for types which can be
handled precisely).
or such...