[squeak-dev] Re: Package unload status
Andreas Raab
andreas.raab at gmx.de
Tue Jan 5 13:22:11 UTC 2010
Folks -
Here is the latest from the unloading front. In addition to the packages
that could be un- and reloaded the last time around, namely:
> - ReleaseBuilder, ScriptLoader
> - 311Deprecated, 39Deprecated
> - Universes, SMLoader, SMBase, Installer-Core
> - VersionNumberTests, VersionNumber
> - Services-Base, PreferenceBrowser, Nebraska
> - CollectionsTests, GraphicsTests, KernelTests, MorphicTests
> - MultilingualTests, NetworkTests, ToolsTests, TraitsTests
> - XML-Parser, Traits
we can now also un- and reload:
- SystemChangeNotification-Tests, FlexibleVocabularies
- EToys, Protocols
- Tests, SUnitGUI
I decided on an intermediate approach for Tests namely to move all of
Files-Tests, Compiler-Tests, System-Tests, Monticello-Tests etc. into
the Tests package which removed the ClassTestCase dependency.
With the amount of packages removed, we're also starting to get into
"more interesting" ranges for the size of the resulting images. Compare
these numbers for example:
Image Version Classes Methods
Cuis 2.0 644 17442
Squeak Unloaded 1330 33564
Squeak Regular 1951 43906
The great news is that we're roughly halfways on our way towards a
kernel the size of Cuis. I'm hoping that as things get smaller we can
find common ground such that Cuis + MC + M17N = SqueakCore (or something
close to that). FWIW, here are the largest packages after removal:
Package Classes Methods
Morphic 185 6925
Kernel 86 3509
System 120 3204
MorphicExtras 126 2856
Graphics 57 2257
Collections 89 2196
Tools 50 1724
ST80 66 1509
Monticello 97 1439
Network 61 1360
Sound 54 1234
Compiler 53 1151
Multilingual 92 1051
Files 18 509
Balloon 22 462
Compression 28 436
ToolBuilder-Kernel 20 317
SUnit 16 311
TrueType 9 209
ToolBuilder-Morphic 12 173
ShoutCore 4 143
Exceptions 40 141
PackageInfo-Base 4 133
MonticelloConfigurations 6 122
ToolBuilder-SUnit 12 80
ToolBuilder-MVC 3 57
Cheers,
- Andreas
-------------- next part --------------
"Prepare unloading"
Flaps disableGlobalFlaps: false.
StandardScriptingSystem removeUnreferencedPlayers.
Project removeAllButCurrent.
#('Morphic-UserObjects' 'EToy-UserObjects' 'Morphic-Imported' )
do: [:each | SystemOrganization removeSystemCategory: each].
Smalltalk at: #ServiceRegistry ifPresent:[:aClass|
SystemChangeNotifier uniqueInstance
noMoreNotificationsFor: aClass.
].
World removeAllMorphs.
"Go unloading"
#( 'ReleaseBuilder' 'ScriptLoader'
'311Deprecated' '39Deprecated'
'Universes' 'SMLoader' 'SMBase' 'Installer-Core'
'VersionNumberTests' 'VersionNumber'
'Services-Base' 'PreferenceBrowser' 'Nebraska'
'CollectionsTests' 'GraphicsTests' 'KernelTests' 'MorphicTests'
'MultilingualTests' 'NetworkTests' 'ToolsTests' 'TraitsTests'
'SystemChangeNotification-Tests' 'FlexibleVocabularies'
'EToys' 'Protocols' 'XML-Parser' 'Tests' 'SUnitGUI'
) do:[:pkgName| (MCPackage named: pkgName) unload].
"Traits use custom unload"
Smalltalk at: #Trait ifPresent:[:aClass| aClass unloadTraits].
"Post-unload cleanup"
PackageOrganizer instVarNamed: 'default' put: nil.
SystemOrganization removeSystemCategory: 'UserObjects'.
Presenter defaultPresenterClass: nil.
World dumpPresenter.
Preferences removePreference: #allowEtoyUserCustomEvents.
SystemOrganization removeEmptyCategories.
ChangeSet removeChangeSetsNamedSuchThat:[:cs | (cs == ChangeSet current) not].
Undeclared removeUnreferencedKeys.
StandardScriptingSystem initialize.
MCFileBasedRepository flushAllCaches.
MCDefinition clearInstances.
Behavior flushObsoleteSubclasses.
ChangeSet current clear.
ChangeSet current name: 'Unnamed1'.
Smalltalk flushClassNameCache.
Smalltalk at: #Browser ifPresent:[:br| br initialize].
DebuggerMethodMap voidMapCache.
DataStream initialize.
Smalltalk forgetDoIts.
AppRegistry removeObsolete.
FileServices removeObsolete.
Preferences removeObsolete.
TheWorldMenu removeObsolete.
Smalltalk garbageCollect.
Symbol compactSymbolTable.
TheWorldMainDockingBar updateInstances.
More information about the Squeak-dev
mailing list
|