<html xmlns="http://www.w3.org/1999/xhtml" xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office"><head><!--[if gte mso 9]><xml><o:OfficeDocumentSettings><o:AllowPNG/><o:PixelsPerInch>96</o:PixelsPerInch></o:OfficeDocumentSettings></xml><![endif]--></head><body><div style="color:#000; background-color:#fff; font-family:Helvetica Neue, Helvetica, Arial, Lucida Grande, sans-serif;font-size:13px"><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr">This is just to drop a note that after receiving (and incorporating) much welcomed feedback from some members of this community on "safe module unloading", a new version of it is now available at  https://github.com/andreaspirklbauer/Oberon-experimental (see files Kernel.Mod, Modules.Mod and System.Mod). The documentation has been adjusted accordingly.</div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr">By default, a module is now unloaded only if no clients *and* no references to it exist in the remaining modules and data structures. But if the /f option is specified, a module can also be "unloaded" in the presence of references to it. In that case however, the module is only removed from the *list* of loaded modules, while the associated module data (including its type descriptors) is preserved in memory for as long as necessary, and is automatically removed if no more references exist in the remaining part of the system.</div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr">PS: For those who really want to hang on to it, the original option to "force remove" a module *and* its module data from memory even if references exist (/u option), has now been moved to a variant of the implementation in the same repository (affected modules use suffix WithForceUnload in the module name). In that case, type descriptors are preserved in memory (similar to Ceres-Oberon, but not on the heap), so that other modules can still refer to them, and all references from other modules to the unloaded module are "made safe" (procedure variables are set to an "empty" procedure), so that the system doesn't become unstable after removal. However, with the modified /f option, as outlined above, this option is really no longer needed.</div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr">Andreas</div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr"><br></div><div id="yui_3_16_0_ym19_1_1478679243031_2890" dir="ltr"><br></div></div></body></html>