| At the same runtime? No. At different runtimes (e.g: different package.py configurations) yes. I can have a software called my_application which has a version that uses A and another version that uses B. That differentiation can be a flag at runtime, a "variance" e.g: gcc-4 vs gcc-3 etc. How does nix allow you to do that? For example, say I am using library foo and it has the function bar In version 1 bar definition is ``` def bar(a, b): return a + b
```In version 2 bar definition is ``` def bar(a): return a + 10
```I don't understand how you can use v1 and v2 of foo at the same runtime? Unless nix does some namespacing based on the lib version invisibly for the enduser but that looks very prone to error... If you release them as separated libraries it won't complain, for example, shotgun API imports can be by version ``` import shotgun3 import shotgun2 ``` so theoretically you can release a rez package whose name is shotgun3 and another one whose name is shotgun2. That way you would effectively have shotgun2 and shotgun3 in a same runtime environment. |
Nix expends a bunch of complexity into fucking with dynamic linking to make that work transparently most of the time and deploying wrapper scripts to cover other cases, so I was curious if rez has a cleverer solution there.