Julia (programming language)

Julia
ParadigmMulti-paradigm: multiple dispatch (primary paradigm), functional, array, procedural (imperative), structured, reflective, meta, multistaged
Designed byJeff Bezanson, Alan Edelman, Stefan Karpinski, Viral B. Shah
DeveloperJeff Bezanson, Stefan Karpinski, Viral B. Shah, and other contributors
First appeared2012 (2012)
Stable release
1.11.5  / 14 April 2025 (14 April 2025)
and 1.10.9 (LTS) / 10 March 2025 (2025-03-10)
Preview release
1.12.0-beta3 / 12 May 2025 (2025-05-12). Being worked on: 1.12.0-beta4 and 1.13.0-DEV with daily updates
Typing disciplineDynamic, inferred, optional, nominative, parametric, strong
Implementation languageJulia, C, C++, LLVM, Scheme (was used the parser; almost exclusively)
PlatformTier 1: 64- and 32-bit Windows 10+, Linux, and 64-bit macOS; IA-32, x86-64, Apple silicon (ARM64) Macs; Nvidia GPUs/CUDA 11.0+ (on Linux; tier 2 for Windows)

Tier 2: 64-bit FreeBSD 13.4+, Linux on 64-bit Arm; Apple GPUs/Metal on macOS 13+, Intel GPUs/OneAPI 6.2+ and Nvidia GPUs (on Windows)

Tier 3: 64-bit RISC-V, 64-bit musl (e.g. Alpine Linux); and AMD GPUs/ROCm 5.3+.
OSLinux, macOS, Windows 10+ and FreeBSD
LicenseMIT
Filename extensions.jl
WebsiteJuliaLang.org
Influenced by

Julia is a high-level, general-purpose dynamic programming language, designed to be fast and productive, for e.g. data science, artificial intelligence, machine learning, modeling and simulation, most commonly used for numerical analysis and computational science.

Distinctive aspects of Julia's design include a type system with parametric polymorphism and the use of multiple dispatch as a core programming paradigm, a default just-in-time (JIT) compiler (with support for ahead-of-time compilation) and an efficient (multi-threaded) garbage collection implementation. Notably Julia does not support classes with encapsulated methods and instead it relies on structs with generic methods/functions not tied to them.

By default, Julia is run similarly to scripting languages, using its runtime, and allows for interactions, but Julia programs/source code can also optionally be sent to users in one ready-to-install/run file, which can be made quickly, not needing anything preinstalled.

Julia programs can reuse libraries from other languages (or itself be reused from other); Julia has a special no-boilerplate keyword allowing calling e.g. C, Fortran or Rust libraries, and e.g. PythonCall.jl uses it indirectly for you, and Julia (libraries) can also be called from other languages, e.g. Python and R, and several Julia packages have been made easily available from those languages, in the form of Python and R libraries for corresponding Julia packages. Calling in either direction has been implemented for many languages, not just those and C++.

Julia is supported by programmer tools like IDEs (see below) and by notebooks like Pluto.jl, Jupyter, and since 2025 Google Colab officially supports Julia natively.

Julia is sometimes used in embedded systems (e.g. has been used in a satellite in space on a Raspberry Pi Compute Module 4; 64-bit Pis work best with Julia, and Julia is supported in Raspbian).