I disagree, the more I run it my head it is clearer to me that this is the right approach ,
Modules will be more encapsulated , importing packages will not alter the inner workings of other packages . It is easier to understand what gets export d and extended .
The conceptual difference is that dispatch is rooted at the current module and not in a common ancestor.
Actually this makes modules easier to compile (to binary not just into IR) because only exported functions will be “dynamic” whereas today as with the example I gave before I can import a function that will crush the whole system in an instant.
About the few layers deep of function calls … I fail to see how this is different or more complicated than what’s currently happening.
Maybe this idea is to advanced for you at the moment…