[squeak-dev] Smalltalk fixObsoleteReferences

Chris Muller asqueaker at gmail.com
Wed Sep 11 14:38:18 UTC 2013


We can't unload anything right now because unloading a package calls
#unloadCleanup, which calls #fixObsoleteReferences, which fails.

On Wed, Sep 11, 2013 at 5:43 AM, Frank Shearar <frank.shearar at gmail.com> wrote:
> On 11 September 2013 11:21, Edgar J. De Cleene <edgardec2005 at gmail.com> wrote:
>>
>>
>> El 9/10/13 10:18 PM, "Chris Muller" <asqueaker at gmail.com> escribió:
>>
>>>I want to experiment with Smalltalk #shrink but the stock
>>>Squeak4.5-12641.image has AnObsoleteBindingTest and... one other
>>>ObsoleteClass stuck in the image.  Not even Smalltalk
>>>fixObsoleteReferences can get rid of it.
>>>
>>>The reference is buried in Environment's 'exports' Dictionary.  I can
>>>certainly remove it manually but how should we fix it in published
>>>image?
>>
>>
>> Yesterday I made the monthly update following trunk of my SqueakRosCore
>> and notice we don't have Smalltalk unloadAllKnownPackages now
>>
>> My idea is
>> unloadReloadablePackages
>>  "Unload packages which can be reloaded."
>>   #( 'ReleaseBuilder' 'ScriptLoader'
>>   '311Deprecated' '39Deprecated'
>>   'Universes' 'SMLoader' 'SMBase' 'Installer-Core'
>>   'VersionNumberTests' 'VersionNumber'
>>   'Services-Base' 'PreferenceBrowser' 'Nebraska'
>>   'ToolBuilder-MVC' 'ST80'
>>   'CollectionsTests' 'GraphicsTests' 'KernelTests'  'MorphicTests'
>>   'MultilingualTests' 'NetworkTests' 'ToolsTests' 'TraitsTests'
>>   'SystemChangeNotification-Tests' 'FlexibleVocabularies'
>>   'EToys' 'Protocols' 'XML-Parser' 'Tests' 'SUnitGUI'
>>   'Help-Squeak' 'HelpSystem' 'SystemReporter' 'GetText' 'Environments'
>>  ) do: [:pkgName|
>>    (MCPackage named: pkgName) unload.
>>    MCMcmUpdater disableUpdatesOfPackage: pkgName.
>>    ].
>>  "Traits use custom unload"
>>  self
>>   at: #Trait
>>   ifPresent: [ : aClass | aClass unloadTraits ]
>>
>>
>> And we get rid of more packages.
>>  Of course we must be careful of go back to previous version of methods
>> concerningto Environments
>
> Environments is a very low level package. It should be one of the
> least unloadable packages (because of its nature). For instance, you
> should need to remove 'Tools' before you can think of removing
> Environments, because Squeak 4.5 is all about Environments, and making
> the tools use them.
>
> frank
>


More information about the Squeak-dev mailing list