Julia is a
high-level,
general-purpose dynamic programming language
A programming language is a system of notation for writing computer programs.
Programming languages are described in terms of their Syntax (programming languages), syntax (form) and semantics (computer science), semantics (meaning), usually def ...
, designed to be fast and productive,
for e.g. data science, artificial intelligence, machine learning, modeling and simulation, most commonly used for
numerical analysis
Numerical analysis is the study of algorithms that use numerical approximation (as opposed to symbolic computation, symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics). It is the study of ...
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 programming paradigm is a relatively high-level way to conceptualize and structure the implementation of a computer program. A programming language can be classified as supporting one or more paradigms.
Paradigms are separated along and descri ...
, a default
just-in-time (JIT) compiler
(with support for
ahead-of-time compilation
In computer science, ahead-of-time compilation (AOT compilation) is the act of compiling an (often) higher-level programming language into an (often) lower-level language before execution of a program, usually at build-time, to reduce the amount ...
) 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
In computing, source code, or simply code or source, is a plain text computer program written in a programming language. A programmer writes the human readable source code to control the behavior of a computer.
Since a computer, at base, only ...
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
Raspberry Pi ( ) is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in collaboration with Broadcom Inc., Broadcom. To commercialize the product and support its growing demand, the ...
Compute Module 4; 64-bit Pis work best with Julia, and Julia is supported in
Raspbian).
History
Work on Julia began in 2009, when
Jeff Bezanson,
Stefan Karpinski
Stefan Karpinski is an American computer scientist known for being a co-creator of the Julia (programming language), Julia programming language. He is an alumnus of Harvard and works at Julia Computing, which he co-founded with Julia co-creators ...
,
Viral B. Shah, and
Alan Edelman set out to create a free language that was both high-level and fast. On 14 February 2012, the team launched a website with a blog post explaining the language's mission.
In an interview with ''
InfoWorld
''InfoWorld'' (''IW'') is an American information technology media business. Founded in 1978, it began as a monthly magazine. In 2007, it transitioned to a Web-only publication. Its parent company is International Data Group, and its sister pu ...
'' in April 2012, Karpinski said of the name "Julia": "There's no good reason, really. It just seemed like a pretty name."
Bezanson said he chose the name on the recommendation of a friend, then years later wrote:
Julia's
syntax
In linguistics, syntax ( ) is the study of how words and morphemes combine to form larger units such as phrases and sentences. Central concerns of syntax include word order, grammatical relations, hierarchical sentence structure (constituenc ...
is now considered stable, since version 1.0 in 2018, and Julia has a
backward compatibility
In telecommunications and computing, backward compatibility (or backwards compatibility) is a property of an operating system, software, real-world product, or technology that allows for interoperability with an older legacy system, or with Input ...
guarantee for 1.x and also a stability promise for the documented (stable)
API, while in the years before in the early development prior to 0.7 the syntax (and semantics) was changed in new versions. All of the (registered package)
ecosystem
An ecosystem (or ecological system) is a system formed by Organism, organisms in interaction with their Biophysical environment, environment. The Biotic material, biotic and abiotic components are linked together through nutrient cycles and en ...
uses the new and improved syntax, and in most cases relies on new APIs that have been added regularly, and in some cases minor additional syntax added in a forward compatible way e.g. in Julia 1.7.
In the 10 years since the 2012 launch of pre-1.0 Julia, the community has grown. The Julia package ecosystem has over 11.8 million lines of code (including docs and tests). The JuliaCon
academic conference for Julia users and developers has been held annually since 2014 with JuliaCon2020 welcoming over 28,900 unique viewers, and then JuliaCon2021 breaking all previous records (with more than 300 JuliaCon2021 presentations available for free on YouTube, up from 162 the year before), and 43,000 unique viewers during the conference.
Three of the Julia co-creators are the recipients of the 2019
James H. Wilkinson Prize for Numerical Software (awarded every four years) "for the creation of Julia, an innovative environment for the creation of high-performance tools that enable the analysis and solution of computational science problems." Also, Alan Edelman, professor of
applied mathematics
Applied mathematics is the application of mathematics, mathematical methods by different fields such as physics, engineering, medicine, biology, finance, business, computer science, and Industrial sector, industry. Thus, applied mathematics is a ...
at
MIT, has been selected to receive the 2019
IEEE Computer Society
IEEE Computer Society (commonly known as the Computer Society or CS) is a technical society of the Institute of Electrical and Electronics Engineers (IEEE) dedicated to computing, namely the major areas of hardware, software, standards and people ...
Sidney Fernbach Award "for outstanding breakthroughs in high-performance computing, linear algebra, and computational science and for contributions to the Julia programming language."
Both Julia 0.7 and version 1.0 were released on 8 August 2018. Work on Julia 0.7 was a "huge undertaking" (e.g., because of an "entirely new optimizer"), and some changes were made to semantics, e.g. the
iteration
Iteration is the repetition of a process in order to generate a (possibly unbounded) sequence of outcomes. Each repetition of the process is a single iteration, and the outcome of each iteration is then the starting point of the next iteration.
...
interface was simplified.
Julia 1.6 was the largest release since 1.0, and it was the
long-term support (LTS) version for the longest time, faster on many fronts, e.g. introduced parallel precompilation and faster loading of packages, in some cases "50x speedup in load times for large trees of binary artifacts". Since 1.7 Julia development is back to
time-based releases. Julia 1.7 was released in November 2021 with many changes, e.g. a new faster
random-number generator and Julia 1.7.3 fixed e.g. at least one security issue. Julia 1.8 was released in 2022 and 1.8.5 in January 2023, with 1.8.x improvements for distributing Julia programs without source code, and compiler speedup, in some cases by 25%, and more controllable
inlining (i.e. now also allowing applying
@inline
at the call site, not just on the function itself). Julia 1.9 was released on 7 May 2023. It has many improvements, such as the ability to precompile packages to native machine code (older Julia versions also have precompilation for packages, but only partial, never fully to native code, so those earlier versions had a "first use" penalty, slowing down while waiting to fully compile). Precompiled packages, since version 1.9, can be up to hundreds of times faster on first use (e.g. for ''CSV.jl'' and ''DataFrames.jl''), and to improve precompilation of packages a new package ''PrecompileTools.jl'' has been introduced. Julia 1.10 was released on 25 December 2023 with many new features, e.g. parallel garbage collection, and improved package load times and a new parser, i.e. it rewritten in Julia, with better error messages and improved stacktrace rendering.
Julia 1.11 was released on 7 October 2024 (and 1.11.5 on 14 April 2025), and with it 1.10.5 became the next
long-term support (LTS) version (i.e. those are the only two supported versions), since replaced by 1.10.8 released on 10 March, and 1.6 is no longer an LTS version. Julia 1.11 adds e.g. parallel garbage collection and the new
public
keyword to signal safe public API (Julia users are advised to use such API, not internals, of Julia or packages, and package authors advised to use the keyword, generally indirectly, e.g. prefixed with the
@compat
macro, from ''Compat.jl'', to also support older Julia versions, at least the LTS version). Julia 1.11.1 has much improved startup (over 1.11.0 that had a regression), and over 1.10, and this can be important for some benchmarks.
It's possible to compile very small binary executables using
juliac
which is available in the upcoming Julia 1.12 (now in beta3), and other compilers exist usable for older Julia versions, that also allows compiling though not to small binaries with the main one.
JuliaCon
Since 2014, the Julia Community has hosted an annual Julia Conference focused on developers and users. The first JuliaCon took place in Chicago and kickstarted the annual occurrence of the conference. Since 2014, the conference has taken place across a number of locations including MIT and the University of Maryland, Baltimore. The event audience has grown from a few dozen people to over 28,900 unique attendees during JuliaCon 2020, which took place virtually. JuliaCon 2021 also took place virtually with keynote addresses from professors
William Kahan, the primary architect of the
IEEE 754
The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point arithmetic originally established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE). The standard #Design rationale, add ...
floating-point standard (which virtually all CPUs and languages, including Julia, use), Jan Vitek, Xiaoye
Sherry Li, and Soumith Chintala, a co-creator of
PyTorch. JuliaCon grew to 43,000 unique attendees and more than 300 presentations (still freely accessible, plus for older years). JuliaCon 2022 will also be virtual held between July 27 and July 29, 2022, for the first time in several languages, not just in English.
Sponsors
The Julia language became a NumFOCUS fiscally sponsored project in 2014 in an effort to ensure the project's long-term sustainability. Jeremy Kepner at
MIT Lincoln Laboratory was the founding sponsor of the Julia project in its early days. In addition, funds from the
Gordon and Betty Moore Foundation, the
Alfred P. Sloan Foundation,
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, and Delaware General Corporation Law, incorporated in Delaware. Intel designs, manufactures, and sells computer compo ...
, and agencies such as
NSF,
DARPA,
NIH,
NASA
The National Aeronautics and Space Administration (NASA ) is an independent agencies of the United States government, independent agency of the federal government of the United States, US federal government responsible for the United States ...
, and
FAA have been essential to the development of Julia.
Mozilla, the maker of Firefox web browser, with its research grants for H1 2019, sponsored "a member of the official Julia team" for the project "Bringing Julia to the Browser", meaning to Firefox and other web browsers. The Julia language is also supported by individual donors on GitHub.
The Julia company
JuliaHub, Inc. was founded in 2015 as Julia Computing, Inc. by
Viral B. Shah, Deepak Vinchhi,
Alan Edelman,
Jeff Bezanson,
Stefan Karpinski
Stefan Karpinski is an American computer scientist known for being a co-creator of the Julia (programming language), Julia programming language. He is an alumnus of Harvard and works at Julia Computing, which he co-founded with Julia co-creators ...
and
Keno Fischer.
In June 2017, Julia Computing raised US$4.6million in seed funding from
General Catalyst and Founder Collective, the same month was "granted $910,000 by the
Alfred P. Sloan Foundation to support
open-source Julia development, including $160,000 to promote diversity in the Julia community", and in December 2019 the company got $1.1million funding from the US government to "develop a neural component
machine learning
Machine learning (ML) is a field of study in artificial intelligence concerned with the development and study of Computational statistics, statistical algorithms that can learn from data and generalise to unseen data, and thus perform Task ( ...
tool to reduce the total energy consumption of heating, ventilation, and air conditioning (HVAC) systems in buildings". In July 2021, Julia Computing announced they raised a $24 million
Series A round led by Dorilton Ventures, which also owns team
Williams Racing, that partnered with Julia Computing. Williams' Commercial Director said: "Investing in companies building best-in-class cloud technology is a strategic focus for Dorilton and Julia's versatile platform, with revolutionary capabilities in simulation and modelling, is hugely relevant to our business. We look forward to embedding Julia Computing in the world's most technologically advanced sport". In June 2023, JuliaHub received (again, now under its new name) a $13 million strategic new investment led by AE Industrial Partners HorizonX ("AEI HorizonX"). AEI HorizonX is a venture capital investment platform formed in partnership with
The Boeing Company, which uses Julia. Tim Holy's work (at
Washington University in St. Louis's Holy Lab) on Julia 1.9 (improving responsiveness) was funded by the
Chan Zuckerberg Initiative.
Language features
Julia is a
general-purpose programming language
In computer software, a general-purpose programming language (GPL) is a programming language for building software in a wide variety of application Domain (software engineering), domains. Conversely, a Domain-specific language, domain-specific pro ...
, while also originally designed for numerical/technical computing. It is also useful for low-level
systems programming,
as a
specification language,
high-level synthesis (HLS) tool (for hardware, e.g.
FPGAs),
and for web programming at both server and client
side.
The main features of the language are:
* Multiple dispatch: providing ability to define function behavior across combinations of argument types
*
Dynamic type system: types for documentation, optimization, and dispatch
* Performance approaching that of
statically-typed languages like C
* A built-in
package manager
A package manager or package management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals wi ...
*
Lisp
Lisp (historically LISP, an abbreviation of "list processing") is a family of programming languages with a long history and a distinctive, fully parenthesized Polish notation#Explanation, prefix notation.
Originally specified in the late 1950s, ...
-like macros and other
metaprogramming facilities
* Designed for
parallel and
distributed computing
Distributed computing is a field of computer science that studies distributed systems, defined as computer systems whose inter-communicating components are located on different networked computers.
The components of a distributed system commu ...
*
Coroutines: lightweight
''green'' threading
* Automatic generation of code for different argument types
* Extensible conversions and promotions for numeric and other types
Multiple dispatch (also termed
multimethods in Lisp) is a
generalization of
single dispatch the
polymorphic mechanism used in common
object-oriented programming
Object-oriented programming (OOP) is a programming paradigm based on the concept of '' objects''. Objects can contain data (called fields, attributes or properties) and have actions they can perform (called procedures or methods and impl ...
(OOP) languages, such as
Python,
C++,
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
,
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
, and
Smalltalk
Smalltalk is a purely object oriented programming language (OOP) that was originally created in the 1970s for educational use, specifically for constructionist learning, but later found use in business. It was created at Xerox PARC by Learni ...
that use
inheritance
Inheritance is the practice of receiving private property, titles, debts, entitlements, privileges, rights, and obligations upon the death of an individual. The rules of inheritance differ among societies and have changed over time. Offi ...
.
In Julia, all concrete types are
subtypes of abstract types, directly or indirectly subtypes of the
Any
type, which is the top of the type hierarchy. Concrete types cannot themselves be subtyped the way they can in other languages; composition is used instead (see also
inheritance vs subtyping).
By default, the Julia runtime must be pre-installed as user-provided source code is run. Alternatively, Julia (GUI) apps can be quickly bundled up into a single file with ''AppBundler.jl''
for "building Julia GUI applications in modern desktop application installer formats. It uses Snap for Linux,
MSIX for Windows, and DMG for MacOS as targets. It bundles full Julia within the app". ''PackageCompiler.jl'' can build standalone
executable
In computer science, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instruction (computer science), in ...
s that need no Julia source code to run.
In Julia, everything is an object, much like object-oriented languages; however, unlike most object-oriented languages, all functions use
multiple dispatch to select methods, rather than single dispatch.
Most programming paradigms can be implemented using Julia's
homoiconic macros and packages. Julia's
syntactic macros (used for
metaprogramming), like Lisp macros, are more powerful than
text-substitution macros used in the
preprocessor
In computer science, a preprocessor (or precompiler) is a Computer program, program that processes its input data to produce output that is used as input in another program. The output is said to be a preprocessed form of the input data, which i ...
of some other languages such as C, because they work at the level of
abstract syntax trees (ASTs). Julia's macro system is
hygienic, but also supports deliberate capture when desired (like for
anaphoric macros) using the
esc
construct.
Julia draws inspiration from various dialects of Lisp, including
Scheme and
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in American National Standards Institute (ANSI) standard document ''ANSI INCITS 226-1994 (S2018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperli ...
, and it shares many features with
Dylan, also a multiple-dispatch-oriented dynamic language (which features an
infix syntax rather than a Lisp-like prefix syntax, while in Julia "everything"
is an
expression), and with
Fortress
A fortification (also called a fort, fortress, fastness, or stronghold) is a military construction designed for the defense of territories in warfare, and is used to establish rule in a region during peacetime. The term is derived from L ...
, another numerical programming language (which features multiple dispatch and a sophisticated parametric type system). While
Common Lisp Object System (CLOS) adds multiple dispatch to Common Lisp, not all functions are generic functions.
In Julia, Dylan, and Fortress, extensibility is the default, and the system's built-in functions are all generic and extensible. In Dylan, multiple dispatch is as fundamental as it is in Julia: all user-defined functions and even basic built-in operations like
+
are generic. Dylan's type system, however, does not fully support parametric types, which are more typical of the
ML lineage of languages. By default, CLOS does not allow for dispatch on Common Lisp's parametric types; such extended dispatch semantics can only be added as an extension through the
CLOS Metaobject Protocol. By convergent design, Fortress also features multiple dispatch on parametric types; unlike Julia, however, Fortress is statically rather than dynamically typed, with separate compiling and executing phases. The language features are summarized in the following table:
An example of the extensibility of Julia, the ''Unitful.jl'' package adds support for physical
units of measurement
A unit of measurement, or unit of measure, is a definite magnitude (mathematics), magnitude of a quantity, defined and adopted by convention or by law, that is used as a standard for measurement of the same kind of quantity. Any other qua ...
to the language.
Interoperability
Julia has built-in support for calling
C or
Fortran language libraries using the
@ccall macro. Additional libraries allow users to call to or from other languages such as
Python,
C++,
Rust,
R,
Java
Java is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea (a part of Pacific Ocean) to the north. With a population of 156.9 million people (including Madura) in mid 2024, proje ...
and to use with
SQL.
Separately-compiled executables option
Julia can be compiled to binary
executable
In computer science, executable code, an executable file, or an executable program, sometimes simply referred to as an executable or binary, causes a computer "to perform indicated tasks according to encoded instruction (computer science), in ...
s with ''PackageCompiler.jl''.
Smaller executables can also be written using a static subset of the language provided by ''StaticCompiler.jl'' that does not support
runtime dispatch (nor garbage collection, since excludes the runtime that provides it).
Interaction
The Julia official distribution includes an interactive command-line
read–eval–print loop (REPL), with a searchable history,
tab completion, and dedicated help and
shell
Shell may refer to:
Architecture and design
* Shell (structure), a thin structure
** Concrete shell, a thin shell of concrete, usually with no interior columns or exterior buttresses
Science Biology
* Seashell, a hard outer layer of a marine ani ...
modes, which can be used to experiment and test code quickly. The following fragment represents a sample session example where strings are concatenated automatically by
println
:
julia> p(x) = 2x^2 + 1; f(x, y) = 1 + 2p(x)y
julia> println("Hello world!", " I'm on cloud ", f(0, 4), " as Julia supports recognizable syntax!")
Hello world! I'm on cloud 9 as Julia supports recognizable syntax!
The REPL gives user access to the system shell and to help mode, by pressing
;
or
?
after the prompt (preceding each command), respectively. It also keeps the history of commands, including between sessions. Code can be tested inside Julia's interactive session or saved into a file with a
.jl
extension and run from the command line by typing:
$ julia
Julia uses
UTF-8
UTF-8 is a character encoding standard used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode Transformation Format 8-bit''. Almost every webpage is transmitted as UTF-8.
UTF-8 supports all 1,112,0 ...
and
LaTeX
Latex is an emulsion (stable dispersion) of polymer microparticles in water. Latices are found in nature, but synthetic latices are common as well.
In nature, latex is found as a wikt:milky, milky fluid, which is present in 10% of all floweri ...
codes, allowing it to support common math symbols for many operators, such as ∈ for the
in
operator, typable with
\in
then pressing (i.e. uses
LaTeX
Latex is an emulsion (stable dispersion) of polymer microparticles in water. Latices are found in nature, but synthetic latices are common as well.
In nature, latex is found as a wikt:milky, milky fluid, which is present in 10% of all floweri ...
codes, or also possible by simply copy-pasting, e.g. possible for
sqrt and
cbrt functions). Julia has support for
Unicode
Unicode or ''The Unicode Standard'' or TUS is a character encoding standard maintained by the Unicode Consortium designed to support the use of text in all of the world's writing systems that can be digitized. Version 16.0 defines 154,998 Char ...
15.1 (Julia 1.12-DEV supports latest 16.0 release) for the languages of the world, even for source code, e.g. variable names (while it's recommended to use English for public code, and e.g. package names).
Julia is supported by ''
Jupyter'', an online interactive "notebooks" environment, and
Pluto.jl', a "reactive notebook" (where notebooks are saved as pure Julia files), a possible replacement for the former kind. In addition Posit's (formerly
RStudio Inc's) Quarto publishing system supports Julia, Python, R and Observable
JavaScript
JavaScript (), often abbreviated as JS, is a programming language and core technology of the World Wide Web, alongside HTML and CSS. Ninety-nine percent of websites use JavaScript on the client side for webpage behavior.
Web browsers have ...
(those languages have official support by the company, and can even be weaved together in the same notebook document, more languages are unofficially supported).
The REPL can be extended with additional modes, and has been with packages, e.g. with an
SQL mode, for database access, and ''RCall.jl'' adds an , to work with the
R language.
Julia's
Visual Studio Code extension provides a fully featured
integrated development environment
An integrated development environment (IDE) is a Application software, software application that provides comprehensive facilities for software development. An IDE normally consists of at least a source-code editor, build automation tools, an ...
with "built-in dynamic autocompletion, inline results, plot pane, integrated REPL, variable view, code navigation, and many other advanced language features" e.g. debugging is possible,
linting, and
profiling.
Use with other languages
Julia is in practice
interoperable with other languages, in fact the majority of the top 20 languages in popular use. Julia can be used to call shared library functions individually, such as those written in C or Fortran, and packages are available to allow calling other languages (which do not provide C-exported functions directly), e.g. Python (with ''PythonCall.jl''), R, MATLAB, C# (and other .NET languages with ''DotNET.jl'', from them with ''JdotNET''), JavaScript, Java (and other JVM languages, such as
Scala with ''JavaCall.jl''). And packages for other languages allow to call to Julia, e.g. from Python, R (to Julia 1.10.x currently possible),
Rust, Ruby, or C#. Such as with juliacall (part of ''PythonCall.jl'') to call from Python and a different ''JuliaCall'' package for calling, Julia up to 1.10.x, from R. Julia has also been used for hardware, i.e. to compile to
VHDL
VHDL (Very High Speed Integrated Circuit Program, VHSIC Hardware Description Language) is a hardware description language that can model the behavior and structure of Digital electronics, digital systems at multiple levels of abstraction, ran ...
, as a
high-level synthesis tool, for example
FPGAs.
Julia has packages supporting markup languages such as
HTML
Hypertext Markup Language (HTML) is the standard markup language for documents designed to be displayed in a web browser. It defines the content and structure of web content. It is often assisted by technologies such as Cascading Style Sheets ( ...
(and also for
HTTP
HTTP (Hypertext Transfer Protocol) is an application layer protocol in the Internet protocol suite model for distributed, collaborative, hypermedia information systems. HTTP is the foundation of data communication for the World Wide Web, wher ...
),
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing data. It defines a set of rules for encoding electronic document, documents in a format that is both human-readable and Machine-r ...
,
JSON
JSON (JavaScript Object Notation, pronounced or ) is an open standard file format and electronic data interchange, data interchange format that uses Human-readable medium and data, human-readable text to store and transmit data objects consi ...
and
BSON, and for
database
In computing, a database is an organized collection of data or a type of data store based on the use of a database management system (DBMS), the software that interacts with end users, applications, and the database itself to capture and a ...
s (such as PostgreSQL, Mongo,
Oracle, including for
TimesTen, MySQL, SQLite, Microsoft SQL Server,
Amazon Redshift, Vertica, ODBC) and web use in general.
Package system
Julia has a built-in
package manager
A package manager or package management system is a collection of software tools that automates the process of installing, upgrading, configuring, and removing computer programs for a computer in a consistent manner.
A package manager deals wi ...
and includes a default registry system. Packages are most often distributed as source code hosted on
GitHub
GitHub () is a Proprietary software, proprietary developer platform that allows developers to create, store, manage, and share their code. It uses Git to provide distributed version control and GitHub itself provides access control, bug trackin ...
, though alternatives can also be used just as well. Packages can also be installed as binaries, using artifacts. Julia's package manager is used to query and compile packages, as well as managing environments. Federated package registries are supported, allowing registries other than the official to be added locally.
Implementation
Julia's core is implemented in Julia and
C, together with
C++ for the
LLVM
LLVM, also called LLVM Core, is a target-independent optimizer and code generator. It can be used to develop a Compiler#Front end, frontend for any programming language and a Compiler#Back end, backend for any instruction set architecture. LLVM i ...
dependency. The code parsing, code-lowering, and bootstrapping were implemented in FemtoLisp, a
Scheme dialect, up to version 1.10.
Since that version the new pure-Julia stdlib package ''JuliaSyntax.jl'' is used for the parsing (while the old one can still be chosen) which improves speed and "greatly improves parser error messages in various cases". The LLVM compiler infrastructure project is used as the
back end for generating optimized
machine code for all commonly used platforms. With some exceptions, the
standard library
In computer programming, a standard library is the library (computing), library made available across Programming language implementation, implementations of a programming language. Often, a standard library is specified by its associated program ...
is implemented in Julia.
Current and future platforms
Julia has tier 1
macOS
macOS, previously OS X and originally Mac OS X, is a Unix, Unix-based operating system developed and marketed by Apple Inc., Apple since 2001. It is the current operating system for Apple's Mac (computer), Mac computers. With ...
support, for 64-bit
Apple Silicon Macs, natively (previously such
Apple M1-based Macs were only supported by ''running in
Rosetta 2 emulation''
), and also fully supports Intel-based Macs.
Windows on ARM has no official support yet. Julia has "initial support of OpenBSD in julia." but more is coming to make it actually work: https://github.com/JuliaLang/julia/issues/53632 -->
Julia has four support tiers. All
IA-32
IA-32 (short for "Intel Architecture, 32-bit", commonly called ''i386'') is the 32-bit version of the x86 instruction set architecture, designed by Intel and first implemented in the i386, 80386 microprocessor in 1985. IA-32 is the first incarn ...
processors completely implementing the
i686 subarchitecture are supported and all 64-bit
x86-64 (aka
amd64), i.e. all less than about a decade old are supported. 64-bit
Armv8 (and later; i.e.
AArch64) processors are supported on first tier (for macOS); otherwise second tier on Linux, and ARMv7 (AArch32) on third tier. Hundreds of packages are
GPU-accelerated: Nvidia GPUs have support with ''
CUDA.jl'' (tier 1 on 64-bit Linux and tier 2 on 64-bit Windows, the package implementing
PTX, for compute capability 3.5 (Kepler) or higher; both require CUDA 11+, older package versions work down to CUDA 9). There are also additionally packages supporting other accelerators, such as Google's
TPUs, and some Intel (integrated) GPUs, through ''
oneAPI.jl'', and AMD's GPUs have support with e.g.
OpenCL
OpenCL (Open Computing Language) is a software framework, framework for writing programs that execute across heterogeneous computing, heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), di ...
; and experimental support for the AMD
ROCm stack.
for several ARM platforms, from small Raspberry Pis to the world's fastest (at one point, until recently) supercomputer
Fugaku's ARM-based
A64FX.
PowerPC
PowerPC (with the backronym Performance Optimization With Enhanced RISC – Performance Computing, sometimes abbreviated as PPC) is a reduced instruction set computer (RISC) instruction set architecture (ISA) created by the 1991 Apple Inc., App ...
LE (64-bit) has tier 3 support, meaning it "may or may not build", and its tier will lower to 4 for 1.12, i.e. then no longer builds/works.
Julia has official (tier 2) support for 64-bit ARMv8 meaning e.g. newer 64-bit (ARMv8-A)
Raspberry Pi
Raspberry Pi ( ) is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in collaboration with Broadcom Inc., Broadcom. To commercialize the product and support its growing demand, the ...
computers work with Julia (e.g. the Pi Compute Module 4 has been used in space running Julia code).
For many Pis, especially older 32-bit ones, it helps to cross-compile the user's Julia code for them. The older 32-bit ARMv7 Pis worked in older Julia versions (still do, but for latest Julia version(s), note downgraded from tier 3 to its current tier 4: "Julia built at some point in the past, but is known not to build currently."). The original
Raspberry Pi
Raspberry Pi ( ) is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in collaboration with Broadcom Inc., Broadcom. To commercialize the product and support its growing demand, the ...
1 has no official support (since it uses
ARMv6 which has newer had a support tier; though some cut-down Julia has been known to run on that Pi).
Pico versions of the Pi are known to no work (since using the M-profile Arm, not running under Linux; not yet supported). Julia is now supported in
Raspbian while support is better for newer Pis, e.g., those with Armv7 or newer; the Julia support is promoted by the
Raspberry Pi Foundation.
On some platforms, Julia may need to be compiled from source code (e.g., the original
Raspberry Pi
Raspberry Pi ( ) is a series of small single-board computers (SBCs) developed in the United Kingdom by the Raspberry Pi Foundation in collaboration with Broadcom Inc., Broadcom. To commercialize the product and support its growing demand, the ...
), with specific build options, which has been done and unofficial pre-built binaries (and build instructions) are available.
Julia has also been built for 64-bit
RISC-V
RISC-V (pronounced "risk-five") is an open standard instruction set architecture (ISA) based on established reduced instruction set computer (RISC) principles. The project commenced in 2010 at the University of California, Berkeley. It transfer ...
(has tier 3 support), i.e. has some supporting code in core Julia.
While Julia requires an
operating system
An operating system (OS) is system software that manages computer hardware and software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ...
by default, and has no official support to run without, or on
embedded system platforms such as
Arduino
Arduino () is an Italian open-source hardware and open-source software, software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardwar ...
, Julia code has still been run on it, with some limitations, i.e. on a baremetal 16
MHz
The hertz (symbol: Hz) is the unit of frequency in the International System of Units (SI), often described as being equivalent to one event (or cycle) per second. The hertz is an SI derived unit whose formal expression in terms of SI base u ...
8-bit (
ATmega328P)
AVR-microcontroller Arduino with 2 KB RAM (plus 32 KB of flash memory).
Adoption
Julia has been adopted at many universities including
MIT,
Stanford,
UC Berkeley,
Ferdowsi University of Mashhad and the
University of Cape Town
The University of Cape Town (UCT) (, ) is a public university, public research university in Cape Town, South Africa.
Established in 1829 as the South African College, it was granted full university status in 1918, making it the oldest univer ...
. Large private firms across many sectors have adopted the language including
Amazon
Amazon most often refers to:
* Amazon River, in South America
* Amazon rainforest, a rainforest covering most of the Amazon basin
* Amazon (company), an American multinational technology company
* Amazons, a tribe of female warriors in Greek myth ...
,
IBM
International Business Machines Corporation (using the trademark IBM), nicknamed Big Blue, is an American Multinational corporation, multinational technology company headquartered in Armonk, New York, and present in over 175 countries. It is ...
,
JP Morgan AI Research, and
ASML. Julia has also been used by government agencies including
NASA
The National Aeronautics and Space Administration (NASA ) is an independent agencies of the United States government, independent agency of the federal government of the United States, US federal government responsible for the United States ...
and the
FAA, as well as every US national energy laboratory.
Scientific computing and engineering
*
Amazon
Amazon most often refers to:
* Amazon River, in South America
* Amazon rainforest, a rainforest covering most of the Amazon basin
* Amazon (company), an American multinational technology company
* Amazons, a tribe of female warriors in Greek myth ...
, for
quantum computing
A quantum computer is a computer that exploits quantum mechanical phenomena. On small scales, physical matter exhibits properties of wave-particle duality, both particles and waves, and quantum computing takes advantage of this behavior using s ...
and
machine learning
Machine learning (ML) is a field of study in artificial intelligence concerned with the development and study of Computational statistics, statistical algorithms that can learn from data and generalise to unseen data, and thus perform Task ( ...
through
Amazon SageMaker
*
ASML, for
hard real-time programming with their machines
* The Climate Modeling Alliance for climate change modeling
*
CERN
The European Organization for Nuclear Research, known as CERN (; ; ), is an intergovernmental organization that operates the largest particle physics laboratory in the world. Established in 1954, it is based in Meyrin, western suburb of Gene ...
, to analyze data from the
Large Hadron Collider (
LHCb experiment)
* NASA and the
Jet Propulsion Laboratory
The Jet Propulsion Laboratory (JPL) is a Federally funded research and development centers, federally funded research and development center (FFRDC) in La Cañada Flintridge, California, Crescenta Valley, United States. Founded in 1936 by Cali ...
use Julia to model spacecraft separation dynamics, analyze
TRAPPIST exoplanet
An exoplanet or extrasolar planet is a planet outside the Solar System. The first confirmed detection of an exoplanet was in 1992 around a pulsar, and the first detection around a main-sequence star was in 1995. A different planet, first det ...
datasets, and analyze
cosmic microwave background
The cosmic microwave background (CMB, CMBR), or relic radiation, is microwave radiation that fills all space in the observable universe. With a standard optical telescope, the background space between stars and galaxies is almost completely dar ...
data from the
Big Bang
* The Brazilian
INPE, for space missions and
satellite
A satellite or an artificial satellite is an object, typically a spacecraft, placed into orbit around a celestial body. They have a variety of uses, including communication relay, weather forecasting, navigation ( GPS), broadcasting, scient ...
simulations
* Julia has also flown in space, on a small satellite,
used for a GPS module. And Julia has also been used to design satellites constallations.
*
Embedded hardware to plan and execute flight of autonomous U.S.
Air Force Research Laboratory
The Air Force Research Laboratory (AFRL) is a scientific research and development detachment of the United States Air Force Air Force Materiel Command, Materiel Command dedicated to leading the discovery, development, and integration of direct- ...
VTOL
A vertical take-off and landing (VTOL) aircraft is one that can takeoff and landing, take off and land vertically without relying on a runway. This classification can include a variety of types of aircraft including helicopters as well as thrust- ...
drones
Pharmaceuticals and drug development
Julia is widely used for drug development in the pharmaceutical industry, having been adopted by
Moderna,
Pfizer,
AstraZeneca,
Procter & Gamble
The Procter & Gamble Company (P&G) is an American multinational consumer goods corporation headquartered in Cincinnati, Ohio. It was founded in 1837 by William Procter and James Gamble. It specializes in a wide range of personal health/con ...
, and
United Therapeutics.
Economics, finance, and political science
* The
Federal Reserve Bank of New York, for macroeconomic modeling in Julia since 2015, including estimates of
COVID-19
Coronavirus disease 2019 (COVID-19) is a contagious disease caused by the coronavirus SARS-CoV-2. In January 2020, the disease spread worldwide, resulting in the COVID-19 pandemic.
The symptoms of COVID‑19 can vary but often include fever ...
shocks in 2021
* Also the
Bank of Canada
The Bank of Canada (BoC; ) is a Crown corporations of Canada, Crown corporation and Canada's central bank. Chartered in 1934 under the ''Bank of Canada Act'', it is responsible for formulating Canada's monetary policy,OECD. OECD Economic Surve ...
,
central bank
A central bank, reserve bank, national bank, or monetary authority is an institution that manages the monetary policy of a country or monetary union. In contrast to a commercial bank, a central bank possesses a monopoly on increasing the mo ...
, for macroeconomic modeling
*
BlackRock
BlackRock, Inc. is an American Multinational corporation, multinational investment company. Founded in 1988, initially as an enterprise risk management and fixed income institutional asset manager, BlackRock is the world's largest asset manager ...
, the world's largest asset manager, for
financial time-series analysis
*
Aviva, the
UK's largest general insurer, for actuarial calculations
*
Mitre Corporation, for verification of published election results
* Nobel laureate
Thomas J. Sargent, for
macroeconometric modeling
See also
*
Comparison of numerical-analysis software
*
Comparison of statistical packages
*
Differentiable programming
*
JuMP an algebraic modeling language for mathematical optimization embedded in Julia
*
Python
*
Nim
*
Ring
*
Mojo
References
Further reading
*
*
*
* Tobin A Driscoll and Richard J. Braun (Aug. 2022). "Fundamentals of Numerical Computation: Julia Edition". SIAM. .
* C. T. Kelley (2022). "Solving Nonlinear Equations with Iterative Methods: Solvers and Examples in Julia", SIAM. .
*
* Clemens Heitzinger (2022): "Algorithms with Julia", Springer, ISBN 978-3-031-16559-7.
External links
*
*
{{Authority control
2012 software
Array programming languages
Articles with example Julia code
Notebook interface
Cross-platform software
Data mining and machine learning software
Data-centric programming languages
Dynamically typed programming languages
Free and open source compilers
Free and open source interpreters
Free computer libraries
Free data analysis software
Free data and information visualization software
Free software programmed in C
Free software programmed in Julia
Free software projects
Free statistical software
Functional languages
High-level programming languages
Homoiconic programming languages
Lisp programming language family
Multi-paradigm programming languages
Numerical analysis software for Linux
Numerical analysis software for macOS
Numerical analysis software for Windows
Numerical libraries
Numerical linear algebra
Numerical programming languages
Object-oriented programming languages
Parallel computing
Procedural programming languages
Programming languages
Programming languages created in 2012
Software using the MIT license
Statistical programming languages
Text-oriented programming languages
Programming languages supporting units of measure