Julia is a general-purpose programming language built for numerical and scientific computing, and its design goal is unusual: read like a scripting language, run like compiled code. Jeff Bezanson, Stefan Karpinski, Viral Shah and Alan Edelman started it in 2009 at MIT, the first public release arrived in 2012, and version 1.0 in 2018 marked the point where the language stopped breaking code between releases. Programs are compiled ahead of time to native machine code through LLVM, so a loop over an array runs at roughly C speed without the user writing a compiled-language program. Julia is free software under the MIT licence, the current stable release is 1.13.3 (25 October 2026) with 1.10.13 as the long-term-support series, and it runs on Linux, Windows and macOS.
. operators and in-place assignments all perform well, so the code stays close to the maths a researcher wrote down.Pkg installs from the General registry, and per-project Project.toml plus Manifest.toml pin every dependency to an exact version and commit.AbstractArray interfaces let packages share behaviour instead of duplicating it; a GPU array or a units-checked number works where a plain array does.ccall calls C libraries directly with no wrapper, and PyCall and PythonCall embed Python packages when a Julia equivalent does not exist.Distributed spreads work across processes and machines.Julia exists to remove the two-language problem: prototype in a slow language, then rewrite the hot parts in C or Fortran. Because the same code is both convenient and compiled, a research script that started in the REPL can be the program that runs in production, and there is no translation step where the bugs move in. The type system is optional but pays off where it matters — annotate a function and the compiler generates specialised code, leave it unannotated and it still works. Package environments are reproducible by construction, which is what makes published results re-runnable years later. The trade-offs are real: the first call to a function includes compilation time, memory use is higher than a hand-tuned C program, and the ecosystem, while deep in numerics, is thinner than Python’s for web and general-purpose glue. For simulation, statistics, optimisation and anything that mixes maths with data, the speed without the rewrite is the whole argument.
Install with the official installer, curl -fsSL https://install.julialang.org | sh, which also sets up juliaup for switching between releases; Windows users can use winget install --name Julia, and there are portable tarballs for Linux and macOS. Start the REPL with julia, run a script with julia script.jl, and check the version with julia --version. Packages are installed inside the REPL with ] to enter pkg mode and add DataFrames, which writes a Project.toml in the current directory; commit that file and the manifest to make the environment reproducible. The language manual at docs.julialang.org is the reference, and @time, @code_warntype and the built-in profiler are the first tools to reach for when something is slower than expected.