modules introduced a new, more general set of cons...
# general
f
modules introduced a new, more general set of constraints to allow for that in a more clearly defined way. My understanding is that any given closure of the module DAG cannot have duplicated FQCNs that are visible across module boundaries. It allows duplicated FQCNs as long as they are not within the same closure
w
uh, unless something super fundamental changed, no: it doesn't prevent collisions. it prevents visibility, but not collisions.
that's what we were pushing for, as that would have actually been useful.
f
You can’t have two modules in the same closure that export the same packages
so, diamond deps where different deps depend on different versions would require shading
w
right, which is useless
...so yes, i see what you were saying above: "cannot have", in that it will prevent colliding package names. but it's not actually useful.
f
yeah--not for solving the diamond dependency problem
all it does is require that you solve it, it doesn’t say what way is the blessed way to do it
w
the jvm already required that you solve it. i'd agree that it might be able to fail in a more useful way.
f
oh, I mean before, a tool could try putting both of the conflicting things on the classpath and 🤷 hope it works. In a world where your deps are module-ified, the jvm will fail to start in that case.