Note
Windows users need to enable "Long Paths" since the bundled artifacts provided by this package often have longer path names than the default limit allows. See this Microsoft document for the steps required to enable this feature.
This Julia package provides access to several pre-built system images containing
collections of third-party Julia packages. It requires that your julia install
is managed using juliaup.
It is an unregistered package and will remain this way since no package should
include this package in its dependencies. To install use Julia's Pkg mode in
your global project environment:
julia> import Pkg; Pkg.add(url = "https://github.com/MichaelHatherly/CuratedSystemImages.jl")
Then import the package and run the installer:
julia> import CuratedSystemImages
julia> CuratedSystemImages.install()
This will open an interactive picker where you can select the individual bundled
system images that you would like to install. Once installed you'll need to close
your julia REPL and return to the terminal. You can then use juliaup status to
see the names of the newly installed channel names that can be used to launch
julia with one of the installed system image bundles.
Now from the terminal run julia with one of the custom channel names that were
installed in the previous steps, e.g if you installed a system image for
DataFrames in Julia 1.8.0 then run
julia +1.8.0/CuratedSystemImages/DataFramesIf you selected to install "short names" for some channels then you'll be able to do
julia +DataFramesto start with the system image containing DataFrames instead.
Do not set any of the custom channels as the juliaup default channel. This will
result in an infinite loop where the default channel attempts to call itself. This
may cause your system to hang.
Please note that if you are importing any packages in your .julia/config/startup.jl
that happen to use different versions of packages included in the system image that
you launch then you will likely encounter some amount of startup latency. Running with
--startup-file=no will mitigate this latency.
It is not advised to install additional packages into the named environment that the
system image launches with by default, e.g. @DataFrames for an image called DataFrames.
If you need to install extra packages then ensure that you use --project= to start a
custom project environment. It will still have access to the packages installed in the
custom system image. Ensure that you install extra packages using add --preserve=all
rather than the default behaviour which may upgrade dependencies to versions which are
not included in the system image which may cause the image to load incorrectly or not at all.
Currently the following system image bundles are provided:
AlgebraOfGraphics, contains the Algebra of Graphics plotting package along with the Cairo-basedMakiebackend, andDataFrames.DataFrames, contains theDataFramesandDataFramesMetapackages.JuliaFormatter, containsJuliaFormatter, with latency reduced enough that users may consider using it as the basis for a command line formatting script for Julia source code.JuliaSyntax, containsJuliaSyntaxand uses the provided precompile scripts to reduce latency and enableJuliaSyntaxas the default parser for all code.
Requests for additional images can be made to curated-system-images
repo where the manifests and build scripts are located for the above images.
We use the SystemImageLoader.jl
package to define an installer and loader for the lazy Julia artifacts that contain
the system image bundles. Installing a particular bundle sets up a juliaup channel
that points SystemImageLoader at the right system image file and associated Julia depot
folder containing the artifacts required by the chosen system image.