I think projects today are too trigger happy about updating dependencies and using dependencies that are too volatile. IIRC, the task runner just couldn’t be built on debian 12 because its rust package was too “old”. Just two years have passed since the version freeze.
Nix offers the best of both worlds on this aspect: each program can depend on the exact version of a library it needs and several versions can coexist on the disk, but if two programs depend on the exact same version, it is stored only once.