Julia is a
high-level,
dynamic
Dynamics (from Greek δυναμικός ''dynamikos'' "powerful", from δύναμις ''dynamis'' " power") or dynamic may refer to:
Physics and engineering
* Dynamics (mechanics)
** Aerodynamics, the study of the motion of air
** Analytical dyna ...
programming language
A programming language is a system of notation for writing computer programs. Most programming languages are text-based formal languages, but they may also be graphical. They are a kind of computer language.
The description of a programming l ...
. Its features are well suited for
numerical analysis
Numerical analysis is the study of algorithms that use numerical approximation (as opposed to symbolic manipulations) for the problems of mathematical analysis (as distinguished from discrete mathematics). It is the study of numerical methods th ...
and
computational science
Computational science, also known as scientific computing or scientific computation (SC), is a field in mathematics that uses advanced computing capabilities to understand and solve complex problems. It is an area of science that spans many disc ...
.
Distinctive aspects of Julia's design include a type system with
parametric polymorphism
In programming languages and type theory, parametric polymorphism allows a single piece of code to be given a "generic" type, using variables in place of actual types, and then instantiated with particular types as needed. Parametrically polymorph ...
in a dynamic programming language; with
multiple dispatch
Multiple dispatch or multimethods is a feature of some programming languages in which a function or method can be dynamically dispatched based on the run-time (dynamic) type or, in the more general case, some other attribute of more than one o ...
as its core
programming paradigm
Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms.
Some paradigms are concerned mainly with implications for the execution model of the language, s ...
. Julia supports
concurrent, (composable)
parallel
Parallel is a geometric term of location which may refer to:
Computing
* Parallel algorithm
* Parallel computing
* Parallel metaheuristic
* Parallel (software), a UNIX utility for running programs in parallel
* Parallel Sysplex, a cluster of I ...
and
distributed computing
A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
(with or without using
MPI or the built-in corresponding to "
OpenMP
OpenMP (Open Multi-Processing) is an application programming interface (API) that supports multi-platform shared-memory multiprocessing programming in C, C++, and Fortran, on many platforms, instruction-set architectures and operating sy ...
-style" threads), and
direct calling of
C and
Fortran libraries without
glue code
Adhesive, also known as glue, cement, mucilage, or paste, is any non-metallic substance applied to one or both surfaces of two separate items that binds them together and resists their separation.
The use of adhesives offers certain advant ...
. Julia uses a
just-in-time (JIT) compiler that is referred to as "just-
ahead-of-time" (JAOT) in the Julia community, as Julia compiles all code (by default) to
machine code
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ver ...
before running it.
Julia is
garbage-collected, uses
eager evaluation
In a programming language, an evaluation strategy is a set of rules for evaluating expressions. The term is often used to refer to the more specific notion of a ''parameter-passing strategy'' that defines the kind of value that is passed to the f ...
, and includes efficient libraries for
floating-point
In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be ...
calculations,
linear algebra
Linear algebra is the branch of mathematics concerning linear equations such as:
:a_1x_1+\cdots +a_nx_n=b,
linear maps such as:
:(x_1, \ldots, x_n) \mapsto a_1x_1+\cdots +a_nx_n,
and their representations in vector spaces and through matric ...
,
random number generation
Random number generation is a process by which, often by means of a random number generator (RNG), a sequence of numbers or symbols that cannot be reasonably predicted better than by random chance is generated. This means that the particular outc ...
, and
regular expression
A regular expression (shortened as regex or regexp; sometimes referred to as rational expression) is a sequence of characters that specifies a search pattern in text. Usually such patterns are used by string-searching algorithms for "find" ...
matching. Many libraries are available, including some (e.g., for
fast Fourier transform
A fast Fourier transform (FFT) is an algorithm that computes the discrete Fourier transform (DFT) of a sequence, or its inverse (IDFT). Fourier analysis converts a signal from its original domain (often time or space) to a representation in t ...
s) that were previously bundled with Julia and are now separate.
Several development tools support coding in Julia, such as
integrated development environment
An integrated development environment (IDE) is a software application that provides comprehensive facilities to computer programmers for software development. An IDE normally consists of at least a source code editor, build automation tools a ...
s (e.g. for Microsoft's
Visual Studio Code
Visual Studio Code, also commonly referred to as VS Code, is a source-code editor made by Microsoft with the Electron Framework, for Windows, Linux and macOS. Features include support for debugging, syntax highlighting, intelligent code compl ...
, an
extension
Extension, extend or extended may refer to:
Mathematics
Logic or set theory
* Axiom of extensionality
* Extensible cardinal
* Extension (model theory)
* Extension (predicate logic), the set of tuples of values that satisfy the predicate
* Ext ...
is available providing debugging and
linting support); with integrated tools, e.g. a
profiler (and flame graph support available for the built-in one), debugger, and the Rebugger.jl package "supports
repeated-execution debugging" and more.
Julia works with other languages, calling C has special support, and with use of extra packages, e.g. for working with Python, R, Rust, C++, SQL and to work with or even to compile to JavaScript.
Julia can be compiled to binary
executable
In computing, 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 instructions", as opposed to a data fil ...
s using a package for it supporting all Julia features. Small binary executables can also be made using a different package but then the Julia
runtime isn't included in the executable, e.g. down to 9 KB (then without e.g. the garbage collector since it's part of Julia's runtime, i.e. with similar limited capabilities to the
C language), for computers or even microcontrollers with 2 KB of RAM. By default, Julia code depends on the Julia runtime to support all Julia features, e.g. threading, but some (non-idiomatic, to smaller or larger degree) Julia code can be compiled to small executables (with limited Julia capabilities). In both cases no
source code
In computing, source code, or simply code, is any collection of code, with or without comment (computer programming), comments, written using a human-readable programming language, usually as plain text. The source code of a Computer program, p ...
needs to be distributed.
History
Work on Julia was started in 2009, by
Jeff Bezanson
Jeff Bezanson (born December 26, 1981) is a computer scientist best known for co-creating the Julia programming language with Stefan Karpinski, Alan Edelman and Viral B. Shah in 2012. The language spawned Julia Computing Inc. (since then rena ...
,
Stefan Karpinski
Stefan Karpinski is an American computer scientist known for being a co-creator of the Julia programming language. He is an alumnus of Harvard and works at Julia Computing, which he co-founded with Julia co-creators, Alan Edelman, Jeff Bezanso ...
,
Viral B. Shah, and
Alan Edelman
Alan Stuart Edelman (born June 1963) is an American mathematician and computer scientist. He is a professor of applied mathematics at the Massachusetts Institute of Technology (MIT) and a Principal Investigator at the MIT Computer Science and Ar ...
, who 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'' (abbreviated IW) is an 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 today is International Data Group, and its sister ...
'' 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:
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
An academic conference or scientific conference (also congress, symposium, workshop, or meeting) is an event for researchers (not necessarily academics) to present and discuss their scholarly work. Together with academic or scientific journals ...
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 at MIT, has been selected to receive the 2019 IEEE Computer Society
Sidney Fernbach Award
The Sidney Fernbach Award established in 1992 by the IEEE Computer Society, in memory of Sidney Fernbach, one of the pioneers in the development and application of high performance computers for the solution of large computational problems as the ...
"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; and the syntax changed a little (with the syntax now stable, and same for 1.x and 0.7).
Julia 1.1 was released in January 2019 with a new "exception stack" feature.
Julia 1.2 was released in August 2019 with some built-in support for web browsers.
Julia 1.3 added composable multi-threaded parallelism and a binary artifacts system for Julia packages.
Julia 1.4 added syntax for generic array indexing to handle e.g.
0-based arrays. The memory model was also changed.
Julia 1.5 released in August 2020 added
record and replay debugging support, for Mozilla's
rr tool. The release changed the behavior in the
REPL (soft scope) to the one used in
Jupyter, but fully compatible with non-REPL code. Most of the
thread API was marked as stable, and with this release "arbitrary immutable objects—regardless of whether they have fields that reference mutable objects or not—can now be stack allocated", reducing heap allocations, e.g.
views
are no longer allocating. Julia 1.5 targeted so-called "time-to-first-plot" performance, in general, the speed of compilation itself (as opposed to performance of the generated code), and adds tools for developers to improve package loading.
Julia 1.6 was the largest release since 1.0, 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".
As of version 1.7 Julia development is back to
time-based releases.
Julia 1.7.0 was released in November 2021, with many changes, e.g. a new faster
random-number generator.
Julia 1.7.3 was released on 25 May 2022, fixing some issues, including at least one security update.
Julia 1.8 has been released (and 1.8.1 and 1.8.2 as followup on 29 September 2022, both fixing bugs and invalidations, thus compiling faster), with improvements for distributing Julia programs without source code, and compiler speedup, in some cases by 25%, and more controllable
inlining
In computing, inline expansion, or inlining, is a manual or compiler optimization that replaces a function call site with the body of the called function. Inline expansion is similar to macro expansion, but occurs during compilation, without ch ...
(i.e. now also allowing applying
@inline
at the call site, not just on the function itself) and Julia 1.9 is the next milestone, it and the milestones for 1.10, 1.11, 1.12 and 2.0 currently have no set due dates.
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
William "Velvel" Morton Kahan (born June 5, 1933) is a Canadian mathematician and computer scientist, who received the Turing Award in 1989 for "''his fundamental contributions to numerical analysis''",
was named an ACM Fellow in 1994, and induc ...
(the primary architect of the
IEEE 754
The IEEE Standard for Floating-Point Arithmetic (IEEE 754) is a technical standard for floating-point arithmetic established in 1985 by the Institute of Electrical and Electronics Engineers (IEEE). The standard addressed many problems found i ...
floating-point standard, which his keynote is about, that virtually all CPUs use and languages, including Julia), and Jan Vitek, Xiaoye
Sherry Li
Xiaoye Sherry Li is a researcher in numerical methods at the Lawrence Berkeley National Laboratory, where she works as a senior scientist. She is responsible there for the SuperLU package, a high-performance parallel system for solving sparse sys ...
, and Soumith Chintala (co-creator of
PyTorch
PyTorch is a machine learning framework based on the Torch library, used for applications such as computer vision and natural language processing, originally developed by Meta AI and now part of the Linux Foundation umbrella. It is free and op ...
). 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
The MIT Lincoln Laboratory, located in Lexington, Massachusetts, is a United States Department of Defense federally funded research and development center chartered to apply advanced technology to problems of national security. Research and d ...
was the founding sponsor of the Julia project in its early days. In addition, funds from the
Gordon and Betty Moore Foundation
The Gordon and Betty Moore Foundation is an American foundation established by Intel co-founder Gordon E. Moore and his wife Betty I. Moore in September 2000 to support scientific discovery, environmental conservation, patient care improvements a ...
, the
Alfred P. Sloan Foundation,
Intel
Intel Corporation is an American multinational corporation and technology company headquartered in Santa Clara, California, Santa Clara, California. It is the world's largest semiconductor chip manufacturer by revenue, and is one of the devel ...
, and agencies such as
NSF,
DARPA
The Defense Advanced Research Projects Agency (DARPA) is a research and development agency of the United States Department of Defense responsible for the development of emerging technologies for use by the military.
Originally known as the Ad ...
,
NIH
The National Institutes of Health, commonly referred to as NIH (with each letter pronounced individually), is the primary agency of the United States government responsible for biomedical and public health research. It was founded in the late 1 ...
,
NASA
The National Aeronautics and Space Administration (NASA ) is an independent agency of the US federal government responsible for the civil space program, aeronautics research, and space research.
NASA was established in 1958, succeedi ...
, and
FAA
The Federal Aviation Administration (FAA) is the largest transportation agency of the U.S. government and regulates all aspects of civil aviation in the country as well as over surrounding international waters. Its powers include air traffic m ...
have been essential to the development of Julia.
Mozilla
Mozilla (stylized as moz://a) is a free software community founded in 1998 by members of Netscape. The Mozilla community uses, develops, spreads and supports Mozilla products, thereby promoting exclusively free software and open standards, w ...
, 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.
Julia company
JuliaHub, Inc. was founded in 2015 as Julia Computing, Inc. by
Viral B. Shah, Deepak Vinchhi,
Alan Edelman
Alan Stuart Edelman (born June 1963) is an American mathematician and computer scientist. He is a professor of applied mathematics at the Massachusetts Institute of Technology (MIT) and a Principal Investigator at the MIT Computer Science and Ar ...
,
Jeff Bezanson
Jeff Bezanson (born December 26, 1981) is a computer scientist best known for co-creating the Julia programming language with Stefan Karpinski, Alan Edelman and Viral B. Shah in 2012. The language spawned Julia Computing Inc. (since then rena ...
,
Stefan Karpinski
Stefan Karpinski is an American computer scientist known for being a co-creator of the Julia programming language. He is an alumnus of Harvard and works at Julia Computing, which he co-founded with Julia co-creators, Alan Edelman, Jeff Bezanso ...
and
Keno Fischer
Keno Fischer is a German computer scientist known for being a core member implementing the Julia programming language (e.g. its Windows support). He is an alumnus of Harvard for both his BA and MA. He works at Julia Computing, which he co-found ...
.
In June 2017, Julia Computing raised US$4.6million in seed funding from
General Catalyst
General Catalyst, formerly General Catalyst Partners (GCP), is an American venture capital firm focused on early stage and growth investments. The firm was founded in 2000 in Cambridge, Massachusetts, and also has offices in San Francisco, Pal ...
and
Founder Collective
Founder or Founders may refer to:
Places
* Founders Park, a stadium in South Carolina, formerly known as Carolina Stadium
* Founders Park, a waterside park in Islamorada, Florida
Arts, entertainment, and media
* Founders (''Star Trek''), the a ...
, the same month was "granted $910,000 by the
Alfred P. Sloan Foundation to support
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
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 inquiry devoted to understanding and building methods that 'learn', that is, methods that leverage data to improve performance on some set of tasks. It is seen as a part of artificial intelligence.
Machine ...
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
A series A round (also known as series A financing or series A investment) is the name typically given to a company's first significant round of venture capital financing. The name refers to the class of preferred stock sold to investors in exc ...
led by Dorilton Ventures, which also owns team
Williams Racing
Williams Grand Prix Engineering Limited, currently racing in Formula One as Williams Racing, is a British Formula One motor racing team and constructor. It was founded by former team owner Frank Williams and automotive engineer Patrick H ...
, 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".
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 domains. Conversely, a domain-specific programming language is used within a specific area. For ex ...
, while also originally designed for numerical/technical computing.
It is also useful for low-level
systems programming,
as a
specification language
A specification language is a formal language in computer science used during systems analysis, requirements analysis, and systems design to describe a system at a much higher level than a programming language, which is used to produce the executa ...
,
High-level Synthesis (HLS) tool (for hardware, e.g.
FPGA
A field-programmable gate array (FPGA) is an integrated circuit designed to be configured by a customer or a designer after manufacturinghence the term ''Field-programmability, field-programmable''. The FPGA configuration is generally specifi ...
s),
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 w ...
*
Lisp
A lisp is a speech impairment in which a person misarticulates sibilants (, , , , , , , ). These misarticulations often result in unclear speech.
Types
* A frontal lisp occurs when the tongue is placed anterior to the target. Interdental lispi ...
-like macros and other
metaprogramming
Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself ...
facilities
* Call
C functions directly without wrappers or special
APIs
Apis or APIS may refer to:
* Apis (deity), an ancient Egyptian god
* Apis (Greek mythology), several different figures in Greek mythology
* Apis (city), an ancient seaport town on the northern coast of Africa
**Kom el-Hisn, a different Egyptian ci ...
* Ability to interface with other languages, e.g. PythonCall.jl allows calling to or from Python (also possible with PyCall.jl), R with RCall.jl, and Java/Scala with JavaCall.jl
*
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
** Thin-shell structure
Science Biology
* Seashell, a hard o ...
-like abilities to manage other processes
* Designed for
parallel
Parallel is a geometric term of location which may refer to:
Computing
* Parallel algorithm
* Parallel computing
* Parallel metaheuristic
* Parallel (software), a UNIX utility for running programs in parallel
* Parallel Sysplex, a cluster of I ...
and
distributed computing
A distributed system is a system whose components are located on different networked computers, which communicate and coordinate their actions by passing messages to one another from any system. Distributed computing is a field of computer sci ...
*
Coroutine
Coroutines are computer program components that generalize subroutines for non-preemptive multitasking, by allowing execution to be suspended and resumed. Coroutines are well-suited for implementing familiar program components such as cooperative ...
s: lightweight
''green'' threading
* User-defined types are as compact as built-ins
* Automatic generation of code for different argument types
* Extensible conversions and promotions for numeric and other types
* Support for
Unicode
Unicode, formally The Unicode Standard,The formal version reference is is an information technology standard for the consistent encoding, representation, and handling of text expressed in most of the world's writing systems. The standard, ...
, including but not limited to
UTF-8
UTF-8 is a variable-length character encoding used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode'' (or ''Universal Coded Character Set'') ''Transformation Format 8-bit''.
UTF-8 is capable of ...
Multiple dispatch (also termed
multimethods in Lisp) is a
generalization
A generalization is a form of abstraction whereby common properties of specific instances are formulated as general concepts or claims. Generalizations posit the existence of a domain or set of elements, as well as one or more common character ...
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", which can contain data and code. The data is in the form of fields (often known as attributes or ''properties''), and the code is in the form of ...
(OOP) languages, such as
Python,
C++,
Java
Java (; id, Jawa, ; jv, ꦗꦮ; su, ) is one of the Greater Sunda Islands in Indonesia. It is bordered by the Indian Ocean to the south and the Java Sea to the north. With a population of 151.6 million people, Java is the world's mo ...
,
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
, and
Smalltalk
Smalltalk is an object-oriented, dynamically typed reflective programming language. It was designed and created in part for educational use, specifically for constructionist learning, at the Learning Research Group (LRG) of Xerox PARC by ...
that uses
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. Offici ...
. 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 can not 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, a standalone
executable
In computing, 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 instructions", as opposed to a data fil ...
that needs no Julia source code can be built with e.g. ''PackageCompiler.jl''.
Julia's
syntactic macros (used for
metaprogramming
Metaprogramming is a programming technique in which computer programs have the ability to treat other programs as their data. It means that a program can be designed to read, generate, analyze or transform other programs, and even modify itself ...
), like Lisp macros, are more powerful than
text-substitution macros used in the
preprocessor
In computer science, a preprocessor (or precompiler) is a 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 is often used by s ...
of some other languages such as C, because they work at the level of
abstract syntax tree
In computer science, an abstract syntax tree (AST), or just syntax tree, is a tree representation of the abstract syntactic structure of text (often source code) written in a formal language. Each node of the tree denotes a construct occurring ...
s (ASTs). Julia's macro system is
hygienic
Hygiene is a series of practices performed to preserve health.
According to the World Health Organization (WHO), "Hygiene refers to conditions and practices that help to maintain health and prevent the spread of diseases." Personal hygiene refer ...
, 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 A scheme is a systematic plan for the implementation of a certain idea.
Scheme or schemer may refer to:
Arts and entertainment
* ''The Scheme'' (TV series), a BBC Scotland documentary series
* The Scheme (band), an English pop band
* ''The Schem ...
and
Common Lisp
Common Lisp (CL) is a dialect of the Lisp programming language, published in ANSI standard document ''ANSI INCITS 226-1994 (S20018)'' (formerly ''X3.226-1994 (R1999)''). The Common Lisp HyperSpec, a hyperlinked HTML version, has been derived fr ...
, and it shares many features with
Dylan, also a multiple-dispatch-oriented dynamic language (which features an
ALGOL
ALGOL (; short for "Algorithmic Language") is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by th ...
-like
free-form infix
An infix is an affix inserted inside a word stem (an existing word or the core of a family of words). It contrasts with '' adfix,'' a rare term for an affix attached to the outside of a stem, such as a prefix or suffix.
When marking text for i ...
syntax rather than a Lisp-like prefix syntax, while in Julia "everything"
is an
expression
Expression may refer to:
Linguistics
* Expression (linguistics), a word, phrase, or sentence
* Fixed expression, a form of words with a specific meaning
* Idiom, a type of fixed expression
* Metaphorical expression, a particular word, phrase, ...
), and with
Fortress
A fortification is a military construction or building designed for the defense of territories in warfare, and is also used to establish rule in a region during peacetime. The term is derived from Latin ''fortis'' ("strong") and ''facere'' ...
, another numerical programming language (which features multiple dispatch and a sophisticated parametric type system). While
Common Lisp Object System
The Common Lisp Object System (CLOS) is the facility for object-oriented programming which is part of ANSI Common Lisp. CLOS is a powerful dynamic object system which differs radically from the OOP facilities found in more static languages such a ...
(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 is a definite 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 quantity of that kind can be expressed as a mul ...
to the language.
Interaction
The Julia official distribution includes an interactive command-line
read–eval–print loop
A read–eval–print loop (REPL), also termed an interactive toplevel or language shell, is a simple interactive computer programming environment that takes single user inputs, executes them, and returns the result to the user; a program written ...
(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
** Thin-shell structure
Science Biology
* Seashell, a hard o ...
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 variable-length character encoding used for electronic communication. Defined by the Unicode Standard, the name is derived from ''Unicode'' (or ''Universal Coded Character Set'') ''Transformation Format 8-bit''.
UTF-8 is capable of ...
, e.g. for source code, meaning also allowing as an option 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. Latexes are found in nature, but synthetic latexes are common as well.
In nature, latex is found as a milky fluid found in 10% of all flowering plants (angiosper ...
codes, or also possible by simply copy-pasting, e.g. possible for
sqrt and
cbrt functions). Julia has support for Unicode 14.0 (from 2021, and 1.9-DEV supports the latest Unicode 15.0), for the languages of the world, even for source code, e.g. variable names (while not using English isn't recommended for code for others to read e.g. package names).
Julia is supported by
Jupyter, an online interactive "notebooks" environment, an
Pluto.jl a "''reactive'' notebook" (where notebooks are saved as pure Julia files), a possible replacement for the former kind.
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.
Use with other languages
Julia is in practice
interoperable
Interoperability is a characteristic of a product or system to work with other products or systems. While the term was initially defined for information technology or systems engineering services to allow for information exchange, a broader defi ...
with other languages (e.g. majority of top 10–20 languages in popular use). Julia's
ccall keyword is used to call C-exported or Fortran shared library functions individually, and packages are available to allow calling other languages e.g. Python, R, MATLAB, C# (and other .NET languages with DotNET.jl), 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,
Rust
Rust is an iron oxide, a usually reddish-brown oxide formed by the reaction of iron and oxygen in the catalytic presence of water or air moisture. Rust consists of hydrous iron(III) oxides (Fe2O3·nH2O) and iron(III) oxide-hydroxide (FeO(OH), ...
, or Ruby, such as with pyjulia and PythonCall.jl/juliacall for Python and a different JuliaCall package for R. Julia has also been used for hardware, i.e. to compile to
VHDL
The VHSIC Hardware Description Language (VHDL) is a hardware description language (HDL) that can model the behavior and structure of digital systems at multiple levels of abstraction, ranging from the system level down to that of logic gat ...
, as a High-level Synthesis (HLS) tool (for e.g.
FPGA
A field-programmable gate array (FPGA) is an integrated circuit designed to be configured by a customer or a designer after manufacturinghence the term ''Field-programmability, field-programmable''. The FPGA configuration is generally specifi ...
s).
Julia has packages supporting markup languages such as
HTML
The HyperText Markup Language or HTML is the standard markup language for documents designed to be displayed in a web browser. It can be assisted by technologies such as Cascading Style Sheets (CSS) and scripting languages such as JavaScri ...
(and also for
HTTP
The Hypertext Transfer Protocol (HTTP) 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, ...
),
XML
Extensible Markup Language (XML) is a markup language and file format for storing, transmitting, and reconstructing arbitrary data. It defines a set of rules for encoding documents in a format that is both human-readable and machine-readable. ...
,
JSON
JSON (JavaScript Object Notation, pronounced ; also ) is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other s ...
and
BSON
BSON () is a computer data interchange format. The name "BSON" is based on the term JSON and stands for "Binary JSON". It is a binary form for representing simple or complex data structures including associative arrays (also known as name-value ...
, and for
database
In computing, a database is an organized collection of data stored and accessed electronically. Small databases can be stored on a file system, while large databases are hosted on computer clusters or cloud storage. The design of databases spa ...
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 w ...
and includes a default registry system. Packages are most often distributed as source code hosted on
GitHub
GitHub, Inc. () is an Internet hosting service for software development and version control using Git. It provides the distributed version control of Git plus access control, bug tracking, software feature requests, task management, co ...
, 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 is a set of compiler and toolchain technologies that can be used to develop a front end for any programming language and a back end for any instruction set architecture. LLVM is designed around a language-independent intermediate repre ...
dependency. The code parsing and code-lowering are implemented in FemtoLisp, a
Scheme A scheme is a systematic plan for the implementation of a certain idea.
Scheme or schemer may refer to:
Arts and entertainment
* ''The Scheme'' (TV series), a BBC Scotland documentary series
* The Scheme (band), an English pop band
* ''The Schem ...
dialect
(that parser can however be switched out at runtime, with the pure-Julia package ''JuliaSyntax.jl'', a drop-in, faster replacement, usually, and it "greatly improves parser error messages in various cases", thus it's being considered as an addition to Julia, first as a non-default option in 1.10.0, but can already be used in older versions). A non-default parser package ''Parser.jl'' (for e.g. much faster
floating-point number
In computing, floating-point arithmetic (FP) is arithmetic that represents real numbers approximately, using an integer with a fixed precision, called the significand, scaled by an integer exponent of a fixed base. For example, 12.345 can be r ...
parsing on Windows) is available, already used indirectly by some packages, but is also being considered for inclusion into Julia. The LLVM compiler infrastructure project is used as the
back end for generation of
64-bit
In computer architecture, 64-bit integers, memory addresses, or other data units are those that are 64 bits wide. Also, 64-bit CPUs and ALUs are those that are based on processor registers, address buses, or data buses of that size. A comp ...
or
32-bit
In computer architecture, 32-bit computing refers to computer systems with a processor, memory, and other major system components that operate on data in 32- bit units. Compared to smaller bit widths, 32-bit computers can perform large calcula ...
optimized
machine code
In computer programming, machine code is any low-level programming language, consisting of machine language instructions, which are used to control a computer's central processing unit (CPU). Each instruction causes the CPU to perform a ver ...
depending on the platform Julia runs on. With some exceptions (e.g.,
PCRE
Perl Compatible Regular Expressions (PCRE) is a library written in C, which implements a regular expression engine, inspired by the capabilities of the Perl programming language. Philip Hazel started writing PCRE in summer 1997. PCRE's syntax ...
, which is being considered for removal in Julia 2.0; Julia already has alternative
regex libraries, e.g. ''RE2.jl'' for Google's re2, ''StrRegex.jl'' and ''ReadableRegex.jl''), the
standard library is implemented in Julia. A very notable aspect of Julia's implementation is its speed, which is often within a factor of two relative to fully optimized C code (and thus often an order of magnitude faster than Python or
R). Development of Julia began in 2009 and an
open-source
Open source is source code that is made freely available for possible modification and redistribution. Products include permission to use the source code, design documents, or content of the product. The open-source model is a decentralized sof ...
version was publicized in February 2012.
Current and future platforms
Julia has tier 1
macOS
macOS (; previously OS X and originally Mac OS X) is a Unix operating system developed and marketed by Apple Inc. since 2001. It is the primary operating system for Apple's Mac (computer), Mac computers. Within the market of ...
support, meaning for Intel-based Macs, but also for the new
Apple M1
Apple M1 is a series of ARM architecture, ARM-based system-on-a-chip, systems-on-a-chip (SoCs) Apple silicon, designed by Apple Inc. as a central processing unit (CPU) and graphics processing unit (GPU) for its Mac (computer), Mac desktop compu ...
-based Macs, by either ''running in
Rosetta 2
Rosetta is a dynamic binary translator developed by Apple Inc. for macOS, an application compatibility layer between different instruction set architectures. It enables a transition to newer hardware, by automatically translating software. Th ...
emulation'',
or, while then, with tier 2 native (non-Rosetta) support with Julia 1.8 (unlike the older LTS version of Julia which only has tier 3 (experimental) support;
Windows on ARM Windows on ARM may refer to:
* Windows RT, a deprecated ARM32 version of Windows 8/8.1
* Windows 10 on ARM, Windows 10 compiled for ARM architecture, ARM devices
* Windows 11 on ARM, Windows 11 compiled for AArch64, ARM64 devices
{{disambiguation ...
has no official support yet). The work on that support (i.e. without emulation) is mostly done, and many programs work with Julia 1.8.0. Julia was prior to 1.8.0 claimed to work "ok" on M1 Macs (at reduced performance) through the (automatic) use of Rosetta 2 (that needs to emulate Julia).
Since Julia uses JIT, Julia generates native machine code directly, before a function is first run (i.e. a different approach than compiling to
bytecode
Bytecode (also called portable code or p-code) is a form of instruction set designed for efficient execution by a software interpreter. Unlike human-readable source code, bytecodes are compact numeric codes, constants, and references (norma ...
, that you distribute by default, to be run on a
virtual machine
In computing, a virtual machine (VM) is the virtualization/ emulation of a computer system. Virtual machines are based on computer architectures and provide functionality of a physical computer. Their implementations may involve specialized har ...
(VM), as with e.g. Java/
JVM; then translated from the bytecode while running, as done by
Dalvik on older versions of Android).
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 80386 microprocessor in 1985. IA-32 is the first incarnation of ...
processors completely implementing the
i686
The P6 microarchitecture is the sixth-generation Intel x86 microarchitecture, implemented by the Pentium Pro microprocessor that was introduced in November 1995. It is frequently referred to as i686. It was succeeded by the NetBurst microarchi ...
subarchitecture are supported and all 64-bit
x86-64
x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging ...
(aka
amd64
x86-64 (also known as x64, x86_64, AMD64, and Intel 64) is a 64-bit version of the x86 instruction set, first released in 1999. It introduced two new modes of operation, 64-bit mode and compatibility mode, along with a new 4-level paging mo ...
), i.e. all less than about a decade old are supported.
ARMv8
ARM (stylised in lowercase as arm, formerly an acronym for Advanced RISC Machines and originally Acorn RISC Machine) is a family of reduced instruction set computer (RISC) instruction set architectures for computer processors, configured ...
(
AArch64
AArch64 or ARM64 is the 64-bit extension of the ARM architecture family.
It was first introduced with the Armv8-A architecture. Arm releases a new extension every year.
ARMv8.x and ARMv9.x extensions and features
Announced in October 2011, ...
) processors are supported on second tier, and ARMv7 and ARMv6 (AArch32) are supported with some caveats (lower tier) for Julia 1.0.x and also had official executables for later versions, while 32-bit ARM support was later downgraded to tier 3 (however, unofficial binaries are available for Julia 1.5.1). Hundreds of packages are
GPU-accellerated:
CUDA
CUDA (or Compute Unified Device Architecture) is a parallel computing platform and application programming interface (API) that allows software to use certain types of graphics processing units (GPUs) for general purpose processing, an approach ...
(i.e. Nvidia GPUs; implementing
PTX) has tier 1 support, with the help of an external package. 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 framework for writing programs that execute across heterogeneous platforms consisting of central processing units (CPUs), graphics processing units (GPUs), digital signal processors (DSPs), field-prog ...
; and experimental support for the AMD
ROCm
ROCm is an Advanced Micro Devices (AMD) software stack for graphics processing unit (GPU) programming. ROCm spans several domains: general-purpose computing on graphics processing units (GPGPU), high performance computing (HPC), heterogeneous c ...
stack. Julia's downloads page provides
executable
In computing, 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 instructions", as opposed to a data fil ...
s (and source) for all the officially supported platforms.
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 association with Broadcom. The Raspberry Pi project originally leaned towards the promotion of teaching basic ...
), with specific build options, which has been done and unofficial pre-built binaries (and build instructions) are available. Julia has been built
for several ARM platforms, from small Raspberry Pis to (recent) top-1 supercomputer
Fugaku's ARM-based
A64FX. PowerPC (64-bit) has tier 3 support, meaning it "may or may not build".
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
The Raspberry Pi Foundation is a British charity and company founded in 2009 to promote the study of basic computer science in schools, and is responsible for developing the Raspberry Pi single-board computers.
Foundation
The Raspberry Pi Foun ...
.
There is also support for web browsers/
JavaScript
JavaScript (), often abbreviated as JS, is a programming language that is one of the core technologies of the World Wide Web, alongside HTML and CSS. As of 2022, 98% of Website, websites use JavaScript on the Client (computing), client side ...
through JSExpr.jl;
and the alternative language of web browsers,
WebAssembly
WebAssembly (sometimes abbreviated Wasm) defines a portable binary-code format and a corresponding text format for executable programs as well as software interfaces for facilitating interactions between such programs and their host environmen ...
, has minimal support
for several upcoming external Julia projects.
Julia can compile to ARM; thus, in theory,
Android app
Android is a mobile operating system based on a modified version of the Linux kernel and other open-source software, designed primarily for touchscreen mobile devices such as smartphones and tablets. Android is developed by a consortium of deve ...
s can be made with the
NDK, but for now Julia has been made to run under
Android only indirectly, ''i.e.'' with a Ubuntu
chroot
A chroot on Unix and Unix-like operating systems is an operation that changes the apparent root directory for the current running process and its children. A program that is run in such a modified environment cannot name (and therefore normall ...
on Android.
While Julia requires an
operating system
An operating system (OS) is system software that manages computer hardware, software resources, and provides common daemon (computing), services for computer programs.
Time-sharing operating systems scheduler (computing), schedule tasks for ef ...
by default, and has no official support to run without or on
embedded system
An embedded system is a computer system—a combination of a computer processor, computer memory, and input/output peripheral devices—that has a dedicated function within a larger mechanical or electronic system. It is ''embedded'' ...
platforms like
Arduino
Arduino () is an open-source hardware and software company, project, and user community that designs and manufactures single-board microcontrollers and microcontroller kits for building digital devices. Its hardware products are licensed und ...
, Julia code has still been run, with some limitations, on a baremetal 16
MHz
The hertz (symbol: Hz) is the unit of frequency in the International System of Units (SI), equivalent to one event (or cycle) per second. The hertz is an SI derived unit whose expression in terms of SI base units is s−1, meaning that one h ...
8-bit
In computer architecture, 8-bit integers or other data units are those that are 8 bits wide (1 octet). Also, 8-bit central processing unit (CPU) and arithmetic logic unit (ALU) architectures are those that are based on registers or data buses of ...
AVR-microcontroller Arduino with 2 KB RAM (plus 32 KB of flash memory).
Adoption
Julia has been adopted by many universities including
MIT
The Massachusetts Institute of Technology (MIT) is a private land-grant research university in Cambridge, Massachusetts. Established in 1861, MIT has played a key role in the development of modern technology and science, and is one of the ...
,
Stanford
Stanford University, officially Leland Stanford Junior University, is a private research university in Stanford, California. The campus occupies , among the largest in the United States, and enrolls over 17,000 students. Stanford is consider ...
, and
UC Berkeley
The University of California, Berkeley (UC Berkeley, Berkeley, Cal, or California) is a public university, public land-grant university, land-grant research university in Berkeley, California. Established in 1868 as the University of Californi ...
. Large private firms across many sectors have adopted the language including
Amazon
Amazon most often refers to:
* Amazons, a tribe of female warriors in Greek mythology
* Amazon rainforest, a rainforest covering most of the Amazon basin
* Amazon River, in South America
* Amazon (company), an American multinational technolog ...
,
IBM,
BlackRock
BlackRock, Inc. is an American multi-national investment company based in New York City. Founded in 1988, initially as a risk management and fixed income institutional asset manager, BlackRock is the world's largest asset manager, with tri ...
,
JP Morgan
JPMorgan Chase & Co. is an American multinational investment bank and financial services holding company headquartered in New York City and incorporated in Delaware. As of 2022, JPMorgan Chase is the largest bank in the United States, the w ...
,
ASML, and many of the largest pharma companies. Julia has also been used in government agencies like
NASA
The National Aeronautics and Space Administration (NASA ) is an independent agency of the US federal government responsible for the civil space program, aeronautics research, and space research.
NASA was established in 1958, succeedi ...
and the
FAA
The Federal Aviation Administration (FAA) is the largest transportation agency of the U.S. government and regulates all aspects of civil aviation in the country as well as over surrounding international waters. Its powers include air traffic m ...
as well as every US national energy laboratory.
Scientific computing
* The Climate Modeling Alliance selected Julia for implementing their next generation global climate model to provide insight into the effects and challenges of climate change.
* NASA models spacecraft separation dynamics, analyzes (
TRAPPIST
The Trappists, officially known as the Order of Cistercians of the Strict Observance ( la, Ordo Cisterciensis Strictioris Observantiae, abbreviated as OCSO) and originally named the Order of Reformed Cistercians of Our Lady of La Trappe, are a ...
)
exoplanet
An exoplanet or extrasolar planet is a planet outside the Solar System. The first possible evidence of an exoplanet was noted in 1917 but was not recognized as such. The first confirmation of detection occurred in 1992. A different planet, init ...
datasets and
cosmic microwave background
In Big Bang cosmology the cosmic microwave background (CMB, CMBR) is electromagnetic radiation that is a remnant from an early stage of the universe, also known as "relic radiation". The CMB is faint cosmic background radiation filling all spac ...
data from the
Big Bang
The Big Bang event is a physical theory that describes how the universe expanded from an initial state of high density and temperature. Various cosmological models of the Big Bang explain the evolution of the observable universe from t ...
.
* The Brazilian
INPE plans space missions and simulates
satellite
A satellite or artificial satellite is an object intentionally placed into orbit in outer space. Except for passive satellites, most satellites have an electricity generation system for equipment on board, such as solar panels or radioiso ...
s in Julia.
*
CERN uses Julia for the
Large Hadron Collider
The Large Hadron Collider (LHC) is the world's largest and highest-energy particle collider. It was built by the European Organization for Nuclear Research (CERN) between 1998 and 2008 in collaboration with over 10,000 scientists and hundr ...
(
LHCb experiment).
Other notable uses
* The
Federal Reserve Bank of New York created economic models of the United States with Julia in 2015 (ported from
MATLAB
MATLAB (an abbreviation of "MATrix LABoratory") is a proprietary multi-paradigm programming language and numeric computing environment developed by MathWorks. MATLAB allows matrix manipulations, plotting of functions and data, implementa ...
), and its later version 1.3 includes estimating
COVID-19
Coronavirus disease 2019 (COVID-19) is a contagious disease caused by a virus, the severe acute respiratory syndrome coronavirus 2 (SARS-CoV-2). The first known case was identified in Wuhan, China, in December 2019. The disease quickl ...
shocks in 2021.
*
BlackRock
BlackRock, Inc. is an American multi-national investment company based in New York City. Founded in 1988, initially as a risk management and fixed income institutional asset manager, BlackRock is the world's largest asset manager, with tri ...
analyzes
time series
In mathematics, a time series is a series of data points indexed (or listed or graphed) in time order. Most commonly, a time series is a sequence taken at successive equally spaced points in time. Thus it is a sequence of discrete-time data. E ...
using Julia.
*
Aviva
Aviva plc is a British multinational insurance company headquartered in London, England. It has about 18 million customers across its core markets of the United Kingdom, Ireland and Canada. In the United Kingdom, Aviva is the largest general ...
calculates risk for insurance with Julia.
*
Mitre Corporation produced verification software for published election results using Julia.
See also
*
Comparison of numerical-analysis software
The following tables provide a comparison of numerical-analysis software.
Applications
General
Operating system support
The operating systems the software can run on natively (without emulation).
Language features
Colors indicat ...
*
Comparison of statistical packages
The following tables compare general and technical information for a number of statistical analysis packages.
General information
Operating system support
ANOVA
Support for various ANOVA methods
Regression
Support for various regression m ...
*
Differentiable programming
Differentiable programming is a programming paradigm in which a numeric computer program can be differentiated throughout via automatic differentiation.
This allows for gradient-based optimization of parameters in the program, often via gradi ...
*
JuMP an algebraic modeling language for mathematical optimization embedded in Julia
Notes
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. .
*
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 compilers and interpreters
Free computer libraries
Free data analysis software
Free data 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