Control de la versión de Julia en el entorno de producción

¿Cómo se controla la versión en Julia si se quiere usar en un entorno de producción? Es decir, la mayoría de los packages Julia y la propia Julia tienen un número de versión 0.3.10 o similar, por lo que debe estar preparado para los principales cambios de interfaz en el futuro (próximo), y especialmente cuando el primer dígito cambia de 0 a 1.

El estado de mi package se ve así:

julia> Pkg.status() 4 requinetworking packages: - DataFrames 0.6.9 - Gadfly 0.3.13 - Jewel 1.0.5 - Mongo 0.1.3 44 additional packages: - ArrayViews 0.6.3 - BinDeps 0.3.15 - Calculus 0.1.10 - Codecs 0.1.4 - Color 0.4.7 - Compat 0.6.0 - Compose 0.3.13 - Contour 0.0.7 - DataArrays 0.2.17 - DataStructures 0.3.12 etc... 

Se recomienda que utilice Pkg.update() menudo para que tenga los parches más recientes en todos sus packages.

Si necesita actualizar un package debido a estos parches o necesita usar una nueva característica, puede romper su código y también puede haber dependencies entre varios packages.

Julia puede ser un lenguaje suficientemente maduro que no tenga serios problemas de control de versiones, pero siento la necesidad de sondear la opinión de los usuarios de Julia sobre su experiencia.

En un entorno de producción, no debe utilizar Pkg.update() menudo, o al less no sin antes probar en un entorno que no sea de producción. Esto es cierto para cada sistema de empaque, no solo para Julia. Para Julia en particular, también recomendaría establecer un set de versiones que funcionen para usted, luego use los límites inferior y superior adecuados en su file REQUIRE .

Por ejemplo, supongamos que JuMP funciona bien para mí, al igual que Gadfly 0.4.2. Probablemente haga algo como lo siguiente en ~/.julia/v0.3/REQUIRE :

 JuMP 0.9.2 0.10 Gadfly 0.4.2 0.5 

De esta forma, si ejecuto Pkg.update() obtendré 0.9.3 y 0.4.3 si salen, pero no me actualizaré automáticamente a JuMP 0.10 . Por supuesto, esto solo funciona si confías en que los mantenedores de los packages usen los numbers de versión con sensatez, lo cual es un problema serio, especialmente cuando son anteriores a 1.0 .

El package DeclarativePackages.jl ( https://github.com/rened/DeclarativePackages.jl ) le permite especificar exactamente qué versiones de cada package desea usar para cada proyecto: inicia Julia con exactamente esas versiones de esos packages disponibles. Parece que podría ser lo que estás buscando.