Elixir is, in the words of its official site, “a dynamic, functional language for building scalable and maintainable applications.” Its development page records that “Jose Valim created Elixir in 2012 as a Research and Development project inside Plataformatec,” and version 1.0 was released in September 2014. Valim came to the project from the Ruby world and wanted a more productive way to write concurrent software.
The key decision was to build on existing foundations rather than start over. The site states that “Elixir runs on the Erlang VM, known for creating low-latency, distributed, and fault-tolerant systems.” This means Elixir inherits the entire concurrency and reliability story of Erlang and OTP while presenting it through a more approachable, Ruby-influenced syntax with powerful metaprogramming and macros.
Concurrency works exactly as it does on the Erlang virtual machine. The official description explains that “all Elixir code runs inside lightweight threads of execution (called processes) that are isolated and exchange information via messages,” and that a program can “run hundreds of thousands of processes concurrently in the same machine.” Fault tolerance comes from the same supervision idea: “Elixir supervisors describe how to restart parts of your system when things go awry, going back to a known initial state.”
By wrapping Erlang’s proven concurrency and fault-tolerance model in friendlier ergonomics, Elixir brought that model to a much wider audience. It is most visible today through the Phoenix web framework, which uses the underlying process model to handle large numbers of simultaneous connections.