Another useful snip

stéphane ducasse ducasse at iam.unibe.ch
Fri Mar 18 08:29:50 UTC 2005


Could I suggest that you all use a dedicated class for grouping all  
this logic.
It seems that Mike did a releaseBuilder class so this would be good to  
put all these cool methods in one place
and let SystemDictionary rest in pace.

Stef

On 18 mars 05, at 2:47, Dan Ingalls wrote:

> About four years ago, I got serious about partitioning the system as  
> part of the Environments project.  Since I have a small brain I wrote  
> a Squeak method to help, which is still in the system (except that it  
> got broken by some effort to split up SystemDictionary :-(  :-(.  A  
> fix is attached).  Anyway, consider...
>
>     Smalltalk reportClassAndMethodRemovalsFor: #(Celeste Scamper  
> MailMessage)
>
> This grinds for a few minutes, and then *automagically*produces an  
> array of two very useful results.  The first is an IdentitySet  
> containing 63 classes that can all be removed together with the  
> original 3 without leaving any broken links:
> ---------
> HtmlBoldEntity HtmlDefinitionTerm HtmlHorizontalRule HtmlSubscript  
> HtmlBiggerFontEntity HtmlSmallerFontEntity HtmlComment HtmlInput  
> CelesteCategoryFilter HtmlListItem RadioButtonInput HtmlUnorderedList  
> ScaffoldingCeleste HtmlBlockQuote HtmlArea HtmlTitle ToggleButtonInput  
> HtmlForm MorphicTextEditor HtmlTokenizer HtmlDefinitionDefinition  
> HtmlTag HtmlStyle CelesteCodeFilter HtmlDocument FormInputSet HtmlMap  
> HtmlOption DHtmlFormatter HtmlTable HtmlItalicsEntity HtmlTableHeader  
> TextMessageLink SelectionInput MailMessage Celeste HtmlBody  
> HtmlOrderedList HtmlParagraph WebPageMorph HtmlSelect HtmlFontEntity  
> HtmlOptionGroup HtmlTableRow HtmlParser HtmlDefinitionList HtmlNoEmbed  
> HtmlPreformattedRegion HtmlHead HtmlBreak HtmlAnchor  
> RadioButtonSetInput HtmlSuperscript HtmlUnderlineEntity  
> HtmlFixedWidthEntity FileInput HtmlFrame HiddenInput HtmlStrikeEntity  
> HtmlTextArea HtmlCommentEntity HtmlEmbedded Scamper
> ----------
> Really.  How long would it take to figure this out by hand?
>
> And that's not all...  The second element is an IdentitySet containing  
> 253 selectors sent only by these 63 classes.  These are essentially  
> all the "extensions" to other classes.  I won't list them, but you can  
> run the code and see for yourself.
>
> But wait, there's more...   Check out SystemDictionary  
> fileOutAndRemove: (which doesn't really remove anything ;-).  This  
> method accepts the tuple produced above (oops you need to coerce the  
> first to an Array), and produces a fileOut of all the classes and  
> extension methods -- essentially a complete Package.  I just tried it  
> and got a 321K file.  At the time I wrote this code, you could file  
> the resulting file into a Squeak image after removing all the above  
> and then run Scamper and Celeste again just fine.
>
> I have been encouraging the Splitters and Packagers to try this out,  
> but I thought others on this list might enjoy it as well.  Hopefully  
> the attached fix will encourage people who might have tried it and  
> failed.
>
> What it tells us is, wherever we can identify approipriate root  
> classes, packaging may not be all that hard.
>
> Enjoy
> 	- Dan
>
> PS:  If you are curious how this works, it is very simple.  It is  
> explained in...
> http://discuss.squeakfoundation.org/cgi-bin/ezmlm-cgi?11:mss:42: 
> 200503:echjfhegcncflbfeeofe<SystemDictionary-unuse#D6603.gz>




More information about the Squeak-dev mailing list