4 ms·
Statically linking doesn't necessarily fix this. Nor does ensuring only one version is actually linked. The problem starts when different dependencies have dif
by humanrebar 5y ago
Statically linking doesn't necessarily fix this. Nor does ensuring only one version is actually linked.
The problem starts when different dependencies have different opinions about ABI-important details. Like layout of data structures, layout of v-tables, use of concurrency primitives, or even stack utilization.
I don't have as much depth of knowledge in cargo (rustc probably can't avoid these problems). From what I can tell, it prefers resolving dependency sets per executable, which means it would be opting for the combinatorial explosion of compatibility sets problem. That's a valid tradeoff to select, though I am extremely skeptical that an organization with 30k Rust projects would find that dependency juggling is a non-problem.