Minimal images [was: Re: [ANN] Spaghetti Tracer (0.4)]

Tim Rowledge tim at sumeru.stanford.edu
Mon Nov 4 16:11:56 UTC 2002


"Andreas Raab" <Andreas.Raab at gmx.de> is claimed by the authorities to have written:

> It's relatively simple to make a rough cut at 300-400k in Squeak "as a
> useful small system", e.g., without doing a lot of careful crafting and
> still be able to do about everything you can imagine. At this size you
> end up with basically the following stuff:
> a) Kernel (Object, Boolean, Behavior, Class etc)
> b) Processes (Process, Delay, ProcessorScheduler etc)
> c) Execution (CompiledMethod, Contexts, Exceptions)
> d) Magnitudes
> e) Collections (the basic ones; String, BA, Set, Dict, Array, OC etc)
> f) Streams (the basic internal ones)
> g) Files (directories, streams)
> h) Compiler
> 
> With the above, you are actually able to have a cross-platform Squeak
> with a quite reasonable size and no limits of what you can do. I think
> it'd be much harder to get any less than that - if you look at the above
> everything from a) to e) is pretty much required and only very careful
> crafting could remove any of these. The best additional candidates would
> probably be g) and h) by which you'd give up cross-platform and the
> ability to "get more" into Squeak (which might be handled by a compiled
> byte code loader).
If you substitute an image segment/project/module/whatever loader then
I think a workable system could be made without the filestream/directory
stuff or the compiler. Obviously a-f could be individually trimmed to a
suitable bare minimum rather that just including what's already in
the image. Not that this is news to andreas, but maybe to some people.

> > I can imagine a source-only "image" that could be executed by a VM
> > that did dynamic translation (into bytecodes or beyond). This
> > relieves the need for a compiler in the image (other than something
> > that just adds new source to a method dictionary (or simple list!)).  I
> > think the essence that is required of a minimal "complete" image is just
> > enough to make the source code meaningful, not necessarily efficient.
The problem with this idea is that there has to be some compilerlike
functionality somewhere to do the conversion and putting it in the VM
only makes life harder in the end.


The really good part of stripping the junk out is that it makes it
easier to think about good ways to add new stuff back in _as you need
it_ . My view of modules etc is that I don't really care much if the
system allows adding and removing modules at run time - I think
virtually all my imagined needs can be met by a system that starts with
a kernel and allows me to _add_ the extra I want and then (optionally)
save that construct. But then I am merely a simple engineer.

tim

-- 
Tim Rowledge, tim at sumeru.stanford.edu, http://sumeru.stanford.edu/tim
Ghod made machine language; all the rest is the work of man.




More information about the Squeak-dev mailing list