In the JVM world, maven for Java and sbt for Scala have been used to build 
pretty large projects. Obviously, they run into the multi-version-dependency 
problem too, and they can handle it without "partial code upgrades" (not the 
smartest name IMHO). They use shading, which roughly means re-introducing the 
same dependency under a new name. We can already do something similar with 
nimble now in a clunky, manual way: clone an old version of a package locally, 
give it a new name and import using this name where necessary. This is 
horrible, because the import statements in the source files have to be touched, 
but it should work.

I don't see dependency hell upon us yet, but the fact that Nim is strong on 
metaprogramming and tries to keep the language core lean means that a lot of 
functionality will end up in packages. So nimble maybe should brace itself for 
trouble, especially if Nims popularity takes off eventually.

Reply via email to