I don’t see the connection with the ability to “build many projects”, but yes it seems
jbuilder implements a form of namespacing via module aliases (that you can disable via
(wrapped false)) which allows you to use short names in your projects while making sure those will not clash at the toplevel with other packages and without using
-pack (which yields bloated executables).
This is still an ugly hack in my opinion, your source files get renamed behind the scene, the prefixed names still leak at the toplevel and worse are exposed to the end-user of the API (i.e. the same module members can be accessed via different paths) leading to a distatefull orgy of names.
Using module aliases also makes us loose a good property that we failed to exploit for many years (
odig tries to go in that direction) which is that compilation units have their module dependencies fully described in the object files via interface digests (yes 98% of these
META files can be inferred from the actual objects).
There are plans to do this. After all these half-baked solutions over the years, I hope we can eventually get one to this problem that is not a hack so that the linking model coincides with the name hiding capabilities of language’s module system. The current situation is embarrasing.