Ensuring consistent state during loading/installation
Last updated at 2:38 pm UTC on 16 January 2006
How can you ensure (mark) that a module is loaded into a consistent state? Ie. so that a set of modules that need to be simultaneously present are loaded together?
For this reason, module loading and installation are separated. Loading is entirely non-modifying and thus safe. Installation is the critical step that carries out actual changes.
An inconsistent state can only exist during installation (some changes installed, some not yet installed), not during mere loading. And problems may only arise when you are installing changes (i.e. DeltaModules) that modify the loading and installation mechanism or any code used by it (this is more than it may seem, it includes the whole compiler, the file handling code, etc.).
For this reason, first all modules are loaded, then the loading mechanism performs all installs/replacements in the same atomic operation. (hg)