Hi,
The current Pharo4 contains *a lot* of MCVersionInfo instances.
MCVersionInfo allInstances size
11095
The hold on to strings, Date, UUID… a lot of stuff. All in all, this is around
10% of the current
image.
If you do
MCVersionInfo allInstances do: [ :each | each instVarNamed: 'ancestors' put:
nil ].
you image is a couple of MB smaller.
In the past, when this information started to be >8MB, we did that. With the
bad effect
that we can not merge anymore across this boundary: we kill the past.
Now this information is of course continained in the last MCZ file, too (all of
them contain
the complete history…)
So would the following work?
-> we set the “ancestors” of MCVersionInfo to #reload
-> the accessor, when it sees #reload, takes the name, deduces from that the
package,
and goes to the repo to load the ancestry info from the MCZFile.
This means that e.g when saving a MCZFile, it would first re-create history
info and then save
it completely (like now), yet someone who just uses the system would never need
to have this
info in the image.
Marcus