A Nifty Tool to Call Hell from Heaven
Tutorial: Scalability and the Erlang VM

Kostis Sagonas
Tools Guy with an Academic Interest in Erlang

The Erlang/OTP system, for better or worse, comes with a native interface that allows execution of C code in Erlang applications in the form of NIFs. However, the translation of C data structures to Erlang ones and vice versa has to be implemented manually. Nifty is an automatic Erlang Native Interface generator that connects Erlang with an existing C library and allows calling its functions. The talk will show how using nifty one can build Erlang modules from regular C header files automatically. If time permits we will also present how we are using nifty in conjunction with PropEr to property-based test C code bases and talk about our experiences so far.


In this tutorial we will take a look at how Erlang's concurrency model is supported by the virtual machine of the Erlang/OTP system and how its virtual machine has evolved during the last few years to support the scalable execution of Erlang programs on modern multicore machines. In addition, we will present and demonstrate BenchErl, a user-extensible, open source scalability benchmark suite for the Erlang/OTP system and its applications. The last part of the tutorial will present in detail the scalability characteristics of the Erlang Term Storage: its underlying architecture, current status and scalability of its implementation, the concurrency tuning options it comes with, and some aspects of the implementation of ETS that can be still improved.

The tutorial will include live demos and will give the chance to participants to download BenchErl and play with it.


Kostis Sagonas is an academic who has been heavily involved in the development of Erlang and its implementation since 1999. At Uppsala University, he led the development team of the HiPE native code compiler that nowadays is part of Erlang/OTP. Together with his students, first at Uppsala University and more recently at the National Technical University of Athens, he has proposed various changes and additions to the language (most notably: bit-level pattern matching and bit-stream comprehensions, and the language of type and spec declarations) and has contributed to its compiler and runtime system. Besides HiPE, he has designed and implemented software development tools for Erlang (dialyzer, typer, tidier, proper, ...) and has contributed bug fixes to many open-source Erlang projects.


GitHub: kostis

Back to conference page