ICFP Workshops 2022
27th ACM SIGPLAN International Conference on Functional Programming (ICFP 2022)
Powered by
Conference Publishing Consulting

21st ACM SIGPLAN International Workshop on Erlang (Erlang 2022), September 11, 2022, Ljubljana, Slovenia

Erlang 2022 – Preliminary Table of Contents

Contents - Abstracts - Authors

21st ACM SIGPLAN International Workshop on Erlang (Erlang 2022)


Title Page

Message from the Chairs
Message from the Chairs It is our great pleasure to welcome you to the 21st ACM SIGPLAN Erlang Workshop (Erlang’22), co-located as usual with the annual International Conference on Functional Programming (ICFP), held in Ljubljana, Slovenia. The workshop continues to be a forum for presenting research and experience reports on all aspects of theory, implementation, and applications of the Erlang language and BEAM-related technologies, covering topics in functional programming, distribution, and reliability.


eqWAlizer: Scaling Erlang Development at WhatsApp with Static Typing (Keynote)
Ilya Klyuchnikov
(Meta Platforms, USA)

Article Search


Troubleshooting the Performance of a Large Erlang System
Nikos Tsikoudis ORCID logo and Marc Sugiyama ORCID logo
(Datometry, USA; Nova Labs, n.n.)
This paper discusses our experiences troubleshooting and optimizing Hyper-Q, an enterprise software written in Erlang. Hyper-Q implements database virtualization that translates the SQL queries of an existing application to a new database system and converts the data returned by the database system to the data representation expected by the existing application. Using a real world example, we present effective troubleshooting techniques to identify poor-performing code and general refactorings and optimizations that can improve the performance of other Erlang systems.

Article Search
CAEFL: Composable and Environment Aware Federated Learning Models
Ruomeng (Cocoa) Xu ORCID logo, Anna Lito Michala ORCID logo, and Phil Trinder ORCID logo
(University of Glasgow, UK)
Federated Learning allows multiple distributed agents to contribute to a global machine learning model. Each agent trains locally and contributes to a global model by sending gradients to a central parameter server. The approach has some limitations: 1) some events may only occur in the local environment, so a global model may not perform as well as a specialized model; 2) changes in the local environment may require an agent to use some dedicated model, that is not available in a single global model; 3) a single global model approach is unable to derive new models from dealing with complex environments.
This paper proposes a novel federated learning approach, CAEFL, that is local environment aware and composes new dedicated models for new complex environments. CAEFL is implemented in Elixir to exploit transparent distribution, pattern matching, and hot-code-swapping. Pattern matching is used to transform environment sensors data to corresponding tags and aggregate data with the same environment tags on agents. It is also used on parameter server to match client’s push/pull request for these tagged models. It enables a declarative way for environment aware federated learning approach. CAEFL outperforms state of the art federated learning by 7-10% for the MNIST dataset and 2% for the FashionMNIST dataset in specific and complex environments.

Article Search
A Reliability Benchmark for Actor-Based Server Languages
Aidan Randtoul ORCID logo and Phil Trinder ORCID logo
(University of Glasgow, UK)
Servers are a key element of current IT infrastructures, and must often deal with large numbers of concurrent requests. Reliability is crucial as any disruption is extremely costly. Some important reliable servers are implemented in actor languages/libraries that provide process isolation and supervision. Reliability benchmarks model fault scenarios to measure the reliability characteristics of systems. The paper presents the design and implementation of a new reliability benchmark for actor-based server languages: Supervised Communicating Processes (SCP). SCP extends an existing server concurrency benchmark by supervising server actors/processes. We outline Erlang and Scala/Akka SCP implementations, and an associated fault injector. We compare the reliability characteristics of Erlang and Scala/Akka for server-style computations using SCP in the following four main experiments. (1) Progressive permanent failures, where a percentage of server processes fail permanently. (2) Recovery from different percentages (0% .. 20%) of failures occurring uniformly, randomly, or in bursts, and with a range of supervisor/supervisee ratios. (3) Comparing how the Erlang and Scala/Akka SCPs handle burst, random and uniform failure patterns. (4) Comparing how Erlang and Scala/Akka handle server actor/process faults with different fault patterns and failure rates.

Article Search
InfERL: Scalable and Extensible Erlang Static Analysis
Ákos Hajdu, Matteo Marescotti, Thibault Suzanne, Ke Mao, Radu Grigore, Per Gustafsson, and Dino Distefano
(Meta, n.n.)
In this paper we introduce InfERL, an open source, scalable, and extensible static analyzer for Erlang, based on Meta’s Infer tool. InfERL has been developed at WhatsApp and it is deployed to regularly scan WhatsApp server’s Erlang code- base, detecting reliability issues and checking user-defined properties. The paper describes the Erlang specific technical challenges we had to address and our design choices. We also report on our experience in running InfERL on Erlang code at scale, supporting the messaging app used everyday by over 2 billion people.

Article Search
Executable Contracts for Elixir
Sergio Pérez ORCID logo, Luis Eduardo Bueso de Barrio ORCID logo, Ángel Herranz ORCID logo, Clara Benac Earle ORCID logo, Ignacio Ballesteros ORCID logo, Julio Mariño ORCID logo, and Lars-Åke Fredlund ORCID logo
(Universitat Politècnica de València, Spain; Universidad Politécnica de Madrid, Spain)
This paper introduces a new library for implementing executable contracts in Elixir. In addition to classical contract constructs such as preconditions and postconditions, the library permits e.g. to specify exceptional behaviour (i.e. which exceptions are thrown and under which conditions), and to associate timers with function calls to detect non-terminating or too slow computations.

Article Search

proc time: 2.97