I'm attempting to create a (at least partial) implementation of the Io language( for my own learning, and perhaps to produce a faster implementation).
Basically, the plan is to read in a Io program (as text), convert it into a message-pass tree, and then execute that tree. I'm using plain c, and have defined some very generic structures for objects, messages, methods, etc. To avoid needing to know function types at compile time, all underlying c-functions have exactly 2 parameters(an int for the number of parameters, and a pointer to an array of parameters) and return a generic struct. I've written most of a message passing function that transverses a message tree, looks up slots, and then calls appropriate method(some of which call underlying c-functions to get things done). The issue I see is that although my executable will have built in basic functions, Io does allow external c-functions to be called. For example, someone should be able to write a method in Io that binds to an openGL function.
This is my first attempt at something like this and also the first time I've explored dynamic linking.