Structuring applications into manageable pieces is a very important task for developers in today’s world. As the complexity of applications and components grows, it’s ever more important to be able to tame this complexity and find our way around code.
Those observations hold on different levels, ranging from structuring types in logical containers, to runtime aspects where multiple components have to play in concert while reducing risks to an application hosting them. In other words, we need facilities provided by languages and tools to organize and explore types and members, but the runtime also must participate, to realize goals of loading components and providing isolation when needed.
In the camp of languages and tools, we find the ...