I wrote a command line program
jlm to fix some pains in using Julia:
We can create multiple projects with new Pkg.jl quite easily. However, switching projects is painful because it causes re-precompilation of the packages.
jlmfixes it by using different precompilation cache for different project (actually any directory once you run
jlm init) .
MKL.jl is a very convenient way to use MKL with Julia. However, using it with standard Julia installation is problematic due to the precompilation issue. See the documentation for how to use
It’s possible to create system images to contain a custom set of packages using PackageCompiler.jl. However, again, switching system images invokes the precompilation issue. You can avoid it if you compile the system images in a
jlm-compatible way. I wrote a few recipes to create such system images here: https://github.com/tkf/julia-sysimage-recipes. (But this feature needs some documentation.)
Quick usage quoted from README:
(v1.2) pkg> add JuliaManager ... julia> using JuliaManager julia> JuliaManager.install_cli() ...
You need to add
$PATHas would be indicated if it
not. Then, you can use
$ cd PATH/TO/YOUR/PROJECT $ jlm init # first run will be slow ... $ jlm run _ _ _ _(_)_ | Documentation: https://docs.julialang.org (_) | (_) (_) | _ _ _| |_ __ _ | Type "?" for help, "]?" for Pkg help. | | | | | | |/ _` | | | | |_| | | | (_| | | Version 1.1.0 (2019-01-21) _/ |\__'_|_|_|\__'_| | Official https://julialang.org/ release |__/ | julia>
jlm --helpor the documentation for more
jlm still is a quite alpha software. It does not support Windows at the moment (although it shouldn’t be difficult) and only tested in Linux.
jlm command is implemented in Python and requires Python ≥ 3.5. JuliaManager.jl is tested with Julia 1.0, 1.1, and 1.2-DEV.
 This is an implementation of my early proposal RFC: a "workaround" for the multi-project precompilation cache problem without long-term code debt. It turned out I can do this without waiting for my PR to be merged if I “gorilla-patch” the system image. Furthermore, I improved what I proposed a bit so that you don’t need to create a system image for each project (which may take some time). Note that, even though gorilla sounds stronger than monkey,
jlm never modifies the original system image. It is designed to not interrupt standard
julia usage; if you invoke
julia command as usual there should be no effect of