A component that is never actually accessed at runtime will not get loaded. URI resolving is handled similar to Mozart. When a component is loaded, its signature is matched against the signature expected by the dependent component - the signature that was found when the dependent component was compiled. A runtime exception is raised when the signature does not match. If the check was successful, the component is executed in a separate thread.
Every component is loaded and executed at most once in a single process.
If several other components load a component from the same URI, they will share a reference to the same instantiation of that component. Note the close connection of components to the Alice pickling mechanism . Note that exception and functor imports are actually derived forms.