ErLLVM is an experimental extension of Erlang/OTP which aims at providing multiple back ends for HiPE, the native code compiler of Erlang/OTP, with the use of the Low Level Virtual Machine (LLVM) infrastructure. Currently, ErLLVM supports the AMD64 and x86 architectures.

SD Erlang is a small conservative extension of distributed Erlang. SD Erlang partitions the global namespace and connection network using s_groups. An s_group is a set of nodes with its own process namespace and with a fully connected network within the s_group, but only individual connections outside it. As a node may belong to more than one s_group it is possible to construct arbitrary connection topologies like trees or rings. The latest version of SD Erlang is based on Erlang/OTP 19.3.


Concuerror is a systematic testing tool for finding concurrency errors in Erlang programs or verifying their absence. Given a program and a test to run, Concuerror uses a stateless search algorithm to systematically explore the execution of the test under conceptually all process interleavings.

Devo is a tool for online SD Erlang profiling and visualisation. Devo has two visualization modes: low and high level. The low level visualization shows the length of each run queue on each of your processor's cores and the migration of processes between cores.

Dialyzer (a DIscrepancy AnalYZer for ERlang programs) is a widely used static analysis tool that identifies bugs and other software discrepancies in Erlang programs. As part of the RELEASE project, Dialyzer's analyses have been parallelized so as to be effective in multicore machines. The parallel version of Dialyzer has been included in Erlang/OTP starting with R15B02 (September 2012).

Percept2 is an Erlang concurrency profiler tool which utilizes trace information and profiler events to visualize application level concurrency and identify concurrency bottlenecks.

SD-Mon is a tool aimed to monitor SD-Erlang systems. This purpose is accomplished by means a "shadow" network of agents, mapped on the running system. The network is deployed on the basis of a configuration file that describes the network architecture in terms of hosts, Erlang nodes, global group and s_group partitions. Tracing to be performed on monitored nodes is also specified within the configuration file.

WombatOAM is an operations and maintenance framework for Erlang based systems. It gives full visibility on what is going on in Erlang clusters either as a stand-alone product or by integrating into an existing OAM infrastructure.

Wrangler is an interactive refactoring and code inspection tool for Erlang developed at the University of Kent. It is implemented in Erlang, and integrated with (X)Emacs and with Eclipse.

Benchmarks and Benchmarking Suites

Ant Colony Optimization (ACO) is a population-based metaheuristic that has proved to be successful in finding approximate solutions to difficult optimization problems, such as scheduling problems, routing problems, and allocation problems.

BenchErl is a scalability benchmark suite for applications written in Erlang, using the Erlang/OTP system in particular. The benchmark suite aims to assess scalability and shows how an application’s performance changes when additional resources (e.g. CPU cores, schedulers, etc.) are added.

DE-Bench is a scalable reliable peer-to-peer benchmarking tool for distributed Erlang based on Basho Bench. It measures the throughput and latency of distributed Erlang commands on a set of Erlang nodes.

Instant Messenger (IM) follows a client-server architecture and includes reliability mechanisms. Since the application is for benchmarking only and is not a commercial product it deploys a simplified version of all necessary IM functionality similar to WhatsApp and Viber. The traffic between clients is provided by a realistic traffic generation.

Orbit is a symbolic computing kernel and a generalization of a transitive closure computation.

Case Study

Sim-Diasca and City Instance. Sim-Diasca (SIMulation of DIscrete systems of All SCAles) is a distributed engine for large scale discrete simulations implemented in Erlang.

Additional information