Caterpillar

Daily Thought - 2024-06-05

< back to list

I think one key element to making upgrades easy, is the ability to mix and match different versions of the dependency you upgrade (which could be a library, the language's standard library, or the language itself). Being able to mix and match different versions of the language is interesting (and Rust editions kind of allow that), but I'd like to talk about libraries today.

Rust does a pretty good job here too, as you can have multiple versions of the same library in your dependency graph (as both transitive or direct dependencies). But this is not without problems and can require elaborate workarounds to make work in practice.

Unison has a more fine-grained, and I think probably better, approach to this. All code is content-addressed, which means even if types come from different versions of a dependency (or even completely different libraries), they are compatible as long as they are actually the same.

<< previous thoughtnext thought >>