Hi, > On Jan 21, 2016, at 9:48 PM, stepharo <[email protected]> wrote: > > 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 :)
It’s not insane. It’s a first solution :) Doru > > 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]>: >>> 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 "Not knowing how to do something is not an argument for how it cannot be done."
