Julia

From ArchWiki
Note: https://julialang.org/ has beautiful and open-source documentation, non-Arch-specific information should be contributed there.

Julia is a high-level, high-performance dynamic programming language for numerical computing. It provides a sophisticated compiler, distributed parallel execution, numerical accuracy, and an extensive mathematical function library.

Installation

Note: The julia package is compiled against system libraries and is therefore unsupported by the upstream. While it may be suitable for basic usage it is incompatible with external packages (e.g. MKL, LLVM, LLVMExtra, or packages that depend on these, like CUDA or Flux) which rely on Julia's bundled versions of its dependencies. For example, Sundials.jl (which is a dependency of DifferentialEquations.jl) fails to precompile with this package, but builds without errors with the official builds. Bugs reported to Julia's maintainers against this binary will be closed.

Install julia-binAUR. The package provides official builds compiled against patched LLVM libs.

Install juliaupAUR. The package provides a binary manager, similar to rustup, that allow to use different versions of Julia.

Tips and tricks

If you get the following error while using pyplots() with julia-binAUR,

WARNING: You are using Matplotlib 0.0.0, which is no longer officialy supported by the Plots community. To ensure smooth Plots.jl integration update your Matplotlib library to a version >= 2.0.0

first install python-matplotlib and tk. Then, install VersionParsing.jl with ] add VersionParsing within the Julia prompt[1], and restart Julia.

Integration with editors

Vim

Syntax highlighting and more

julia-vim

Linting

The julialint plugin combined with the Lint.jl package can provide linting.

REPL vim bindings

The VimBindings.jl package provides vim emulation within the Julia REPL.

Emacs

Syntax highlighting

julia-emacs.

Linting

lsp-julia: provides linting using the LSP protocol.

REPL integration

julia-repl: for interacting with a Julia REPL running inside Emacs.