On Oct 7, 2007, at 10:20 PM, James McCartney wrote:

Does anybody want to address this comment made on LtU about "what
things are not easily possible"?

I made the comment. I just joined this list. I'd be interested to see
a response there or here.

The dependency on the C compiler is temporary. Using C as a (bad) structured assembler is useful for bootstrapping and portability, but is clearly inadequate for building interesting runtime mechanisms. Compatibility with native conventions is useful for interoperating with libraries and the OS, but the ultimate goals are more general. We want to support heap-allocated contexts and spaghetti stacks, be able to precisely trace pointers in the stack, and be able to communicate with activation frames by sending them messages as real objects. Knowing the layout of stack frames and 'objectifying' C stack-allocated frames isn't hard (when the C compiler is replaced with something more intelligent) and we have some ideas about dealing with calling C library and OS functions (where stack resources are assumed to be relatively unbounded) from heap-allocated contexts, but ideas and pointers (and eventually code) would be very welcome. My hope is that useful departures from the C ABI can be made in ways that subsume, but do not conflict with, the limited conventions imposed by calling out to foreign code. Being able to easily experiment with alternative ABIs at the instruction level will hopefully foster innovation in these areas.

The object model is the simplest that could be used to bootstrap some of the ideas. Limiting the dispatch to discriminating on the first argument is a severe limitation that has to be dealt with soon (it's already causing problems). Fixing this is part of a larger generalisation and unification of the roles of object, message name, and function that is planned but not yet implemented. In particular, message/function names and selectors should be distinct objects -- with selectors and types(/classes/whatever) having equal influence in determining and encapsulating behaviour. Selectors will be involved in determining the code emitted for their own call sites, subsuming the generic function-like behaviour you mention, bringing message dispatch and function application together as a single operation with no limits to the complexity of binding, dispatch and application mechanisms involved.

I hope some of that makes sense. I could paraphrase like this: we've genetically engineered 1/3rd of a franken-chicken that is missing lots of body parts but that we hope can be coerced into laying eggs that hatch into increasingly more complete franken-chickens, and eventually eggs for any species you like -- feathered or not. What you are seeing today is missing the (far) more interesting 2/3rds that hide the non crippled-chicken possibilties.

Cheers,
Ian




_______________________________________________
fonc mailing list
[email protected]
http://vpri.org/mailman/listinfo/fonc

Reply via email to