Erlang
A concurrent functional programming language and runtime ecosystem designed for distributed, fault-tolerant, soft real-time systems.
Last updated August 22, 2026
AI crawler reads
2requests
1companies- Anthropic2
- Profile
- 2
- Controversies
- 0
- JSON · MD
- 0
- First read
- Nov 4, 2026
- Latest read
- Nov 4, 2026
From this site's server log
Overview
Erlang is a general-purpose, concurrent, functional programming language and runtime system originally developed inside Ericsson for telecommunications software. Its design centers on applications that must remain available for long periods while handling large numbers of simultaneous activities, communicating across machines, and recovering from component failures. The language is commonly discussed together with Erlang/OTP, or the Open Telecom Platform, which combines the Erlang runtime system with libraries, tools, reusable components, and architectural principles for building resilient applications. The project began at Ericsson in 1986, when Joe Armstrong, Robert Virding, and Mike Williams worked on a language intended to make telephone-switching software easier to prototype and maintain. Erlang drew influence from the PLEX language used in earlier Ericsson systems and was initially implemented in Prolog. Early experiments demonstrated that the approach was well suited to telecom workloads, but the original interpreter was not fast enough for production use. Subsequent implementation work improved execution performance, eventually leading to the BEAM virtual machine and a runtime model optimized for lightweight processes, asynchronous message passing, and supervision. Erlang programs are built from many isolated processes. These are lightweight runtime entities rather than conventional operating-system processes or shared-memory threads. Each process has its own state and mailbox, and processes communicate by sending messages. This shared-nothing model reduces the need for application-level locks and makes it possible to distribute processes across nodes. Pattern matching, immutable data, dynamic typing, eager evaluation, and functional programming provide the language-level foundation for describing message-handling and state-transition logic. Reliability is reinforced by the supervision-tree architecture in OTP. Supervisors monitor worker processes and can restart or reconfigure them when failures occur. Erlang's associated development philosophy is often summarized as “let it crash”: instead of attempting to make every process recover internally from every possible fault, an application isolates failures and delegates recovery to supervisors. The runtime also supports code replacement while a system is operating, helping operators update long-running services without a conventional full shutdown. Erlang's original commercial domain was telecom infrastructure. It became important in Ericsson switching and mobile-network systems, including products associated with GSM, GPRS, 3G, LTE, and later support infrastructure. The language's open-source release in 1998 expanded its reach beyond Ericsson and made the runtime and OTP ecosystem available to a broader developer community. It has since been used in messaging servers, message brokers, distributed databases, online services, and other systems where concurrency and uptime are more important than mainstream language familiarity. Examples associated with the Erlang ecosystem include RabbitMQ, the ejabberd XMPP server, and large-scale communications services such as WhatsApp. Erlang also underpins Elixir's execution model: Elixir code compiles to BEAM-compatible bytecode and uses many of the same OTP concepts. Companies and projects in payments, gaming, healthcare, automotive, Internet services, and connected devices have adopted Erlang or related BEAM technologies. The language remains maintained through Ericsson's OTP organization and an open-source community, with Erlang/OTP functioning as both a technical platform and the principal public identity of the project.
History
Erlang was created at Ericsson in 1986 by Joe Armstrong, Robert Virding, and Mike Williams. The project responded to the difficulty of developing telephone systems that had to process many simultaneous calls, continue operating during faults, and be updated without taking the service offline. The designers wanted a language with convenient support for concurrency, communication, and fault isolation rather than a conventional sequential language with those capabilities added through libraries. The early language was implemented in Prolog and was influenced by PLEX, an earlier Ericsson language used in telephone exchanges. By 1988, experiments had shown that Erlang was useful for prototyping switching applications, but the Prolog implementation was considered too slow for production deployment. Work therefore shifted toward a faster execution environment. During the early 1990s, the team developed the BEAM virtual machine, using a combination of native compilation and threaded interpretation to balance speed, portability, and executable size. A significant turning point came after the failure of the proposed AXE-N next-generation exchange in the mid-1990s. Erlang was subsequently selected for Ericsson's AXD asynchronous-transfer-mode exchange, moving it from a laboratory technology into a major commercial system. In March 1998 Ericsson announced the AXD301, a large Erlang-based switch that was presented as capable of exceptionally high availability. The system became one of the most visible demonstrations of Erlang's process model, supervision mechanisms, and operational approach to nonstop services. The same year also brought a major organizational change. In February 1998 Ericsson Radio Systems prohibited the use of Erlang for new in-house products, preferring non-proprietary languages. The decision threatened the language's future inside Ericsson and led members of the Erlang team to consider leaving. In December, however, Ericsson released Erlang as free and open-source software. Most of the core team then left to establish Bluetail AB, while Ericsson later softened its position and rehired Joe Armstrong in 2004. Open sourcing transformed Erlang from an Ericsson technology into a public platform. The Erlang runtime, standard libraries, and OTP framework became available to organizations outside telecommunications. OTP provided reusable behaviors and conventions for supervisors, servers, applications, releases, and distributed services. Together, these tools made it easier to build systems from isolated processes and to restart failed components without bringing down unrelated parts of an application. The runtime continued to evolve for multicore and distributed computing. Native symmetric multiprocessing support was added in 2006, improving the platform's ability to exploit modern processors. Erlang's lightweight processes, asynchronous message passing, location-transparent communication, garbage collection, and hot-code-loading capabilities remained central to its identity. During the 2000s and 2010s, adoption expanded beyond telecom infrastructure. Erlang became associated with RabbitMQ, the ejabberd messaging server, and communications products including WhatsApp. It was also adopted in payment processing, online services, gaming, healthcare, automotive systems, and connected-device applications. Elixir later broadened the BEAM ecosystem by offering a different syntax and language experience while compiling to Erlang-compatible virtual-machine code and using OTP's reliability patterns. Erlang remains an active open-source language and runtime ecosystem maintained principally through Ericsson's OTP organization and external contributors. Its influence is especially strong in systems engineering communities concerned with concurrency, distribution, resilience, and continuous operation. Although it is less broadly used than mainstream general-purpose languages, its distinctive architecture continues to make it a reference point for dependable distributed software.
- 2006
Native symmetric multiprocessing support arrives
[1]The Erlang runtime adds native symmetric multiprocessing support for improved multicore execution.
- 1998
Erlang becomes open source
[1]Ericsson releases Erlang as free and open-source software, expanding its use beyond the company and its telecommunications products.
- 1998
AXD301 switch announced
[1]Ericsson announces the AXD301 switch, a prominent commercial demonstration of Erlang's high-availability design.
- 1995
Erlang moves into major commercial switching work
[1]Following difficulties with the AXE-N project, Ericsson selects Erlang for the AXD asynchronous-transfer-mode exchange.
- 1992
BEAM virtual-machine work begins
[1]Implementation work begins on the BEAM virtual machine to provide a faster execution environment for Erlang applications.
- 1988
Erlang proves useful for telecom prototyping
[1]Early work demonstrates that Erlang is suitable for prototyping telephone exchanges, although the original Prolog implementation is not fast enough for production.
- 1986
Erlang development begins at Ericsson
[1]Joe Armstrong, Robert Virding, and Mike Williams begin developing Erlang for telecommunications and telephone-switching applications.
Products and positioning
A specialist programming platform for concurrent, distributed, highly available, soft real-time, and fault-tolerant systems.
Programming language · 1986
Erlang programming language
A dynamically typed, functional language with immutable data, single assignment, pattern matching, recursion, and language-level primitives for creating isolated processes and exchanging messages. It is designed for applications that require concurrency, distribution, fault tolerance, and continuous operation.
Runtime and application platform
Erlang/OTP
The broader Erlang platform combines the runtime system with libraries, tools, reusable components, and design patterns. OTP supplies standardized behaviors for servers, supervisors, applications, releases, and distributed services, enabling developers to construct systems from independently monitored processes.
Virtual machine · 1992
BEAM
The BEAM virtual machine executes Erlang and other BEAM-family languages. It supports lightweight processes, garbage collection, asynchronous messaging, multicore execution, distribution, and mechanisms for changing code in running systems.
Brand decisions
2006
Erlang runtime adds native multicore supportGeneration changeBackground
The spread of multicore processors increased the importance of runtime support for parallel execution.
Action taken
Native symmetric multiprocessing support was added to the Erlang runtime system.
Aftermath
The change improved Erlang's suitability for concurrent workloads on multiprocessor machines.
1998
Ericsson opens Erlang to the publicStrategyBackground
Ericsson Radio Systems had earlier restricted the use of Erlang for new products, creating uncertainty around the language's future inside the company.
Action taken
Ericsson released the Erlang implementation as free and open-source software in December 1998.
Aftermath
The release enabled external adoption and helped establish Erlang/OTP as a public platform rather than an exclusively internal Ericsson technology.
Sources2 sources
Cite this profile: Cite the canonical profile. /brand-wiki/erlang · Editorial policy · How profiles are compiled