This is amazing news! For those that might be less involved in this, the minimal image is a long term goal that is essentially in the works since the beginning of Pharo. It accumulated a ton of effort from multiple people (I did not participate, but I have an idea of the amount of effort and it really is huge and tedious), and now we see the first palpable result. This is one of those things that have almost no visible output, but will turn out to have a tremendous impact.
I would like to thank everyone involved! Please do keep this up. Even if it might look less rewarding, you should know that this work is greatly appreciated. Cheers, Doru > On Jan 19, 2016, at 3:29 PM, Christophe Demarey <[email protected]> > wrote: > > Hi all, > > In case you do not know, we work on bootstrapping Pharo, i.e. create a Pharo > image from sources, not based on a previous image (well, we use a pharo image > to produce it but no code / state from it). > > This process will allow to define a minimal Pharo kernel (currently 52 > packages but we could have it far smaller) and to modularize the whole image > (currently packages have too much dependencies on packages already loaded > into the image). > The bootstrap process also allows to write down the recipe to initialize a > new image from scratch (some code is missing in the image or is wrong). In > addition, I think we will clean a lot of historical objects that are not used > anymore. > > With the amazing work done by Guillermo Polito during his Phd (around Espell, > Oz): https://guillep.github.io/files/publications/Poli15Thesis.pdf, we > succeeded to get a first prototype of a bootstraped Pharo 5 image (from > 5.392). > This prototype is able to run an eval command line handler and to log output > / errors. Not all classes are yet initialized and you cannot yet save / > restart this image but it is a big step forward. > It is a 4 mb image (could be half the size without unicode data). You can > download it at: > http://chercheurs.lille.inria.fr/~demarey/pmwiki/pub/pharo-bootstrap/pharo-bootstrap.zip. > > Next steps are to have a bootstrapped image fully working, then to load > packages on top of it (like network, sunit) to produce a minimal image. > Then, we need to implement an Oz VM on top of Spur. > After that, we need to work on a reliable way to build the bootstrap (not too > sensitive to changes in the image). > > Christophe. > > ------- > demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$ ../pharo > bootstrap.image --no-default-preferences eval "1 + 1" > 2 > demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$ ../pharo > bootstrap.image --no-default-preferences eval "'a' , 'b'" > 'ab' > demarey@193-51-236-143:~/dev/rmod/bootstrap/bootstrap-2016-01-19$ ../pharo > bootstrap.image --no-default-preferences eval "1 / 0" > ZeroDivide > SmallInteger>>/ > UndefinedObject>>DoIt > OpalCompiler>>evaluate > OpalCompiler(AbstractCompiler)>>evaluate: > SmalltalkImage>>evaluate: > > EvaluateCommandLineHandler>>no (source is Undeclared) > no source in EvaluateCommandLineHandler>>evaluate: in Block: no source > BlockClosure>>on:do: > EvaluateCommandLineHandler>>evaluate: > EvaluateCommandLineHandler>>evaluateArguments > EvaluateCommandLineHandler>>activate > EvaluateCommandLineHandler class(CommandLineHandler class)>>activateWith: > > BasicCommandLineHandler>>no (source is Undeclared) > no source in > PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand: in > Block: no source > BlockClosure>>on:do: > PharoCommandLineHandler(BasicCommandLineHandler)>>activateSubCommand: > PharoCommandLineHandler(BasicCommandLineHandler)>>handleSubcommand > PharoCommandLineHandler(BasicCommandLineHandler)>>handleArgument: > > BasicCommandLineHandler>>no (source is Undeclared) > no source in PharoCommandLineHandler(BasicCommandLineHandler)>>activate in > Block: no source > BlockClosure>>on:do: > PharoCommandLineHandler(BasicCommandLineHandler)>>activate > PharoCommandLineHandler>>activate > PharoCommandLineHandler class(CommandLineHandler class)>>activateWith: > > PharoCommandLineHandler class>>no (source is Undeclared) > no source in PharoCommandLineHandler class>>activateWith: in Block: no source > NonInteractiveUIManager(UIManager)>>defer: > PharoCommandLineHandler class>>activateWith: > no source in BasicCommandLineHandler>>activateSubCommand: in Block: no source > BlockClosure>>on:do: > BasicCommandLineHandler>>activateSubCommand: > BasicCommandLineHandler>>handleSubcommand > BasicCommandLineHandler>>handleArgument: > no source in BasicCommandLineHandler>>activate in Block: no source > > SmallInteger>>no (source is Undeclared) > > UndefinedObject>>no (source is Undeclared) > > AbstractCompiler>>no (source is Undeclared) > > SmalltalkImage>>no (source is Undeclared) > > BlockClosure>>no (source is Undeclared) > > EvaluateCommandLineHandler>>no (source is Undeclared) > > EvaluateCommandLineHandler>>no (source is Undeclared) > > CommandLineHandler class>>no (source is Undeclared) > > BasicCommandLineHandler>>no (source is Undeclared) > > BasicCommandLineHandler>>no (source is Undeclared) > > PharoCommandLineHandler>>no (source is Undeclared) > > UIManager>>no (source is Undeclared) > > UndefinedObject>>no (source is Undeclared) > > CommandLineUIManager>>no (source is Undeclared) > > SmalltalkImage>>no (source is Undeclared) > > DelayMicrosecondScheduler>>no (source is Undeclared) > > BlockClosure>>no (source is Undeclared) > > SmalltalkImage>>no (source is Undeclared) > > WeakArray class>>no (source is Undeclared) > > > ps: source cannot be displayed because there is no formatter available in the > bootstrap > -- www.tudorgirba.com www.feenk.com "It's not what we do that matters most, it's how we do it."
