← All languages

Elixir

Erlang / BEAM family · 2012Actively developed

Functional programming for concurrent, fault-tolerant systems on the BEAM.

Functional · Concurrent

Homepage
https://elixir-lang.org/
Reference / standard
https://hexdocs.pm/elixir/introduction.html
Project blog
https://elixir-lang.org/blog/
Community forum
https://elixirforum.com/
Wikipedia (English)
https://en.wikipedia.org/wiki/Elixir_(programming_language)

Tracked release

Version
1.20
Artifact
Feature release
Published
2026-06-03
Source checked
2026-10-22
https://elixir-lang.org/blog/

Use & ecosystem

Suited for
Embedded devices, Web backends, Distributed services
Family / tradition
Functional / ML / lazy, Erlang / BEAM
Maturity
Established
Ecosystem breadth
Focused

Stable releases and sustained independent service deployments support Established. The ecosystem is concentrated around BEAM applications, web services and distributed systems, so breadth is Focused.

Industry & practical use

Elixir is used for web services, real-time communication and concurrent distributed applications. Official case studies include Discord and embedded grid-management systems. Phoenix provides web tooling; Nerves supports embedded Linux systems. Embedded Linux here does not mean bare-metal microcontrollers.

Compilers, libraries & tooling

Elixir builds on Erlang/OTP and the BEAM runtime, with Mix for project tooling and Hex for packages. Its ecosystem is especially developed around services, supervision and concurrency. CPU-intensive native components need separate engineering; many lightweight processes do not make every workload computationally fast.

Platforms & deployment

General toolchains
Linux, Windows, macOS
Specialized tooling
None catalogued
Native cross-compilation
Not the usual deployment model

Elixir and Erlang/OTP are available on Linux, Windows and macOS. Nerves targets selected embedded Linux boards. A deployed release includes runtime components and native dependencies, so runtime portability does not imply that one release archive works on every OS.

BEAM bytecode runs through Erlang/OTP. Mix releases should be built in an environment matching the target OS and architecture; native dependencies and the bundled runtime matter. Nerves supplies a specialized cross-build workflow for its embedded Linux targets.

Project health & support

The Elixir core team maintains the language through a public development process, with a documented compatibility and security policy. The project emphasizes a stable core while frameworks extend its uses. Erlang/OTP and individual packages have their own maintainers and support lifecycles.

Use, ecosystem & platform assessment reviewed 2026-10-22 · Sources below

History & origin

José Valim created Elixir at Plataformatec, bringing an extensible functional language to the Erlang virtual machine. Its public emergence is commonly dated to 2012, following earlier development. Elixir 1.0 arrived in 2014.

Creators
José Valim, Plataformatec
Origin
2012 — First public appearance; earlier development is noted below.

Influences & descendants

Influenced by

Influenced in this catalogue

  • No linked entries yet.

Language features

Typing
Gradual, Dynamic
Execution
Bytecode VM, JIT
Block structure
Explicit delimiters
Semicolons
Optional
Lexical closures
Yes
Namespaced modules
Yes
Pattern matching
Yes
Macro system
Syntactic macros

Implementation notes

  • Elixir compiles to BEAM bytecode; JIT availability depends on the Erlang/OTP runtime and platform.
  • Version 1.20 adds gradual type checking while retaining dynamic execution.
  • The tracked release is the announced 1.20 feature series; patch releases are not yet tracked.

Sources & references

Language reference
https://hexdocs.pm/elixir/introduction.html
History and background
https://elixir-lang.org/development/

Use, ecosystem & platform sources

Industry case studies
https://elixir-lang.org/cases/
Development and ecosystem
https://elixir-lang.org/development/
Platforms
https://elixir-lang.org/install/
Release deployment
https://mix.hexdocs.pm/Mix.Tasks.Release.html
Embedded Linux tooling
https://hexdocs.pm/nerves/getting-started.html

See the classification definitions for implementation-dependent features. Influence links cover the entries documented here.