reducing also the number of classes in the kernel could help.
But first it should work and then we start to optimize
Now this is true that 10 h is insane :)
Le 20/1/16 09:08, Christophe Demarey a écrit :
Hi Pavel,
Le 19 janv. 2016 à 19:53, Pavel Krivanek a écrit :
Hi,
amazing! Do you have any idea how to speed up it? The bootstrap
process is now running on my machine about one and half hour and it
is still far from finish.
The process is indeed far too long (takes around 10 hours) on the CI
server.
Reasons are:
- we use a stack interpreter VM
- we modified it and is a bit slower than a classical stack VM
- we use AST interpretation to build the bootstrap and it is very
slow. Guille already did some speed improvements by avoiding to
interpret loops by example.
I did not yet spend time on this point because I first wanted to have
something working.
Definitely, this problem will be tackled when we will put in
production the bootstrap.
Cheers,
Christophe
Cheers,
-- Pavel
2016-01-19 15:29 GMT+01:00 Christophe Demarey
<[email protected] <mailto:[email protected]>>:
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
<http://chercheurs.lille.inria.fr/%7Edemarey/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