My worst fear got realized when I upgraded my Julia installation to the newest version:
julia> versioninfo()
Julia Version 0.6.0-dev.1562
Commit 3037157 (2016-12-14 07:11 UTC)
Platform Info:
OS: Linux (x86_64-linux-gnu)
CPU: Intel(R) Core(TM) i5-4440 CPU @ 3.10GHz
WORD_SIZE: 64
BLAS: libopenblas (USE64BITINT DYNAMIC_ARCH NO_AFFINITY Haswell)
LAPACK: libopenblas64_
LIBM: libopenlibm
LLVM: libLLVM-3.7.1 (ORCJIT, haswell)
I then tried to test that the packages I use the most frequently are working: JuMP with Gurobi.jl.
I tried loading Gurobi but I get a precompilation error:
julia> using Gurobi
INFO: Precompiling module Gurobi.
ERROR: LoadError: LoadError: UndefVarError: _major not defined
in getlibversion() at /home/jesse/.julia/v0.6/Gurobi/src/grb_common.jl:49
in include_from_node1(::String) at ./loading.jl:532
in include(::String) at ./sysimg.jl:14
in include_from_node1(::String) at ./loading.jl:532
in include(::String) at ./sysimg.jl:14
in anonymous at ./<missing>:2
in eval(::Module, ::Any) at ./boot.jl:236
in process_options(::Base.JLOptions) at ./client.jl:248
in _start() at ./client.jl:335
while loading /home/jesse/.julia/v0.6/Gurobi/src/grb_common.jl, in expression starting on line 67
while loading /home/jesse/.julia/v0.6/Gurobi/src/Gurobi.jl, in expression starting on line 63
ERROR: Failed to precompile Gurobi to /home/jesse/.julia/lib/v0.6/Gurobi.ji.
in compilecache(::String) at ./loading.jl:672
in require(::Symbol) at ./loading.jl:453
Using Gurobi 7.0.1. Is there anything I can do? Seems like a variable _major is not defined in the code. JuMP works fine, althought while loading it gives me warning that WARNING: Base.take is deprecated.
We’d definitely accept PRs to fix compatibility with 0.6-dev, but while things are still changing and breaking, tracking master is not a high priority for us.
This isn’t the first time this has come up. With many new users I’ve tracked down issues to being due to them using v0.6 since they want to try out the latest features. Maybe the downloads page Download Julia should be more explicit. It currently says:
However, because Julia is under heavy development, you may be unlucky and get a build with a serious bug, or one which breaks existing packages.
But maybe it should go a little further, something along the lines of:
However, because Julia is under heavy development, you may be unlucky and get a build with a serious bug. Also, many packages are not compatible with this unreleased version, and thus this version is only advised for developers looking to update packages before release.
I think “you may be unlucky” is too weak. It’s more like “things will definitely be broken, especially packages, and no-one will be interested in fixing them until such and such a date, so please don’t even bother trying to use it”. (Not the suggested words for the website!)
Maybe it should say something like “the nightly builds are for developer previews and not intended for normal use. You can expect many packages to not work with this version.” ?