On Sun, Mar 1, 2009 at 10:04 PM, Craig Latta <craig@netjam.org> wrote:

> You should ask John, but the aim was to get a minimal Hello World so
> there isn't a compiler for example.  But surely the answer is
> "whatever you need to get what you want done", right?

    Heh, sure... but you're not answering my question. :)  I'm wondering how others have gone about deriving the complete set of classes and methods a system needs to perform a particular task (so that I can compare to how I do it). Indeed, I should ask John.

Hmm, I think the key question here is: what do you want to be able to do with the image you create?  I've no idea how John did this, but I think I would start by writing a method that did all the things I'd want to be able to do in the image I ultimately create.  This might be things like compiling a string of code, loading something from a file (or socket), etc...the bare minimum of things you'd absolutely need to do in a minimal image.  Then I'd guess you could create a shadow M* class with this method in it and some sort of proxies for literals and global references.  With a little doesNotUnderstand: magic I'd think you could run that method, hit those proxies and copy over other classes and methods as you hit them.  I'm sure the devil is in the details, but this top level method that expresses exactly the things that you'd want to be able to do in this minimal image seems like it would be an interesting artifact in and of itself.  It would be in a sense a specification of this image.

- Stephen