thanks doru. Yes this is a long term effort :)

Le 19/1/16 18:10, Tudor Girba a écrit :
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."





Reply via email to