[squeak-dev] Environment changes in the Inbox
Jakob Reschke
jakob.reschke at student.hpi.de
Wed Mar 22 15:36:43 UTC 2017
2017-03-22 16:03 GMT+01:00 H. Hirzel <hannes.hirzel at gmail.com>:
>
> And what is the proper way of 'unregistering' an environment?
>
Probably Environment>>destroy should also wipe the instance from
Instances. Nicolas is right that there currently is no way to
unregister an environment. There is not even a method to list the
registered ones.
> Environment >>
> destroy
>
> self allClasses do: [:ea | ea removeFromSystem].
> declarations keys do: [:ea | self unbind: ea].
> policies do: [:ea | ea removeObserver: self].
> observers do: [:ea | ea stopObserving: self].
>
>
> Is this all I have to do or do I need to do something more to
> unregister an environment?
>
> --Hannes
>
Currently, you would have to kick an environment out of Instances
manually via inspectors or the like. After #destroy only, it is empty
and disconnected from other environments, but it will not be garbage
collected.
So we could either make Instances weak-valued, or unregister on
destroy. Or both... Note that an emptied and disconnected environment
without behaviors (= currently useless?) will be garbage collected in
the weak-Instances solution.
More information about the Squeak-dev
mailing list
|