Date: 2010-03-31 10:05:15 -0700 (Wed, 31 Mar 2010)
ModuleManager keeps weak references to modules
The ModuleManager now keeps weak references to modules. Modules do not need to be unloaded to be garbage collected, being removed from the display list is enough.
I also removed the ?\226?\128?\156limbo?\226?\128?\157 variable since the module is already in a weak reference dictionary. This change introduces a small change in behavior that should not be problematic. After calling release() a module can appear as ?\226?\128?\156ready?\226?\128?\157 and ?\226?\128?\156loaded?\226?\128?\157 whereas before the module would not appear as ?\226?\128?\156ready?\226?\128?\157 or ?\226?\128?\156loaded?\226?\128?\157. This is because the module is still in memory with its old state. Calling load() on one of these modules results in all the module lifecycle events being dispatched, the only difference is the module did not need to be loaded. So I don?\226?\128?\153t think this change will cause any developers a problem.
Developers who are expecting the ModuleManager to keep modules in memory for them without keeping a reference to IModuleInfo will see their modules get garbage collected.
QE notes: None
Doc notes: None
Tests run: checkintests, Modules, PerModuleStyles
Is noteworthy for integration: No