Minimal release images (currently 6.2MB)

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Minimal release images (currently 6.2MB)

Adrian Lienhard
Hi all,

Here is the result of some more effort I put into creating small images from PharoCore. Running "ScriptLoader new cleanUpForProduction" in the latest PharoCore 1.1 you get an image that is 6.2 MB on disk. There are two goals for shrinking images: (i) sparing some megabytes makes a big difference if you run a lot of images on a server, also they start up much faster; (ii) modularization: being able to reliably unload packages forces us to cleanly package our code without unnecessary interdependencies.

Note that after running #cleanUpForProduction, you need to close all windows, save the image, restart it, trigger a GC, and save the image again (because for instance the Mac host menu classes will only go away after a restart).

In addition to #cleanUpForRelease the production cleanup does the following:
- removing all tests and the SUnit test runner
- removing all methods storing binary graphic resources (icons and fonts)
- removing the help system and Mac host menu
- changing all font selections to Accuny and deleting Deja Vu fonts
- deleting the logo
- deleting MC ancestry information
- deleting ScriptLoader

I made sure that these removals result in a clean system, that is, no undeclared and no obsolete classes.

Cheers,
Adrian

BTW, if you have more cleanup code or ideas where we could spare some bytes, let me know :)

___________________
http://www.adrian-lienhard.ch/


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Minimal release images (currently 6.2MB)

Mariano Martinez Peck


On Mon, Jun 7, 2010 at 2:17 PM, Adrian Lienhard <[hidden email]> wrote:
Hi all,

Here is the result of some more effort I put into creating small images from PharoCore. Running "ScriptLoader new cleanUpForProduction" in the latest PharoCore 1.1 you get an image that is 6.2 MB on disk. There are two goals for shrinking images: (i) sparing some megabytes makes a big difference if you run a lot of images on a server, also they start up much faster; (ii) modularization: being able to reliably unload packages forces us to cleanly package our code without unnecessary interdependencies.

Note that after running #cleanUpForProduction, you need to close all windows, save the image, restart it, trigger a GC, and save the image again (because for instance the Mac host menu classes will only go away after a restart).


This is excellent news Adrian. It is in my todo list to cleanly remove Mac Host Menu from Core images and load them in Dev. The problem was that they were disable in latest core as they were not working. Now they are working again so I can start what I wanted to do..when I find time. There is a ticket for this if someone is interested to play ;)




BTW, if you have more cleanup code or ideas where we could spare some bytes, let me know :)


I have one that depends in the client's application, but most of the times it is worth:

"To put all all classes with the default category. Still can browse and recompile the whole image.
Most production environments don't care about categories...this make sense when developing."

Smalltalk allClassesAndTraitsDo: [:each | each zapOrganization ].

With that, the image decrease to 5.9 MB.

Cheers

Mariano

 
___________________
http://www.adrian-lienhard.ch/


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: Minimal release images (currently 6.2MB)

Alain Plantec-4
In reply to this post by Adrian Lienhard
Le 07/06/2010 14:17, Adrian Lienhard a écrit :
>
> BTW, if you have more cleanup code or ideas where we could spare some bytes, let me know :)
>    
the settings related packages should be removable:
System-Settings and all Settings-* packages.

Alain

> ___________________
> http://www.adrian-lienhard.ch/
>
>
> _______________________________________________
> Pharo-project mailing list
> [hidden email]
> http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
>
>    


_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project