[Modules] Progress report

danielv at netvision.net.il danielv at netvision.net.il
Sat May 25 01:24:45 UTC 2002


Someone asked a while ago for a progress report. I just finished running
everything released that's supposed to unload something, while
collecting some metrics. The first datum is that in this order,
everything works off a clean 4857 image.

What was unloaded?

These are small modules, removed based on my work of the last couple of
weekends.
#(Squeak Network Applications MailReader)
#(Squeak Network Applications IRCChat)
#(Squeak Technology Benchmarks)
#(Squeak Morphic Demo Games)
#(Squeak Technology Archives Applications)
#(Squeak Language Exceptions Tests)

The big ones by Henrik:
#(Squeak VMConstruction)
#(Squeak Media Balloon3D)

At this point, these are modules had no incoming dependencies and could
be removed (I don't know if Henrik worked on this explicitly, I didn't).
#(Image StandardRelease)
#(Squeak EToy Imported)
#(Squeak EToy Outliner)
#(Squeak EToy UserObjects)
#(Squeak Development Test TextEditing)
#(Squeak Development Test SUnit UI)
#(Squeak Development Test SUnit Tests)
#(Squeak Development FileList Test)
#(Squeak Network Applications PluggableWebServer)
#(Squeak Network UUID)
#(Squeak Morphic Tests)
#(Squeak Morphic Widgets)
#(Squeak Morphic Applications Media)
#(Squeak Morphic Applications PDA)
#(Squeak Morphic Library Models)
#(Squeak Morphic Demo Components Built)
#(Squeak MVC Symbols)
#(Squeak Media Movies Player)
#(Squeak Media Speech PhonemeRecognizer)
#(Squeak Media Speech Klatt KlattResonatorIndices)
#(Squeak Media Speech TTS)
#(Squeak Media Speech)
#(Squeak Media Balloon TrueType)
#(Squeak Media Graphics Tools Simplification)
#(Squeak Media Graphics Tools Triangulation)
#(Squeak Media Graphics Tools Intersection)
#(Squeak Media Graphics Tools)
#(Squeak Media Graphics External)
#(Squeak Technology FFI Examples X11)
#(Squeak Technology FFI Examples Win32)
#(Squeak Technology FFI Examples MacOS)
#(Squeak Technology FFI Examples)
#(Squeak Technology FFI Plugin)
#(Squeak Technology SerialPort)
#(Squeak Technology Files Tests)
#(Squeak Language Modules Analysis)
#(Squeak Language Modules Tests)
#(Squeak Language Modules Refactorings)
#(Squeak Language Collections Tests)
#(Squeak Language Core Tests)
#(Squeak Language Core Magnitudes Tests)

How far are we? 
Before the unload, we had 1805 classes under Squeak.

After the unload we have 1229 classes under Squeak, of which 804 are
still strung up in various loops according to a strong connected
components. That's 804 classes Object is indirectly dependent on - quite
a lot awaits removal.

Analyzing by major categories, these are the numbers of classes that
exist:
Before:
 an OrderedCollection(
Squeak Language)->208 
Squeak Technology)->136 
Squeak Media)->451 
Squeak MVC)->74 
Squeak Morphic)->329 
Squeak Network)->189 
Squeak Development)->87 
Squeak VMConstruction)->99 
Squeak EToy)->232)

And after:
Squeak Language)->187 
Squeak Technology)->113 
Squeak Media)->194 
Squeak MVC)->72 
Squeak Morphic)->279 
Squeak Network)->131 
Squeak Development)->76 
Squeak EToy)->175)

This is the script I've used in order to do this (I think I've sent up
everything except for MoreAnalysis.1.cs which matters only for the SCC
data, and I haven't yet cleaned up):

ChangeSorter fileIntoNewChangeSet:
'/home/danielv/offLoadNoteBook/squeak/MovingClasses.cs'.
ChangeSorter fileIntoNewChangeSet:
'/home/danielv/offLoadNoteBook/squeak/MoreAnalysis.1.cs'.
ChangeSorter fileIntoNewChangeSet:
'/home/danielv/offLoadNoteBook/squeak/CarefulModule.2.cs'.

Preferences disable: #accessOnlineModuleRepositories.

{'plugin-rename.4.cs'. 
'makeVMConstrReloadable.5.cs'.
'dependencyFix.4.cs'.
'poolsFix.1.cs'.
'fasterModuleSaving-hg.1.cs'.
'fixChessPool.3.cs'.
'refactoringToolsRefactoring.cs'.
'codegeneratorModuleFix.1.cs'} 
do: [:name | |fileName |
fileName _ '/home/danielv/offLoadNoteBook/squeak/', name.
ChangeSorter fileIntoNewChangeSet: fileName].

{'CelesteRemoval.8.cs'.
'MailComposition.st'.
'RefactoredCeleste.5.cs'.
'UnloadingDemos.1.cs'.
'DynamicWorldMenu.4.cs'}
do: [:name | |fileName |
fileName _ '/home/danielv/offLoadNoteBook/squeak/', name.
ChangeSorter fileIntoNewChangeSet: fileName].

ParserRemovedUnusedTemps moveTo: Module @ #(Squeak Language Exceptions
Core).
FileList removeSelector: #addFileToZip.
Benchmarks moveTo: (Module fromPath: #(Squeak Technology Benchmarks)
forceCreate: true).

| module nextRound |
#(
(Squeak Network Applications MailReader)
(Squeak Network Applications IRCChat)
(Squeak Technology Benchmarks)
(Squeak Morphic Demo Games)
(Squeak Technology Archives Applications)
(Squeak Language Exceptions Tests)
) do: [:path | module _ Module @ path.
	module deepDeclareExternalRefs.
	nextRound _ (module importedModules, {module parentModule}) asSet.
	module repository beStandalone.
	ModuleInstaller upload: module.
	Transcript show: 'About to remove'; show: module; cr.
	ModuleInstaller unload: module.
	Transcript show: 'Now have: '; show: (Module root Squeak submodules
collect: [:e | e -> e deepClasses size]).
	Transcript show: 'candidates '; show: (nextRound select: [:e | e valid
and: [(e deepIncomingRefsFromOutside: e) size = 0]])]

 | module |
   module := Module @  #(Squeak VMConstruction).
   module defineClassExtensionsOutside: module.
   ModuleInstaller unload: module

 | module | 
   (module _ Module @  #(Squeak Media Balloon3D))
defineClassExtensionsOutside: module.
   ModuleInstaller unload: module



More information about the Squeak-dev mailing list